Beispiel #1
0
        /// <summary>
        /// returns a JSON object given a vcf line (no annotation is performed)
        /// </summary>
        internal static UnifiedJson GetJson(string vcfLine, ChromosomeRenamer renamer)
        {
            var variantFeature = VcfUtilities.GetVariant(vcfLine, renamer);
            var json           = new UnifiedJson(variantFeature);

            json.AddVariantData(variantFeature);
            return(json);
        }
Beispiel #2
0
        private static void WriteOmim(IAnnotationSource annotator, UnifiedJsonWriter unifiedJsonWriter)
        {
            var omimAnnotations = new List <string>();

            annotator.AddGeneLevelAnnotation(omimAnnotations);
            var annotionOutput = UnifiedJson.GetGeneAnnotation(omimAnnotations, "omim");

            unifiedJsonWriter.Write(annotionOutput);
        }
Beispiel #3
0
        /// <summary>
        /// constructor
        /// </summary>
        public UnifiedJsonWriter(StreamWriter writer, string creationTime, string vepDataVersion, IEnumerable <IDataSourceVersion> iDataSourceVersions, string genomeAssembly, string[] sampleNames)
        {
            _writer         = writer;
            _writer.NewLine = "\n";

            var dataSourceVersions = iDataSourceVersions?.Select(iDataSourceVersion => iDataSourceVersion as DataSourceVersion).ToList();

            // write the header
            _writer.Write(UnifiedJson.GetHeader(NirvanaAnnotationSource.GetVersion(), creationTime, genomeAssembly,
                                                JsonCommon.SchemaVersion, vepDataVersion, dataSourceVersions, sampleNames));
        }
Beispiel #4
0
        private static void ExtractCsqs(UnifiedJson unifiedJson, List <CsqEntry> csqs)
        {
            foreach (var jsonVariant in unifiedJson.AnnotatedAlternateAlleles)
            {
                csqs.AddRange(
                    jsonVariant.EnsemblTranscripts.Where(transcript => transcript.IsCanonical == "true")
                    .Select(transcript => new CsqEntry
                {
                    Allele      = jsonVariant.GenotypeIndex.ToString(),
                    Canonical   = transcript.IsCanonical,
                    Feature     = transcript.TranscriptID,
                    FeatureType = CsqCommon.TranscriptFeatureType,
                    Symbol      = transcript.Hgnc,
                    Consequence = transcript.Consequence == null ? null : string.Join("&", transcript.Consequence)
                }));

                csqs.AddRange(from transcript in jsonVariant.RefSeqTranscripts
                              where transcript.IsCanonical == "true"
                              select new CsqEntry
                {
                    Allele      = jsonVariant.GenotypeIndex.ToString(),
                    Canonical   = transcript.IsCanonical,
                    Feature     = transcript.TranscriptID,
                    FeatureType = CsqCommon.TranscriptFeatureType,
                    Symbol      = transcript.Hgnc,
                    Consequence = transcript.Consequence == null ? null : string.Join("&", transcript.Consequence)
                });

                csqs.AddRange(jsonVariant.RegulatoryRegions.Select(regulatoryRegion => new CsqEntry
                {
                    Allele      = jsonVariant.GenotypeIndex.ToString(),
                    Consequence = string.Join("&", regulatoryRegion.Consequence),
                    Feature     = regulatoryRegion.ID,
                    FeatureType = CsqCommon.RegulatoryFeatureType
                }));
            }
        }
Beispiel #5
0
        private static void ExtractInfo(UnifiedJson unifiedJson, VcfField infoEntries)
        {
            var alleleFreq1000G   = new VcfInfoKeyValue("AF1000G");
            var ancestralAllele   = new VcfInfoKeyValue("AA");
            var clinVar           = new VcfInfoKeyValue("clinvar");
            var cosmic            = new VcfInfoKeyValue("cosmic");
            var evs               = new VcfInfoKeyValue("EVS");
            var globalMinorAllele = new VcfInfoKeyValue("GMAF");
            var phyloP            = new VcfInfoKeyValue("phyloP");

            foreach (var jsonVariant in unifiedJson.AnnotatedAlternateAlleles)
            {
                if (jsonVariant.IsReferenceMinor)
                {
                    infoEntries.Add("RefMinor");
                }

                phyloP.Add(jsonVariant.PhylopScore);

                ancestralAllele.Add(jsonVariant.AncestralAllele);

                foreach (var cosmicEntry in jsonVariant.CosmicEntries)
                {
                    if (cosmicEntry.ID == null)
                    {
                        continue;
                    }
                    if (cosmicEntry.SaAltAllele != jsonVariant.SaAltAllele)
                    {
                        continue;
                    }

                    cosmic.Add(jsonVariant.GenotypeIndex.ToString(CultureInfo.InvariantCulture) + '|' + cosmicEntry.ID);
                }

                foreach (var clinVarEntry in jsonVariant.ClinVarEntries)
                {
                    if (clinVarEntry.Significance == null)
                    {
                        continue;
                    }
                    if (clinVarEntry.SaAltAllele != jsonVariant.SaAltAllele)
                    {
                        continue;
                    }

                    clinVar.Add(jsonVariant.GenotypeIndex.ToString(CultureInfo.InvariantCulture) + '|' + RemoveWhiteSpaceAndComma(clinVarEntry.Significance));
                }

                if (jsonVariant.GlobalMinorAllele != null || jsonVariant.GlobalMinorAlleleFrequency != null)
                {
                    globalMinorAllele.Add(jsonVariant.GlobalMinorAllele + '|' + jsonVariant.GlobalMinorAlleleFrequency);
                }
                else
                {
                    // for multi allelic variants, we need to add a . for the entries that do not have a Global minor allele.
                    globalMinorAllele.Add(null);
                }

                alleleFreq1000G.Add(jsonVariant.AlleleFrequencyAll);
                if (jsonVariant.EvsAlleleFrequencyAll != null || jsonVariant.EvsCoverage != null || jsonVariant.EvsSamples != null)
                {
                    evs.Add(jsonVariant.EvsAlleleFrequencyAll + '|' + jsonVariant.EvsCoverage + '|' + jsonVariant.EvsSamples);
                }
                else
                {
                    evs.Add(null);
                }
            }

            infoEntries.Add(ancestralAllele.GetString());
            infoEntries.Add(globalMinorAllele.GetString());
            infoEntries.Add(alleleFreq1000G.GetString());
            infoEntries.Add(evs.GetString());
            infoEntries.Add(phyloP.GetString());
            infoEntries.Add(cosmic.GetString());
            infoEntries.Add(clinVar.GetString());
        }