Example #1
0
        /// <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);
        }
Example #2
0
 private JsonClasses.QualityParameters ToQualityParameters(ControlledVocabulary cv, string id, JsonClasses.Unit unit) => ToQualityParameters(cv, cv.GetById(id), unit);
Example #3
0
 private JsonClasses.FileFormat ToFileFormat(ControlledVocabulary cv, string id) => ToFileFormat(cv, cv.GetById(id));
Example #4
0
 private JsonClasses.FileProperties ToFileProperties(ControlledVocabulary cv, string id, string value) => ToFileProperties(cv, cv.GetById(id), value);
Example #5
0
 private JsonClasses.Unit ToUnit(ControlledVocabulary cv, string id) => ToUnit(cv, cv.GetById(id));