internal static IEnumerable<string> GetHeader(IList<MzTabSmallMolecule> smallMolecules)
{
List<string> headers = new List<string>();
headers.Add(Identifier);
headers.Add(ChemicalFormula);
headers.Add(Smiles);
headers.Add(InChIKey);
headers.Add(Description);
headers.Add(ExperimentMZ);
headers.Add(TheoreticalMZ);
headers.Add(Charge);
headers.Add(RetentionTime);
headers.Add(TaxID);
headers.Add(Species);
headers.Add(Database);
headers.Add(DatabaseVersion);
if (smallMolecules.Any(sm => sm.Reliability != MzTab.MetabolomicsReliabilityScore.NotSet))
headers.Add(Reliability);
if (smallMolecules.Any(sm => sm.Uri != null))
headers.Add(Uri);
headers.Add(SpectralReference);
headers.Add(SearchEngine);
headers.AddRange(GetHeaders(smallMolecules, BestSearchEngineScores, (sm => sm.BestSearchEngineScores)));
headers.AddRange(GetHeaders(smallMolecules, SearchEngineScorePerMsRun, (sm => sm.SearchEngineScorePerMsRun)));
headers.Add(Modifications);
headers.AddRange(GetHeaders(smallMolecules, AbundanceAssay, (sm => sm.AbundanceAssays)));
headers.AddRange(GetHeaders(smallMolecules, AbundanceStudyVariable, (sm => sm.AbundanceStudyVariables)));
headers.AddRange(GetHeaders(smallMolecules, AbundanceStDevStudyVariable, (sm => sm.AbundanceStdevStudyVariables)));
headers.AddRange(GetHeaders(smallMolecules, AbudnanceStdErrorStudyVariable, (sm => sm.AbundanceStandardErrorStudyVariables)));
return headers;
}