-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgnps.py
41 lines (35 loc) · 1.93 KB
/
gnps.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
from pyopenms import *
from .helpers import Helper
from pathlib import Path
import pandas as pd
import os
class GNPSExport:
def run(self, consensusXML_file, aligned_mzML_dir, gnps_dir):
Helper().reset_directory(gnps_dir)
mzML_files = [str(f) for f in Path(aligned_mzML_dir).iterdir() if f.is_file() and str(f).endswith("mzML")]
consensus_map = ConsensusMap()
ConsensusXMLFile().load(consensusXML_file, consensus_map)
filtered_map = ConsensusMap(consensus_map)
filtered_map.clear(False)
for feature in consensus_map:
if feature.getPeptideIdentifications():
filtered_map.push_back(feature)
consensusXML_file = "filtered.consensusXML"
ConsensusXMLFile().store(consensusXML_file, filtered_map)
# for FFBM
GNPSMGFFile().store(String(consensusXML_file), [file.encode() for file in mzML_files], String(os.path.join(gnps_dir, "MS2.mgf")))
GNPSQuantificationFile().store(consensus_map, os.path.join(gnps_dir, "FeatureQantificationTable.txt"))
GNPSMetaValueFile().store(consensus_map, os.path.join(gnps_dir, "MetaValueTable.tsv"))
# for IIMN
IonIdentityMolecularNetworking().annotateConsensusMap(consensus_map)
IonIdentityMolecularNetworking().writeSupplementaryPairTable(consensus_map, os.path.join(gnps_dir, "SupplementaryPairTable.csv"))
# finally remove filtered.consensusXML file
os.remove(consensusXML_file)
def export_metadata_table_only(self, consensusXML_file, metadata_file):
consensus_map = ConsensusMap()
ConsensusXMLFile().load(consensusXML_file, consensus_map)
GNPSMetaValueFile().store(consensus_map, metadata_file)
df = pd.read_csv(metadata_file, sep="\t", index_col=[0])
df["ATTRIBUTE_Sample_Type"] = ["Sample"]*len(df["filename"])
df.drop("ATTRIBUTE_MAPID", inplace=True, axis=1)
df.to_csv(metadata_file, sep="\t", index=False)