コード例 #1
0
ファイル: VcfConversion.cs プロジェクト: zhouhufeng/Nirvana
        private static string ExtractDbId(IAnnotatedPosition annotatedPosition)
        {
            var dbSnp = new VcfField();

            var nonDbsnpIds = GetNonDbsnpIds(annotatedPosition.Position.VcfFields[VcfCommon.IdIndex]);

            if (nonDbsnpIds != null)
            {
                foreach (var nonDbsnpId in nonDbsnpIds)
                {
                    dbSnp.Add(nonDbsnpId);
                }
            }

            foreach (var annotatedVariant in annotatedPosition.AnnotatedVariants)
            {
                foreach (var suppAnnotation in annotatedVariant.SupplementaryAnnotations)
                {
                    if (suppAnnotation.SaDataSource.KeyName != DbSnpKeyName)
                    {
                        continue;
                    }
                    foreach (var s in suppAnnotation.GetVcfStrings())
                    {
                        dbSnp.Add(s);
                    }
                }
            }

            return(dbSnp.GetString(""));
        }
コード例 #2
0
ファイル: VcfConversion.cs プロジェクト: zhouhufeng/Nirvana
        private void AddInfoField(IAnnotatedPosition annotatedPosition, StringBuilder sb)
        {
            var infoEntries = new VcfField();
            var infoField   = annotatedPosition.Position.InfoData.UpdatedInfoField;

            if (!string.IsNullOrEmpty(infoField))
            {
                infoEntries.Add(infoField);
            }

            ExtractInfo(annotatedPosition, infoEntries);

            infoField = infoEntries.GetString("");

            // remove .
            if (infoField == ".")
            {
                infoField = "";
            }

            sb.Append(infoField);

            var csqs = new List <CsqEntry>();

            ExtractCsqs(annotatedPosition, csqs);

            if (csqs.Count != 0)
            {
                if (infoField.Length > 0)
                {
                    sb.Append(";");
                }
            }

            // append CSQ tags using delegate from annotator
            sb.Append(GetCsqtAndCsqrVcfInfo(csqs));

            if (csqs.Count == 0 && infoField.Length == 0)
            {
                sb.Append(".");
            }
        }