各位前輩您們好:
先說明一下我的狀況,目前手上有一份DNA的資料要跑,需要將序列整理一下
他的格式如下:
>1097156670763
TCGATACCTCTCCTAGCAAGCGCATTCCACTACCAAGCAACTTTCTAACAACAACTAGCAACTATTCGCACTTAACCCTTGCCCAAAAAAATCGACTTCTTTAAAAACAATTGTCGTTCCCCCGATGCGATCAAACGCTTACG
CACTCCGTGCCGCTAGAGCCGCAGAAATCGCCCCGACTAGGTCGACGCCTTCCGCATGACCCACTACTAACAAGGTTATGACTGCTCTAGCCGACAGGTCACGAATACAAACCAACACACACGAAACATGCCAGAATTCGAAG
...
CCGCCCCATTGACCTACACATCAAAGGGCTCAAAAAGCTCAACTGCCAAGTAGATATCTCCAACGGTTACGTCCACGTCGACGCCTCCAACATCGAAGGCGGCC
>1097156670764
CTTGGGTAAATTGGTGAGCCTTATATCAAATCTGTTAAGTCTTTAGTAAAATCAAAATCTGGATTAGGTCTTGGAATTTTTATAGGAAAAACTCTACTTGAAAAAAATTATGCAAATATTTTATGTAAAAATTCCGAAACAAG
AGGTGGGGCTGAAGTTCGTATTAAATGGAAAAATGAAGACCTGTTAAAGCTTTAGTGTAGTTTCTTTTTATTTTCAAATAAGCCACTCAATTGAGAAACCATCACATCTCCAAGCTCATGTACATCTGTTATTTTAATAGCTT
...
CAAACTCTTTCTTCCAGAAATTTAACATTTTTGTAGACACATCATTGAGCTCTAATTTAAAGAATTTATTTAACATATATAGTTCAAAAGCTTCAGTCACAGGAACATCTTCTTTATTTTT
大約有3,000,000組 目前先跑前面十組試試
但是在輸出檔案裡卻只有印出約六組
試著在程式裡加上System.out.println來看哪裡沒讀到、沒改到
卻都沒有發現問題
再試著將資料增多 結果就可以正確的跑出該有的組數
但是將資料減少 結果輸出檔案中反而一組也沒有印出來
預計輸出格式如下:
>1097156670763
TCGATACCTCTCCTAGCAAGCGCATTCCACTACCAAGCAACTTTCTAACAACAACTAGCAACTATTCGCACTTAACCCT
>1097156670764
CTTGGGTAAATTGGTGAGCCTTATATCAAATCTGTTAAGTCTTTAGTAAAATCAAAATCTGGATTAGGTCTTGGAATTT
也就是將多行的序列去掉N後再將之湊成一列
--
以下是我的程式碼 麻煩大家替我解困了
謝謝
--
import java.io.*;
public class proteinTranslations {
public static void main(String[] args){
try {
//這裡是一些宣告,應該可以跳過
File inputFile =
new File("ten.txt");
File outputFile =
new File("tenGOS.txt");
FileReader fileReader =
new FileReader(inputFile);
BufferedReader bufferedReader =
new BufferedReader(fileReader);
byte[] buffer;
BufferedOutputStream bufferedOut =
new BufferedOutputStream(new FileOutputStream(outputFile));
int flag=0;
String line="", total="", lineSep="";
lineSep = System.getProperty("line.separator");
//translating是用來去掉N用的
translating translate=null;
while ((line = bufferedReader.readLine()) != null) {
flag++;
//以>為區分的標地,每次遇以>為開頭的一行
//便將之前整理好的total印出
//第一次除外,且最後一次total在迴圈外印出
//在用println測的時候,N都有被刪掉
//也有排成一列
//可是就是沒有輸出到檔案中
if (line.indexOf(">") == 0) {
if (flag == 1) {
line+=lineSep;
buffer = line.getBytes();
bufferedOut.write(buffer, 0, buffer.length);
}
else {
buffer = total.getBytes();
bufferedOut.write(buffer, 0, buffer.length);
total="";
line = lineSep + line;
line+=lineSep;
buffer = line.getBytes();
bufferedOut.write(buffer, 0, buffer.length);
}
}
else {
translate =
new translating(line, line);
translate.deleteN();
total+=translate.result();
}
}
buffer = total.getBytes();
bufferedOut.write(buffer, 0, buffer.length);
total="";
}
catch (Exception e) {
System.out.println("File Not Found");
}
}
}
--
public class translating {
public String original="", translated="";
int index1=0, index2=0;
public translating () {}
public translating (String original, String translated) {
this.original = original;
this.translated = translated;
}
public void deleteN () {
//delet NNN...first
original = original.replaceAll("N", "");
translated = original;
}
public String result () {
return translated;
}
}
--
麻煩大家了
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.73.50