从R中的fasta点图提取值

从R中的fasta点图提取值,r,R,我有一个2个fasta序列的点图(使用seqinr包中的dotplot()),我需要从图中提取一些值(x,y) 我尝试使用identify(),它与“正常”绘图一起工作,并返回一个带有绘图中单击值的向量,但在点绘图上不起作用 任何可能的解决方案都是受欢迎的,包括在shell或python中使用dotter。 谢谢dotPlot使用图像绘制点。因此,当调用identify时,没有需要识别的“点”。如果您绘制这两个序列并使用与dotPlot相同的逻辑,您将获得更大的成功 seq2 <- seq

我有一个2个fasta序列的点图(使用seqinr包中的dotplot()),我需要从图中提取一些值(x,y)

我尝试使用identify(),它与“正常”绘图一起工作,并返回一个带有绘图中单击值的向量,但在点绘图上不起作用

任何可能的解决方案都是受欢迎的,包括在shell或python中使用dotter。
谢谢

dotPlot
使用
图像
绘制点。因此,当调用
identify
时,没有需要识别的“点”。如果您绘制这两个序列并使用与
dotPlot
相同的逻辑,您将获得更大的成功

seq2 <- seq1 <- paste(sample(c("A","G","T","C"), 100, repl=TRUE), collapse="")
for ( i in sample(1:100, 20) ) { seq2 <- 
  paste0(substr(seq2, 1, i-1), "Z", substr(seq2, i+1, nchar(seq2) ) )}
plot(NA, xlim=c(0,100), ylim=c(0,100)); 
for ( i in 1:100 ) { 
           if(substr(seq1,i,i)==substr(seq2, i,i) ){ points(i,i)}
pts <- identify(1:100, 1:100, n=5)

seq2多亏了德温,我终于得到了我需要的东西

seq1 <- paste(sample(c("A","G","T","C"), 100, repl=TRUE), collapse="")
seq2 <- paste(sample(c("A","G","T","C"), 100, repl=TRUE), collapse="")

plot(NA, xlim=c(0,100), ylim=c(0,100),type="p"); 
for ( i in 1:100 ) 
    {  for ( j in 1:100 ) 
    {  if(substr(seq1,i,i)==substr(seq2, j,j) ) points(j,i)
       }}
pts <- identify(1:100, 1:100, n=5)

seq1您是否有用于创建绘图的代码,或者只是一个图像文件?老实说,我不知道,我使用的功能是这个,它看起来像一个图像文件……但我不确定,您是在R图形窗口中单击绘图,还是单击从文件系统打开的JPEG或PNG。您是否可以访问用于创建绘图的代码,或者是其他人为您创建的?是的,我正在使用identify()函数在R figure窗口中单击绘图。绘图是由seqinr包的dotPlot()函数创建的,因此我只提交要对齐的输入字符文件。谢谢你的帮助你的脚本工作,但我需要自动重复的动机搜索,所以我不仅要寻找对角线,还要寻找序列中的小对齐。例如,类似于()的东西,我认为类似于seq1的东西,Z只是我插入的一个不匹配的字母。我想要更多的匹配而不是不匹配。我不做遗传学,只是试图说明
识别
的能力来“工作”一些模糊的东西,就像我在
?点图
示例中看到的那样。如果我要用一个数据框来保存残留物,我就不需要粘贴了。这几乎是我需要的,我需要比较seq1的任何位置和seq2的任何位置,我会使用你的函数,我会尝试在strsplit上添加另一个for loop,可能是'outer',带有split=“”。我现在正在路上,而您没有提供一个可行的数据对象。也许会问一个关于数据的新问题?好的,我会的,这是我在这里的第一个问题
l=100
seq1 <- paste(sample(c("A","G","T","C"), l, repl=TRUE)) 
seq2 <- paste(sample(c("A","G","T","C"), l, repl=TRUE)) 
plot(NA, xlim=c(0,100), ylim=c(0,100),type="p"); 
for (i in 1:l) for (j in i:l) if(seq1[i]==seq2[j]) points(j,i)
pts <- identify(1:100, 1:100, n=5)