文書の表示以前のリビジョンバックリンク文書の先頭へ この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。 # 練習問題の解答例_1 ## 練習問題3までをやってみた例 <code java> package hellow_world; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public class Main { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ try{ File file = new File("C:\\ecoli-test.txt"); BufferedReader br = new BufferedReader(new FileReader(file)); String genome=""; String str = br.readLine(); while(str != null){ //System.out.println(str); str = br.readLine(); genome = genome + str; } br.close(); //制限酵素サイト検索 int oldPos = 0; int cntOver10kbp = 0; int cntUnder10kbp = 0; for(int i=0; i<genome.length()-6; i++){ if((genome.substring(i, i+6)).equals("GGATCC")){ //BamHIの認識サイトはGGATCC System.out.println(i); if(i - oldPos >= 10000){ cntOver10kbp++; }else{ cntUnder10kbp++; } oldPos=i; } } System.out.println("10kbp以上は"+cntOver10kbp+"箇所、10kbp未満は"+cntUnder10kbp+"箇所"); }catch(Exception e){ System.out.println(e); } } } </code> ## 練習問題5までと、文字列連結の高速化を行った例 <code java> import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public class Main1 { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ try{ File file = new File("C:\\ecoli.fasta"); BufferedReader br = new BufferedReader(new FileReader(file)); StringBuilder sb = new StringBuilder(); String str = br.readLine(); while(str != null){ str=br.readLine(); sb.append(str); } br.close(); String ecoli=new String(sb); System.out.println(ecoli.length()); int nBam=0; //配列に入ったBamHIの数を記憶しておく int[] arrBam=new int[10000]; //大きめの配列を準備しておく for(int i=0; i<ecoli.length()-6; i++){ if(ecoli.substring(i, i+6).equals("GGATCC")){ arrBam[nBam]=i; nBam++; } } System.out.println(nBam); int nHind=0; int[] arrHind=new int[10000]; for(int i=0; i<ecoli.length()-6; i++){ if(ecoli.substring(i, i+6).equals("AAGCTT")){ arrHind[nHind]=i; nHind++; } } System.out.println(nHind); int n1=0; //左側がBamHI、右側がHindIIIで切断される場合を検索 for(int i=0;i<nBam;i++){ for(int j=0; j<nHind;j++){ if(arrHind[j+1]>arrBam[i] && arrBam[i+1]>arrHind[j+1] && arrBam[i]>arrHind[j] && arrHind[j+1]-arrBam[i]>=10*1000){ System.out.println("nBam:"+i+", nHind:"+j+", arrBam:"+arrBam[i]+", arrHind:"+arrHind[j]); n1++; } } } System.out.println(n1); int n2=0; //左側がHindIII、右側がBamHIで切断される場合を検索 for(int j=0;j<nHind;j++){ for(int i=0; i<nBam;i++){ if(arrBam[i+1]>arrHind[j] && arrHind[j+1]>arrBam[i+1] && arrHind[j]>arrBam[i] && arrBam[i+1]-arrHind[j]>=10*1000){ System.out.println("nBam:"+i+", nHind:"+j+", arrBam:"+arrBam[i]+", arrHind:"+arrHind[j]); n2++; } } } System.out.println(n2); System.out.println(n1+n2); }catch(Exception e){ System.out.println(e); } } } </code> 練習問題の解答例_1.txt 最終更新: 2019/07/15 02:46by 127.0.0.1