Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <sstream>
- #include <string>
- #include <vector>
- using namespace std;
- // Class to store fasta objects
- class Fasta
- {
- private:
- string name;
- string sequence;
- public:
- Fasta(string n, string s)
- {
- name = n;
- sequence = s;
- }
- void set_name(string n) { name = n; }
- void set_sequence(string s) { sequence = s; }
- void print_sequence() { cout << ">" << name << "\n" << sequence << "\n"; }
- };
- // Parse fasta file and return Fasta objects to a vector<Fasta> pointer
- void fasta_parser(vector<Fasta> * sequences, string filename)
- {
- std::ifstream infile(filename);
- if ( !infile.is_open() )
- cout<<"Could not open file\n";
- else {
- string line;
- string name;
- string sequence;
- while (std::getline(infile, line))
- {
- if (line[0] == '>')
- {
- name = line.erase(0, 1);
- }
- else
- {
- sequence = line;
- Fasta seq = Fasta(name, sequence);
- sequences -> push_back(seq);
- }
- }
- }
- }
- int main(int argc, char *argv[])
- {
- string filename;
- // Parse user input
- if (argc != 2)
- {
- cout << "Usage: ./oop input_fasta_file\n";
- return 1;
- }
- else
- {
- filename = argv[1];
- }
- // Parse fasta file
- vector<Fasta> sequences;
- fasta_parser(&sequences, filename);
- for (Fasta s : sequences)
- {
- s.print_sequence();
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment