プログラムは、入力ファイルから DNA データを順次読み取り、エクソンとイントロンに遭遇すると、それらを別々のファイルに書き出します。最初に発見されたエクソンは exon1.txt に書き込まれ、2 番目に発見されたエクソンは exon2.txt に書き込まれます。同様に、最初に発見されたイントロンは intron1.txt に書き込まれ、2 番目に発見されたイントロンはintron2.txt などに書き込まれます...
エクソンは、常にコドン ATG で始まり、TAA、TGA、または TAG のいずれかのコドンで終わる一連のコドンです。これらのコドンで開始または停止しない配列はすべてイントロンです。データをスキャンしてエクソンとイントロンを探している間は、前方のみをスキャンして、重複していないエクソンとイントロンを探します。エクソン スタート シンボル (ATG) が検出され、停止コドンの 1 つが検出される前に別の ATG が検出された場合、それは新しいエクソンが開始したことを意味しません。
私はファイルから読み取る方法を知っており、すでにグローバル配列に保存しています。配列の方がはるかに望ましいです。文字列も使用できます。
const int MAX_DNA = 50000;
char dnaData[MAX_DNA];
int readFromDNAFile(string fileName) {
int returnValue = 0;
ifstream fileHandle;
fileHandle.open(fileName.c_str());
if( fileHandle.good() ) {
char nucleotide;
int counter = 0;
while( fileHandle >> nucleotide ) {
dnaData[counter] = nucleotide;
counter++;
}
returnValue = counter;
}
fileHandle.close();
return returnValue;
}
次に何をすべきかを実装する方法が本当にわかりません。エクソンとイントロンのtxtファイルに名前を付けるためにループを使用する必要があると確信しています。次に、おそらくそれをスキャンして保存するために別のループ..
void readFiles(string filename){
for(int i = 0; i < numFiles; i++) {
//ill open up the file here to read
for(int j = 0; j < numCodons; j++) {
どんな努力も感謝します、ありがとう。