From 36cbfe1c98674d4f1358c8a66182128c47edf635 Mon Sep 17 00:00:00 2001 From: tcarver <tjc> Date: Wed, 8 Feb 2012 09:01:23 +0000 Subject: [PATCH] fixes for writing out variant sites --- .../artemis/components/variant/IOUtils.java | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/uk/ac/sanger/artemis/components/variant/IOUtils.java b/uk/ac/sanger/artemis/components/variant/IOUtils.java index 4a7b8dba0..0a2765e03 100644 --- a/uk/ac/sanger/artemis/components/variant/IOUtils.java +++ b/uk/ac/sanger/artemis/components/variant/IOUtils.java @@ -179,7 +179,7 @@ class IOUtils protected static void exportVariantFasta(final VCFview vcfView) { final EntryGroup entryGroup = vcfView.getEntryGroup(); - final int length = entryGroup.getSequenceLength(); + int length = entryGroup.getSequenceLength(); final Bases bases = entryGroup.getBases(); final FeatureVector features = entryGroup.getAllFeatures(); @@ -223,6 +223,7 @@ class IOUtils int baseCount = 0; // write variant sites to tmp files + //length = 2172095; for(int i=0; i<length; i+=MAX_BASE_CHUNK) { int start = i+1; @@ -352,13 +353,12 @@ class IOUtils final char basesC[] = bases.getSubSequenceC(new Range(start, end), Bases.FORWARD); for (int i = start; i < end; i++) { - int basePosition = i; - int thisSample = 0; + int thisSample = 0; final String[] thisBase = new String[ntotalSamples+1]; boolean seenSNP = false; int insertionLength = 0; - + // loop over each VCF file for (int j = 0; j < vcfView.getVcfReaders().length; j++) { @@ -368,13 +368,14 @@ class IOUtils if(record == null) continue; + boolean vcf_v4 = reader.isVcf_v4(); int nsamples = reader.getNumberOfSamples(); // loop over each sample for(int k=0; k<nsamples; k++) { // look at each type of variant - if(vcfView.showVariant(record, features, basePosition, reader, k, j) ) + if(vcfView.showVariant(record, features, i, reader, k, j) ) { if(record.getAlt().isDeletion(vcf_v4)) { @@ -402,13 +403,21 @@ class IOUtils thisBase[thisSample] = "."; else { - thisBase[thisSample] = record.getAlt().toString(); - seenSNP = true; + if(record.getAlt().toString().length() > 1 && + record.getAlt().toString().length() == record.getRef().length() ) + { + thisBase[thisSample] = record.getAlt().toString(); + seenSNP = true; + + if(thisBase[ntotalSamples] == null || + thisBase[ntotalSamples].length() < record.getRef().length()) + thisBase[ntotalSamples] = record.getRef(); + } } } else thisBase[thisSample] = "N"; // filtered out - + thisSample++; } } @@ -416,11 +425,12 @@ class IOUtils if(seenSNP) { // look-up reference base - thisBase[ntotalSamples] = String.valueOf( basesC[i-start] ); + if(thisBase[ntotalSamples] == null) + thisBase[ntotalSamples] = String.valueOf( basesC[i-start] ); int remainder = 0; for(int j=0; j<thisBase.length; j++) - { + { if(thisBase[j] != null) { for(int k=0; k<thisBase[j].length(); k++) @@ -455,7 +465,7 @@ class IOUtils writer[j].write(System.getProperty("line.separator")); writer[j].write("-"); } - } + } } if(insertionLength > 0) -- GitLab