자바 유전자 서열 비교 예시 코드
인간 유전 자 는 알파벳 ACTG 로 각각 표시 되 는 뉴 클 레오 티 드 4 종이 다.다음 규칙 에 따라 두 유전자 서열 을 비교 하고 비슷 한 정 도 를 확인 하 는 프로그램 을 만들어 야 합 니 다.즉,두 유전자 서열 을 제시 하 는 AGTGATG 와 GTTAG 는 얼마나 비슷 할 까?두 유전자 의 싱크로 율 을 측정 하 는 방법 을 정렬 이 라 고 한다.정렬 방법 을 사용 하면 유전자 의 적당 한 위치 에 빈 칸 을 넣 어 두 유전자 의 길 이 를 같 게 한 다음 유전자 의 수치 행렬 에 따라 점 수 를 계산 할 수 있다.
많은 코드 를 보 았 는데 기본적으로 c++또는 c 로 썼 지만 습관 적 으로 자바 를 쓰 면 자바 로 이 루어 집 니 다.
기본 적 인 사 고 는 가방 문제 와 차이 가 많 지 않 고 실현 하 느 냐,아니면 표 작성 형식 을 모방 하여 실현 하 느 냐 하 는 것 이다.
표현 식:
package algorithmClassSet.three;
import java.util.HashMap;
import java.util.Map;
/**
* s1 = result[i-1][j-1] + getScore(X[i], Y[j]) x,y
* s2 = result[i-1][j] + getScore(X[i], '-') x y ‘-'
* s3 = result[i][j-1] + getScore('-', Y[j]) y x ‘-'
* result[i][j] = max(s1,s2,s3)
* m*n
*/
public class GeneSequenceComparison {
public static void main(String[] args) {
dealIt();
}
private static void dealIt() {
String[] X = {"A", "G", "T", "G", "A", "T", "G"};
String[] Y = {"G", "T", "T", "A", "G"};
int m = X.length + 1;
int n = Y.length + 1;
int[][] result = new int[m][n];
for (int i = 1; i < m; i++) {
result[i][0] = result[i - 1][0] + getScore(X[i - 1], "-");
}
for (int j = 1; j < n; j++) {
result[0][j] = result[0][j - 1] + getScore("-", Y[j - 1]);
}
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
int s1 = result[i - 1][j - 1] + getScore(X[i - 1], Y[j - 1]);
int s2 = result[i - 1][j] + getScore(X[i - 1], "-");
int s3 = result[i][j - 1] + getScore("-", Y[j - 1]);
int maxs = getMax(s1, s2, s3);
result[i][j] = maxs;
}
}
System.out.println(" :" + result[m - 1][n - 1]);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
System.out.print(result[i][j] + " ");
}
System.out.println();
}
}
private static int getMax(int s1, int s2, int s3) {
int flag = s1;
if (flag < s2) {
flag = s2;
}
if (flag < s3) {
flag = s3;
}
return flag;
}
//
private static int getScore(String x, String y) {
//x y ACGT-
Map<String, Integer> map = new HashMap<>();
map.put("A", 0);
map.put("C", 1);
map.put("G", 2);
map.put("T", 3);
map.put("-", 4);
int[][] score = {
{5, -1, -2, -1, -3},
{-1, 5, -3, -2, -4},
{-2, -3, 5, -2, -2},
{-1, -2, -2, 5, -1},
{-3, -4, -2, -1, -10000000}};
return score[map.get(x)][map.get(y)];
}
}
자바 유전자 서열 비교 에 관 한 예제 코드 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 유전자 서열 비교 내용 은 우리 의 이전 글 이나 아래 관련 글 을 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.