解答例 ちなみにDRR017220.fastqに対してsimilarity 0.95以上でクラスタリングした結果は371個のOTUが出来ます。 package clustering; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.StringReader; import java.util.ArrayList; import neobio.alignment.BasicScoringScheme; import neobio.alignment.PairwiseAlignment; import neobio.alignment.ScoringScheme; import neobio.alignment.SmithWaterman; public class Test { public static double getsim(String seq1, String seq2){ double result=0; SmithWaterman sw = new SmithWaterman(); int n=0; try { StringReader str1 = new StringReader(seq1); StringReader str2 = new StringReader(seq2); ScoringScheme arg3 = new BasicScoringScheme(1, -1, -1); sw.setScoringScheme(arg3); sw.loadSequences(str1, str2); PairwiseAlignment arg4; arg4 = sw.getPairwiseAlignment(); String match=arg4.getScoreTagLine(); for(int i=0;i arrayName = new ArrayList(); ArrayList arraySeq = new ArrayList(); int n=0; File file = new File("C:\\Users\\asakawa\\Desktop\\DRR017220.fastq"); try { BufferedReader br = new BufferedReader(new FileReader(file)); String str = br.readLine(); while(str != null){ n++; if(n%4==1){ arrayName.add(str); }else if(n%4==2){ arraySeq.add(str); } str = br.readLine(); } br.close(); } catch (Exception e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } System.out.println(arraySeq.size()+"リード読み込み完了"); //1番目のリードに対して、similarityを計算 System.out.println(arraySeq.get(0)); for(int i=1;i= 0.95){ System.out.println(arrayName.get(i)+": "+arraySeq.get(i)); } } //クラスタリングを行う int otu=0; // OTUの数を保存する変数 boolean[] clusteredFlag = new boolean[arraySeq.size()]; for(int j=0; j matchSeq = new ArrayList(); ArrayList matchName = new ArrayList(); for(int i=j+1; i=0.95){ matchSeq.add(arraySeq.get(i)); matchName.add(arrayName.get(i)); matchCnt++; clusteredFlag[i]=true; } } } System.out.println("query: "+arrayName.get(j)+" "+arraySeq.get(j)); for(int i=0; i