package uk.ac.sanger.artemis.components.variant; import java.io.IOException; import java.util.List; import org.apache.log4j.Logger; import org.genedb.crawl.model.Gene; import org.genedb.crawl.model.MappedVCFRecord; import org.genedb.crawl.model.Sequence; public class BCFReaderAdapter extends VariantReaderAdapter { private Logger logger = Logger.getLogger(BCFReaderAdapter.class); private BCFReader reader; public BCFReaderAdapter(String url) throws IOException { reader = new BCFReader(url); String hdr = reader.headerToString(); logger.info(hdr); if(hdr.indexOf("VCFv4") > -1) { reader.setVcf_v4(true); } abstractReader = reader; } @Override public List<VCFRecord> unFilteredQuery(String region, int start, int end) throws IOException { List<VCFRecord> records = super.unFilteredQuery(region, start,end); if (records.size() <= 1) { logger.warn("running second time, suspicious size of 1."); records = super.unFilteredQuery(region, start,end); } return records; } @Override public List<MappedVCFRecord> query( String region, int start, int end, List<CDSFeature> genes, VariantFilterOptions options) throws IOException { List<MappedVCFRecord> records = super.query(region, start, end, genes, options); if (records.size() <= 1) { logger.warn("running second time, suspicious size of <= 1."); records = super.query(region, start, end, genes, options); } return records; } @Override public void close() throws IOException { reader.close(); reader = null; } }