Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 28 additions & 33 deletions Writer/Metadata.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,79 +7,74 @@ namespace ThermoRawFileParser.Writer
public class Metadata
{
/** The general Path properties contains: RAW path , RAW file version **/
private List<Dictionary<string, string>> fileProperties = new List<Dictionary<string, string>>();
private List<CVTerm> fileProperties = new List<CVTerm>();

/** The Instruments properties contains the information of the instrument **/
private List<Dictionary<string, CVTerm>> instrumentProperties = new List<Dictionary<string, CVTerm>>();
private List<CVTerm> instrumentProperties = new List<CVTerm>();

/** Scan Settings **/
private List<Dictionary<String, Object>> scanSettings = new List<Dictionary<string, Object>>();
private List<CVTerm> scanSettings = new List<CVTerm>();

/** MS and MS data including number of MS and MS/MS **/
private List<Dictionary<String, Object>> msData = new List<Dictionary<string, Object>>();
private List<CVTerm> msData = new List<CVTerm>();

private List<Dictionary<string, string>> sampleData = new List<Dictionary<string, string>>();
private List<CVTerm> sampleData = new List<CVTerm>();

/**
* Default constructor
*/
public Metadata(){}

public Metadata(List<Dictionary<string, string>> fileProperties,
List<Dictionary<string, CVTerm>> instrumentProperties,
List<Dictionary<string, Object>> msData)
public Metadata(List<CVTerm> fileProperties,
List<CVTerm> instrumentProperties,
List<CVTerm> msData)
{
this.fileProperties = fileProperties;
this.instrumentProperties = instrumentProperties;
this.msData = msData;
}

public List<Dictionary<string, string>> FileProperties => fileProperties;
public List<CVTerm> FileProperties => fileProperties;

public List<Dictionary<string, CVTerm>> InstrumentProperties => instrumentProperties;
public List<CVTerm> InstrumentProperties => instrumentProperties;

public List<Dictionary<string, Object>> MsData => msData;
public List<CVTerm> MsData => msData;

public List<Dictionary<string, string>> SampleData => sampleData;
public List<CVTerm> SampleData => sampleData;

public List<Dictionary<string, Object>> ScanSettings => scanSettings;
public List<CVTerm> ScanSettings => scanSettings;

/**
* Add a File property to the fileProperties
*/
public void addFileProperty(String key, String value)
public void addFileProperty(CVTerm value)
{
var dic = new Dictionary<string, string>();
dic.Add(key, value);
fileProperties.Add(dic);
fileProperties.Add(value);
}

public void addInstrumentProperty(string key, CVTerm value)
public void addInstrumentProperty( CVTerm value)
{
var dic = new Dictionary<string, CVTerm>();
dic.Add(key, value);
instrumentProperties.Add(dic);
instrumentProperties.Add(value);
}

public void addScanSetting(string key, Object value)
public void addScanSetting(CVTerm value)
{
var dic = new Dictionary<string, Object>();
dic.Add(key, value);
scanSettings.Add(dic);
scanSettings.Add(value);
}

public void addMSData(string key, Object value)
public void addMSData(CVTerm value)
{
var dic = new Dictionary<string, Object>();
dic.Add(key, value);
msData.Add(dic);
msData.Add(value);
}

public void addMSData(HashSet<CVTerm> value)
{
msData.AddRange(value);
}

public void addSampleProperty(string key, string value)
public void addSampleProperty(CVTerm value)
{
var dic = new Dictionary<string, string>();
dic.Add(key, value);
sampleData.Add(dic);
sampleData.Add(value);
}
}

Expand Down
74 changes: 42 additions & 32 deletions Writer/MetadataWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,34 +96,33 @@ public void WriteJsonMetada(IRawDataPlus rawFile, int firstScanNumber, int lastS
var metadata = new Metadata();

/** File Properties **/
metadata.addFileProperty("path", rawFile.FileName);
metadata.addFileProperty("version", rawFile.FileHeader.Revision.ToString());
metadata.addFileProperty("creation-date", rawFile.FileHeader.CreationDate.ToString());
metadata.addFileProperty("number-instruments", rawFile.InstrumentCount.ToString());
metadata.addFileProperty("description", rawFile.FileHeader.FileDescription);
metadata.addFileProperty(new CVTerm("NCIT:C47922", "NCIT", "Pathname", rawFile.FileName));
metadata.addFileProperty(new CVTerm("NCIT:C25714", "NCIT", "Version", rawFile.FileHeader.Revision.ToString()));
metadata.addFileProperty(new CVTerm("NCIT:C69199", "NCIT", "Content Creation Date", rawFile.FileHeader.CreationDate.ToString()));
metadata.addFileProperty(new CVTerm("NCIT:C25365", "NCIT", "Description", rawFile.FileHeader.FileDescription));

/** Sample Properties **/
metadata.addSampleProperty("name", rawFile.SampleInformation.SampleName);
metadata.addSampleProperty("id", rawFile.SampleInformation.SampleId);
metadata.addSampleProperty("type", rawFile.SampleInformation.SampleType.ToString());
metadata.addSampleProperty("comment", rawFile.SampleInformation.Comment);
metadata.addSampleProperty("vial", rawFile.SampleInformation.Vial);
metadata.addSampleProperty("volume", rawFile.SampleInformation.SampleVolume.ToString());
metadata.addSampleProperty("injection-volume", rawFile.SampleInformation.InjectionVolume.ToString());
metadata.addSampleProperty("row-number", rawFile.SampleInformation.RowNumber.ToString());
metadata.addSampleProperty("dilution-factor", rawFile.SampleInformation.DilutionFactor.ToString());
// metadata.addSampleProperty("name", rawFile.SampleInformation.SampleName);
// metadata.addSampleProperty("id", rawFile.SampleInformation.SampleId);
// metadata.addSampleProperty("type", rawFile.SampleInformation.SampleType.ToString());
// metadata.addSampleProperty("comment", rawFile.SampleInformation.Comment);
// metadata.addSampleProperty("vial", rawFile.SampleInformation.Vial);
// metadata.addSampleProperty("volume", rawFile.SampleInformation.SampleVolume.ToString());
// metadata.addSampleProperty("injection-volume", rawFile.SampleInformation.InjectionVolume.ToString());
// metadata.addSampleProperty("row-number", rawFile.SampleInformation.RowNumber.ToString());
// metadata.addSampleProperty("dilution-factor", rawFile.SampleInformation.DilutionFactor.ToString());

metadata.addScanSetting("start-time", new CVTerm("MS:1000016", "MS", "scan start time",startTime.ToString()));
metadata.addScanSetting("resolution", new CVTerm("MS:1000011", "MS", "mass resolution", rawFile.RunHeaderEx.MassResolution.ToString()));
metadata.addScanSetting("tolerance-unit", new CVTerm("UO:0000002", "MS", "mass unit", rawFile.GetInstrumentData().Units.ToString()));
metadata.addScanSetting("number-scans", rawFile.RunHeaderEx.SpectraCount.ToString());
metadata.addScanSetting("scan-range", firstScanNumber + ":" + lastScanNumber);
metadata.addScanSetting("time-range", startTime + ":" + endTime);
metadata.addScanSetting("mass-range", rawFile.RunHeaderEx.LowMass + ":" + rawFile.RunHeaderEx.HighMass);
metadata.addScanSetting(new CVTerm("MS:1000016", "MS", "scan start time",startTime.ToString()));
metadata.addScanSetting(new CVTerm("MS:1000011", "MS", "mass resolution", rawFile.RunHeaderEx.MassResolution.ToString()));
metadata.addScanSetting(new CVTerm("UO:0000002", "MS", "mass unit", rawFile.GetInstrumentData().Units.ToString()));
metadata.addScanSetting(new CVTerm("PRIDE:0000478", "PRIDE","Number of scans", rawFile.RunHeaderEx.SpectraCount.ToString()));
metadata.addScanSetting(new CVTerm("PRIDE:0000479", "PRIDE", "MS scan range", firstScanNumber + ":" + lastScanNumber));
metadata.addScanSetting(new CVTerm("PRIDE:0000484", "PRIDE", "Retention time range", startTime + ":" + endTime));
metadata.addScanSetting(new CVTerm("PRIDE:0000485", "PRIDE", "Mz range", rawFile.RunHeaderEx.LowMass + ":" + rawFile.RunHeaderEx.HighMass));

metadata.addInstrumentProperty("model", new CVTerm("MS:1000494", "MS","Thermo Scientific instrument model", rawFile.GetInstrumentData().Model));
metadata.addInstrumentProperty("name", new CVTerm("MS:1000496", "MS","instrument attribute", rawFile.GetInstrumentData().Name));
metadata.addInstrumentProperty("serial", new CVTerm("MS:1000529", "MS", "instrument serial number", rawFile.GetInstrumentData().SerialNumber));
metadata.addInstrumentProperty(new CVTerm("MS:1000494", "MS","Thermo Scientific instrument model", rawFile.GetInstrumentData().Model));
metadata.addInstrumentProperty(new CVTerm("MS:1000496", "MS","instrument attribute", rawFile.GetInstrumentData().Name));
metadata.addInstrumentProperty(new CVTerm("MS:1000529", "MS", "instrument serial number", rawFile.GetInstrumentData().SerialNumber));

var msTypes = new Dictionary<string, int>();
double minTime = 1000000000000000;
Expand Down Expand Up @@ -202,17 +201,28 @@ public void WriteJsonMetada(IRawDataPlus rawFile, int firstScanNumber, int lastS
minCharge = 0;
}

metadata.addMSData("ms-number", msTypes);
metadata.addMSData("activation-ypes", fragmentationType);

metadata.addMSData("min-charge", minCharge);
metadata.addMSData("max-charge", maxCharge);
foreach(KeyValuePair<string, int> entry in msTypes)
{
if(entry.Key.Equals(MSOrderType.Ms.ToString()))
metadata.addMSData(new CVTerm("PRIDE:0000481", "PRIDE", "Number of MS1 spectra", entry.Value.ToString()));
if(entry.Key.Equals(MSOrderType.Ms2.ToString()))
metadata.addMSData(new CVTerm("PRIDE:0000482", "PRIDE", "Number of MS2 spectra", entry.Value.ToString()));
if(entry.Key.Equals(MSOrderType.Ms3.ToString()))
metadata.addMSData(new CVTerm("PRIDE:0000483", "PRIDE", "Number of MS3 spectra", entry.Value.ToString()));

}

metadata.addMSData(fragmentationType);

metadata.addMSData(new CVTerm("PRIDE:0000472", "PRIDE", "MS min charge", minCharge.ToString()));
metadata.addMSData(new CVTerm("PRIDE:0000473", "PRIDE", "MS max charge", maxCharge.ToString()));

metadata.addMSData("min-Time", minTime);
metadata.addMSData("max-Time", maxTime);
metadata.addMSData(new CVTerm("PRIDE:0000474", "PRIDE", "MS min RT", minTime.ToString()));
metadata.addMSData(new CVTerm("PRIDE:0000475", "PRIDE", "MS max RT", maxTime.ToString()));

metadata.addMSData("min-Mz", minMz);
metadata.addMSData("max-Mz", maxMz);
metadata.addMSData(new CVTerm("PRIDE:0000476", "PRIDE", "MS min MZ", minMz.ToString()));
metadata.addMSData(new CVTerm("PRIDE:0000477", "PRIDE", "MS min MZ", maxMz.ToString()));


// Write the meta data to file
Expand Down