diff --git a/src/MSDIAL5/MsdialCore/Export/AlignmentSdfExporter.cs b/src/MSDIAL5/MsdialCore/Export/AlignmentSdfExporter.cs index 2d01211fd..f505b6437 100644 --- a/src/MSDIAL5/MsdialCore/Export/AlignmentSdfExporter.cs +++ b/src/MSDIAL5/MsdialCore/Export/AlignmentSdfExporter.cs @@ -1,28 +1,26 @@ using CompMs.MsdialCore.DataObj; using CompMs.MsdialCore.MSDec; +using CompMs.MsdialCore.Parameter; +using System; using System.IO; namespace CompMs.MsdialCore.Export; public sealed class AlignmentSdfExporter : IAlignmentSpectraExporter { - private readonly bool _exportNoMs2Molecule; - private readonly bool _set2dCoordinates; - public AlignmentSdfExporter(bool exportNoMs2Molecule, bool set2dCoordinates) + private readonly ParameterBase _parameter; + private bool _exportNoMs2Peak; + public AlignmentSdfExporter(bool exportNoMs2Peak, ParameterBase parameter) { - _exportNoMs2Molecule = exportNoMs2Molecule; - _set2dCoordinates = set2dCoordinates; + _exportNoMs2Peak = exportNoMs2Peak; + _parameter = parameter ?? throw new ArgumentNullException(nameof(parameter)); } - public AlignmentSdfExporter() : this(exportNoMs2Molecule: true, set2dCoordinates: true) { } - - void IAlignmentSpectraExporter.Export(Stream stream, AlignmentSpotProperty spot, MSDecResult msdecResult) + public void Export(Stream stream, AlignmentSpotProperty spot, MSDecResult msdecResult) + { + Export(stream, spot, msdecResult, _exportNoMs2Peak, _parameter); + } + public void Export(Stream stream, AlignmentSpotProperty spot, MSDecResult msdecResult, bool exportNoMs2Peak, ParameterBase parameter) { - SpectraExport.SaveSpectraTableAsSdfFormat( - stream, - spot, - msdecResult.Spectrum, - _exportNoMs2Molecule, - _set2dCoordinates - ); + SpectraExport.SaveSpectraTableAsSdfFormat(stream, spot, msdecResult.Spectrum, exportNoMs2Peak, parameter); } } diff --git a/src/MSDIAL5/MsdialCore/Export/AnalysisSdfExporter.cs b/src/MSDIAL5/MsdialCore/Export/AnalysisSdfExporter.cs index 53d8020c9..69ffaf5c3 100644 --- a/src/MSDIAL5/MsdialCore/Export/AnalysisSdfExporter.cs +++ b/src/MSDIAL5/MsdialCore/Export/AnalysisSdfExporter.cs @@ -1,4 +1,5 @@ using CompMs.MsdialCore.DataObj; +using CompMs.MsdialCore.Parameter; using CompMs.MsdialCore.Parser; using System; using System.IO; @@ -8,12 +9,12 @@ namespace CompMs.MsdialCore.Export public sealed class AnalysisSdfExporter : IAnalysisExporter { private readonly Func> _loaderFactory; - - public AnalysisSdfExporter(Func> loaderFuctory) { + private readonly ParameterBase _parameter; + private bool _exportNoMs2Peak = false; + public AnalysisSdfExporter(Func> loaderFuctory,ParameterBase parameter) { _loaderFactory = loaderFuctory ?? throw new ArgumentNullException(nameof(loaderFuctory)); + _parameter = parameter ?? throw new ArgumentNullException(nameof(parameter)); } - private readonly bool _exportNoMs2Molecule = true; - private readonly bool _set2dCoordinates = true; void IAnalysisExporter.Export(Stream stream, AnalysisFileBean analysisFile, ChromatogramPeakFeatureCollection peakFeatureCollection, ExportStyle exportStyle) { var loader = _loaderFactory(analysisFile); @@ -22,8 +23,8 @@ void IAnalysisExporter.Export(Stream stream, stream, peak, loader.Load(peak).Spectrum, - _exportNoMs2Molecule, - _set2dCoordinates + _exportNoMs2Peak, + _parameter ); } } diff --git a/src/MSDIAL5/MsdialCore/Export/SpectraExport.cs b/src/MSDIAL5/MsdialCore/Export/SpectraExport.cs index c4d2f5587..fbd8307b7 100644 --- a/src/MSDIAL5/MsdialCore/Export/SpectraExport.cs +++ b/src/MSDIAL5/MsdialCore/Export/SpectraExport.cs @@ -25,14 +25,16 @@ namespace CompMs.MsdialCore.Export public static class SpectraExport { public static void SaveSpectraTable( - ExportSpectraFileFormat spectraFormat, + ExportSpectraFileFormat spectraFormat, Stream exportStream, - ChromatogramPeakFeature chromPeakFeature, + ChromatogramPeakFeature chromPeakFeature, IMSScanProperty scan, IReadOnlyList spectrumList, DataBaseMapper mapper, - ParameterBase parameter) { - switch (spectraFormat) { + ParameterBase parameter) + { + switch (spectraFormat) + { case ExportSpectraFileFormat.msp: SaveSpectraTableAsNistFormat(exportStream, chromPeakFeature, scan.Spectrum, mapper, parameter); break; @@ -40,7 +42,7 @@ public static void SaveSpectraTable( SaveSpectraTableAsMgfFormat(exportStream, chromPeakFeature, scan.Spectrum); break; case ExportSpectraFileFormat.sdf: - SaveSpectraTableAsSdfFormat(exportStream, chromPeakFeature, scan.Spectrum, true, true); + SaveSpectraTableAsSdfFormat(exportStream, chromPeakFeature, scan.Spectrum, exportNoMs2Peak: false, parameter); break; case ExportSpectraFileFormat.mat: SaveSpectraTableAsMatFormat(exportStream, chromPeakFeature, scan.Spectrum, spectrumList, mapper, parameter); @@ -55,15 +57,16 @@ public static void SaveSpectraTable( } public static void SaveSpectraTable( - ExportSpectraFileFormat spectraFormat, + ExportSpectraFileFormat spectraFormat, Stream exportStream, - AlignmentSpotProperty spotProperty, + AlignmentSpotProperty spotProperty, IMSScanProperty scan, DataBaseMapper mapper, ParameterBase parameter, AlignmentSpotProperty isotopeTrackedLastSpot = null) { - switch (spectraFormat) { + switch (spectraFormat) + { case ExportSpectraFileFormat.msp: SaveSpectraTableAsNistFormat(exportStream, spotProperty, scan.Spectrum, mapper, parameter); break; @@ -71,7 +74,7 @@ public static void SaveSpectraTable( SaveSpectraTableAsMgfFormat(exportStream, spotProperty, scan.Spectrum); break; case ExportSpectraFileFormat.sdf: - SaveSpectraTableAsSdfFormat(exportStream, spotProperty, scan.Spectrum, true, true); + SaveSpectraTableAsSdfFormat(exportStream, spotProperty, scan.Spectrum, exportNoMs2Peak: false, parameter); break; case ExportSpectraFileFormat.mat: SaveSpectraTableAsMatFormat(exportStream, spotProperty, scan.Spectrum, mapper, parameter, isotopeTrackedLastSpot); @@ -84,7 +87,7 @@ public static void SaveSpectraTable( break; } } - + #region msp /// /// Saves spectral data along with chromatographic peak and molecular property information in NIST MSP format to a specified stream. @@ -105,11 +108,13 @@ public static void SaveSpectraTableAsNistFormat( IEnumerable massSpectra, IMatchResultRefer refer, ParameterBase parameter) - where T: IMoleculeProperty, IChromatogramPeak, IIonProperty, IAnnotatedObject { + where T : IMoleculeProperty, IChromatogramPeak, IIonProperty, IAnnotatedObject + { var builder = new NistRecordBuilder(); builder.SetNameProperty(chromPeakFeature.Name); builder.SetChromatogramPeakProperties(chromPeakFeature); - switch (chromPeakFeature) { + switch (chromPeakFeature) + { case ChromatogramPeakFeature peak: builder.SetComment(peak); break; @@ -129,8 +134,10 @@ public static void SaveSpectraTableAsNistFormat( ChromatogramPeakFeature chromPeakFeature, IEnumerable massSpectra, IMatchResultRefer refer, - ParameterBase parameter) { - using (var file = File.Open(exportFilePath, FileMode.Create)) { + ParameterBase parameter) + { + using (var file = File.Open(exportFilePath, FileMode.Create)) + { SaveSpectraTableAsNistFormat(file, chromPeakFeature, massSpectra, refer, parameter); } } @@ -140,7 +147,8 @@ public static void SaveSpectraTableAsNistFormat( ChromatogramPeakFeature chromPeakFeature, IEnumerable massSpectra, IMatchResultRefer refer, - ParameterBase parameter) { + ParameterBase parameter) + { var builder = new NistRecordBuilder(); builder.SetNameProperty(chromPeakFeature.Name); builder.SetChromatogramPeakFeatureProperties(chromPeakFeature, chromPeakFeature.MasterPeakID); @@ -158,9 +166,11 @@ public static void SaveSpectraTableAsNistFormat( AlignmentSpotProperty spotProperty, IEnumerable massSpectra, IMatchResultRefer refer, - ParameterBase parameter) { + ParameterBase parameter) + { - using (var file = File.Open(exportFilePath, FileMode.Create)) { + using (var file = File.Open(exportFilePath, FileMode.Create)) + { SaveSpectraTableAsNistFormat(file, spotProperty, massSpectra, refer, parameter); } } @@ -170,7 +180,8 @@ public static void SaveSpectraTableAsNistFormat( AlignmentSpotProperty spotProperty, IEnumerable massSpectra, IMatchResultRefer mapper, - ParameterBase parameter) { + ParameterBase parameter) + { var builder = new NistRecordBuilder(); builder.SetNameProperty(spotProperty.Name); builder.SetChromatogramPeakProperties(spotProperty); @@ -185,7 +196,8 @@ public static void SaveSpectraTableAsNistFormat( private static void WriteChromPeakFeatureInfoAsMSP( StreamWriter sw, ChromatogramPeakFeature feature, - IMatchResultRefer refer) { + IMatchResultRefer refer) + { sw.WriteLine("NAME: " + GetNameField(feature)); sw.WriteLine("PRECURSORMZ: " + feature.PrecursorMz); sw.WriteLine("PRECURSORTYPE: " + feature.AdductType.AdductIonName); @@ -200,7 +212,8 @@ private static void WriteChromPeakFeatureInfoAsMSP( private static void WriteChromPeakFeatureInfoAsMSP( StreamWriter sw, AlignmentSpotProperty feature, - IMatchResultRefer refer) { + IMatchResultRefer refer) + { sw.WriteLine("NAME: " + GetNameField(feature)); sw.WriteLine("PRECURSORMZ: " + feature.MassCenter); sw.WriteLine("PRECURSORTYPE: " + feature.AdductType.AdductIonName); @@ -216,7 +229,8 @@ private static void WriteChromPeakFeatureInfoAsMSP( StreamWriter sw, T feature, IMatchResultRefer refer) - where T: IMoleculeProperty, IChromatogramPeak, IIonProperty, IAnnotatedObject { + where T : IMoleculeProperty, IChromatogramPeak, IIonProperty, IAnnotatedObject + { sw.WriteLine("NAME: " + GetNameField(feature)); sw.WriteLine("PRECURSORMZ: " + feature.Mass); sw.WriteLine("PRECURSORTYPE: " + feature.AdductType.AdductIonName); @@ -231,12 +245,14 @@ private static void WriteChromPeakFeatureInfoAsMSP( private static void WriteChromXFieldAsMSP( StreamWriter sw, ChromXs chromXs, - double ccs) { + double ccs) + { if (chromXs.RT.Value > 0) sw.WriteLine("RETENTIONTIME: " + chromXs.RT.Value); if (chromXs.RI.Value > 0) sw.WriteLine("RETENTIONINDEX: " + chromXs.RI.Value); - if (chromXs.Drift.Value > 0) { + if (chromXs.Drift.Value > 0) + { sw.WriteLine("MOBILITY: " + chromXs.Drift.Value); sw.WriteLine("CCS: " + ccs); } @@ -247,8 +263,10 @@ private static void WriteChromXFieldAsMSP( public static void SaveSpectraTableAsMgfFormat( Stream stream, ChromatogramPeakFeature chromPeakFeature, - IEnumerable massSpectra) { - using (StreamWriter sw = new StreamWriter(stream, Encoding.ASCII, 4096, true)) { + IEnumerable massSpectra) + { + using (StreamWriter sw = new StreamWriter(stream, Encoding.ASCII, 4096, true)) + { sw.WriteLine("BEGIN IONS"); WriteChromPeakFeatureInfoAsMgf(sw, chromPeakFeature); WriteSpectrumPeakInfo(sw, massSpectra); @@ -257,8 +275,10 @@ public static void SaveSpectraTableAsMgfFormat( } } - public static void SaveSpectraTableAsMgfFormat(Stream stream, AlignmentSpotProperty spotProperty, IEnumerable spectrum, bool exportNumOfPeaks = true) { - using (StreamWriter sw = new StreamWriter(stream, Encoding.ASCII, 4096, true)) { + public static void SaveSpectraTableAsMgfFormat(Stream stream, AlignmentSpotProperty spotProperty, IEnumerable spectrum, bool exportNumOfPeaks = true) + { + using (StreamWriter sw = new StreamWriter(stream, Encoding.ASCII, 4096, true)) + { sw.WriteLine("BEGIN IONS"); WriteChromPeakFeatureInfoAsMgf(sw, spotProperty); WriteSpectrumPeakInfo(sw, spectrum, exportNumOfPeaks); @@ -267,7 +287,8 @@ public static void SaveSpectraTableAsMgfFormat(Stream stream, AlignmentSpotPrope } } - public static void SavePeakTableAsMgfFormat(Stream stream, AlignmentSpotProperty spotProperty) { + public static void SavePeakTableAsMgfFormat(Stream stream, AlignmentSpotProperty spotProperty) + { using StreamWriter sw = new StreamWriter(stream, Encoding.ASCII, 4096, true); sw.WriteLine("BEGIN IONS"); WriteChromPeakFeatureInfoAsMgf(sw, spotProperty); @@ -275,7 +296,8 @@ public static void SavePeakTableAsMgfFormat(Stream stream, AlignmentSpotProperty sw.WriteLine(); } - public static void WriteChromPeakFeatureInfoAsMgf(StreamWriter sw, ChromatogramPeakFeature feature) { + public static void WriteChromPeakFeatureInfoAsMgf(StreamWriter sw, ChromatogramPeakFeature feature) + { var nameField = GetNameField(feature); var commentField = GetCommentField(feature); var chargeChar = feature.AdductType.IonMode == IonMode.Positive ? "+" : "-"; @@ -290,7 +312,8 @@ public static void WriteChromPeakFeatureInfoAsMgf(StreamWriter sw, ChromatogramP public static void WriteChromPeakFeatureInfoAsMgf( StreamWriter sw, - AlignmentSpotProperty feature) { + AlignmentSpotProperty feature) + { var nameField = GetNameField(feature); var commentField = GetCommentField(feature); var chargeChar = feature.AdductType.IonMode == IonMode.Positive ? "+" : "-"; @@ -308,12 +331,14 @@ public static void WriteChromPeakFeatureInfoAsMgf( private static void WriteChromXFieldAsMGF( StreamWriter sw, ChromXs chromXs, - double ccs) { + double ccs) + { if (chromXs.RT.Value > 0) sw.WriteLine("RTINMINUTES=" + chromXs.RT.Value); if (chromXs.RI.Value > 0) sw.WriteLine("RETENTIONINDEX=" + chromXs.RI.Value); - if (chromXs.Drift.Value > 0) { + if (chromXs.Drift.Value > 0) + { sw.WriteLine("DRIFTTIME=" + chromXs.Drift.Value); sw.WriteLine("CCS=" + ccs); } @@ -322,74 +347,74 @@ private static void WriteChromXFieldAsMGF( #region sdf public static void SaveSpectraTableAsSdfFormat( - Stream stream, - AlignmentSpotProperty spotProperty, + Stream stream, + AlignmentSpotProperty spotProperty, IEnumerable spectrum, - bool exportNoMs2Molecule, - bool Set2dCoordinates + bool exportNoMs2Peak, + ParameterBase parameter ) { - if (!exportNoMs2Molecule && !spotProperty.IsMsmsAssigned) + if (!exportNoMs2Peak && !spotProperty.IsMsmsAssigned) { return; } var sb = new StringBuilder(8 * 1024); - if(spotProperty.IsMsmsAssigned) + if (spotProperty.IsMsmsAssigned) { - MolBlockFromSmiles(sb, spotProperty.SMILES, Set2dCoordinates); + MolBlockFromSmiles(sb, spotProperty.SMILES); } else { EmptyMolBlock(sb); } - WriteChromPeakFeatureInfoAsSdf(sb, spotProperty, spectrum); + WriteChromPeakFeatureInfoAsSdf(sb, spotProperty, spectrum, parameter); sb.AppendLine("$$$$"); - sb.AppendLine(); - var bytes = Encoding.ASCII.GetBytes(sb.ToString()); + var bytes = Encoding.ASCII.GetBytes(sb.ToString().Replace("\r\n", "\n")); stream.Write(bytes, 0, bytes.Length); } public static void SaveSpectraTableAsSdfFormat( Stream stream, ChromatogramPeakFeature chromPeakFeature, IEnumerable spectrum, - bool exportNoMs2Molecule, - bool Set2dCoordinates + bool exportNoMs2Peak, + ParameterBase parameter ) { - if (!exportNoMs2Molecule && !chromPeakFeature.IsMsmsContained) + if (!exportNoMs2Peak && !chromPeakFeature.IsMsmsContained) { return; } var sb = new StringBuilder(8 * 1024); if (chromPeakFeature.IsMsmsContained) { - MolBlockFromSmiles(sb, chromPeakFeature.SMILES, Set2dCoordinates); + MolBlockFromSmiles(sb, chromPeakFeature.SMILES); } else { EmptyMolBlock(sb); } - WriteChromPeakFeatureInfoAsSdf(sb, chromPeakFeature, spectrum); - sb.AppendLine("$$$$"); + WriteChromPeakFeatureInfoAsSdf(sb, chromPeakFeature, spectrum, parameter); sb.AppendLine(); - var bytes = Encoding.ASCII.GetBytes(sb.ToString()); + sb.AppendLine("$$$$"); + var bytes = Encoding.ASCII.GetBytes(sb.ToString().Replace("\r\n", "\n")); stream.Write(bytes, 0, bytes.Length); } private static void WriteSdfDataItem(StringBuilder sb, string fieldName, string value) { sb.AppendLine("> <" + fieldName + ">"); sb.AppendLine(value ?? string.Empty); + sb.AppendLine(); } private static void EmptyMolBlock(StringBuilder sb) { - sb.AppendLine(""); + sb.AppendLine(); sb.AppendLine(" MS-DIAL"); sb.AppendLine(); - sb.AppendLine(" 0 0 0 0 0 0 999 V2000"); + sb.AppendLine(" 0 0 0 0 0 0 0 0 0 0999 V2000"); sb.AppendLine("M END"); } - private static void MolBlockFromSmiles(StringBuilder sb, string smiles, bool Set2dCoordinates) + private static void MolBlockFromSmiles(StringBuilder sb, string smiles) { var sp = new SmilesParser(); IAtomContainer mol = sp.ParseSmiles(smiles); @@ -397,26 +422,33 @@ private static void MolBlockFromSmiles(StringBuilder sb, string smiles, bool Set { Molecule = mol }; - if(Set2dCoordinates) - { - sdg.GenerateCoordinates(); - } + sdg.GenerateCoordinates(); mol = sdg.Molecule; using var tw = new StringWriter(sb, CultureInfo.InvariantCulture); using (var w = new MDLV2000Writer(tw)) { w.Write(mol); - }; + } + ; } private static void WriteChromPeakFeatureInfoAsSdf( StringBuilder sb, - AlignmentSpotProperty spotProperty, - IEnumerable spectrum) + AlignmentSpotProperty spotProperty, + IEnumerable spectrum, + ParameterBase parameter + ) { - WriteSdfDataItem(sb, "NAME", string.IsNullOrWhiteSpace(spotProperty.Name)? "Unknown": spotProperty.Name); - WriteSdfDataItem(sb, "SCANS", spotProperty.MasterAlignmentID.ToString()); + WriteSdfDataItem(sb, "NAME", string.IsNullOrWhiteSpace(spotProperty.Name) ? "Unknown" : spotProperty.Name); + WriteSdfDataItem(sb, "ALIGNMENT ID", spotProperty.MasterAlignmentID.ToString()); WriteSdfDataItem(sb, "PRECURSOR M/Z", Math.Round(spotProperty.MassCenter, 5).ToString()); WriteSdfDataItem(sb, "ION MODE", spotProperty.IonMode.ToString()); + if (spotProperty.TimesCenter != null && spotProperty.TimesCenter.RT != null && spotProperty.TimesCenter.RT.Value >= 0) + { + WriteSdfDataItem(sb, "RETENTION TIME", Math.Round(spotProperty.TimesCenter.RT.Value, 3).ToString()); + } + if (!string.IsNullOrEmpty(parameter.InstrumentType)) WriteSdfDataItem(sb, "INSTRUMENT TYPE", parameter.InstrumentType); + if (!string.IsNullOrEmpty(parameter.Instrument)) WriteSdfDataItem(sb, "INSTRUMENT", parameter.Instrument); + if (!string.IsNullOrEmpty(parameter.CollisionEnergy)) WriteSdfDataItem(sb, "COLLISION ENERGY", parameter.CollisionEnergy); if (spotProperty.IsMsmsAssigned) { @@ -425,16 +457,14 @@ private static void WriteChromPeakFeatureInfoAsSdf( if (spotProperty.Formula.Mass > 0d) WriteSdfDataItem(sb, "EXACT MASS", Math.Round(spotProperty.Formula.Mass, 5).ToString()); if (!string.IsNullOrWhiteSpace(spotProperty.InChIKey)) WriteSdfDataItem(sb, "INCHIKEY", spotProperty.InChIKey); if (!string.IsNullOrWhiteSpace(spotProperty.SMILES)) WriteSdfDataItem(sb, "SMILES", spotProperty.SMILES); - if (spotProperty.TimesCenter != null && spotProperty.TimesCenter.RT != null && spotProperty.TimesCenter.RT.Value >= 0) - WriteSdfDataItem(sb, "RETENTION TIME", Math.Round(spotProperty.TimesCenter.RT.Value, 3).ToString()); if (!string.IsNullOrWhiteSpace(spotProperty.Ontology)) WriteSdfDataItem(sb, "ONTOLOGY", spotProperty.Ontology); - WriteSdfDataItem(sb, "MS LEVEL", "MS2"); + WriteSdfDataItem(sb, "SPECTRUM TYPE", "2"); var peaks = spectrum.Where(spec => spec.Intensity > 0).ToList(); WriteSdfDataItem(sb, "NUM PEAKS", peaks.Count.ToString()); var peaksText = string.Join( "\n", spectrum.Select(p => - $"{Math.Round(p.Mass, 4)} {Math.Round(p.Intensity,0)}" + $"{Math.Round(p.Mass, 4)} {Math.Round(p.Intensity, 0)}" ) ); WriteSdfDataItem(sb, "MASS SPECTRAL PEAKS", peaksText); @@ -443,12 +473,20 @@ private static void WriteChromPeakFeatureInfoAsSdf( private static void WriteChromPeakFeatureInfoAsSdf( StringBuilder sb, ChromatogramPeakFeature spotProperty, - IEnumerable spectrum) + IEnumerable spectrum, + ParameterBase parameter) { WriteSdfDataItem(sb, "NAME", string.IsNullOrWhiteSpace(spotProperty.Name) ? "Unknown" : spotProperty.Name); - WriteSdfDataItem(sb, "SCANS", spotProperty.PeakID.ToString()); + WriteSdfDataItem(sb, "PEAK ID", spotProperty.PeakID.ToString()); WriteSdfDataItem(sb, "PRECURSOR M/Z", Math.Round(spotProperty.PrecursorMz, 5).ToString()); WriteSdfDataItem(sb, "ION MODE", spotProperty.IonMode.ToString()); + if (spotProperty.ChromXs != null && spotProperty.ChromXs.RT != null && spotProperty.ChromXs.RT.Value >= 0) + { + WriteSdfDataItem(sb, "RETENTION TIME", Math.Round(spotProperty.ChromXs.RT.Value, 3).ToString()); + } + if (!string.IsNullOrEmpty(parameter.InstrumentType)) WriteSdfDataItem(sb, "INSTRUMENT TYPE", parameter.InstrumentType); + if (!string.IsNullOrEmpty(parameter.Instrument)) WriteSdfDataItem(sb, "INSTRUMENT", parameter.Instrument); + if (!string.IsNullOrEmpty(parameter.CollisionEnergy)) WriteSdfDataItem(sb, "COLLISION ENERGY", parameter.CollisionEnergy); if (spotProperty.IsMsmsContained) { @@ -457,9 +495,8 @@ private static void WriteChromPeakFeatureInfoAsSdf( if (!string.IsNullOrWhiteSpace(spotProperty.Formula.Mass.ToString())) WriteSdfDataItem(sb, "EXACT MASS", Math.Round(spotProperty.Formula.Mass, 5).ToString()); if (!string.IsNullOrWhiteSpace(spotProperty.InChIKey)) WriteSdfDataItem(sb, "INCHIKEY", spotProperty.InChIKey); if (!string.IsNullOrWhiteSpace(spotProperty.SMILES)) WriteSdfDataItem(sb, "SMILES", spotProperty.SMILES); - if (!string.IsNullOrWhiteSpace(spotProperty.ChromXs.RT.Value.ToString())) WriteSdfDataItem(sb, "RETENTION TIME", spotProperty.ChromXs.RT.Value.ToString()); if (!string.IsNullOrWhiteSpace(spotProperty.Ontology)) WriteSdfDataItem(sb, "ONTOLOGY", spotProperty.Ontology); - WriteSdfDataItem(sb, "MS LEVEL", "MS2"); + WriteSdfDataItem(sb, "SPECTRUM TYPE", "2"); var peaks = spectrum.Where(spec => spec.Intensity > 0).ToList(); WriteSdfDataItem(sb, "NUM PEAKS", peaks.Count.ToString()); var peaksText = string.Join( @@ -475,20 +512,24 @@ private static void WriteChromPeakFeatureInfoAsSdf( #region mat private static void SaveSpectraTableAsMatFormat( - Stream stream, - ChromatogramPeakFeature feature, + Stream stream, + ChromatogramPeakFeature feature, IEnumerable spectrum, IReadOnlyList spectrumList, - IMatchResultRefer refer, - ParameterBase parameter) { - using (StreamWriter sw = new StreamWriter(stream, Encoding.ASCII, 4096, true)) { + IMatchResultRefer refer, + ParameterBase parameter) + { + using (StreamWriter sw = new StreamWriter(stream, Encoding.ASCII, 4096, true)) + { WriteChromPeakFeatureInfoAsMSP(sw, feature, refer); sw.WriteLine("IONMODE: " + feature.IonMode); WriteParameterInfoAsNist(sw, parameter); var ms1Spectrum = spectrumList.FirstOrDefault(spec => spec.OriginalIndex == feature.MS1RawSpectrumIdTop); - if (ms1Spectrum != null) { + if (ms1Spectrum != null) + { var isotopes = DataAccess.GetIsotopicPeaks(ms1Spectrum.Spectrum, (float)feature.PrecursorMz, parameter.CentroidMs1Tolerance, parameter.PeakPickBaseParam.MaxIsotopesDetectedInMs1Spectrum); - if (!isotopes.IsEmptyOrNull()) { + if (!isotopes.IsEmptyOrNull()) + { sw.WriteLine("MSTYPE: MS1"); WriteSpectrumPeakInfo(sw, isotopes); } @@ -502,19 +543,23 @@ private static void SaveSpectraTableAsMatFormat( public static void SaveSpectraTableAsMatFormat( Stream stream, AlignmentSpotProperty feature, - IEnumerable spectrum, + IEnumerable spectrum, IMatchResultRefer refer, ParameterBase parameter, - AlignmentSpotProperty isotopeTrackedLastSpot) { - using (StreamWriter sw = new StreamWriter(stream, Encoding.ASCII, 4096, true)) { + AlignmentSpotProperty isotopeTrackedLastSpot) + { + using (StreamWriter sw = new StreamWriter(stream, Encoding.ASCII, 4096, true)) + { WriteChromPeakFeatureInfoAsMSP(sw, feature, refer); sw.WriteLine("IONMODE: " + feature.IonMode); - if (isotopeTrackedLastSpot != null) { + if (isotopeTrackedLastSpot != null) + { WriteIsotopeTrackingFeature(sw, feature, parameter, isotopeTrackedLastSpot); } WriteParameterInfoAsNist(sw, parameter); var isotopes = feature.IsotopicPeaks; - if (!isotopes.IsEmptyOrNull()) { + if (!isotopes.IsEmptyOrNull()) + { sw.WriteLine("MSTYPE: MS1"); WriteSpectrumPeakInfo(sw, isotopes); } @@ -524,15 +569,18 @@ public static void SaveSpectraTableAsMatFormat( } } - public static void SaveSpectraTableForGcmsAsMatFormat(Stream stream, IMSScanProperty scan, IMoleculeProperty molecule, IChromatogramPeakFeature peakFeature, ProjectBaseParameter projectParameter) { + public static void SaveSpectraTableForGcmsAsMatFormat(Stream stream, IMSScanProperty scan, IMoleculeProperty molecule, IChromatogramPeakFeature peakFeature, ProjectBaseParameter projectParameter) + { SaveSpectraTableForGcmsAsMatFormatCore(stream, scan, molecule, peakFeature.Mass, peakFeature.PeakHeightTop, projectParameter); } - public static void SaveSpectraTableForGcmsAsMatFormat(Stream stream, IMSScanProperty scan, IMoleculeProperty molecule, IChromatogramPeak peak, ProjectBaseParameter projectParameter) { + public static void SaveSpectraTableForGcmsAsMatFormat(Stream stream, IMSScanProperty scan, IMoleculeProperty molecule, IChromatogramPeak peak, ProjectBaseParameter projectParameter) + { SaveSpectraTableForGcmsAsMatFormatCore(stream, scan, molecule, peak.Mass, peak.Intensity, projectParameter); } - private static void SaveSpectraTableForGcmsAsMatFormatCore(Stream stream, IMSScanProperty scan, IMoleculeProperty molecule, double quantmass, double peakHeight, ProjectBaseParameter projectParameter) { + private static void SaveSpectraTableForGcmsAsMatFormatCore(Stream stream, IMSScanProperty scan, IMoleculeProperty molecule, double quantmass, double peakHeight, ProjectBaseParameter projectParameter) + { using (StreamWriter sw = new StreamWriter(stream, Encoding.ASCII, bufferSize: 4096, leaveOpen: true)) { sw.Write("NAME: "); @@ -543,7 +591,8 @@ private static void SaveSpectraTableForGcmsAsMatFormatCore(Stream stream, IMSSca sw.WriteLine("QUANTMASS: " + quantmass); var precursorMz = quantmass; - if (scan.Spectrum.Count > 0) { + if (scan.Spectrum.Count > 0) + { precursorMz = scan.Spectrum.Max(s => s.Mass); } @@ -559,31 +608,38 @@ private static void SaveSpectraTableForGcmsAsMatFormatCore(Stream stream, IMSSca sw.WriteLine("SMILES: " + molecule.SMILES); sw.WriteLine("FORMULA: " + molecule.Formula); - if (projectParameter.FinalSavedDate != default) { + if (projectParameter.FinalSavedDate != default) + { sw.WriteLine("DATE: " + projectParameter.FinalSavedDate.Date); } - if (!string.IsNullOrEmpty(projectParameter.Authors)) { + if (!string.IsNullOrEmpty(projectParameter.Authors)) + { sw.WriteLine("AUTHORS: " + projectParameter.Authors); } - if (!string.IsNullOrEmpty(projectParameter.License)) { + if (!string.IsNullOrEmpty(projectParameter.License)) + { sw.WriteLine("LICENSE: " + projectParameter.License); } - if (!string.IsNullOrEmpty(projectParameter.CollisionEnergy)) { + if (!string.IsNullOrEmpty(projectParameter.CollisionEnergy)) + { sw.WriteLine("COLLISIONENERGY: " + projectParameter.CollisionEnergy); } - if (!string.IsNullOrEmpty(projectParameter.InstrumentType)) { + if (!string.IsNullOrEmpty(projectParameter.InstrumentType)) + { sw.WriteLine("INSTRUMENTTYPE: " + projectParameter.InstrumentType); } - if (!string.IsNullOrEmpty(projectParameter.Instrument)) { + if (!string.IsNullOrEmpty(projectParameter.Instrument)) + { sw.WriteLine("INSTRUMENT: " + projectParameter.Instrument); } - if (!string.IsNullOrEmpty(projectParameter.Comment)) { + if (!string.IsNullOrEmpty(projectParameter.Comment)) + { sw.WriteLine("COMMENT: " + projectParameter.Comment); } @@ -601,15 +657,17 @@ private static void SaveSpectraTableForGcmsAsMatFormatCore(Stream stream, IMSSca } } private static void WriteIsotopeTrackingFeature( - StreamWriter sw, - AlignmentSpotProperty feature, - ParameterBase parameter, - AlignmentSpotProperty lastFeature) { + StreamWriter sw, + AlignmentSpotProperty feature, + ParameterBase parameter, + AlignmentSpotProperty lastFeature) + { var isotopeLabel = parameter.IsotopeTrackingDictionary; var labelType = isotopeLabel.IsotopeElements[isotopeLabel.SelectedID].ElementName; var isotopeTrackNum = lastFeature.PeakCharacter.IsotopeWeightNumber; sw.WriteLine("#Specific field for labeled experiment"); - switch (labelType) { + switch (labelType) + { case "13C": sw.WriteLine("CarbonCount: " + isotopeTrackNum); break; @@ -641,20 +699,24 @@ private static void WriteIsotopeTrackingFeature( #region sirius ms private static void SaveSpectraTableAsSiriusMsFormat( - Stream stream, + Stream stream, ChromatogramPeakFeature feature, - IEnumerable spectrum, - IReadOnlyList spectrumList, - DataBaseMapper mapper, - ParameterBase parameter) { - using (StreamWriter sw = new StreamWriter(stream, Encoding.ASCII, 4096, true)) { + IEnumerable spectrum, + IReadOnlyList spectrumList, + DataBaseMapper mapper, + ParameterBase parameter) + { + using (StreamWriter sw = new StreamWriter(stream, Encoding.ASCII, 4096, true)) + { WriteChromPeakFeatureInfoAsSiriusMs(sw, feature, mapper); sw.WriteLine(); var ms1Spectrum = spectrumList.FirstOrDefault(spec => spec.OriginalIndex == feature.MS1RawSpectrumIdTop); - if (ms1Spectrum != null) { + if (ms1Spectrum != null) + { var isotopes = DataAccess.GetIsotopicPeaks(ms1Spectrum.Spectrum, (float)feature.PrecursorMz, parameter.CentroidMs1Tolerance, parameter.PeakPickBaseParam.MaxIsotopesDetectedInMs1Spectrum); - if (!isotopes.IsEmptyOrNull()) { + if (!isotopes.IsEmptyOrNull()) + { sw.WriteLine(">ms1"); WriteSpectrumPeakInfo(sw, isotopes); } @@ -671,16 +733,19 @@ private static void SaveSpectraTableAsSiriusMsFormat( AlignmentSpotProperty feature, IEnumerable spectrum, DataBaseMapper mapper, - ParameterBase parameter) { - using (StreamWriter sw = new StreamWriter(stream, Encoding.ASCII, 4096, true)) { + ParameterBase parameter) + { + using (StreamWriter sw = new StreamWriter(stream, Encoding.ASCII, 4096, true)) + { WriteChromPeakFeatureInfoAsSiriusMs(sw, feature, mapper); sw.WriteLine(); var isotopes = feature.IsotopicPeaks; - if (!isotopes.IsEmptyOrNull()) { + if (!isotopes.IsEmptyOrNull()) + { sw.WriteLine(">ms1"); WriteSpectrumPeakInfo(sw, isotopes); } - + sw.WriteLine(); sw.WriteLine(">ms2"); WriteSpectrumPeakInfo(sw, spectrum); @@ -689,9 +754,10 @@ private static void SaveSpectraTableAsSiriusMsFormat( } private static void WriteChromPeakFeatureInfoAsSiriusMs( - StreamWriter sw, - ChromatogramPeakFeature feature, - DataBaseMapper mapper) { + StreamWriter sw, + ChromatogramPeakFeature feature, + DataBaseMapper mapper) + { sw.WriteLine(">compound " + GetNameField(feature)); sw.WriteLine(">parentmass " + feature.PrecursorMz); sw.WriteLine(">ionization " + feature.AdductType.AdductIonName); @@ -701,7 +767,8 @@ private static void WriteChromPeakFeatureInfoAsSiriusMs( private static void WriteChromPeakFeatureInfoAsSiriusMs( StreamWriter sw, AlignmentSpotProperty feature, - DataBaseMapper mapper) { + DataBaseMapper mapper) + { sw.WriteLine(">compound " + GetNameField(feature)); sw.WriteLine(">parentmass " + feature.MassCenter); sw.WriteLine(">ionization " + feature.AdductType.AdductIonName); @@ -709,7 +776,8 @@ private static void WriteChromPeakFeatureInfoAsSiriusMs( } #endregion - private static string GetCommentField(ChromatogramPeakFeature feature) { + private static string GetCommentField(ChromatogramPeakFeature feature) + { var comment = feature.Comment; var id = "|PEAKID=" + feature.MasterPeakID.ToString(); var ms1 = "|MS1SCAN=" + feature.MS1RawSpectrumIdTop; @@ -720,25 +788,31 @@ private static string GetCommentField(ChromatogramPeakFeature feature) { return comment + id + ms1 + ms2 + height + area + isotope; } - private static string GetCommentField(AlignmentSpotProperty feature) { + private static string GetCommentField(AlignmentSpotProperty feature) + { var comment = feature.Comment; var id = "|PEAKID=" + feature.MasterAlignmentID.ToString(); var isotope = "|ISOTOPE=" + "M+" + feature.PeakCharacter.IsotopeWeightNumber.ToString(); return comment + id + isotope; } - private static string GetCommentField(IChromatogramPeak feature) { - if (feature is ChromatogramPeakFeature chromatogramPeakFeature) { + private static string GetCommentField(IChromatogramPeak feature) + { + if (feature is ChromatogramPeakFeature chromatogramPeakFeature) + { return GetCommentField(chromatogramPeakFeature); } - if (feature is AlignmentSpotProperty alignmentSpotProperty) { + if (feature is AlignmentSpotProperty alignmentSpotProperty) + { return GetCommentField(alignmentSpotProperty); } return $"PEAKID={feature.ID}|PEAKHEIGHT={Math.Round(feature.Intensity, 0)}"; } - private static string GetNameField(ChromatogramPeakFeature feature) { - if (feature.Name.IsEmptyOrNull() || feature.Name.ToLower() == "unknown") { + private static string GetNameField(ChromatogramPeakFeature feature) + { + if (feature.Name.IsEmptyOrNull() || feature.Name.ToLower() == "unknown") + { var id = "|ID=" + feature.MasterPeakID.ToString(); var rt = feature.PeakFeature.ChromXsTop.RT.Value > 0 ? "|RT=" + Math.Round(feature.PeakFeature.ChromXsTop.RT.Value, 3) : string.Empty; var ri = feature.PeakFeature.ChromXsTop.RI.Value > 0 ? "|RI=" + Math.Round(feature.PeakFeature.ChromXsTop.RI.Value, 3) : string.Empty; @@ -746,13 +820,16 @@ private static string GetNameField(ChromatogramPeakFeature feature) { var mz = "|MZ=" + Math.Round(feature.PrecursorMz, 4).ToString(); return "Unknown" + id + mz + rt + ri + dt; } - else { + else + { return feature.Name; } } - private static string GetNameField(AlignmentSpotProperty feature) { - if (feature.Name.IsEmptyOrNull() || feature.Name.ToLower() == "unknown") { + private static string GetNameField(AlignmentSpotProperty feature) + { + if (feature.Name.IsEmptyOrNull() || feature.Name.ToLower() == "unknown") + { var id = "|ID=" + feature.MasterAlignmentID; var rt = feature.TimesCenter.RT.Value > 0 ? "|RT=" + Math.Round(feature.TimesCenter.RT.Value, 3) : string.Empty; var ri = feature.TimesCenter.RI.Value > 0 ? "|RI=" + Math.Round(feature.TimesCenter.RI.Value, 3) : string.Empty; @@ -760,13 +837,16 @@ private static string GetNameField(AlignmentSpotProperty feature) { var mz = "|MZ=" + Math.Round(feature.MassCenter, 4).ToString(); return "Unknown" + id + mz + rt + ri + dt; } - else { + else + { return feature.Name; } } - private static string GetNameField(T feature) where T : IMoleculeProperty, IChromatogramPeak { - if (feature.Name.IsEmptyOrNull() || feature.Name.ToLower() == "unknown") { + private static string GetNameField(T feature) where T : IMoleculeProperty, IChromatogramPeak + { + if (feature.Name.IsEmptyOrNull() || feature.Name.ToLower() == "unknown") + { var id = "|ID=" + feature.ID; var rt = feature.ChromXs.RT.Value > 0 ? "|RT=" + Math.Round(feature.ChromXs.RT.Value, 3) : string.Empty; var ri = feature.ChromXs.RI.Value > 0 ? "|RI=" + Math.Round(feature.ChromXs.RI.Value, 3) : string.Empty; @@ -774,45 +854,54 @@ private static string GetNameField(T feature) where T : IMoleculeProperty, IC var mz = Math.Round(feature.Mass, 4).ToString(); return "Unknown" + id + mz + rt + ri + dt; } - else { + else + { return feature.Name; } } private static void WriteParameterInfoAsNist(StreamWriter sw, ParameterBase parameter) { - if (!string.IsNullOrEmpty(parameter.Authors)) { + if (!string.IsNullOrEmpty(parameter.Authors)) + { sw.WriteLine("AUTHORS: " + parameter.Authors); } - if (!string.IsNullOrEmpty(parameter.License)) { + if (!string.IsNullOrEmpty(parameter.License)) + { sw.WriteLine("LICENSE: " + parameter.License); } - if (!string.IsNullOrEmpty(parameter.CollisionEnergy)) { + if (!string.IsNullOrEmpty(parameter.CollisionEnergy)) + { sw.WriteLine("COLLISIONENERGY: " + parameter.CollisionEnergy); } - if (!string.IsNullOrEmpty(parameter.InstrumentType)) { + if (!string.IsNullOrEmpty(parameter.InstrumentType)) + { sw.WriteLine("INSTRUMENTTYPE: " + parameter.InstrumentType); } - if (!string.IsNullOrEmpty(parameter.Instrument)) { + if (!string.IsNullOrEmpty(parameter.Instrument)) + { sw.WriteLine("INSTRUMENT: " + parameter.Instrument); } - if (!string.IsNullOrEmpty(parameter.Comment)) { + if (!string.IsNullOrEmpty(parameter.Comment)) + { sw.WriteLine("PARAMETERCOMMENT: " + parameter.Comment); } } private static void WriteSpectrumPeakInfo(StreamWriter sw, IEnumerable massSpectra, bool exportNumOfPeaks = true) { - if (massSpectra is null) { + if (massSpectra is null) + { return; } var peaks = massSpectra.Where(spec => spec.Intensity > 0).ToList(); - if (exportNumOfPeaks) { + if (exportNumOfPeaks) + { sw.WriteLine("Num Peaks: " + peaks.Count); } foreach (var peak in peaks) @@ -821,11 +910,14 @@ private static void WriteSpectrumPeakInfo(StreamWriter sw, IEnumerable isotopes) { - if (!isotopes.IsEmptyOrNull()) { + private static void WriteSpectrumPeakInfo(StreamWriter sw, IEnumerable isotopes) + { + if (!isotopes.IsEmptyOrNull()) + { var peaks = isotopes.Where(spec => spec.AbsoluteAbundance > 0).ToList(); sw.WriteLine("Num Peaks: " + peaks.Count); - foreach (var peak in peaks) { + foreach (var peak in peaks) + { sw.WriteLine(Math.Round(peak.Mass, 5) + "\t" + Math.Round(peak.AbsoluteAbundance, 0)); } } diff --git a/src/MSDIAL5/MsdialGuiApp/Model/Dims/DimsMethodModel.cs b/src/MSDIAL5/MsdialGuiApp/Model/Dims/DimsMethodModel.cs index 95b05a1dd..7c3e9207c 100644 --- a/src/MSDIAL5/MsdialGuiApp/Model/Dims/DimsMethodModel.cs +++ b/src/MSDIAL5/MsdialGuiApp/Model/Dims/DimsMethodModel.cs @@ -99,7 +99,7 @@ public DimsMethodModel( peakSpotSupplyer, new AlignmentSpectraExportFormat("Msp", "msp", new AlignmentMspExporter(storage.DataBaseMapper, storage.Parameter)), new AlignmentSpectraExportFormat("Mgf", "mgf", new AlignmentMgfExporter()), - new AlignmentSpectraExportFormat("Sdf", "sdf", new AlignmentSdfExporter()), + new AlignmentSpectraExportFormat("Sdf", "sdf", new AlignmentSdfExporter(false, storage.Parameter)), new AlignmentSpectraExportFormat("Mat", "mat", new AlignmentMatExporter(storage.DataBaseMapper, storage.Parameter))); var gnps = new AlignmentGnpsExportModel("GNPS", quantTypes, new GnpsMetadataAccessor(storage.DataBaseMapper, storage.Parameter), peakMeta.GetAccessor(), fileMeta.GetAccessor(), analysisFileBeanModelCollection); var spectraAndReference = new AlignmentMatchedSpectraExportModel(peakSpotSupplyer, storage.DataBaseMapper, analysisFileBeanModelCollection.IncludedAnalysisFiles, CompoundSearcherCollection.BuildSearchers(storage.DataBases, storage.DataBaseMapper)); diff --git a/src/MSDIAL5/MsdialGuiApp/Model/Gcms/GcmsMethodModel.cs b/src/MSDIAL5/MsdialGuiApp/Model/Gcms/GcmsMethodModel.cs index 382df99ff..a5910e1e2 100644 --- a/src/MSDIAL5/MsdialGuiApp/Model/Gcms/GcmsMethodModel.cs +++ b/src/MSDIAL5/MsdialGuiApp/Model/Gcms/GcmsMethodModel.cs @@ -112,7 +112,7 @@ public GcmsMethodModel(AnalysisFileBeanModelCollection analysisFileBeanModelColl peakSpotSupplyer, new AlignmentSpectraExportFormat("Msp", "msp", new AlignmentMspExporter(storage.DataBaseMapper, storage.Parameter)), new AlignmentSpectraExportFormat("Mgf", "mgf", new AlignmentMgfExporter()), - new AlignmentSpectraExportFormat("Sdf", "sdf", new AlignmentSdfExporter()), + new AlignmentSpectraExportFormat("Sdf", "sdf", new AlignmentSdfExporter(false, storage.Parameter)), new AlignmentSpectraExportFormat("Mat", "mat", new AlignmentMatExporter(storage.DataBaseMapper, storage.Parameter))); var gnps = new AlignmentGnpsExportModel("GNPS", quantTypes, new GnpsMetadataAccessor(storage.DataBaseMapper, storage.Parameter), peakMeta.GetAccessor(), fileMeta.GetAccessor(), analysisFileBeanModelCollection); var exportGroups = new List { peakGroup, spectraGroup, gnps, }; diff --git a/src/MSDIAL5/MsdialGuiApp/Model/ImagingImms/ImagingImmsMethodModel.cs b/src/MSDIAL5/MsdialGuiApp/Model/ImagingImms/ImagingImmsMethodModel.cs index 6ddff5703..3497495ea 100644 --- a/src/MSDIAL5/MsdialGuiApp/Model/ImagingImms/ImagingImmsMethodModel.cs +++ b/src/MSDIAL5/MsdialGuiApp/Model/ImagingImms/ImagingImmsMethodModel.cs @@ -152,8 +152,8 @@ public AnalysisResultExportModel CreateExportAnalysisModel() { Label = "MASCOT format (*.mgf)" }, new SpectraTypeSelectableMsdialAnalysisExportModel(new Dictionary> { - [ExportspectraType.deconvoluted] = new AnalysisSdfExporter(file => new MSDecLoader(file.DeconvolutionFilePath, file.DeconvolutionFilePathList)), - [ExportspectraType.centroid] = new AnalysisSdfExporter(file => new CentroidMsScanPropertyLoader(_storage.Parameter.ProviderFactoryParameter.Create().Create(file.LoadRawMeasurement(true, true, 5, 5000)), _storage.Parameter.MS2DataType)), + [ExportspectraType.deconvoluted] = new AnalysisSdfExporter(file => new MSDecLoader(file.DeconvolutionFilePath, file.DeconvolutionFilePathList),_storage.Parameter), + [ExportspectraType.centroid] = new AnalysisSdfExporter(file => new CentroidMsScanPropertyLoader(_storage.Parameter.ProviderFactoryParameter.Create().Create(file.LoadRawMeasurement(true, true, 5, 5000)), _storage.Parameter.MS2DataType),_storage.Parameter), }) { FilePrefix = "Sdf", diff --git a/src/MSDIAL5/MsdialGuiApp/Model/Imms/ImmsMethodModel.cs b/src/MSDIAL5/MsdialGuiApp/Model/Imms/ImmsMethodModel.cs index 844ae0aad..bc89964ac 100644 --- a/src/MSDIAL5/MsdialGuiApp/Model/Imms/ImmsMethodModel.cs +++ b/src/MSDIAL5/MsdialGuiApp/Model/Imms/ImmsMethodModel.cs @@ -104,7 +104,7 @@ public ImmsMethodModel(AnalysisFileBeanModelCollection analysisFileBeanModelColl peakSpotSupplyer, new AlignmentSpectraExportFormat("Msp", "msp", new AlignmentMspExporter(storage.DataBaseMapper, storage.Parameter)), new AlignmentSpectraExportFormat("Mgf", "mgf", new AlignmentMgfExporter()), - new AlignmentSpectraExportFormat("Sdf", "sdf", new AlignmentSdfExporter()), + new AlignmentSpectraExportFormat("Sdf", "sdf", new AlignmentSdfExporter(false, storage.Parameter)), new AlignmentSpectraExportFormat("Mat", "mat", new AlignmentMatExporter(storage.DataBaseMapper, storage.Parameter))); var gnps = new AlignmentGnpsExportModel("GNPS", quantTypes, new GnpsMetadataAccessor(storage.DataBaseMapper, storage.Parameter), peakMeta.GetAccessor(), fileMeta.GetAccessor(), analysisFileBeanModelCollection); var spectraAndReference = new AlignmentMatchedSpectraExportModel(peakSpotSupplyer, storage.DataBaseMapper, analysisFileBeanModelCollection.IncludedAnalysisFiles, CompoundSearcherCollection.BuildSearchers(storage.DataBases, storage.DataBaseMapper)); @@ -319,8 +319,8 @@ public AnalysisResultExportModel CreateExportAnalysisResult() { Label = "MASCOT format (*.mgf)" }, new SpectraTypeSelectableMsdialAnalysisExportModel(new Dictionary> { - [ExportspectraType.deconvoluted] = new AnalysisSdfExporter(file => new MSDecLoader(file.DeconvolutionFilePath, file.DeconvolutionFilePathList)), - [ExportspectraType.centroid] = new AnalysisSdfExporter(file => new CentroidMsScanPropertyLoader(ProviderFactory.Create(file), _storage.Parameter.MS2DataType)), + [ExportspectraType.deconvoluted] = new AnalysisSdfExporter(file => new MSDecLoader(file.DeconvolutionFilePath, file.DeconvolutionFilePathList),_storage.Parameter), + [ExportspectraType.centroid] = new AnalysisSdfExporter(file => new CentroidMsScanPropertyLoader(ProviderFactory.Create(file), _storage.Parameter.MS2DataType),_storage.Parameter), }) { FilePrefix = "Sdf", diff --git a/src/MSDIAL5/MsdialGuiApp/Model/Lcimms/LcimmsMethodModel.cs b/src/MSDIAL5/MsdialGuiApp/Model/Lcimms/LcimmsMethodModel.cs index 6744f814f..e65b3fb42 100644 --- a/src/MSDIAL5/MsdialGuiApp/Model/Lcimms/LcimmsMethodModel.cs +++ b/src/MSDIAL5/MsdialGuiApp/Model/Lcimms/LcimmsMethodModel.cs @@ -101,7 +101,7 @@ public LcimmsMethodModel(AnalysisFileBeanModelCollection analysisFileBeanModelCo peakSpotSupplyer, new AlignmentSpectraExportFormat("Msp", "msp", new AlignmentMspExporter(storage.DataBaseMapper, storage.Parameter)), new AlignmentSpectraExportFormat("Mgf", "mgf", new AlignmentMgfExporter()), - new AlignmentSpectraExportFormat("Sdf", "sdf", new AlignmentSdfExporter()), + new AlignmentSpectraExportFormat("Sdf", "sdf", new AlignmentSdfExporter(false, storage.Parameter)), new AlignmentSpectraExportFormat("Mat", "mat", new AlignmentMatExporter(storage.DataBaseMapper, storage.Parameter))); var gnps = new AlignmentGnpsExportModel("GNPS", quantTypes, new GnpsMetadataAccessor(storage.DataBaseMapper, storage.Parameter), peakMeta.GetAccessor(), fileMeta.GetAccessor(), analysisFileBeanModelCollection); var spectraAndReference = new AlignmentMatchedSpectraExportModel(peakSpotSupplyer, storage.DataBaseMapper, analysisFileBeanModelCollection.IncludedAnalysisFiles, CompoundSearcherCollection.BuildSearchers(storage.DataBases, storage.DataBaseMapper)); @@ -322,8 +322,8 @@ static RawMeasurement map(AnalysisFileBean file) { Label = "MASCOT format (*.mgf)" }, new SpectraTypeSelectableMsdialAnalysisExportModel(new Dictionary> { - [ExportspectraType.deconvoluted] = new AnalysisSdfExporter(file => new MSDecLoader(file.DeconvolutionFilePath, file.DeconvolutionFilePathList)), - [ExportspectraType.centroid] = new AnalysisSdfExporter(file => new CentroidMsScanPropertyLoader(factory.Create(file), Storage.Parameter.MS2DataType)), + [ExportspectraType.deconvoluted] = new AnalysisSdfExporter(file => new MSDecLoader(file.DeconvolutionFilePath, file.DeconvolutionFilePathList),Storage.Parameter), + [ExportspectraType.centroid] = new AnalysisSdfExporter(file => new CentroidMsScanPropertyLoader(factory.Create(file), Storage.Parameter.MS2DataType),Storage.Parameter), }) { FilePrefix = "Sdf", diff --git a/src/MSDIAL5/MsdialGuiApp/Model/Lcms/LcmsMethodModel.cs b/src/MSDIAL5/MsdialGuiApp/Model/Lcms/LcmsMethodModel.cs index 5393dcadc..a3a0126ec 100644 --- a/src/MSDIAL5/MsdialGuiApp/Model/Lcms/LcmsMethodModel.cs +++ b/src/MSDIAL5/MsdialGuiApp/Model/Lcms/LcmsMethodModel.cs @@ -111,7 +111,7 @@ public LcmsMethodModel( peakSpotSupplyer, new AlignmentSpectraExportFormat("Msp", "msp", new AlignmentMspExporter(storage.DataBaseMapper, storage.Parameter)), new AlignmentSpectraExportFormat("Mgf", "mgf", new AlignmentMgfExporter()), - new AlignmentSpectraExportFormat("Sdf", "sdf", new AlignmentSdfExporter()), + new AlignmentSpectraExportFormat("Sdf", "sdf", new AlignmentSdfExporter(false, storage.Parameter)), new AlignmentSpectraExportFormat("Mat", "mat", new AlignmentMatExporter(storage.DataBaseMapper, storage.Parameter))); var gnps = new AlignmentGnpsExportModel("GNPS", quantTypes, new GnpsMetadataAccessor(storage.DataBaseMapper, storage.Parameter), peakMeta.GetAccessor(), fileMeta.GetAccessor(), analysisFileBeanModelCollection); var massBank = new AlignmentResultMassBankRecordExportModel(peakSpotSupplyer, storage.Parameter.ProjectParam, studyContext); @@ -415,8 +415,8 @@ public AnalysisResultExportModel ExportAnalysis() { Label = "MASCOT format (*.mgf)" }, new SpectraTypeSelectableMsdialAnalysisExportModel(new Dictionary> { - [ExportspectraType.deconvoluted] = new AnalysisSdfExporter(file => new MSDecLoader(file.DeconvolutionFilePath, file.DeconvolutionFilePathList)), - [ExportspectraType.centroid] = new AnalysisSdfExporter(file => new CentroidMsScanPropertyLoader(_providerFactory.Create(file), _storage.Parameter.MS2DataType)), + [ExportspectraType.deconvoluted] = new AnalysisSdfExporter(file => new MSDecLoader(file.DeconvolutionFilePath, file.DeconvolutionFilePathList),_storage.Parameter), + [ExportspectraType.centroid] = new AnalysisSdfExporter(file => new CentroidMsScanPropertyLoader(_providerFactory.Create(file), _storage.Parameter.MS2DataType),_storage.Parameter), }) { FilePrefix = "Sdf", diff --git a/src/MSDIAL5/MsdialGuiApp/ViewModel/Dims/DimsMethodViewModel.cs b/src/MSDIAL5/MsdialGuiApp/ViewModel/Dims/DimsMethodViewModel.cs index dffaa7a34..b2d4fef6d 100644 --- a/src/MSDIAL5/MsdialGuiApp/ViewModel/Dims/DimsMethodViewModel.cs +++ b/src/MSDIAL5/MsdialGuiApp/ViewModel/Dims/DimsMethodViewModel.cs @@ -120,8 +120,8 @@ private void ExportAnalysis() { Label = "MASCOT format (*.mgf)" }, new SpectraTypeSelectableMsdialAnalysisExportModel(new Dictionary> { - [ExportspectraType.deconvoluted] = new AnalysisMgfExporter(file => new MSDecLoader(file.DeconvolutionFilePath, file.DeconvolutionFilePathList)), - [ExportspectraType.centroid] = new AnalysisSdfExporter(file => new CentroidMsScanPropertyLoader(_model.ProviderFactory.Create(file), container.Parameter.MS2DataType)) + [ExportspectraType.deconvoluted] = new AnalysisSdfExporter(file => new MSDecLoader(file.DeconvolutionFilePath, file.DeconvolutionFilePathList),container.Parameter), + [ExportspectraType.centroid] = new AnalysisSdfExporter(file => new CentroidMsScanPropertyLoader(_model.ProviderFactory.Create(file), container.Parameter.MS2DataType),container.Parameter) }) { FilePrefix = "Sdf",