Example #1
0
        /// <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);
        }
Example #2
0
        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);
        }