Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

subsetalgo.cc

Go to the documentation of this file.
00001 #include "subsetalgo.h"
00002 #include <fstream>
00003 #include "viewparam.h"
00004 #include <cassert>
00005 #include <qstring.h>
00006 #include <qfiledialog.h>
00007 #include <qdir.h>
00008 #include <qfile.h>
00009 #include <qmessagebox.h>
00010 #include "trapperview.h"
00011 
00012 using namespace std;
00013 
00014 void SubsetAlgo::start()
00015 {
00016   if ( getMAl()->get_num_seq() == 0 ) {
00017 //     cerr<<"Nothing to be done here! "<<endl;
00018     return;
00019   }
00020   
00021   ViewParam* param = dynamic_cast<ViewParam*>(my_param);
00022   assert(param);
00023   
00024   QString title = param->view()->getDocument()->title();
00025 
00026   QString currdir = QDir::currentDirPath();
00027   QString contig = title.section( '/', -2 );
00028   
00029   QString header = contig + ".subset.seq";
00030   QString default_file_name = currdir + '/' + header;
00031   
00032 
00033   QString filename = QFileDialog::getSaveFileName( default_file_name,
00034                                             0,
00035                                             0,
00036                                            "save seqs file dialog"
00037                                            "Choose a filename to save sequences under" );
00038   
00039 
00040   if ( filename.isEmpty() ) return;
00041 
00042   if ( QFile::exists( filename ) &&
00043        QMessageBox::question(
00044                              0,
00045                              tr("Overwrite File? -- Trapper"),
00046                              tr("A file called %1 already exists."
00047                                 "Do you want to overwrite it?")
00048                              .arg( filename ),
00049                              tr("&Yes"), tr("&No"),
00050                              QString::null, 0, 1 ) ) {
00051     
00052     return;
00053   }
00054   
00055   default_file_name = filename + ".qual";
00056 
00057   QString filename_qual = QFileDialog::getSaveFileName( default_file_name,
00058                                                         0,
00059                                                         0,
00060                                                         "save quals file dialog"
00061                                                         "Choose a filename to save quality values under" );
00062   
00063 
00064   if ( filename_qual.isEmpty() ) return;
00065 
00066   if ( QFile::exists( filename_qual ) &&
00067        QMessageBox::question(
00068                              0,
00069                              tr("Overwrite File? -- Trapper"),
00070                              tr("A file called %1 already exists."
00071                                 "Do you want to overwrite it?")
00072                              .arg( filename_qual ),
00073                              tr("&Yes"), tr("&No"),
00074                              QString::null, 0, 1 ) ) {
00075     
00076     return;
00077   }
00078   
00079   
00080   ofstream outFile(filename);
00081   ofstream outFileQ(filename_qual);
00082   
00083 
00084   for( size_t i = 0; i < getMAl()->get_num_seq(); i++ ) {
00085     outFile<<'>'<<getMAl()->get_name(i)<<'\n';
00086     outFileQ<<'>'<<getMAl()->get_name(i)<<'\n';
00087     int cnt(0);
00088     int cntQ(0);
00089     for( size_t j = 0; j < getMAl()->get_len(i); j++ ) {
00090       char base = getMAl()->get_base(i, j);
00091       if (  base == '*' || base == '-' ) {
00092         continue;
00093       }
00094       int qual = getMAl()->get_qual(i, j);
00095       cnt++;
00096       cntQ++;
00097       outFile<<base;
00098       outFileQ<<qual<<' ';
00099       if ( cnt % 50 == 0 ) {
00100         outFile<<'\n';
00101       }
00102       if ( cntQ % 15 == 0 ) {
00103         outFileQ<<'\n';
00104       }
00105       
00106     }
00107     if ( cnt % 50 != 0 ) {
00108       outFile<<'\n';
00109     }
00110     if ( cntQ % 15 != 0 ) {
00111       outFileQ<<'\n';
00112     }
00113   }
00114 
00115   outFile.close();
00116   outFileQ.close();
00117   
00118   
00119 }

Generated on Fri Mar 17 17:44:24 2006 for trapper by  doxygen 1.4.4