Use new key of source ROD plus alleles
This commit is contained in:
parent
221ce9c3d6
commit
020f884d5a
|
|
@ -38,6 +38,7 @@ import org.broadinstitute.sting.utils.GenomeLoc;
|
||||||
import org.broadinstitute.sting.utils.MendelianViolation;
|
import org.broadinstitute.sting.utils.MendelianViolation;
|
||||||
import org.broadinstitute.sting.utils.SampleUtils;
|
import org.broadinstitute.sting.utils.SampleUtils;
|
||||||
import org.broadinstitute.sting.utils.codecs.vcf.*;
|
import org.broadinstitute.sting.utils.codecs.vcf.*;
|
||||||
|
import org.broadinstitute.sting.utils.collections.Pair;
|
||||||
import org.broadinstitute.sting.utils.exceptions.UserException;
|
import org.broadinstitute.sting.utils.exceptions.UserException;
|
||||||
import org.broadinstitute.sting.utils.text.XReadLines;
|
import org.broadinstitute.sting.utils.text.XReadLines;
|
||||||
import org.broadinstitute.sting.utils.variantcontext.*;
|
import org.broadinstitute.sting.utils.variantcontext.*;
|
||||||
|
|
@ -565,15 +566,23 @@ public class SelectVariants extends RodWalker<Integer, Integer> implements TreeR
|
||||||
// can't know stop location for deletions from reference
|
// can't know stop location for deletions from reference
|
||||||
|
|
||||||
DBCursor cursor = mongoCollection.find(query);
|
DBCursor cursor = mongoCollection.find(query);
|
||||||
Map<String,DBObject> results = new HashMap<String,DBObject>();
|
Map<Pair<String,List<Allele>>,DBObject> results = new HashMap<Pair<String,List<Allele>>,DBObject>();
|
||||||
Map<String,ArrayList<Genotype>> genotypes = new HashMap<String,ArrayList<Genotype>>();
|
Map<Pair<String,List<Allele>>,List<Genotype>> genotypes = new HashMap<Pair<String,List<Allele>>,List<Genotype>>();
|
||||||
|
|
||||||
while(cursor.hasNext()) {
|
while(cursor.hasNext()) {
|
||||||
DBObject oneResult = cursor.next();
|
DBObject oneResult = cursor.next();
|
||||||
|
|
||||||
String type = (String)oneResult.get("type");
|
|
||||||
results.put(type, oneResult);
|
|
||||||
|
|
||||||
String sample = (String)oneResult.get("sample");
|
String sample = (String)oneResult.get("sample");
|
||||||
|
String sourceROD = (String)oneResult.get("sourceROD");
|
||||||
|
|
||||||
|
ArrayList<Allele> alleles = new ArrayList<Allele>();
|
||||||
|
BasicDBObject allelesInDb = (BasicDBObject)oneResult.get("alleles");
|
||||||
|
for (Object alleleInDb : allelesInDb.values()) {
|
||||||
|
String rawAllele = (String)alleleInDb;
|
||||||
|
boolean isRef = rawAllele.contains("*");
|
||||||
|
String allele = rawAllele.replace("*", "");
|
||||||
|
alleles.add(Allele.create(allele, isRef));
|
||||||
|
}
|
||||||
|
|
||||||
BasicDBObject genotypeInDb = (BasicDBObject)oneResult.get("genotype");
|
BasicDBObject genotypeInDb = (BasicDBObject)oneResult.get("genotype");
|
||||||
Double genotypeError = (Double)genotypeInDb.get("error");
|
Double genotypeError = (Double)genotypeInDb.get("error");
|
||||||
|
|
@ -598,24 +607,20 @@ public class SelectVariants extends RodWalker<Integer, Integer> implements TreeR
|
||||||
|
|
||||||
Genotype genotype = new Genotype(sample, genotypeAlleles, genotypeError);
|
Genotype genotype = new Genotype(sample, genotypeAlleles, genotypeError);
|
||||||
|
|
||||||
if (!genotypes.containsKey(type))
|
// primary key to uniquely identify variant
|
||||||
genotypes.put(type, new ArrayList<Genotype>());
|
Pair<String, List<Allele>> sourceRodAllelePair = new Pair<String, List<Allele>>(sourceROD, alleles);
|
||||||
|
|
||||||
Collection<Genotype> genotypesByType = genotypes.get(type);
|
if (!genotypes.containsKey(sourceRodAllelePair))
|
||||||
genotypesByType.add(Genotype.modifyAttributes(genotype, genotypeAttributes));
|
genotypes.put(sourceRodAllelePair, new ArrayList<Genotype>());
|
||||||
|
|
||||||
|
Collection<Genotype> genotypesBySourceROD = genotypes.get(sourceRodAllelePair);
|
||||||
|
genotypesBySourceROD.add(Genotype.modifyAttributes(genotype, genotypeAttributes));
|
||||||
|
|
||||||
|
results.put(sourceRodAllelePair, oneResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (String type : results.keySet()) {
|
for (Pair<String, List<Allele>> sourceRodAllelePair : results.keySet()) {
|
||||||
DBObject result = results.get(type);
|
DBObject result = results.get(sourceRodAllelePair);
|
||||||
|
|
||||||
ArrayList<Allele> alleles = new ArrayList<Allele>();
|
|
||||||
BasicDBObject allelesInDb = (BasicDBObject)result.get("alleles");
|
|
||||||
for (Object alleleInDb : allelesInDb.values()) {
|
|
||||||
String rawAllele = (String)alleleInDb;
|
|
||||||
boolean isRef = rawAllele.contains("*");
|
|
||||||
String allele = rawAllele.replace("*", "");
|
|
||||||
alleles.add(Allele.create(allele, isRef));
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, Object> attributes = new TreeMap<String, Object>();
|
Map<String, Object> attributes = new TreeMap<String, Object>();
|
||||||
BasicDBList attrsInDb = (BasicDBList)result.get("attributes");
|
BasicDBList attrsInDb = (BasicDBList)result.get("attributes");
|
||||||
|
|
@ -638,11 +643,11 @@ public class SelectVariants extends RodWalker<Integer, Integer> implements TreeR
|
||||||
String id = (String)result.get("id");
|
String id = (String)result.get("id");
|
||||||
Double error = (Double)result.get("error");
|
Double error = (Double)result.get("error");
|
||||||
|
|
||||||
VariantContextBuilder builder = new VariantContextBuilder(source, contig, start, stop, alleles);
|
VariantContextBuilder builder = new VariantContextBuilder(source, contig, start, stop, sourceRodAllelePair.getSecond());
|
||||||
|
|
||||||
builder.id(id);
|
builder.id(id);
|
||||||
builder.log10PError(error);
|
builder.log10PError(error);
|
||||||
builder.genotypes(genotypes.get(type));
|
builder.genotypes(genotypes.get(sourceRodAllelePair));
|
||||||
builder.attributes(attributes);
|
builder.attributes(attributes);
|
||||||
builder.filters(filters);
|
builder.filters(filters);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue