我有一个大约5000的大蛋白质序列,所以我把它放在一个文本文件(p_sqn.txt)中,我有以下序列
例如; SDJGSKLDJGSNMMUWEURYI
我必须找到百分比同一性评分函数,因此我必须在蛋白质序列中找到最相似的序列。 (protein_sequence.txt)
答案 0 :(得分:1)
我首先要检查序列中每个点的Levenshtein distance。
长度仅为5000,通过时间不会很长(毫秒)。
幸运的是,Apache commons-lang library提供了StringUtils.getLevenshteinDistance()
实用程序方法。有了这个,代码只有几行:
import org.apache.commons.lang.StringUtils;
String protein; // the full sequence
String part; // your search string
int bestScore = Integer.MAX_VALUE;
int bestLocation = 0;
String bestSeqence = "";
for (int i = 0; i < protein.length() - part.length(); i++) {
String sequence = protein.substring(i, part.length());
int score = StringUtils.getLevenshteinDistance(sequence, part);
if (score < bestScore) {
bestScore = score;
bestLocation = i;
bestSeqence = sequence;
}
}
// at this point in the code, the "best" variables will have data about the best match.
fyi,得分为零表示找到完全匹配。
为了便于阅读该文件,您可以使用Apache common-io library实用工具方法FileUtils.readFileToString()
,如下所示:
import org.apache.commons.io.FileUtils;
String protein = FileUtils.readFileToString(new File("/some/path/to/myproteinfile.txt"));