Skip to content

Commit

Permalink
Add mzid merge metadata to the mzid file, and update the PSI_Interfac…
Browse files Browse the repository at this point in the history
…e nuget package to get some memory usage optimizations (even though they do slow down processing a little)
  • Loading branch information
FarmGeek4Life committed Apr 17, 2018
1 parent 1570b1a commit 9fbfc64
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 4 deletions.
4 changes: 2 additions & 2 deletions MzidMerger/MzidMerger.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<RootNamespace>MzidMerger</RootNamespace>
<AssemblyName>MzidMerger</AssemblyName>
<PackageId>MzidMerger</PackageId>
<Version>1.0.1</Version>
<Version>1.1.0</Version>
<AssemblyVersion>$(Version)</AssemblyVersion>
<FileVersion>$(Version)</FileVersion>
<Description>Merges mzid[.gz] files into a single mzid[.gz]. Designed for MS-GF+ mzid files (looks for SpecEValue scores)</Description>
Expand All @@ -20,7 +20,7 @@

<ItemGroup>
<PackageReference Include="PRISM-Library" Version="2.4.84" />
<PackageReference Include="PSI_Interface" Version="1.3.18" />
<PackageReference Include="PSI_Interface" Version="1.3.21" />
</ItemGroup>

</Project>
36 changes: 34 additions & 2 deletions MzidMerger/MzidMerging.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using PRISM;
using PSI_Interface.CV;
using PSI_Interface.IdentData;
using PSI_Interface.IdentData.IdentDataObjs;
using PSI_Interface.IdentData.mzIdentML;
Expand All @@ -16,14 +19,43 @@ public static void MergeMzids(Options options)
{
var sw = System.Diagnostics.Stopwatch.StartNew();
var targetFile = options.FilesToMerge.First();
var toMerge = options.FilesToMerge.Skip(1).ParallelPreprocess(x => new IdentDataObj(MzIdentMlReaderWriter.Read(x)), 2);
var toMerge = options.FilesToMerge.Skip(1).ParallelPreprocess(x => IdentDataReaderWriter.Read(x), 2);

Console.WriteLine("Reading first file (the merge target)...");
var targetObj = new IdentDataObj(MzIdentMlReaderWriter.Read(targetFile));
var targetObj = IdentDataReaderWriter.Read(targetFile);

var merger = new MzidMerging(targetObj);
merger.MergeIdentData(toMerge, options.MaxSpecEValue, options.KeepOnlyBestResults, true);

// Add the merging information
var mergerSoftware = new AnalysisSoftwareObj()
{
Id = "MzidMerger_Id",
Name = "MzidMerger",
Version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(),
SoftwareName = new ParamObj() { Item = new UserParamObj() { Name = "MzidMerger" } },
};
targetObj.AnalysisSoftwareList.Add(mergerSoftware);

targetObj.AnalysisProtocolCollection.SpectrumIdentificationProtocols.First().AdditionalSearchParams.Items.Add(new UserParamObj() { Name = "Merger_KeepOnlyBestResults", Value = options.KeepOnlyBestResults.ToString() });
if (options.MaxSpecEValue < 50)
{
targetObj.AnalysisProtocolCollection.SpectrumIdentificationProtocols.First().AdditionalSearchParams.Items.Add(new UserParamObj() { Name = "Merger_MaxSpecEValue", Value = options.MaxSpecEValue.ToString(CultureInfo.InvariantCulture) });
}

var count = 1;
foreach (var file in options.FilesToMerge)
{
var sourceFile = new SourceFileInfo()
{
Id = $"MergedMzid_{count++}",
Location = file,
Name = Path.GetFileName(file),
FileFormat = new FileFormatInfo() { CVParam = new CVParamObj(CV.CVID.MS_mzIdentML_format) },
};
targetObj.DataCollection.Inputs.SourceFiles.Add(sourceFile);
}

Console.WriteLine("Writing merged file...");

MzIdentMlReaderWriter.Write(new MzIdentMLType(targetObj), options.OutputFilePath);
Expand Down

0 comments on commit 9fbfc64

Please sign in to comment.