/// <param name="outputFileName">The path to the output file to be opened, or null to send to stdout</param> public void BuildMzqcAndWrite(string outputFileName, Run <Scan> run, Dictionary <string, dynamic> qcParams, string inputFileInclPath, object analysisSettings) { List <JsonClasses.QualityParameters> qualityParameters = new List <JsonClasses.QualityParameters>(); foreach (var metric in qcParams) { // Note that this code smashes a value into the given QualityParameters; this will fail if the same one is used more than once, or the initialisation of those parameters is made static. if (QualityParametersByAccession.TryGetValue(metric.Key, out var matchingMetric)) { matchingMetric.value = metric.Value; qualityParameters.Add(matchingMetric); } else { Logger.Warn("Term \"{0}\" was not found in the MZQC definition when attempting to write output. This term was ignored.", metric.Key); } } //Now for the other stuff JsonClasses.InputFiles inputFile = new JsonClasses.InputFiles( "file://" + inputFileInclPath, run.SourceFileNames.First(), ToFileFormat(ms, "MS:1000584"), new List <JsonClasses.FileProperties>() { // ToFileProperties("MS", "MS:1000747", run.CompletionTime), // TODO: Include this? ToFileProperties(ms, run.FilePropertiesAccession, run.SourceFileChecksums.First()) } ); Term swaMe = ms.GetById("XXXXXXXXXXXXXX"); JsonClasses.AnalysisSoftware analysisSoftware = new JsonClasses.AnalysisSoftware() { cvRef = ms.PrimaryNamespace, accession = swaMe.Id, name = swaMe.Name, uri = "https://github.com/PaulBrack/Yamato/tree/master/Console", version = typeof(MzqcWriter).Assembly.GetName().Version.ToString(), analysisSettings = analysisSettings }; JsonClasses.MzQC metrics = new JsonClasses.MzQC() { version = "0.0.11", runQuality = new List <JsonClasses.RunQuality> { new JsonClasses.RunQuality() { metadata = new JsonClasses.MetaData() { inputFiles = new List <JsonClasses.InputFiles>() { inputFile }, analysisSoftware = new List <JsonClasses.AnalysisSoftware>() { analysisSoftware } }, qualityParameters = qualityParameters.ToArray() } }, cv = cvLibrary.ControlledVocabularies.ToDictionary(cv => cv.PrimaryNamespace, ToNUV) }; //Then save: WriteMzqc(outputFileName, metrics); }
private JsonClasses.QualityParameters ToQualityParameters(ControlledVocabulary cv, string id, JsonClasses.Unit unit) => ToQualityParameters(cv, cv.GetById(id), unit);
private JsonClasses.FileFormat ToFileFormat(ControlledVocabulary cv, string id) => ToFileFormat(cv, cv.GetById(id));
private JsonClasses.FileProperties ToFileProperties(ControlledVocabulary cv, string id, string value) => ToFileProperties(cv, cv.GetById(id), value);
private JsonClasses.Unit ToUnit(ControlledVocabulary cv, string id) => ToUnit(cv, cv.GetById(id));