public static MotifHitSpreadsheetRecord Header() { var result = new MotifHitSpreadsheetRecord() { Motif = "Motif", //MotifTooGeneral = "Very General?", TotalTimesSuggestedFwd = "Total Fwd", TotalTimesSuggestedRev = "Total Rev", TotalTimesSuggestedMix = "Total Mix", TotalTimesSuggestedOverall = "Total Overall", //TotalTimesSuggestedFwdInHeterodimers = "Total Fwd In Heterodimers", //TotalTimesSuggestedRevInHeterodimers = "Total Rev In Heterodimers", //TotalTimesSuggestedMixInHeterodimers = "Total Mix In Heterodimers", //TotalTimesSuggestedFwdInHomodimers = "Total Fwd In Homodimers", //TotalTimesSuggestedRevInHomodimers = "Total Rev In Homodimers", //TotalTimesSuggestedMixInHomodimers = "Total Mix In Homodimers", TotalDatabaseHitsPdb = "PDB Hits", TotalDatabaseSequencesPdb = "PDB Seq", TotalDatabaseHitsUniProtKbSwissProt = "SwissProt Hits", TotalDatabaseSequencesUniProtKbSwissProt = "SwissProt Seq", TotalDatabaseHitsUniProtKbTrEmbl = "TrEMBL Hits", TotalDatabaseSequencesUniProtKbTrEmbl = "TrEMBL Seq", TotalDatabaseHitsOverall = "Overall Hits", TotalSequencesOverall = "Overall Seq", }; return(result); }
public static List <MotifHitSpreadsheetRecord> MotifRecordList(Dictionary <string, MotifCounter> motifDistinctWithCount) { if (motifDistinctWithCount == null) { throw new ArgumentNullException(nameof(motifDistinctWithCount)); } var result = new List <MotifHitSpreadsheetRecord>(); foreach (var kvp in motifDistinctWithCount) { var motif = kvp.Key; var motifCounter = kvp.Value; ProproteinInterfaceMatchSet pdb = null; ProproteinInterfaceMatchSet sp = null; ProproteinInterfaceMatchSet tr = null; var tasks = new List <Task>() { Task.Run(() => pdb = ProproteinInterfaceServiceClient.LoadProproteinInterfaceResponse(new ScanProproteinInterfaceParameters() { sig = motif, db = ScanProproteinInterfaceParameters.TargetProteinDatabases.ProteinDataBank })), Task.Run(() => sp = ProproteinInterfaceServiceClient.LoadProproteinInterfaceResponse(new ScanProproteinInterfaceParameters() { sig = motif, db = ScanProproteinInterfaceParameters.TargetProteinDatabases.UniProtKbSwissProt })), Task.Run(() => tr = ProproteinInterfaceServiceClient.LoadProproteinInterfaceResponse(new ScanProproteinInterfaceParameters() { sig = motif, db = ScanProproteinInterfaceParameters.TargetProteinDatabases.UniProtKbTrEmbl })), }; Task.WaitAll(tasks.Where(t => !t.IsCompleted && !t.IsCanceled && !t.IsFaulted).ToArray()); var totalPdbMatch = pdb != null?ProteinDataBankFileOperations.NullableTryParseInt32(pdb.NMatch) : null; if (totalPdbMatch == null) { totalPdbMatch = -1; } var totalSpMatch = sp != null?ProteinDataBankFileOperations.NullableTryParseInt32(sp.NMatch) : null; if (totalSpMatch == null) { totalSpMatch = -1; } var totalTrMatch = tr != null?ProteinDataBankFileOperations.NullableTryParseInt32(tr.NMatch) : null; if (totalTrMatch == null) { totalTrMatch = -1; } var totalMatchOverall = ((totalPdbMatch > -1 ? totalPdbMatch : 0) + (totalSpMatch > -1 ? totalSpMatch : 0) + (totalTrMatch > -1 ? totalTrMatch : 0)); if (totalPdbMatch == -1 && totalSpMatch == -1 && totalTrMatch == -1) { totalMatchOverall = -1; } var totalPdbSeq = pdb != null?ProteinDataBankFileOperations.NullableTryParseInt32(pdb.NSeq) : null; if (totalPdbSeq == null) { totalPdbSeq = -1; } var totalSpSeq = sp != null?ProteinDataBankFileOperations.NullableTryParseInt32(sp.NSeq) : null; if (totalSpSeq == null) { totalSpSeq = -1; } var totalTrSeq = tr != null?ProteinDataBankFileOperations.NullableTryParseInt32(tr.NSeq) : null; if (totalTrSeq == null) { totalTrSeq = -1; } var totalSeqOverall = ((totalPdbSeq > -1 ? totalPdbSeq : 0) + (totalSpSeq > -1 ? totalSpSeq : 0) + (totalTrSeq > -1 ? totalTrSeq : 0)); if (totalPdbSeq == -1 && totalSpSeq == -1 && totalTrSeq == -1) { totalSeqOverall = -1; } var totalTimesOverall = (motifCounter.TotalFwd + motifCounter.TotalRev + motifCounter.TotalMix); var record = new MotifHitSpreadsheetRecord() { Motif = kvp.Key, //MotifTooGeneral = "" + kvp.Value.MotifTooGeneral, TotalTimesSuggestedFwd = "" + motifCounter.TotalFwd, TotalTimesSuggestedRev = "" + motifCounter.TotalRev, TotalTimesSuggestedMix = "" + motifCounter.TotalMix, TotalTimesSuggestedOverall = "" + totalTimesOverall, //TotalTimesSuggestedFwdInHeterodimers = "" + motifCounter.TotalFwdInHeterodimers, //TotalTimesSuggestedRevInHeterodimers = "" + motifCounter.TotalRevInHeterodimers, //TotalTimesSuggestedMixInHeterodimers = "" + motifCounter.TotalMixInHeterodimers, //TotalTimesSuggestedFwdInHomodimers = "" + motifCounter.TotalFwdInHomodimers, //TotalTimesSuggestedRevInHomodimers = "" + motifCounter.TotalRevInHomodimers, //TotalTimesSuggestedMixInHomodimers = "" + motifCounter.TotalMixInHomodimers, TotalDatabaseHitsPdb = "" + totalPdbMatch, TotalDatabaseSequencesPdb = "" + totalPdbSeq, TotalDatabaseHitsUniProtKbSwissProt = "" + totalSpMatch, TotalDatabaseSequencesUniProtKbSwissProt = "" + totalSpSeq, TotalDatabaseHitsUniProtKbTrEmbl = "" + totalTrMatch, TotalDatabaseSequencesUniProtKbTrEmbl = "" + totalTrSeq, TotalDatabaseHitsOverall = "" + totalMatchOverall, TotalSequencesOverall = "" + totalSeqOverall, }; result.Add(record); } return(result); }