你能告訴我怎樣可以通過Java中使用Levenshtein算法計算DNA序列
Q
計算DNA序列
0
A
回答
0
的wiki的萊文斯坦包含算法和結果矩陣的解釋計算的DNA序列。只需將算法實現爲一個方法並返回矩陣中的最後一個元素。
2
這裏是the Wikipedia page on Levenshtein distances算法:
int LevenshteinDistance(char s[1..m], char t[1..n])
{
// d is a table with m+1 rows and n+1 columns
declare int d[0..m, 0..n]
for i from 0 to m
d[i, 0] := i // deletion
for j from 0 to n
d[0, j] := j // insertion
for j from 1 to n
{
for i from 1 to m
{
if s[i] = t[j] then
d[i, j] := d[i-1, j-1]
else
d[i, j] := minimum
(
d[i-1, j] + 1, // deletion
d[i, j-1] + 1, // insertion
d[i-1, j-1] + 1 // substitution
)
}
}
return d[m, n]
}
(我敢肯定,你可以讓Java出來,隨着一點點的工作。)
通在你的兩個DNA序列s
和t
它會返回一個int的距離。從Levenshtein Distance Algorithm
0
複製/粘貼功能,並使用它像這樣:
String a = "AAAAAAAAAAAAAAAAAA";
String b = "AAAAAAAAACTAAAAAAA";
int d = getLevenshteinDistance(a,b);
System.out.println(d);
0
如果您是計算兩個DNA序列之間的差異只是有興趣,你應該使用Damerau–Levenshtein distance不是正規的Levenshtein距離。
維基百科條目包含一些示例代碼,您當然可以映射到java代碼。
2
我相信這是你所追求的。如果您願意,您可以刪除System.out.println
聲明。請注意,如果將它們留在中,則第一行和第一列在打印的內容中被省略。
對照results on the wikipedia page進行驗證。
public int getLevenshteinDistance(String a, String b)
{
// d is a table with m+1 rows and n+1 columns
char[] s = (a).toCharArray();
char[] t = (b).toCharArray();
System.out.println(a + " - " + b);
int m = s.length;
int n = t.length;
int[][] d = new int[m + 1][n + 1];
int i;
int j;
for(i = 0; i < (m + 1); i++)
{
d[i][0] = i; //deletion
}
for(j = 0; j < (n + 1); j++)
{
d[0][j] = j; //insertion
}
for (j = 1; j < (n + 1); j++)
{
for (i = 1; i < (m + 1); i++)
{
if (s[i-1] == t[j-1])
{
d[i][j] = d[i-1][j-1];
}
else
{
d[i][j] = Math.min((d[i-1][j] + 1), //deletion
(Math.min((d[i][j-1] + 1), //insertion
(d[i-1][j-1] + 1)))); //substitution
}
System.out.print(" [" + d[i][j] + "]");
}
System.out.println("");
}
return d[m][n];
}
測試:
String a = "Saturday";
String b = "Sunday";
int d = getLevenshteinDistance(a, b);
System.out.println(d);
a = "kitten";
b = "sitting";
d = getLevenshteinDistance(a, b);
System.out.println(d);
3
既然你沒有把它標記作爲功課,我看到寫這你自己沒有必要。 Apache's StringUtils has it。
相關問題
- 1. 計算較大DNA序列中模糊序列的出現
- 2. DNA序列python的計算編輯距離
- 3. 計算DNA序列中的核苷酸字符串
- 4. 寫函數計算密碼子的DNA序列「ATG」
- 5. 用蟒/ biopython計數DNA序列
- 6. DNA序列操作
- 7. 混亂遊戲DNA序列
- 8. DNA與蛋白質序列
- 9. 查找DNA序列的互補序列
- 10. 用於計算DNA序列中GC含量的初學Python腳本
- 11. DNA分裂算法
- 12. DNA配對,陣列
- 13. 拆分的DNA序列與d
- 14. 紅寶石突變DNA序列
- 15. 進入特徵的DNA序列
- 16. 對齊Python中的DNA序列
- 17. 將DNA序列轉換爲氨基酸
- 18. 計算所發現的DNA結合基序的顯着性與預期的MATLAB
- 19. Vectorise序列numpy計算
- 20. 對EntityFramework計算列排序
- 21. 序列計算問題
- 22. 遞歸計算序列
- 23. 的Python:讀取文件,並計算質量DNA
- 24. 讀取fasta文件並計算DNA gc內容
- 25. Excel Dna - 刷新所有數據源和公式計算
- 26. 在python中摺疊正向和反向互補的DNA序列的算法?
- 27. 如何在DNA序列列表中找到k-mers的發生
- 28. 排列陣列中的DNA鹼基對
- 29. Python的計數DNA核苷酸
- 30. 新列計算
需要更多信息請。你想解決什麼問題? – 2009-11-16 05:21:19
作爲首次使用的用戶,查看這裏發佈的一些關於整體樣式的問題可能很有用,並閱讀http://stackoverflow.com/faq上的常見問題解答。 – 2009-11-16 05:22:54