/// <summary> /// Load a list of all variants in a file. This is memory-intensive; don't do this for whole-genome vcf files! /// </summary> public static List <CalledAllele> GetAllVariantsInFile(string vcfPath) { List <CalledAllele> allVariants = new List <CalledAllele>(); using (AlleleReader reader = new AlleleReader(vcfPath)) { foreach (CalledAllele variant in reader.GetVariants()) { allVariants.Add(variant); } } return(allVariants); }
public static Dictionary <string, List <CandidateAllele> > GetVariantsByChromosome(this AlleleReader reader, bool variantsOnly = false, bool flagIsKnown = false, List <AlleleCategory> typeFilter = null, Func <CandidateAllele, bool> doSkipCandidate = null) { var lookup = new Dictionary <string, List <CandidateAllele> >(); var calledVariants = reader.GetVariants(); foreach (var calledVariant in calledVariants) { var candidate = BackToCandiate(calledVariant); if (candidate.Type != AlleleCategory.Unsupported) { if (variantsOnly && candidate.Type == AlleleCategory.Reference) { continue; } if (typeFilter != null && !typeFilter.Contains(candidate.Type)) { continue; } if (doSkipCandidate != null && doSkipCandidate(candidate)) { continue; } if (flagIsKnown) { candidate.IsKnown = true; } if (!lookup.ContainsKey(candidate.Chromosome)) { lookup[candidate.Chromosome] = new List <CandidateAllele>(); } lookup[candidate.Chromosome].Add(candidate); } } return(lookup); }