Ejemplo n.º 1
0
        //
        private static SequenceProperties GetReferenceProperties(string consensusName, ref string message)
        {
            //
            // var consensusSequenceName = ">" + sampleName + "|" + subType + Mpileup2ConsensusFooter + cnsCnt +
            // " " + pileupItem.ReferenceName +
            // " cover=" + pileupItem.ReferenceMappingCoverageRate +
            // " depth=" + pileupItem.ReferenceMappingCoverageAvg;


            var seqNames = consensusName.Split(" ");

            if (seqNames.Length <= 1)
            {
                message += "Error, reference name is not found.  " + Environment.NewLine + consensusName;
                return(null);   // FluGAS内ではありえない。
            }

            var refName = seqNames[1];  // pileupItem.ReferenceName

            if (!refName.StartsWith("NC"))
            {
                message += "caution,  reference is no NCBI-refseq. " + refName;
                // return null;  // mapping reference  CovGAS は Refseq を使用しているはず
                return(GetGenbankInfo(refName, ref message)); // 救済処置へ
            }
            var refseqAcc      = refName.Split(".").First();
            var referenceFiles = FileUtils.FindFile(
                FluGASv25.Proc.Flow.CommonFlow.GetMappingReferenceDir,
                refseqAcc,
                Genbank.genbankFooter);

            if (!referenceFiles.Any())
            {
                message += "caution, not found refseq-genbank file. Please check in Data mapping-reference directory";
                // Genbank file ないので取得する
                return(GetGenbankInfo(refseqAcc, ref message)); // 救済措置
            }

            var gbSeqProperties = Genbank.GetInfluenzaProperties(referenceFiles.First(), ref message);

            if (!gbSeqProperties.Any())
            {
                message += "caution, reference sequence info is not found from genbank file." + referenceFiles.First();
                // return null;  // Genbank file から情報とれなかった。
                return(GetGenbankInfo(refseqAcc, ref message)); // 救済措置
            }

            return(gbSeqProperties.First()); // 中務は一個だけ
        }
Ejemplo n.º 2
0
        // GenBank情報が取れない場合の救済処置。
        private static SequenceProperties GetGenbankInfo(string accession, ref string message)
        {
            // accession
            var searchAcc = accession.Split(".").First();  // MT259281.1 -> MT259281

            try
            {
                return(Genbank.GetSequenceProperties(searchAcc, ref message));
            }
            catch (Exception e)  // net connection error とか。
            {
                message += e.StackTrace;
                message += e.Message;
            }

            return(null);
        }