Guest User

Untitled

a guest
Oct 22nd, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <sstream>
  4. #include <string>
  5. #include <vector>
  6.  
  7. using namespace std;
  8.  
  9. // Class to store fasta objects
  10. class Fasta
  11. {
  12. private:
  13. string name;
  14. string sequence;
  15. public:
  16. Fasta(string n, string s)
  17. {
  18. name = n;
  19. sequence = s;
  20. }
  21. void set_name(string n) { name = n; }
  22. void set_sequence(string s) { sequence = s; }
  23. void print_sequence() { cout << ">" << name << "\n" << sequence << "\n"; }
  24. };
  25.  
  26. // Parse fasta file and return Fasta objects to a vector<Fasta> pointer
  27. void fasta_parser(vector<Fasta> * sequences, string filename)
  28. {
  29. std::ifstream infile(filename);
  30. if ( !infile.is_open() )
  31. cout<<"Could not open file\n";
  32. else {
  33. string line;
  34. string name;
  35. string sequence;
  36.  
  37. while (std::getline(infile, line))
  38. {
  39. if (line[0] == '>')
  40. {
  41. name = line.erase(0, 1);
  42. }
  43. else
  44. {
  45. sequence = line;
  46. Fasta seq = Fasta(name, sequence);
  47. sequences -> push_back(seq);
  48. }
  49. }
  50. }
  51. }
  52.  
  53. int main(int argc, char *argv[])
  54. {
  55. string filename;
  56.  
  57. // Parse user input
  58. if (argc != 2)
  59. {
  60. cout << "Usage: ./oop input_fasta_file\n";
  61. return 1;
  62. }
  63. else
  64. {
  65. filename = argv[1];
  66. }
  67.  
  68. // Parse fasta file
  69. vector<Fasta> sequences;
  70. fasta_parser(&sequences, filename);
  71.  
  72. for (Fasta s : sequences)
  73. {
  74. s.print_sequence();
  75. }
  76.  
  77. return 0;
  78. }
Add Comment
Please, Sign In to add comment