// 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()); // 中務は一個だけ }
// 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); }