######################################################
######################################################
#################VIGS片段相似性检测###################
######################################################
######################################################
install.packages("seqinr")
install.packages("ade4")
### wangpeipei@ibcas.ac.cn
setwd("D:/zhang lab/数据/还亮草/还亮草序列/VIGS")
library(seqinr) ###将字符串拆分的函数包
library(ade4)
#####滑动窗口
dat <- read.table("VIGS regions-sliding window2.txt",head=F, stringsAsFactors=F)
similar <- function(x,y)
{
xx <- s2c(x)
yy <- s2c(y)
num <- 0
for(i in 1:length(xx)) if(xx[i]==yy[i]) num=num+1
rat <- num/length(xx)
return(rat)
}
similar_sw <- function(x,y,wsize)
{
x2 <- s2c(x)
y2 <- s2c(y)
mkwin <- function(seqe, wsize, wstep)
{
sapply(seq(from = 1, to = length(seqe) - wsize + 1, by = wstep),
function(i) c2s(seqe[i:(i + wsize - 1)]))
}
wseq1 <- mkwin(x2, wsize, 1)
wseq2 <- mkwin(y2, wsize, 1)
x_y <- 0
for(i in 1:length(wseq1))
{
for(j in 1:length(wseq2))
{
x_y <- max(x_y, similar(wseq1[i],wseq2[j]))
}
}
return(x_y)
}
out <- c()
for(i in 1:3) ##### 用基因数目替换13
{
if(!is.na(dat[i,2]))
{
for(j in 1:3) ##### 用基因数目替换13
{
if(j!=i)
{
aa <- similar_sw(dat[i,2],dat[j,4],21)
print(paste(dat[i,1],dat[j,3],aa*100,sep="_"))
out <- rbind(out,paste(dat[i,1],dat[j,3],aa*100,sep="_"))
}
}
}
}
write.table(out,"VIGS_AGL6-1a&1b&2-sliding window_result.txt")