如何打印图案中不匹配的字母
How to print unmatched letter from a pattern
我有两套蛋白质序列数据。如您所见,这 2 个序列看起来相同,但实际上它们之间有 1 个不同的氨基酸(字母)。
例如:
文件 1:
TV*TV*TV*TISTI*VWGKIGIRIE*PWIVSISEVESVACNSKNSNNNSE*K**FSEHFDLNYEN*K
文件 2:
TV*TV*TV*TISTI*VWGKIGIRIE*PWIVSISVVESVACNSKNSNNNSE*K**FSEHFDLNYEN*K
期望的输出:
文件 1:
E
文件 2:
V
我知道我们可以使用 grep、comm、diff 命令从两组数据中打印出不同的模式;搜索基于行。但是在这种情况下,我该如何打印这两种模式之间不同的字母呢?谢谢
我认为这里不需要 re
模块。只需一个循环即可修复您的代码。
file1='TV*TV*TV*TISTI*VWGKIGIRIE*PWIVSISEVESVACNSKNSNNNSE*K**FSEHFDLNYEN*K'
file2='TV*TV*TV*TISTI*VWGKIGIRIE*PWIVSISVVESVACNSKNSNNNSE*K**FSEHFDLNYEN*K'
for i in range(len(file1)):
if(file1[i]!=file2[i]):
print(file1[i]),(file2[i])
你的输出是:E V
在这里,我们逐个字母地比较文件。
循环:
test_two_strings <- function(string1 = file1, string2 = file2){
for(i in 1:nchar(file1)){
if (substr(file1, i, i) != substr(file2,i, i)){
cat(paste("File 1:", substr(file1, i, i) ,"File 2:", substr(file2, i, i),sep = "\n"))
break()
}
}
}
microbenchmark(test_two_strings(), times = 1000)
VUnit: microseconds
expr min lq mean median uq max neval
test_two_strings() 133.927 144.199 169.5508 148.544 160.791 2132.148 1000
你也可以试试这个,我正在比较每两个字符串,如果条件失败我会在字符串之间进行检查。
str1 ="TV*TV*TV*TISTI*VWGKIGIRIE*PWIVSESsVESVACNSKNSNNNSE*K**FSEHFDLNYEN*K"
str2 ="TV*TV*TV*TISTI*VWGKIGIRIE*PWIVSVSsVESVACNSKNSNNNSE*K**FSEHFDLNYEN*K"
for i in range(len(str1)/2):
if(str1[i:i+2] != str2[i:i+2]):
if (str1[i:i+1] != str2[i:i+1]):
str1[i:i+1]+"\n"+str1[i+1:i+2]
else:
print str1[i+1:i+2]+"\n"+str2[i+1:i+2]
我有两套蛋白质序列数据。如您所见,这 2 个序列看起来相同,但实际上它们之间有 1 个不同的氨基酸(字母)。
例如:
文件 1:
TV*TV*TV*TISTI*VWGKIGIRIE*PWIVSISEVESVACNSKNSNNNSE*K**FSEHFDLNYEN*K
文件 2:
TV*TV*TV*TISTI*VWGKIGIRIE*PWIVSISVVESVACNSKNSNNNSE*K**FSEHFDLNYEN*K
期望的输出:
文件 1:
E
文件 2:
V
我知道我们可以使用 grep、comm、diff 命令从两组数据中打印出不同的模式;搜索基于行。但是在这种情况下,我该如何打印这两种模式之间不同的字母呢?谢谢
我认为这里不需要 re
模块。只需一个循环即可修复您的代码。
file1='TV*TV*TV*TISTI*VWGKIGIRIE*PWIVSISEVESVACNSKNSNNNSE*K**FSEHFDLNYEN*K'
file2='TV*TV*TV*TISTI*VWGKIGIRIE*PWIVSISVVESVACNSKNSNNNSE*K**FSEHFDLNYEN*K'
for i in range(len(file1)):
if(file1[i]!=file2[i]):
print(file1[i]),(file2[i])
你的输出是:E V
在这里,我们逐个字母地比较文件。
循环:
test_two_strings <- function(string1 = file1, string2 = file2){
for(i in 1:nchar(file1)){
if (substr(file1, i, i) != substr(file2,i, i)){
cat(paste("File 1:", substr(file1, i, i) ,"File 2:", substr(file2, i, i),sep = "\n"))
break()
}
}
}
microbenchmark(test_two_strings(), times = 1000)
VUnit: microseconds
expr min lq mean median uq max neval
test_two_strings() 133.927 144.199 169.5508 148.544 160.791 2132.148 1000
你也可以试试这个,我正在比较每两个字符串,如果条件失败我会在字符串之间进行检查。
str1 ="TV*TV*TV*TISTI*VWGKIGIRIE*PWIVSESsVESVACNSKNSNNNSE*K**FSEHFDLNYEN*K"
str2 ="TV*TV*TV*TISTI*VWGKIGIRIE*PWIVSVSsVESVACNSKNSNNNSE*K**FSEHFDLNYEN*K"
for i in range(len(str1)/2):
if(str1[i:i+2] != str2[i:i+2]):
if (str1[i:i+1] != str2[i:i+1]):
str1[i:i+1]+"\n"+str1[i+1:i+2]
else:
print str1[i+1:i+2]+"\n"+str2[i+1:i+2]