From e54718558eac4a009adfa4901b636ccb25e4478d Mon Sep 17 00:00:00 2001 From: tjc <tjc@ee4ac58c-ac51-4696-9907-e4b3aa274f04> Date: Thu, 12 May 2011 10:23:30 +0000 Subject: [PATCH] allow for SP type change in bcftoools git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@16072 ee4ac58c-ac51-4696-9907-e4b3aa274f04 --- .../artemis/components/variant/BCFReader.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/uk/ac/sanger/artemis/components/variant/BCFReader.java b/uk/ac/sanger/artemis/components/variant/BCFReader.java index d4114fb91..54da10e24 100644 --- a/uk/ac/sanger/artemis/components/variant/BCFReader.java +++ b/uk/ac/sanger/artemis/components/variant/BCFReader.java @@ -49,6 +49,8 @@ class BCFReader extends AbstractVCFReader private int nsamples; private String metaData; private String fileName; + + private boolean longSP = true; private static org.apache.log4j.Logger logger4j = org.apache.log4j.Logger.getLogger(BCFReader.class); @@ -106,7 +108,14 @@ class BCFReader extends AbstractVCFReader if(bcfRecord.getPos() >= beg && bcfRecord.getPos() <= end) return bcfRecord; } - } + } + catch(ArrayIndexOutOfBoundsException ae) + { + if(longSP) + longSP = false; + else + throw ae; + } catch(Exception e) { if(is.read() != -1) // eof @@ -213,7 +222,7 @@ class BCFReader extends AbstractVCFReader int n_alleles = bcfRecord.getAlt().getNumAlleles(); int nc = (int) (n_alleles * ((float)(((float)n_alleles+1.f)/2.f))); - if(bcfRecord.getAlt().isNonVariant()) + if(bcfRecord.getAlt().isNonVariant() && bcfRecord.getAlt().equals(".")) nc = 1; String fmts[] = VCFRecord.COLON_PATTERN.split( bcfRecord.getFormat() ); @@ -325,7 +334,12 @@ class BCFReader extends AbstractVCFReader else if(tag.equals("PL")) // Phred-scaled likelihood return nsamples*nc; // uint8_t[n*x] else if(tag.equals("SP")) // - return nsamples; // uint8_t[n] + { + if(longSP) // type changed in bcftools + return 4*nsamples; // uint32_t[n] + else + return nsamples; // uint8_t[n] + } else // misc return 4*nsamples; // uint32_t+char* } -- GitLab