diff --git a/uk/ac/sanger/artemis/components/variant/BCFReader.java b/uk/ac/sanger/artemis/components/variant/BCFReader.java index 38bd15820ec581cc5dca612f35d3017cf9b9c57b..42c1d24844b7b8e2a3e5d433734d155a040bb5ed 100644 --- a/uk/ac/sanger/artemis/components/variant/BCFReader.java +++ b/uk/ac/sanger/artemis/components/variant/BCFReader.java @@ -298,6 +298,50 @@ class BCFReader extends AbstractVCFReader * @return */ private void getParts(final byte[] b, final VCFRecord bcfRecord) + { + int index = 0; + final StringBuilder buff = new StringBuilder(); + + for(int i=0; i<b.length; i++) + { + if(b[i] == 0 && (i == 0 || b[i-1] == 0) ) + { + switch( index ) + { + case 0: bcfRecord.setID("."); break; + case 1: bcfRecord.setRef("."); break; + case 2: bcfRecord.setAlt(":"); break; // this looks like a non-variant site + case 3: bcfRecord.setFilter("."); break; + case 4: bcfRecord.setInfo("."); break; + case 5: bcfRecord.setFormat("."); break; + default: return; + } + index++; + } + if(b[i] == 0) + continue; + + buff.setLength(0); + buff.append((char)b[i]); + while(i < b.length-1 && b[i+1] != 0) + buff.append((char)b[++i]); + + switch( index ) + { + case 0: bcfRecord.setID(buff.toString()); break; + case 1: bcfRecord.setRef(buff.toString()); break; + case 2: bcfRecord.setAlt(buff.toString()); break; + case 3: bcfRecord.setFilter(buff.toString()); break; + case 4: bcfRecord.setInfo(buff.toString()); break; + case 5: bcfRecord.setFormat(buff.toString()); break; + default: return; + } + index++; + } + } + + + /*private void getParts(final byte[] b, final VCFRecord bcfRecord) { final StringBuilder buff = new StringBuilder(); for(int i=0; i<b.length; i++) @@ -336,7 +380,7 @@ class BCFReader extends AbstractVCFReader lastInd = ind; i++; } - } + }*/ /** * DP uint16 t[n] Read depth