строка — поиск в файле fasta в Stack Overflow

Я новичок в C ++ и мне нужна помощь с некоторым кодом, который у меня есть (который в основном взят из другого кода, который я нашел). Я пытаюсь прочитать в файле FASTA последовательности, а затем поискать в файле определенный мотив, а затем вывести результаты в другой файл. Я могу открыть файл, найти его и вывести строку, где встречается мотив. Я также получаю порядковый номер и положение персонажа.

НО я хочу всю последовательность, а не только строку. Я думаю, что должен быть способ запустить цикл, чтобы распечатать все между>, которые отмечают начало каждой последовательности. Я просто не смог этого сделать, и был бы очень признателен за любую помощь

Вот пример файла, который я бы искал:

Так что, если бы я искал «PAIVGGDFHLSETIAIIRYLA», я бы хотел, чтобы все от первого> (я хочу включить это также) до следующего> (не хочу включать это). > Я не появляюсь, когда я публикую это, но они будут до FB ….

>FBpp0087549
MSKPIRFYYDLLSPIARGLWIGLKFSNSPVEYCPIALRKFEQLTDEYKKI
NRFQKV**PAIVGGDFHLSETIAIIRYLA**DKGQFDEKLYPKTLENRARVDEF
LEWQHLNIRLACSMYFRDAWLFPMNGIAPKPKPEQIQALIEGVENNLGLL
ERLWLENDFLVGKNLTMADILGSSEINQLRLCQYRVDEKKFPKVVKWLER
VRVSANPYHDEGLTFIDRKSKQSTAAKL

>FBpp0086857
MSQPKPILYYDERSPPVRSCLMLIKLLDIDVELRFVNLFKGEQFQKDFLA
LNPQHSVPTLVHGDLVLTDSHAILIHLAEKFDEGGSLWPQEHAERMKVLN
LLLFECSFLFRRDSDFMSATVRQGFANVDVAHHERKLTEAYIIMERYLEN
SDFMAGPQLTLADLSIVTTLSTVNLMFPLSQFPRLRRWFTAMQQLDAYEA
NCSGLEKLRQTMESVGSFQFPSSSAVVTEKVE

Вот код, который я использую:

#include <fstream>
#include <string>
#include <iostream>
#include <ctime>
#include <stdlib.h>

using namespace std;

int main()
{
int counter = 0;

string filename = "dna.txt";
ifstream gst(filename.c_str());

ofstream outfile;
outfile.open("dnatwo.txt");

outfile.setf(ios::fixed);
outfile.setf(ios::showpoint);
//outfile.precision(100);if (gst)
{
string search;
string line;
string number;
gst >> number;

search.resize(25);

cout << "Enter the search criteria: ";
cin >> search;

while (getline(gst, line))
{
if (number == search);
counter = counter += 1;

if (line.find(search) != std::string::npos)
{
//outfile << line << endl;
}
std::size_t found = line.find(search);
if (found != std::string::npos)
outfile << "found at line: " << counter << " " << "Position: " << found << " " << line
<< "\r\n" << endl;

}
}
else

{
cerr << "Cannot open file " << filename << endl;
return -1;
}

return 0;
}

Я уверен, что это очень просто для многих людей, но я не один из них.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]