@@ -54,22 +54,27 @@ bool VcfReader::readNext()
5454 if (items[0 ][0 ]==' #' )
5555 return false ;
5656
57- int pos = atoi (items[1 ].c_str ());
58- Variant var;
59- var.chrom = trim (items[0 ]);
60- var.pos = pos;
61- var.id = trim (items[2 ]);
62- var.ref = trim (items[3 ]);
63- var.alt = trim (items[4 ]);
64- var.qual = trim (items[5 ]);
65- var.filter = trim (items[6 ]);
66- var.info = trim (items[7 ]);
67-
68- // format is not required
69- if (items.size ()>=9 )
70- var.format = trim (items[8 ]);
71-
72- mVariants .push_back (var);
57+ // split the alt by comma to make multiple variants, GATK usually output such kind of variant like C>T,AT
58+ vector<string> alts;
59+ split (trim (items[4 ]), alts, " ," );
60+ for (int a=0 ; a<alts.size (); a++){
61+ int pos = atoi (items[1 ].c_str ());
62+ Variant var;
63+ var.chrom = trim (items[0 ]);
64+ var.pos = pos;
65+ var.id = trim (items[2 ]);
66+ var.ref = trim (items[3 ]);
67+ var.alt = alts[a];
68+ var.qual = trim (items[5 ]);
69+ var.filter = trim (items[6 ]);
70+ var.info = trim (items[7 ]);
71+
72+ // format is not required
73+ if (items.size ()>=9 )
74+ var.format = trim (items[8 ]);
75+
76+ mVariants .push_back (var);
77+ }
7378
7479 return true ;
7580}
0 commit comments