**文書の過去の版を表示しています。**
解答例
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<arg4.getScoreTagLine().length();i++){ if(match.substring(i,i+1).equals("|")){ n++; } } result=n/(double)match.length(); } catch (Exception e) { e.printStackTrace(); } return result; } public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ ArrayList<String> arrayName = new ArrayList<String>(); ArrayList<String> arraySeq = new ArrayList<String>(); 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()+"リード読み込み完了"); System.out.println(arraySeq.get(0)); for(int i=1;i<arraySeq.size();i++){ if(getsim(arraySeq.get(0), arraySeq.get(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<arraySeq.size(); j++){ int matchCnt = 0; // 1つのOTU内のリード数をカウント if(clusteredFlag[j]==false){ matchCnt++; otu++; clusteredFlag[j]=true; ArrayList<String> matchSeq = new ArrayList<String>(); ArrayList<String> matchName = new ArrayList<String>(); for(int i=j+1; i<arraySeq.size(); i++){ if(clusteredFlag[i]==false){ if(getsim(arraySeq.get(j),arraySeq.get(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<matchSeq.size(); i++){ System.out.print(matchName.get(i)+" "+ matchSeq.get(i)+"\n"); } System.out.println(matchCnt+" : "+otu); } } } }