私は約5000の大きなタンパク質配列を持っているので、それをテキストファイル(p_sqn.txt)に入れて、次の配列を持っています
例えば ; SDJGSKLDJGSNMMUWEURYI
私はそのパーセンテージ同一性スコアリング関数を見つけなければならないので、そのために私はタンパク質配列の中で最も類似した配列を見つけなければなりません。(protein_sequence.txt)
私は約5000の大きなタンパク質配列を持っているので、それをテキストファイル(p_sqn.txt)に入れて、次の配列を持っています
例えば ; SDJGSKLDJGSNMMUWEURYI
私はそのパーセンテージ同一性スコアリング関数を見つけなければならないので、そのために私はタンパク質配列の中で最も類似した配列を見つけなければなりません。(protein_sequence.txt)
シーケンスのすべてのポイントでレーベンシュタイン距離をチェックすることから始めます。
わずか5000の長さで、パスを実行するのにそれほど長く(ミリ秒)かかりません。
幸い、Apachecommons-langライブラリは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、スコア0は、完全一致が見つかったことを意味します。
ファイルを読みやすくするために、次のようなApachecommon-ioライブラリユーティリティメソッドを使用できます。FileUtils.readFileToString()
import org.apache.commons.io.FileUtils;
String protein = FileUtils.readFileToString(new File("/some/path/to/myproteinfile.txt"));