欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實現(xiàn)基因序列比較的示例代碼

 更新時間:2020年02月21日 14:23:24   作者:※回不去×  
這篇文章主要介紹了java實現(xiàn)基因序列比較的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

設(shè)計算法,計算兩給定基因序列的相似程度。

人類基因由4種核苷酸,分別用字母ACTG表示。要求編寫一個程序,按以下規(guī)則比較兩個基因序列并確定它們的相似程度。即給出兩個基因序列AGTGATG和GTTAG,它們有多相似呢?測量兩個基因相似度的一種方法稱為對齊。使用對齊方法可以在基因的適當(dāng)位置加入空格,讓兩個基因的長度相等,然后根據(jù)基因的分值矩陣計算分?jǐn)?shù)。

看了很多代碼基本上都是用c++或者c寫的,但是習(xí)慣性寫java就用java實現(xiàn)一下


基本的思路就是,和背包問題差不多,實現(xiàn)還是模仿填表的形式去實現(xiàn)的

表達(dá)式:

  • s1 = result[i-1][j-1] + getScore(X[i], Y[j]) 這個是x,y序列使用坐標(biāo)匹配
  • 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) 找出三個中最大的就是所求的值
package algorithmClassSet.three;

import java.util.HashMap;
import java.util.Map;

/**
 * s1 = result[i-1][j-1] + getScore(X[i], Y[j]) 這個是x,y序列使用坐標(biāo)匹配
 * 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("結(jié)果為:" + 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;
  }


  //傳入值獲取分?jǐn)?shù)
  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)];
  }
}

到此這篇關(guān)于java實現(xiàn)基因序列比較的示例代碼的文章就介紹到這了,更多相關(guān)java 基因序列比較內(nèi)容請搜素腳本之家以前的文章或下面相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring MVC環(huán)境中文件上傳功能的實現(xiàn)方法詳解

    Spring MVC環(huán)境中文件上傳功能的實現(xiàn)方法詳解

    文件上傳是大家應(yīng)該都不陌生的一個功能,最近在開發(fā)中就又遇到了這個需求,所以想著總結(jié)一下方便以后需要的時候參考,下面這篇文章主要給大家介紹了關(guān)于Spring MVC環(huán)境中文件上傳功能的實現(xiàn)方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • springBoot 與neo4j的簡單整合示例

    springBoot 與neo4j的簡單整合示例

    這篇文章主要介紹了springBoot 與neo4j的簡單整合示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 從前端Vue到后端Spring Boot接收J(rèn)SON數(shù)據(jù)的正確姿勢(常見錯誤及問題)

    從前端Vue到后端Spring Boot接收J(rèn)SON數(shù)據(jù)的正確姿勢(常見錯誤及問題)

    這篇文章主要介紹了從前端Vue到后端Spring Boot接收J(rèn)SON數(shù)據(jù)的正確姿勢(常見錯誤及問題),本文將從前端Vue到后端Spring Boot,詳細(xì)介紹接收J(rèn)SON數(shù)據(jù)的正確姿勢,幫助開發(fā)人員更好地處理JSON數(shù)據(jù),感興趣的朋友一起看看吧
    2024-02-02
  • Java cglib動態(tài)代理原理分析

    Java cglib動態(tài)代理原理分析

    這篇文章主要介紹了Java cglib動態(tài)代理的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-05-05
  • MyBatis 如何配置多個別名 typeAliasesPackage

    MyBatis 如何配置多個別名 typeAliasesPackage

    這篇文章主要介紹了MyBatis 如何配置多個別名 typeAliasesPackage,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • springboot自定義stater啟動流程

    springboot自定義stater啟動流程

    這篇文章主要介紹了springboot自定義stater啟動流程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • Springboot jpa @Column命名大小寫問題及解決

    Springboot jpa @Column命名大小寫問題及解決

    這篇文章主要介紹了Springboot jpa @Column命名大小寫問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 關(guān)于log4j漏洞修復(fù)解決方案及源碼編譯

    關(guān)于log4j漏洞修復(fù)解決方案及源碼編譯

    Log4j?是Apache為Java提供的日志管理工具。他與System.out.println()的作用相似,用來跟蹤、調(diào)試、維護(hù)程序。這篇文章主要介紹了關(guān)于log4j漏洞修復(fù)解決方案及源碼編譯,需要的朋友可以參考下
    2021-12-12
  • 詳解spring security四種實現(xiàn)方式

    詳解spring security四種實現(xiàn)方式

    這篇文章主要介紹了詳解spring security四種實現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 詳解在Java中如何優(yōu)雅的停止線程

    詳解在Java中如何優(yōu)雅的停止線程

    線程,作為并發(fā)編程的基礎(chǔ)單元,允許程序同時執(zhí)行多個任務(wù),在Java中,線程可以理解為程序中的獨立執(zhí)行路徑,通過使用線程,開發(fā)者可以創(chuàng)建更加響應(yīng)靈敏、效率更高的應(yīng)用程序,本文小編將給大家介紹一下Java中如何優(yōu)雅的停止線程,需要的朋友可以參考下
    2023-11-11

最新評論