Beispiel #1
0
    void loop()
	{
	rows.push_back(new Column);
	rows.back()->label.assign("CHROM");
	rows.push_back(new Column);
	rows.back()->label.assign("POS");
	rows.push_back(new Column);
	rows.back()->label.assign("ID");
	rows.push_back(new Column);
	rows.back()->label.assign("REF");
	rows.push_back(new Column);
	rows.back()->label.assign("ALT");
	for(int i=0;i< samples.size();++i)
	    {
	    Sample* sample=samples.at(i);
	    rows.push_back(new Column);
	    rows.back()->label.assign(sample->name).append(":QUAL");
	    rows.push_back(new Column);
	    rows.back()->label.assign(sample->name).append(":FILTER");
	    rows.push_back(new Column);
	    rows.back()->label.assign(sample->name).append(":INFO");
	    rows.push_back(new Column);
	    rows.back()->label.assign(sample->name).append(":FORMAT");
	    rows.push_back(new Column);
	    rows.back()->label.assign(sample->name).append(":CALL");
	    }


	screen=Screen::startup();
	screen->border();
	screen->refresh();
	for(;;)
	    {
	    int c=screen->getch();
	    switch(c)
		{
		case 'q':
		    {
		    break;
		    }
		case
		}
	    }

	Screen::shutdown();
	}
Beispiel #2
0
    void run(std::istream& in)
    	    {
    	    vector<string> tokens;
    	    string line;
    	    int chromCol=0;
    	    int posCol=1;
    	    int idCol=2;
    	    int refCol=3;
    	    int altCol=4;
    	    int sampleCol=-1;

    	    while(getline(in,line,'\n'))
    		    {
    		    if(AbstractApplication::stopping()) break;
    		    if(line.empty() || line[0]=='#') continue;
    		    tokenizer.split(line,tokens);

    		    string chrom=tokens[chromCol];
    		    chat *p2;
    		    int pos=(int)strtol(tokens[posCol].c_str(),&p2,10);
    		    string id=tokens[idCol];
    		    string ref=tokens[refCol];
    		    string alt=tokens[altCol];
    		    string sampleName=tokens[sampleCol];
    		    Row* therow=NULL;
    		    if(!rows.empty() &&
    			rows.back()->pos->chrom.compare(chrom)==0 &&
    			rows.back()->pos->pos==pos &&
    			rows.back()->ref.compare(ref)==0 &&
    			rows.back()->alt.compare(alt)==0
    			)
    			{
    			therow=rows.back();
    			}
    		    else
    			{
    			therow=new Row;
    			therow->pos=new ChromPosition(chrom,pos);
    			therow->id.assign(id);
    			therow->ref.assign(ref);
    			therow->alt.assign(alt);
    			rows.push_back(therow);
    			}
    		    int index_sample=0;
    		    if(sampleCol==-1)
    			{
    			if(sample2col.empty())
    			    {
    			    Sample* sample=new Sample;
    			    sample->name.assign("Sample");
    			    sample->column_index=0;
    			    samples.push_back(sample);
    			    }
    			index_sample=0;
    			}
    		    else
    			{
			map<string,Sample*>::iterator r= sample2col.find(sampleName);
			if(r==sample2col.end())
			    {
			    Sample* sample=new Sample;
			    sample->name.assign(sampleName);
			    sample->column_index=sample2col.size();
			    index_sample=sample->column_index;
			    samples.push_back(sample);
			    sample2col.put(sample->name,sample);
			    }
			else
			    {
			    index_sample=r->second->column_index;
			    }
    			}

    		    if(index_sample>=therow->data.size())
    			{
    			therow->data.resize(index_sample+1);
    			}
    		    Data* data=new Data;
    		    therow->data.assign(index_sample,data);
    		    }
    	    }