Repository 'downloader_bank_hmdb'
hg clone https://toolshed.g2.bx.psu.edu/repos/fgiacomoni/downloader_bank_hmdb

Changeset 0:7c9269bded0e (2020-01-14)
Next changeset 1:4373f936111d (2020-01-21)
Commit message:
Init repository for [downloader_bank_hmdb]
added:
Dockerfile
README
README.md
_README.txt
banks/CSF_v2018Jul09/CSF_v2018Jul09.tabular
banks/CSF_v2019Jan17/CSF_v2019Jan17.tabular
banks/RUMEN_v2011Oct19/RUMEN_v2011Oct19.tabular
conf.cfg
downloader_bank_hmdb.pl
downloader_bank_hmdb.xml
lib/conf.pm
lib/csv.pm
lib/hmdb_api.pm
lib/utils.pm
t/downloader_bank_hmdb.t
t/lib/hmdb_apiTest.pm
t/lib/utilsTest.pm
test-data/out01.tabular
test-data/out02.tabular
test-data/out03.tabular
test-data/out04.tabular
test-data/out05.tabular
b
diff -r 000000000000 -r 7c9269bded0e Dockerfile
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Dockerfile Tue Jan 14 05:21:23 2020 -0500
[
@@ -0,0 +1,51 @@
+FROM ubuntu:18.04
+
+# set author
+MAINTAINER Franck Giacomoni <franck.giacomoni.fr>
+
+### 
+### [CONTAINER CORE FUNCTIONS]: 
+###   xxxx
+###   xxxx
+### [NOTES] 
+###   xxxx
+
+ENV PATH /opt/conda/bin:$PATH
+
+RUN apt-get -y update &&\
+    apt-get -y install build-essential \
+        cpanminus \
+        gzip \
+        wget \
+        bzip2 \
+        ca-certificates \
+        libglib2.0-0  \
+        libxext6  \
+        libsm6  \
+        libxrender1 \
+        libtext-csv-perl \
+        libxml-twig-perl \
+        libfile-share-perl
+
+RUN wget --quiet https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh -O ~/anaconda.sh && \
+    /bin/bash ~/anaconda.sh -b -p /opt/conda && \
+    rm ~/anaconda.sh && \
+    ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \
+    echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc && \
+    echo "conda activate base" >> ~/.bashrc
+
+RUN cpan install ExtUtils::MakeMaker && \
+    cpan install File::ShareDir::Install && \
+    cpan install Module::Release &&\
+    cpan install Archive::Zip &&\
+
+    apt -y install git &&\
+    apt -y install python2.7 python-pip &&\
+    apt -y install virtualenv &&\
+    pip install "pip>=7" &&\
+    pip install -U git+git://github.com/galaxyproject/planemo.git &&\
+
+    apt-get autoremove -y && \
+    apt-get clean && \
+    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
+
b
diff -r 000000000000 -r 7c9269bded0e README
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/README Tue Jan 14 05:21:23 2020 -0500
b
@@ -0,0 +1,7 @@
+# HMDB bank downloader
+
+# Version 1.1
+
+Download a bank containing information (like : HMDB id,  Name, mz, inchikey) from HMDB online web portal and convert it into W4M annotation tool input formats.
+
+Several specific metabolite banks are available like Urine, Serum, cerebrospinal fluid, ...
\ No newline at end of file
b
diff -r 000000000000 -r 7c9269bded0e README.md
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/README.md Tue Jan 14 05:21:23 2020 -0500
[
@@ -0,0 +1,7 @@
+[![pipeline status](https://services.pfem.clermont.inra.fr/gitlab/dev-team/downloader-bank-hmdb/badges/master/pipeline.svg)](https://services.pfem.clermont.inra.fr/gitlab/dev-team/downloader-bank-hmdb/commits/master)
+
+# HMDB bank downloader
+
+Download a bank containing information (like : HMDB id,  Name, mz, inchikey) from HMDB online web portal and convert it into W4M annotation tool input formats.
+
+Several specific metabolite banks are available like Urine, Serum, cerebrospinal fluid, ...
\ No newline at end of file
b
diff -r 000000000000 -r 7c9269bded0e _README.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/_README.txt Tue Jan 14 05:21:23 2020 -0500
b
@@ -0,0 +1,48 @@
+## ****** downloader_bank_hmdb environnemnt : ****** ##
+# version 21/11/ 2018 / F Giacomoni
+
+## --- PERL compilator / libraries : --- ##
+$ perl -v
+This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level
+
+# libs CORE PERL : 
+use strict ;
+use warnings ;
+use Carp qw (cluck croak carp) ;
+use Exporter ;
+use Data::Dumper ;
+use Getopt::Long ;
+use FindBin ;
+
+# libs CPAN PERL : 
+$ perl -e 'use XX::XX'
+$ sudo perl -MCPAN -e shell
+cpan> install XX::XX
+
+# libs pfem PERL : 
+No dependency with pfem lib
+--
+
+## --- R bin and Packages : --- ##
+
+No interaction with R
+-- 
+
+## --- Binary dependencies --- ##
+Install folowing binaries : N/A
+--
+
+## --- Config : --- ##
+Edit the config file : /path/*.conf
+
+--
+
+## --- XML HELP PART --- ##
+Copy the following images in ~/static/images/metabolomics : 
+--
+
+## --- DATASETS --- ##
+--
+
+## --- ??? COMMENTS ??? --- ##
+--
\ No newline at end of file
b
diff -r 000000000000 -r 7c9269bded0e banks/CSF_v2018Jul09/CSF_v2018Jul09.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/banks/CSF_v2018Jul09/CSF_v2018Jul09.tabular Tue Jan 14 05:21:23 2020 -0500
[
b'@@ -0,0 +1,451 @@\n+HMDB_ID\tMzBank\t[M+H]+\t[M-H]-\tMetName\tChemFormula\tINChIkey\n+HMDB0000001\t169.085126611\t170.092403011\t168.077850211\t1-Methylhistidine\tC7H11N3O2\tBRMWTNUJHUMWMS-LURJTMIESA-N\n+HMDB0000005\t102.031694058\t103.038970458\t101.024417658\t"2-Ketobutyric acid"\tC4H6O3\tTYEYBOSBBBHJIV-UHFFFAOYSA-N\n+HMDB0000008\t104.047344122\t105.054620522\t103.040067722\t"2-Hydroxybutyric acid"\tC4H8O3\tAFENDNXGAFYKQO-UHFFFAOYSA-N\n+HMDB0000011\t104.047344122\t105.054620522\t103.040067722\t"(R)-3-Hydroxybutyric acid"\tC4H8O3\tWHBMMWSBFZVSSR-GSVOUGTGSA-N\n+HMDB0000012\t228.074621504\t229.081897904\t227.067345104\tDeoxyuridine\tC9H12N2O5\tMXHRCPNRJAMMIM-SHYZEUOFSA-N\n+HMDB0000017\t183.053157781\t184.060434181\t182.045881381\t"4-Pyridoxic acid"\tC8H9NO4\tHXACOUQIXZGNBF-UHFFFAOYSA-N\n+HMDB0000019\t116.047344122\t117.054620522\t115.040067722\t"alpha-Ketoisovaleric acid"\tC5H8O3\tQHKABHOOEWYVLI-UHFFFAOYSA-N\n+HMDB0000020\t152.047344122\t153.054620522\t151.040067722\t"p-Hydroxyphenylacetic acid"\tC8H8O3\tXQXPVVBIMDBYFF-UHFFFAOYSA-N\n+HMDB0000022\t167.094628665\t168.101905065\t166.087352265\t3-Methoxytyramine\tC9H13NO2\tDIVQKHQLANKJQO-UHFFFAOYSA-N\n+HMDB0000023\t104.047344122\t105.054620522\t103.040067722\t"(S)-3-Hydroxyisobutyric acid"\tC4H8O3\tDBXBTMSZEOQQDU-VKHMYHEASA-N\n+HMDB0000026\t132.053492132\t133.060768532\t131.046215732\t"Ureidopropionic acid"\tC4H8N2O3\tJSJWCHRYRHKBBW-UHFFFAOYSA-N\n+HMDB0000027\t241.117489371\t242.124765771\t240.110212971\tTetrahydrobiopterin\tC9H15N5O3\tFNKQXYHWGSIFBK-UHFFFAOYSA-N\n+HMDB0000030\t244.088163078\t245.095439478\t243.080886678\tBiotin\tC10H16N2O3S\tYBJHBAHKTGYVGT-ZKWXMUAHSA-N\n+HMDB0000031\t290.224580204\t291.231856604\t289.217303804\tAndrosterone\tC19H30O2\tQGXBDMJGAMFCBF-HLUDHZFRSA-N\n+HMDB0000032\t384.33921603\t385.34649243\t383.33193963\t7-Dehydrocholesterol\tC27H44O\tUCTLRSWJYQTBFZ-DDPQNLDTSA-N\n+HMDB0000034\t135.054495185\t136.061771585\t134.047218785\tAdenine\tC5H5N5\tGFFGJBXGBJISGV-UHFFFAOYSA-N\n+HMDB0000038\t239.101839307\t240.109115707\t238.094562907\tDihydrobiopterin\tC9H13N5O3\tFEMXZDUTFRTWPE-UHFFFAOYSA-N\n+HMDB0000039\t88.0524295\t89.0597059\t87.0451531\t"Butyric acid"\tC4H8O2\tFERIUCNNQQJTOY-UHFFFAOYSA-N\n+HMDB0000042\t60.021129372\t61.028405772\t59.013852972\t"Acetic acid"\tC2H4O2\tQTBSBXVTEAMEQO-UHFFFAOYSA-N\n+HMDB0000044\t176.032087988\t177.039364388\t175.024811588\t"Ascorbic acid"\tC6H8O6\tCIWBSHSKHKDKBQ-JLAZNSOCSA-N\n+HMDB0000045\t347.063084339\t348.070360739\t346.055807939\t"Adenosine monophosphate"\tC10H14N5O7P\tUDMBCSSLTHHNCD-KQYNXXCUSA-N\n+HMDB0000050\t267.096753929\t268.104030329\t266.089477529\tAdenosine\tC10H13N5O4\tOIRDTQYFTABQOQ-KQYNXXCUSA-N\n+HMDB0000051\t17.026549101\t18.033825501\t16.019272701\tAmmonia\tH3N\tQGZKDVFQNNGYKY-UHFFFAOYSA-N\n+HMDB0000053\t286.193280076\t287.200556476\t285.186003676\tAndrostenedione\tC19H26O2\tAEMFNILZOJDQLW-QAGGRKNESA-N\n+HMDB0000054\t584.263484904\t585.270761304\t583.256208504\tBilirubin\tC33H36N4O6\tBPYKTIZUTYGOLE-IFADSCNNSA-N\n+HMDB0000056\t89.047678473\t90.054954873\t88.040402073\tbeta-Alanine\tC3H7NO2\tUCMIRNVEIXFBKS-UHFFFAOYSA-N\n+HMDB0000058\t329.052519653\t330.059796053\t328.045243253\t"Cyclic AMP"\tC10H12N5O6P\tIVOMOUWHDPKRLL-KQYNXXCUSA-N\n+HMDB0000060\t102.031694058\t103.038970458\t101.024417658\t"Acetoacetic acid"\tC4H6O3\tWDJHALXBUFZDSR-UHFFFAOYSA-N\n+HMDB0000062\t161.105193351\t162.112469751\t160.097916951\tL-Carnitine\tC7H15NO3\tPHIQHXFUZVPYII-ZCFIWIBFSA-N\n+HMDB0000063\t362.20932407\t363.21660047\t361.20204767\tCortisol\tC21H30O5\tJYGXADMDTFJGBT-VWUMJDOOSA-N\n+HMDB0000064\t131.069476547\t132.076752947\t130.062200147\tCreatine\tC4H9N3O2\tCVSVTCORWBXHQV-UHFFFAOYSA-N\n+HMDB0000067\t386.354866094\t387.362142494\t385.347589694\tCholesterol\tC27H46O\tHVYWMOMLDIMFJA-DPAQBDIFSA-N\n+HMDB0000068\t183.089543287\t184.096819687\t182.082266887\tEpinephrine\tC9H13NO3\tUCTWMZQNUQWSLP-VIFPVBQESA-N\n+HMDB0000070\t129.078978601\t130.086255001\t128.071702201\t"Pipecolic acid"\tC6H11NO2\tHXEACLLIILLPRG-UHFFFAOYSA-N\n+HMDB0000072\t174.016437924\t175.023714324\t173.009161524\t"cis-Aconitic acid"\tC6H6O6\tGTZCVFVGUGFEME-IWQZZHSRSA-N\n+HMDB0000073\t153.078978601\t154.086255001\t152.071702201\tDopamine\tC8H11NO2\tVYFYYTLLBUKUHU-UHFFFAOYSA-N\n+HMDB0000076\t114.042927446\t115.050203846\t113.0356510'..b'24242129\t319.22786849\t9-HETE\tC20H32O3\tKATOYYZUTNAWSA-DLJQHUEDSA-N\n+HMDB0010223\t296.23514489\t297.24242129\t295.22786849\t9-HODE\tC18H32O3\tNPDSHTNEKLQQIJ-SIGMCMEVSA-N\n+HMDB0010384\t523.363789599\t524.371065999\t522.356513199\tLysoPC(18:0)\tC26H54NO7P\tIHNKQIMGVNPMTC-RUZDIDTESA-N\n+HMDB0010395\t543.332489471\t544.339765871\t542.325213071\tLysoPC(20:4(5Z,8Z,11Z,14Z))\tC28H50NO7P\tLAXQYRRMGGEGOH-JXRLJXCWSA-N\n+HMDB0010396\t543.332489471\t544.339765871\t542.325213071\tLysoPC(20:4(8Z,11Z,14Z,17Z))\tC28H50NO7P\tGOMVPVRDBLLHQC-VEJNOCSESA-N\n+HMDB0010409\t320.23514489\t321.24242129\t319.22786849\t11,12-EpETrE\tC20H32O3\tDXOYQVHGIODESM-IQCOFVSKSA-N\n+HMDB0011134\t320.23514489\t321.24242129\t319.22786849\t5-HETE\tC20H32O3\tKGIJOOYOSFUGPC-JGKLHWIESA-N\n+HMDB0011620\t125.929815379\t126.937091779\t124.922538979\tArsenite\tAsH3O3\tGCPXMJHSNVMWNM-UHFFFAOYSA-N\n+HMDB0011697\t815.700600326\t816.707876726\t814.693323926\tSM(d18:1/24:0)\tC47H96N2O6P\tQEDPUVGSSDPBMD-XTAIVQBESA-O\n+HMDB0011698\t843.731900454\t844.739176854\t842.724624054\tSM(d18:1/26:0)\tC49H100N2O6P\tVRAWSAPVSSLIRI-MVUJCARGSA-O\n+HMDB0011738\t275.111735291\t276.119011691\t274.104458891\tN2-gamma-Glutamylglutamine\tC10H17N3O6\tJBFYFLXEJFQWMU-WDSKDSINSA-N\n+HMDB0012100\t728.583224846\t729.590501246\t727.575948446\tSM(d18:1/18:1(11Z))\tC41H81N2O6P\tFZMKZVXNTLAHFD-RTEXEOPXSA-N\n+HMDB0012101\t728.583224846\t729.590501246\t727.575948446\tSM(d18:1/18:1(9Z))\tC41H81N2O6P\tNBEADXWAAWCCDG-QDDWGVBQSA-N\n+HMDB0012107\t812.67712523\t813.68440163\t811.66984883\tSM(d18:1/24:1(15Z))\tC47H93N2O6P\tWKZHECFHXLTOLJ-QYKFWSDSSA-N\n+HMDB0012895\t1027.400405861\t1028.407682261\t1026.393129461\t"Arginine vasopressin 1-8"\tC44H61N13O12S2\tSXYIOPJBWYQZRQ-VMPYSSHJSA-N\n+HMDB0012935\t1474.912295913\t1475.919572313\t1473.905019513\t"Dynorphin A"\tC69H116N23O13\tZIHYAUCIMOSJIH-QGLXRRFISA-O\n+HMDB0013072\t1650.73230468\t1651.73958108\t1649.72502828\tSomatostatin\tC77H106N18O19S2\tKTEPWBJBSMMZIC-LJTSQLRWSA-N\n+HMDB0013122\t507.368874977\t508.376151377\t506.361598577\tLysoPC(P-18:0)\tC26H54NO6P\tWBOMIOWRFSPZMC-AYICAFKVSA-N\n+HMDB0013125\t233.126322723\t234.133599123\t232.119046323\tHydroxypropionylcarnitine\tC10H19NO5\tQJGJXKFJFRSERW-QMMMGPOBSA-N\n+HMDB0013128\t246.169984677\t247.177261077\t245.162708277\tValerylcarnitine\tC12H24NO4\tVSNFQQXVMPSASB-SNVBAGLBSA-O\n+HMDB0013461\t840.708425358\t841.715701758\t839.701148958\tSM(d18:1/26:1(17Z))\tC49H97N2O6P\tYXEXWUZHFGYOHJ-UOJCCMJYSA-N\n+HMDB0013462\t688.515539212\t689.522815612\t687.508262812\tSM(d18:0/14:1(9Z)(OH))\tC37H73N2O7P\tZNHNJXWKKQKMBU-POWUNZFVSA-N\n+HMDB0013463\t716.54683934\t717.55411574\t715.53956294\tSM(d18:0/16:1(9Z)(OH))\tC39H77N2O7P\tLPHMSPONPQCKTL-FKUNDBCPSA-N\n+HMDB0013464\t702.567574782\t703.574851182\t701.560298382\tSM(d18:0/16:1(9Z))\tC39H79N2O6P\tCGVOQSQIYSUXAT-PPLFXBRHSA-N\n+HMDB0013465\t754.59887491\t755.60615131\t753.59159851\tSM(d18:0/20:2(11Z,14Z))\tC43H83N2O6P\tYVTVVJRJLRHYSJ-XJRFMCMQSA-N\n+HMDB0013466\t800.640739724\t801.648016124\t799.633463324\tSM(d18:0/22:1(13Z)(OH))\tC45H89N2O7P\tZUSFLIGNJFDBRL-FYGIKZFGSA-N\n+HMDB0013467\t798.62508966\t799.63236606\t797.61781326\tSM(d18:0/22:2(13Z,16Z)(OH))\tC45H87N2O7P\tDRKCMBAZIYFIGX-ZWLRGCNFSA-N\n+HMDB0013469\t828.672039852\t829.679316252\t827.664763452\tSM(d18:0/24:1(15Z)(OH))\tC47H93N2O7P\tIOOMOQUTKQGEFH-BSZNTFKYSA-N\n+HMDB0013667\t88.905847902\t89.913124302\t87.898571502\tYttrium\tY\tVWQVUPCCIRVNHF-UHFFFAOYSA-N\n+HMDB0013668\t101.904349503\t102.911625903\t100.897073103\tRuthenium\tRu\tKJTLSVCANCCWHF-UHFFFAOYSA-N\n+HMDB0013669\t132.90544687\t133.91272327\t131.89817047\tCesium\tCs\tTVFDJXOCXUVLDH-UHFFFAOYSA-N\n+HMDB0013670\t105.903483087\t106.910759487\t104.896206687\tPalladium\tPd\tKDLHZDBZIXYQEI-UHFFFAOYSA-N\n+HMDB0013671\t194.964774449\t195.972050849\t193.957498049\tPlatinum\tPt\tBASFCYQUMIYNBI-UHFFFAOYSA-N\n+HMDB0013672\t139.905434035\t140.912710435\t138.898157635\tCerium\tCe\tGWXLDORMOJMVQZ-UHFFFAOYSA-N\n+HMDB0015532\t63.929146578\t64.936422978\t62.921870178\tZinc\tZn\tHCHKCACWOHOZIP-UHFFFAOYSA-N\n+HMDB0029147\t275.111735279\t276.119011679\t274.104458879\tN-gamma-Glutamylglutamine\tC10H17N3O6\tFCWNOQOVMGNKNG-WDSKDSINSA-N\n+HMDB0059655\t148.037173366\t149.044449766\t147.029896966\t2-Hydroxyglutarate\tC5H8O5\tHWXBTNAVRSUOJR-UHFFFAOYSA-N\n'
b
diff -r 000000000000 -r 7c9269bded0e banks/CSF_v2019Jan17/CSF_v2019Jan17.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/banks/CSF_v2019Jan17/CSF_v2019Jan17.tabular Tue Jan 14 05:21:23 2020 -0500
[
b'@@ -0,0 +1,451 @@\n+HMDB_ID\tMzBank\t[M+H]+\t[M-H]-\tMetName\tChemFormula\tINChIkey\n+HMDB0000001\t169.085126611\t170.092403011\t168.077850211\t1-Methylhistidine\tC7H11N3O2\tBRMWTNUJHUMWMS-LURJTMIESA-N\n+HMDB0000005\t102.031694058\t103.038970458\t101.024417658\t"2-Ketobutyric acid"\tC4H6O3\tTYEYBOSBBBHJIV-UHFFFAOYSA-N\n+HMDB0000008\t104.047344122\t105.054620522\t103.040067722\t"2-Hydroxybutyric acid"\tC4H8O3\tAFENDNXGAFYKQO-UHFFFAOYSA-N\n+HMDB0000011\t104.047344122\t105.054620522\t103.040067722\t"(R)-3-Hydroxybutyric acid"\tC4H8O3\tWHBMMWSBFZVSSR-GSVOUGTGSA-N\n+HMDB0000012\t228.074621504\t229.081897904\t227.067345104\tDeoxyuridine\tC9H12N2O5\tMXHRCPNRJAMMIM-SHYZEUOFSA-N\n+HMDB0000017\t183.053157781\t184.060434181\t182.045881381\t"4-Pyridoxic acid"\tC8H9NO4\tHXACOUQIXZGNBF-UHFFFAOYSA-N\n+HMDB0000019\t116.047344122\t117.054620522\t115.040067722\t"alpha-Ketoisovaleric acid"\tC5H8O3\tQHKABHOOEWYVLI-UHFFFAOYSA-N\n+HMDB0000020\t152.047344122\t153.054620522\t151.040067722\t"p-Hydroxyphenylacetic acid"\tC8H8O3\tXQXPVVBIMDBYFF-UHFFFAOYSA-N\n+HMDB0000022\t167.094628665\t168.101905065\t166.087352265\t3-Methoxytyramine\tC9H13NO2\tDIVQKHQLANKJQO-UHFFFAOYSA-N\n+HMDB0000023\t104.047344122\t105.054620522\t103.040067722\t"(S)-3-Hydroxyisobutyric acid"\tC4H8O3\tDBXBTMSZEOQQDU-VKHMYHEASA-N\n+HMDB0000026\t132.053492132\t133.060768532\t131.046215732\t"Ureidopropionic acid"\tC4H8N2O3\tJSJWCHRYRHKBBW-UHFFFAOYSA-N\n+HMDB0000027\t241.117489371\t242.124765771\t240.110212971\tTetrahydrobiopterin\tC9H15N5O3\tFNKQXYHWGSIFBK-UHFFFAOYSA-N\n+HMDB0000030\t244.088163078\t245.095439478\t243.080886678\tBiotin\tC10H16N2O3S\tYBJHBAHKTGYVGT-ZKWXMUAHSA-N\n+HMDB0000031\t290.224580204\t291.231856604\t289.217303804\tAndrosterone\tC19H30O2\tQGXBDMJGAMFCBF-HLUDHZFRSA-N\n+HMDB0000032\t384.33921603\t385.34649243\t383.33193963\t7-Dehydrocholesterol\tC27H44O\tUCTLRSWJYQTBFZ-DDPQNLDTSA-N\n+HMDB0000034\t135.054495185\t136.061771585\t134.047218785\tAdenine\tC5H5N5\tGFFGJBXGBJISGV-UHFFFAOYSA-N\n+HMDB0000038\t239.101839307\t240.109115707\t238.094562907\tDihydrobiopterin\tC9H13N5O3\tFEMXZDUTFRTWPE-UHFFFAOYSA-N\n+HMDB0000039\t88.0524295\t89.0597059\t87.0451531\t"Butyric acid"\tC4H8O2\tFERIUCNNQQJTOY-UHFFFAOYSA-N\n+HMDB0000042\t60.021129372\t61.028405772\t59.013852972\t"Acetic acid"\tC2H4O2\tQTBSBXVTEAMEQO-UHFFFAOYSA-N\n+HMDB0000044\t176.032087988\t177.039364388\t175.024811588\t"Ascorbic acid"\tC6H8O6\tCIWBSHSKHKDKBQ-JLAZNSOCSA-N\n+HMDB0000045\t347.063084339\t348.070360739\t346.055807939\t"Adenosine monophosphate"\tC10H14N5O7P\tUDMBCSSLTHHNCD-KQYNXXCUSA-N\n+HMDB0000050\t267.096753929\t268.104030329\t266.089477529\tAdenosine\tC10H13N5O4\tOIRDTQYFTABQOQ-KQYNXXCUSA-N\n+HMDB0000051\t17.026549101\t18.033825501\t16.019272701\tAmmonia\tH3N\tQGZKDVFQNNGYKY-UHFFFAOYSA-N\n+HMDB0000053\t286.193280076\t287.200556476\t285.186003676\tAndrostenedione\tC19H26O2\tAEMFNILZOJDQLW-QAGGRKNESA-N\n+HMDB0000054\t584.263484904\t585.270761304\t583.256208504\tBilirubin\tC33H36N4O6\tBPYKTIZUTYGOLE-IFADSCNNSA-N\n+HMDB0000056\t89.047678473\t90.054954873\t88.040402073\tbeta-Alanine\tC3H7NO2\tUCMIRNVEIXFBKS-UHFFFAOYSA-N\n+HMDB0000058\t329.052519653\t330.059796053\t328.045243253\t"Cyclic AMP"\tC10H12N5O6P\tIVOMOUWHDPKRLL-KQYNXXCUSA-N\n+HMDB0000060\t102.031694058\t103.038970458\t101.024417658\t"Acetoacetic acid"\tC4H6O3\tWDJHALXBUFZDSR-UHFFFAOYSA-N\n+HMDB0000062\t161.105193351\t162.112469751\t160.097916951\tL-Carnitine\tC7H15NO3\tPHIQHXFUZVPYII-ZCFIWIBFSA-N\n+HMDB0000063\t362.20932407\t363.21660047\t361.20204767\tCortisol\tC21H30O5\tJYGXADMDTFJGBT-VWUMJDOOSA-N\n+HMDB0000064\t131.069476547\t132.076752947\t130.062200147\tCreatine\tC4H9N3O2\tCVSVTCORWBXHQV-UHFFFAOYSA-N\n+HMDB0000067\t386.354866094\t387.362142494\t385.347589694\tCholesterol\tC27H46O\tHVYWMOMLDIMFJA-DPAQBDIFSA-N\n+HMDB0000068\t183.089543287\t184.096819687\t182.082266887\tEpinephrine\tC9H13NO3\tUCTWMZQNUQWSLP-VIFPVBQESA-N\n+HMDB0000070\t129.078978601\t130.086255001\t128.071702201\t"Pipecolic acid"\tC6H11NO2\tHXEACLLIILLPRG-UHFFFAOYSA-N\n+HMDB0000072\t174.016437924\t175.023714324\t173.009161524\t"cis-Aconitic acid"\tC6H6O6\tGTZCVFVGUGFEME-IWQZZHSRSA-N\n+HMDB0000073\t153.078978601\t154.086255001\t152.071702201\tDopamine\tC8H11NO2\tVYFYYTLLBUKUHU-UHFFFAOYSA-N\n+HMDB0000076\t114.042927446\t115.050203846\t113.0356510'..b'24242129\t319.22786849\t9-HETE\tC20H32O3\tKATOYYZUTNAWSA-DLJQHUEDSA-N\n+HMDB0010223\t296.23514489\t297.24242129\t295.22786849\t9-HODE\tC18H32O3\tNPDSHTNEKLQQIJ-SIGMCMEVSA-N\n+HMDB0010384\t523.363789599\t524.371065999\t522.356513199\tLysoPC(18:0)\tC26H54NO7P\tIHNKQIMGVNPMTC-RUZDIDTESA-N\n+HMDB0010395\t543.332489471\t544.339765871\t542.325213071\tLysoPC(20:4(5Z,8Z,11Z,14Z))\tC28H50NO7P\tLAXQYRRMGGEGOH-JXRLJXCWSA-N\n+HMDB0010396\t543.332489471\t544.339765871\t542.325213071\tLysoPC(20:4(8Z,11Z,14Z,17Z))\tC28H50NO7P\tGOMVPVRDBLLHQC-VEJNOCSESA-N\n+HMDB0010409\t320.23514489\t321.24242129\t319.22786849\t11,12-EpETrE\tC20H32O3\tDXOYQVHGIODESM-IQCOFVSKSA-N\n+HMDB0011134\t320.23514489\t321.24242129\t319.22786849\t5-HETE\tC20H32O3\tKGIJOOYOSFUGPC-JGKLHWIESA-N\n+HMDB0011620\t125.929815379\t126.937091779\t124.922538979\tArsenite\tAsH3O3\tGCPXMJHSNVMWNM-UHFFFAOYSA-N\n+HMDB0011697\t815.700600326\t816.707876726\t814.693323926\tSM(d18:1/24:0)\tC47H96N2O6P\tQEDPUVGSSDPBMD-XTAIVQBESA-O\n+HMDB0011698\t843.731900454\t844.739176854\t842.724624054\tSM(d18:1/26:0)\tC49H100N2O6P\tVRAWSAPVSSLIRI-MVUJCARGSA-O\n+HMDB0011738\t275.111735291\t276.119011691\t274.104458891\tN2-gamma-Glutamylglutamine\tC10H17N3O6\tJBFYFLXEJFQWMU-WDSKDSINSA-N\n+HMDB0012100\t728.583224846\t729.590501246\t727.575948446\tSM(d18:1/18:1(11Z))\tC41H81N2O6P\tFZMKZVXNTLAHFD-RTEXEOPXSA-N\n+HMDB0012101\t728.583224846\t729.590501246\t727.575948446\tSM(d18:1/18:1(9Z))\tC41H81N2O6P\tNBEADXWAAWCCDG-QDDWGVBQSA-N\n+HMDB0012107\t812.67712523\t813.68440163\t811.66984883\tSM(d18:1/24:1(15Z))\tC47H93N2O6P\tWKZHECFHXLTOLJ-QYKFWSDSSA-N\n+HMDB0012895\t1027.400405861\t1028.407682261\t1026.393129461\t"Arginine vasopressin 1-8"\tC44H61N13O12S2\tSXYIOPJBWYQZRQ-VMPYSSHJSA-N\n+HMDB0012935\t1474.912295913\t1475.919572313\t1473.905019513\t"Dynorphin A"\tC69H116N23O13\tZIHYAUCIMOSJIH-QGLXRRFISA-O\n+HMDB0013072\t1650.73230468\t1651.73958108\t1649.72502828\tSomatostatin\tC77H106N18O19S2\tKTEPWBJBSMMZIC-LJTSQLRWSA-N\n+HMDB0013122\t507.368874977\t508.376151377\t506.361598577\tLysoPC(P-18:0)\tC26H54NO6P\tWBOMIOWRFSPZMC-AYICAFKVSA-N\n+HMDB0013125\t233.126322723\t234.133599123\t232.119046323\tHydroxypropionylcarnitine\tC10H19NO5\tQJGJXKFJFRSERW-QMMMGPOBSA-N\n+HMDB0013128\t246.169984677\t247.177261077\t245.162708277\tValerylcarnitine\tC12H24NO4\tVSNFQQXVMPSASB-SNVBAGLBSA-O\n+HMDB0013461\t840.708425358\t841.715701758\t839.701148958\tSM(d18:1/26:1(17Z))\tC49H97N2O6P\tYXEXWUZHFGYOHJ-UOJCCMJYSA-N\n+HMDB0013462\t688.515539212\t689.522815612\t687.508262812\tSM(d18:0/14:1(9Z)(OH))\tC37H73N2O7P\tZNHNJXWKKQKMBU-POWUNZFVSA-N\n+HMDB0013463\t716.54683934\t717.55411574\t715.53956294\tSM(d18:0/16:1(9Z)(OH))\tC39H77N2O7P\tLPHMSPONPQCKTL-FKUNDBCPSA-N\n+HMDB0013464\t702.567574782\t703.574851182\t701.560298382\tSM(d18:0/16:1(9Z))\tC39H79N2O6P\tCGVOQSQIYSUXAT-PPLFXBRHSA-N\n+HMDB0013465\t754.59887491\t755.60615131\t753.59159851\tSM(d18:0/20:2(11Z,14Z))\tC43H83N2O6P\tYVTVVJRJLRHYSJ-XJRFMCMQSA-N\n+HMDB0013466\t800.640739724\t801.648016124\t799.633463324\tSM(d18:0/22:1(13Z)(OH))\tC45H89N2O7P\tZUSFLIGNJFDBRL-FYGIKZFGSA-N\n+HMDB0013467\t798.62508966\t799.63236606\t797.61781326\tSM(d18:0/22:2(13Z,16Z)(OH))\tC45H87N2O7P\tDRKCMBAZIYFIGX-ZWLRGCNFSA-N\n+HMDB0013469\t828.672039852\t829.679316252\t827.664763452\tSM(d18:0/24:1(15Z)(OH))\tC47H93N2O7P\tIOOMOQUTKQGEFH-BSZNTFKYSA-N\n+HMDB0013667\t88.905847902\t89.913124302\t87.898571502\tYttrium\tY\tVWQVUPCCIRVNHF-UHFFFAOYSA-N\n+HMDB0013668\t101.904349503\t102.911625903\t100.897073103\tRuthenium\tRu\tKJTLSVCANCCWHF-UHFFFAOYSA-N\n+HMDB0013669\t132.90544687\t133.91272327\t131.89817047\tCesium\tCs\tTVFDJXOCXUVLDH-UHFFFAOYSA-N\n+HMDB0013670\t105.903483087\t106.910759487\t104.896206687\tPalladium\tPd\tKDLHZDBZIXYQEI-UHFFFAOYSA-N\n+HMDB0013671\t194.964774449\t195.972050849\t193.957498049\tPlatinum\tPt\tBASFCYQUMIYNBI-UHFFFAOYSA-N\n+HMDB0013672\t139.905434035\t140.912710435\t138.898157635\tCerium\tCe\tGWXLDORMOJMVQZ-UHFFFAOYSA-N\n+HMDB0015532\t63.929146578\t64.936422978\t62.921870178\tZinc\tZn\tHCHKCACWOHOZIP-UHFFFAOYSA-N\n+HMDB0029147\t275.111735279\t276.119011679\t274.104458879\tN-gamma-Glutamylglutamine\tC10H17N3O6\tFCWNOQOVMGNKNG-WDSKDSINSA-N\n+HMDB0059655\t148.037173366\t149.044449766\t147.029896966\t2-Hydroxyglutarate\tC5H8O5\tHWXBTNAVRSUOJR-UHFFFAOYSA-N\n'
b
diff -r 000000000000 -r 7c9269bded0e banks/RUMEN_v2011Oct19/RUMEN_v2011Oct19.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/banks/RUMEN_v2011Oct19/RUMEN_v2011Oct19.tabular Tue Jan 14 05:21:23 2020 -0500
[
b'@@ -0,0 +1,138 @@\n+HMDB_ID\tCOMMON_NAME\tCAS\tFORMULA\tMZ_MONO\tMZ_AVERAGE\tMZ_[M+H]+\tMZ_[M-H]-\tKEGG_ID\tBIOCYC_ID\tINCHI\tLOCATION\tTAXONOMY\tIUPAC\n+HMDB00020\t"p-Hydroxyphenylacetic acid"\t156-38-7\tC8H8O3\t152.047348\t152.147\t153.0546244\t151.0400716\tC00642\t4-HYDROXYPHENYLACETATE\tInChI=1/C8H8O3/c9-7-3-1-6(2-4-7)5-8(10)11/h1-4,9H,5H2,(H,10,11)\tRumen\t"Organic acids"\t"2-(4-hydroxyphenyl)acetic acid"\n+HMDB00033\tCarnosine\t305-84-0\tC9H14N4O3\t226.106583\t226.232\t227.1138594\t225.0993066\tC00386\tCARNOSINE\tInChI=1/C9H14N4O3/c10-2-1-8(14)13-7(9(15)16)3-6-4-11-5-12-6/h4-5,7H,1-3,10H2,(H,11,12)(H,13,14)(H,15,16)/t7-/m0/s1\tRumen\t"Amino acids and Amino Acid conjugates"\t"(2S)-2-(3-aminopropanoylamino)-3-(3H-imidazol-4-yl)propanoic acid"\n+HMDB00039\t"Butyric acid"\t107-92-6\tC4H8O2\t88.052429\t88.105\t89.0597054\t87.0451526\tC00246\t"Not Available"\tInChI=1/C4H8O2/c1-2-3-4(5)6/h2-3H2,1H3,(H,5,6)\tRumen\t"Organic acids"\t"Butanoic acid"\n+HMDB00042\t"Acetic acid"\t64-19-7\tC2H4O2\t60.021130\t60.052\t61.0284064\t59.0138536\tC00033\tACET\tInChI=1/C2H4O2/c1-2(3)4/h1H3,(H,3,4)\tRumen\t"Organic acids"\t"acetic acid"\n+HMDB00060\t"Acetoacetic acid"\t541-50-4\tC4H6O3\t102.031693\t102.089\t103.0389694\t101.0244166\tC00164\t3-KETOBUTYRATE\tInChI=1/C4H6O3/c1-3(5)2-4(6)7/h2H2,1H3,(H,6,7)\tRumen\t"Organic acids"\t"3-oxobutanoic acid"\n+HMDB00097\tCholine\t62-49-7\tC5H14NO\t104.107536\t104.171\t105.1148124\t103.1002596\tC00114\tCPD-563\tInChI=1/C5H14NO/c1-6(2,3)4-5-7/h7H,4-5H2,1-3H3/q+1\tRumen\t"Amino acids and Amino Acid conjugates"\t2-hydroxyethyl-trimethyl-ammonium\n+HMDB00108\tEthanol\t64-17-5\tC2H6O\t46.041866\t46.068\t47.0491424\t45.0345896\tC00469\tETOH\tInChI=1/C2H6O/c1-2-3/h3H,2H2,1H3\tRumen\tAlcohols\tethanol\n+HMDB00122\tD-Glucose\t50-99-7\tC6H12O6\t180.063385\t180.156\t181.0706614\t179.0561086\tC00031\tGLC\tInChI=1/C6H12O6/c7-1-2-3(8)4(9)5(10)6(11)12-2/h2-11H,1H2/t2-,3-,4+,5-,6u/m1/s1\tRumen\t"Carbohydrates and Carbohydrate conjugates"\t(3R,4R,5S,6S)-6-(hydroxymethyl)oxane-2,3,4,5-tetrol\n+HMDB00123\tGlycine\t56-40-6\tC2H5NO2\t75.032028\t75.067\t76.0393044\t74.0247516\tC00037\tGLY\tInChI=1/C2H5NO2/c3-1-2(4)5/h1,3H2,(H,4,5)\tRumen\t"Amino acids and Amino Acid conjugates"\t"2-aminoacetic acid"\n+HMDB00131\tGlycerol\t56-81-5\tC3H8O3\t92.047340\t92.094\t93.0546164\t91.0400636\tC00116\tGLYCEROL\tInChI=1/C3H8O3/c4-1-3(6)2-5/h3-6H,1-2H2\tRumen\tAlcohols\t1,2,3-Propanetriol\n+HMDB00134\t"Fumaric acid"\t110-17-8\tC4H4O4\t116.010956\t116.072\t117.0182324\t115.0036796\tC00122\tFUM\tInChI=1/C4H4O4/c5-3(6)1-2-4(7)8/h1-2H,(H,5,6)(H,7,8)/b2-1+\tRumen\t"Organic acids"\t"(E)-2-Butenedioic acid"\n+HMDB00142\t"Formic acid"\t64-18-6\tCH2O2\t46.005478\t46.025\t47.0127544\t44.9982016\tC00058\tFORMATE\tInChI=1/CH2O2/c2-1-3/h1H,(H,2,3)\tRumen\t"Organic acids"\t"Formic acid"\n+HMDB00143\tD-Galactose\t59-23-4\tC6H12O6\t180.063385\t180.156\t181.0706614\t179.0561086\tC00124\tGALACTOSE\tInChI=1/C6H12O6/c7-1-2-3(8)4(9)5(10)6(11)12-2/h2-11H,1H2/t2-,3+,4+,5-,6+/m1/s1\tRumen\t"Carbohydrates and Carbohydrate conjugates"\talpha-D-galactopyranose\n+HMDB00149\tEthanolamine\t141-43-5\tC2H7NO\t61.052765\t61.083\t62.0600414\t60.0454886\tC00189\tETHANOL-AMINE\tInChI=1/C2H7NO/c3-1-2-4/h4H,1-3H2\tRumen\tAlcohols\t2-aminoethanol\n+HMDB00157\tHypoxanthine\t68-94-0\tC5H4N4O\t136.038513\t136.111\t137.0457894\t135.0312366\tC00262\tHYPOXANTHINE\tInChI=1/C5H4N4O/c10-5-3-4(7-1-6-3)8-2-9-5/h1-2H,(H2,6,7,8,9,10)\tRumen\t"Nucleosides and Nucleoside conjugates"\t3,7-dihydropurin-6-one\n+HMDB00158\tL-Tyrosine\t60-18-4\tC9H11NO3\t181.073898\t181.189\t182.0811744\t180.0666216\tC00082\tTYR\tInChI=1/C9H11NO3/c10-8(9(12)13)5-6-1-3-7(11)4-2-6/h1-4,8,11H,5,10H2,(H,12,13)/t8-/m0/s1\tRumen\t"Amino acids and Amino Acid conjugates"\t"2-amino-3-(4-hydroxyphenyl)-propanoic acid"\n+HMDB00159\tL-Phenylalanine\t63-91-2\tC9H11NO2\t165.078979\t165.189\t166.0862554\t164.0717026\tC00079\tPHE\tInChI=1/C9H11NO2/c10-8(9(11)12)6-7-4-2-1-3-5-7/h1-5,8H,6,10H2,(H,11,12)/t8-/m0/s1\tRumen\t"Amino acids and Amino Acid conjugates"\t"2-amino-3-phenyl-propanoic acid"\n+HMDB00161\tL-Alanine\t56-41-7\tC3H7NO2\t89.047676\t89.093\t90.0549524\t88.0403996\tC00041\tL-ALPHA-ALANINE\tInChI=1/C3H7NO2/c1-2(4)3(5)6/h2H,4H2,1H3,(H,5,6)/t2-/m0/s1\tRumen\t"Amino acids and Amino A'..b'able"\tInChI=1/C14H25NO6/c1-15(2,3)11(9-10-13(18)19)21-14(20)8-6-4-5-7-12(16)17/h11H,4-10H2,1-3H3,(H-,16,17,18,19)/t11-/m0/s1\tRumen\t"Not Available"\t"Not Available"\n+HMDB13334\t9,12-Hexadecadienoylcarnitine\t"Not Available"\tC23H41NO4\t395.303558\t395.576\t396.3108344\t394.2962816\t"Not Available"\t"Not Available"\tInChI=1/C23H41NO4/c1-5-6-7-8-9-10-11-12-13-14-15-16-17-18-23(27)28-21(24(2,3)4)19-20-22(25)26/h7-8,10-11,21H,5-6,9,12-20H2,1-4H3/b8-7-,11-10-/t21-/m0/s1\tRumen\t"Not Available"\t"Not Available"\n+HMDB13462\tSM(d18:0/14:1(9Z)(OH))\t"Not Available"\tC37H73N2O7P\t688.515564\t688.958\t689.5228404\t687.5082876\tC00550\t"Not Available"\tInChI=1/C37H73N2O7P/c1-6-8-10-12-14-16-17-18-19-21-23-25-27-29-36(41)35(33-46-47(43,44)45-31-30-39(3,4)5)38-37(42)32-34(40)28-26-24-22-20-15-13-11-9-7-2/h13,15,27,29,34-36,40-41H,6-12,14,16-26,28,30-33H2,1-5H3,(H-,38,42,43,44)/b15-13-,29-27+/t34?,35-,36+/m0/s1\tRumen\tLipids\t"Not Available"\n+HMDB13463\tSM(d18:0/16:1(9Z)(OH))\t"Not Available"\tC39H77N2O7P\t716.546814\t717.012\t717.5540904\t715.5395376\tC00550\t"Not Available"\tInChI=1/C39H77N2O7P/c1-6-8-10-12-14-16-18-19-21-23-25-27-29-31-38(43)37(35-48-49(45,46)47-33-32-41(3,4)5)40-39(44)34-36(42)30-28-26-24-22-20-17-15-13-11-9-7-2/h17,20,29,31,36-38,42-43H,6-16,18-19,21-28,30,32-35H2,1-5H3,(H-,40,44,45,46)/b20-17-,31-29+/t36?,37-,38+/m0/s1\tRumen\tLipids\t"Not Available"\n+HMDB13464\tSM(d18:0/16:1(9Z))\t"Not Available"\tC39H79N2O6P\t702.567566\t703.028\t703.5748424\t701.5602896\tC00550\t"Not Available"\tInChI=1/C39H79N2O6P/c1-6-8-10-12-14-16-18-20-22-24-26-28-30-32-38(42)37(36-47-48(44,45)46-35-34-41(3,4)5)40-39(43)33-31-29-27-25-23-21-19-17-15-13-11-9-7-2/h17,19,37-38,42H,6-16,18,20-36H2,1-5H3,(H-,40,43,44,45)/b19-17-/t37-,38+/m0/s1\tRumen\tLipids\t"Not Available"\n+HMDB13465\tSM(d18:0/20:2(11Z,14Z))\t"Not Available"\tC43H83N2O6P\t754.598877\t755.103\t755.6061534\t753.5916006\tC00550\t"Not Available"\tInChI=1/C43H83N2O6P/c1-6-8-10-12-14-16-18-20-21-22-23-25-27-29-31-33-35-37-43(47)44-41(40-51-52(48,49)50-39-38-45(3,4)5)42(46)36-34-32-30-28-26-24-19-17-15-13-11-9-7-2/h14,16,20-21,34,36,41-42,46H,6-13,15,17-19,22-33,35,37-40H2,1-5H3,(H-,44,47,48,49)/b16-14-,21-20-,36-34+/t41-,42+/m0/s1\tRumen\tLipids\t"Not Available"\n+HMDB13466\tSM(d18:0/22:1(13Z)(OH))\t"Not Available"\tC45H89N2O7P\t800.640747\t801.171\t801.6480234\t799.6334706\tC00550\t"Not Available"\tInChI=1/C45H89N2O7P/c1-6-8-10-12-14-16-18-20-21-22-23-25-26-28-30-32-34-36-42(48)40-45(50)46-43(41-54-55(51,52)53-39-38-47(3,4)5)44(49)37-35-33-31-29-27-24-19-17-15-13-11-9-7-2/h20-21,35,37,42-44,48-49H,6-19,22-34,36,38-41H2,1-5H3,(H-,46,50,51,52)/b21-20-,37-35+/t42?,43-,44+/m0/s1\tRumen\tLipids\t"Not Available"\n+HMDB13467\tSM(d18:0/22:2(13Z,16Z)(OH))\t"Not Available"\tC45H87N2O7P\t798.625061\t799.155\t799.6323374\t797.6177846\tC00550\t"Not Available"\tInChI=1/C45H87N2O7P/c1-6-8-10-12-14-16-18-20-21-22-23-25-26-28-30-32-34-36-42(48)40-45(50)46-43(41-54-55(51,52)53-39-38-47(3,4)5)44(49)37-35-33-31-29-27-24-19-17-15-13-11-9-7-2/h14,16,20-21,35,37,42-44,48-49H,6-13,15,17-19,22-34,36,38-41H2,1-5H3,(H-,46,50,51,52)/b16-14-,21-20-,37-35+/t42?,43-,44+/m0/s1\tRumen\tLipids\t"Not Available"\n+HMDB13468\tSM(d18:0/22:3(10Z,13Z,16Z))\t"Not Available"\tC45H85N2O6P\t780.614502\t781.140\t781.6217784\t779.6072256\tC00550\t"Not Available"\tInChI=1/C45H85N2O6P/c1-6-8-10-12-14-16-18-20-21-22-23-24-25-27-29-31-33-35-37-39-45(49)46-43(42-53-54(50,51)52-41-40-47(3,4)5)44(48)38-36-34-32-30-28-26-19-17-15-13-11-9-7-2/h14,16,20-21,23-24,36,38,43-44,48H,6-13,15,17-19,22,25-35,37,39-42H2,1-5H3,(H-,46,49,50,51)/b16-14-,21-20-,24-23-,38-36+/t43-,44+/m0/s1\tRumen\tLipids\t"Not Available"\n+HMDB13469\tSM(d18:0/24:1(15Z)(OH))\t"Not Available"\tC47H93N2O7P\t828.672058\t829.224\t829.6793344\t827.6647816\tC00550\t"Not Available"\tInChI=1/C47H93N2O7P/c1-6-8-10-12-14-16-18-20-21-22-23-24-25-27-28-30-32-34-36-38-44(50)42-47(52)48-45(43-56-57(53,54)55-41-40-49(3,4)5)46(51)39-37-35-33-31-29-26-19-17-15-13-11-9-7-2/h20-21,37,39,44-46,50-51H,6-19,22-36,38,40-43H2,1-5H3,(H-,48,52,53,54)/b21-20-,39-37+/t44?,45-,46+/m0/s1\tRumen\tLipids\t"Not Available"\n'
b
diff -r 000000000000 -r 7c9269bded0e conf.cfg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/conf.cfg Tue Jan 14 05:21:23 2020 -0500
[
@@ -0,0 +1,58 @@
+## Conf file for downloader_bank_hmdb.pl script
+#
+## Version
+VERSION=1.1
+##v1.0 : Init
+##V1.1 : calculating and adding [M+H]+ and [M-H]- mono isotopic mass in banks
+#
+## ARGVT
+PROTON_MASS=1.007825
+ELECTRON_MASS=0.0005486
+#CHARGE=1
+
+#LOCAL BANKS VERSIONNING
+LOCALBANK_PATH=banks
+
+#HMDB archive url
+HMDB_URL=
+## Serum
+SERUM_URL=http://www.hmdb.ca/system/downloads/current/serum_metabolites.zip
+SERUM_FILE_NAME=serum_metabolites.xml
+SERUM_HTTP_FORMAT=ZIP
+SERUM_DB_FORMAT=XML
+## Urine
+URINE_URL=http://www.hmdb.ca/system/downloads/current/urine_metabolites.zip
+URINE_FILE_NAME=urine_metabolites.xml
+URINE_HTTP_FORMAT=ZIP
+URINE_DB_FORMAT=XML
+## Other matrices:
+## CSF
+CSF_URL=http://www.hmdb.ca/system/downloads/current/csf_metabolites.zip
+CSF_FILE_NAME=csf_metabolites.xml
+CSF_HTTP_FORMAT=ZIP
+CSF_DB_FORMAT=XML
+##FECES
+FECES_URL=http://www.fecalmetabolome.ca/system/downloads/current/feces_metabolites.zip
+FECES_FILE_NAME=feces_metabolites.xml
+FECES_HTTP_FORMAT=ZIP
+FECES_DB_FORMAT=XML
+##SALIVA
+SALIVA_URL=http://www.salivametabolome.ca/system/downloads/current/saliva_metabolites.zip
+SALIVA_FILE_NAME=saliva_metabolites.xml
+SALIVA_HTTP_FORMAT=ZIP
+SALIVA_DB_FORMAT=XML
+##RUMEN
+RUMEN_URL=http://www.rumendb.ca/public/downloads/current/metabocards.gz
+RUMEN_FILE_NAME=metabocards
+RUMEN_HTTP_FORMAT=GZ
+RUMEN_DB_FORMAT=CARD
+##COW
+COW_URL=http://www.cowmetdb.ca/public/downloads/current/metabocards.gz
+COW_FILE_NAME=metabocards
+COW_HTTP_FORMAT=GZ
+COW_DB_FORMAT=CARD
+##MILK
+MILK_URL=http://www.mcdb.ca/system/downloads/current/milk_metabolites.zip
+MILK_FILE_NAME=milk_metabolites.xml
+MILK_HTTP_FORMAT=ZIP
+MILK_DB_FORMAT=XML
\ No newline at end of file
b
diff -r 000000000000 -r 7c9269bded0e downloader_bank_hmdb.pl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/downloader_bank_hmdb.pl Tue Jan 14 05:21:23 2020 -0500
[
b'@@ -0,0 +1,321 @@\n+#!perl\r\n+\r\n+## script  : downloader_bank_hmdb.pl\r\n+#=============================================================================\r\n+#                              Included modules and versions\r\n+#=============================================================================\r\n+## Perl modules\r\n+use strict ;\r\n+use warnings ;\r\n+use Carp qw (cluck croak carp) ;\r\n+\r\n+use Data::Dumper ;\r\n+use Getopt::Long ;\r\n+use File::Basename ;\r\n+use FindBin ; ## Allows you to locate the directory of original perl script\r\n+\r\n+## Specific Perl Modules (PFEM)\r\n+use lib $FindBin::Bin.\'/lib\' ;\r\n+my $binPath = $FindBin::Bin ;\r\n+\r\n+## Dedicate Perl Modules (Home made...)\r\n+use hmdb_api qw( :ALL ) ;\r\n+use utils qw( :ALL ) ;\r\n+use conf qw( :ALL ) ;\r\n+use csv qw( :ALL ) ;\r\n+\r\n+## Initialized values\r\n+my $OptHelp ;\r\n+my $VERBOSE = 3 ;\r\n+my ($bankName, $format, $outTab, $outJson) = (undef, undef, undef, undef) ;\r\n+\r\n+#=============================================================================\r\n+#                                Manage EXCEPTIONS\r\n+#=============================================================================\r\n+&GetOptions ( \t"h"     \t=> \\$OptHelp,       # HELP\r\n+\t\t\t\t"bank|b:s"\t=> \\$bankName,\t\t# bank name to get the rigth url\r\n+\t\t\t\t"format|f:s"=> \\$format,\t\t# output format\r\n+\t\t\t\t"outTab:s"\t=> \\$outTab,\t\t# tabular output\r\n+\t\t\t\t"outJson:s"\t=> \\$outJson,\t\t# Json output\r\n+\t\t\t\t"verbose:i"\t=> \\$VERBOSE,\t\t# level of scriptt verbose [should be 1 or 3]\r\n+\r\n+\r\n+            ) ;\r\n+         \r\n+## if you put the option -help or -h function help is started\r\n+if ( defined($OptHelp) ){ &help ; }\r\n+\r\n+#=============================================================================\r\n+#                                MAIN SCRIPT\r\n+#=============================================================================\r\n+\r\n+\r\n+# get conf informations\r\n+my ( $CONF ) = ( undef ) ;\r\n+foreach my $conf ( <$binPath/*.cfg> ) {\r\n+\tmy $oConf = conf::new() ;\r\n+\t$CONF = $oConf->as_conf($conf) ;\r\n+}\r\n+\r\n+# MAIN SCRIPT :\r\n+\r\n+if ( (defined $bankName) ) {\r\n+\r\n+\tmy ( $bankUrl, $bankVersion, $bankSuffixe ) = (undef, undef, undef) ;\r\n+\tmy ( $bankOutputTabularFile, $bankOutputJsonFile ) = (undef, undef) ;\r\n+\t\r\n+\tprint "** Get version information from Wishart server databases (Canada)\\n" if $VERBOSE > 1 ;\r\n+\t\r\n+\t# get information from conf\r\n+\tif ($CONF->{$bankName.\'_URL\'}) {\r\n+\t\t$bankUrl = $CONF->{$bankName.\'_URL\'}  ;\r\n+\t\t# get version of the http resource\r\n+\t\tmy $oUtils = utils->new() ;\r\n+    \t($bankVersion) = $oUtils->getHttpFileVersion($bankUrl) ;\r\n+    \t\r\n+    \tprint "\\tThe current version is: $bankVersion\\n" if $VERBOSE > 1 ;\t\r\n+\t}\r\n+\telse {\r\n+\t\tcroak "the given bank name ($bankName) doesn\'t match with any configuration parameters -- database downloading stopped" ;\r\n+\t}\r\n+\t\r\n+\t# manage if needed to download or not the bank (get or not the last version)\r\n+\tmy ($bankFileExist, $bankFilePath, $bankFileDir) = (undef, undef, undef) ;\r\n+\t\r\n+\tif ($CONF->{$bankName.\'_HTTP_FORMAT\'}) {\r\n+\t\t$bankSuffixe = $CONF->{$bankName.\'_HTTP_FORMAT\'}  ;\r\n+\t}\r\n+\telse {\r\n+\t\tcroak "[ERROR] the given bank suffixe doesn\'t exist! please check your configuration parameters -- database download stopped" ;\r\n+\t}\r\n+\t\r\n+\tprint "** Manage bank environment\\n" if $VERBOSE > 1 ;\r\n+\tmy $bankDir = $binPath.\'/\'.$CONF->{\'LOCALBANK_PATH\'} ;\r\n+\tif ( !-d $bankDir ) {\r\n+\t\tprint "\\tdir creation of $bankDir\\n" if $VERBOSE > 1 ;\r\n+\t\tmkdir $bankDir ;\r\n+\t}\r\n+\t\r\n+\t\r\n+\tprint "** Manage the download of the last version of the bank\\n" if $VERBOSE > 1 ;\r\n+\t\r\n+\tif ( ( defined $bankUrl ) and ( defined $bankVersion ) ) {\r\n+\t\tif(-d $binPath.\'/\'.$CONF->{\'LOCALBANK_PATH\'}.\'/\'.$bankName.\'_\'.$bankVersion) \t{ \t\t$bankFileExist = \'TRUE\' ;  \t\t}\r\n+\t\telse \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\t\t$bankFileExist = \'FALSE\' ; \t\t}\r\n+\t\t# Init the bank file name\r\n+\t\t$bankFileDir = $binPath.\'/\'.$CONF->{\'LOCALBANK_PATH\'}.\'/\'.$bankName.\'_\'.$bankVersion ;\r\n+\t\t$bankFilePath = $bankFileDir.\'/\'.$bankName.\'_\'.$bankVersion.\'.\'.lc($bankSuffixe) ;\r\n+\t\t# For final files (tabu'..b'le) ;\r\n+\t\t\t\t($metabolites) = $oHandler->cowmetdb_hash($handler) ;\r\n+\t\t\t\tprint "\\tExtraction of $$nbEntries metabolites from $bankName CARD file\\n" if $VERBOSE > 1 ;\r\n+\t\t\t}\r\n+\t\t\telse {\r\n+\t\t\t\t#TODO...\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\telse {\r\n+\t\t\tprint "\\t/!\\\\ The bank does not exist: $bankFile\\n" if $VERBOSE > 1 ;\r\n+\t\t}\r\n+\t\t\r\n+\t\t## Write outputs !\r\n+\t\tprint "** Write outputs from HMDB in BiH and Json formats\\n" if $VERBOSE > 1 ;\r\n+\t\t\r\n+\t\tif ( (defined $metabolites) and (defined $format) ) {\r\n+\t\t\t\r\n+\t\t\t## Generation of M+H and M-H masses\r\n+\t\t\tmy $ometmz = hmdb_api->new ;\r\n+\t\t\tmy $completedMetabolites = undef ;\r\n+\t\t\t$completedMetabolites = $ometmz->setMetaboliteAcurrateMzToModesMz($CONF->{$bankName.\'_DB_FORMAT\'}, $metabolites, $CONF->{\'PROTON_MASS\'}, $CONF->{\'ELECTRON_MASS\'}, 1) ;\r\n+\t\t\t\r\n+#\t\t\tprint Dumper $completedMetabolites ;\r\n+\t\t\t\r\n+\t\t\t## tabular output\r\n+\t\t\tif ( ( $format eq \'tabular\') and (defined $outTab) ) {\r\n+\t\t\t\tprint "\\tThe tabular output ($outTab) is created...\\n" if $VERBOSE > 1 ;\r\n+#\t\t\t\tprint Dumper $metabolites ;\r\n+\t\t\t\t# sort metabolites\r\n+\t\t\t\tmy $omet = hmdb_api->new ;\r\n+\t\t\t\tmy $sortedMetabolites = undef ;\r\n+\t\t\t\t\r\n+\t\t\t\tif ($CONF->{$bankName.\'_DB_FORMAT\'} eq \'XML\') {\r\n+\t\t\t\t\t$sortedMetabolites = $omet->buildMetabolitesArray($completedMetabolites) ;\r\n+\t\t\t\t}\r\n+\t\t\t\telsif ( ($CONF->{$bankName.\'_DB_FORMAT\'} eq \'CARD\') ) {\r\n+\t\t\t\t\t$sortedMetabolites= $omet->cowmetdb_hash_to_inhouse_format($completedMetabolites) ;\r\n+\t\t\t\t}\r\n+\t\t\t\t\r\n+\t#\t\t\tprint Dumper $sortedMetabolites ;\r\n+\t\t\t\tmy $ocsv = csv->new( ) ;\r\n+\t\t\t\tmy $csv = $ocsv->get_csv_object("\\t") ;\r\n+\t\t\t\t# create the ref file for ./bank repo\r\n+\t\t\t\t$ocsv->write_csv_from_arrays($csv, $bankOutputTabularFile, $sortedMetabolites) ;\r\n+\t\t\t\t# generate also a copy for user history\r\n+\t\t\t\t$ocsv->write_csv_from_arrays($csv, $outTab, $sortedMetabolites) ;\r\n+\t\t\t\t\r\n+\t\t\t}\r\n+\t\t\telsif ( (defined $format) and (defined $outJson) ) {\r\n+\t\t\t\t#TODO...\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\telse {\r\n+\t\t\tcroak "No metabolites are extracted from the $bankName bank file\\n" ;\r\n+\t\t}\r\n+\t\t## Clean local envt\r\n+\t\tunlink $bankFile if (-e $bankFile) ;\r\n+\t}\r\n+} ## END IF defined $bankName\r\n+else {\r\n+\t&help ;\r\n+\tcroak "No bank name and format are defined - Please set one" ;\r\n+}\r\n+\r\n+print "\\n*************!!End of the job ;-). Thank you for using W4M!!****************\\n" if $VERBOSE > 1 ;\r\n+### END of main script\r\n+\r\n+\r\n+\r\n+\r\n+\r\n+#====================================================================================\r\n+# Help subroutine called with -h option\r\n+# number of arguments : 0\r\n+# Argument(s)        :\r\n+# Return           : 1\r\n+#====================================================================================\r\n+sub help {\r\n+\tprint STDERR "\r\n+downloader_bank_hmdb.pl\r\n+\r\n+# downloader_bank_hmdb is a script to export specific tissue/matrix bank from HMDB source.\r\n+# Input : N/A\r\n+# Author : Franck Giacomoni\r\n+# Email : fgiacomoni\\@inra.fr\r\n+# Version : 1.0\r\n+# Created : 21/11/2018\r\n+USAGE :\t\t \r\n+\t\tdownloader_bank_hmdb.pl -bank [SERUM|URINE|CSF|...] -format [tabular|json] -outTab [tabular file name]\r\n+\t\t\r\n+\t\t";\r\n+\texit(1);\r\n+}\r\n+\r\n+## END of script - F Giacomoni \r\n+\r\n+__END__\r\n+\r\n+=head1 NAME\r\n+\r\n+ downloader_bank_hmdb.pl is a script to export specific tissue/matrix bank from HMDB source.\r\n+\r\n+=head1 USAGE\r\n+\r\n+ downloader_bank_hmdb.pl -bank [serum|urine|...] -format [tabular|json] \r\n+ or downloader_bank_hmdb.pl -help\r\n+\r\n+=head1 SYNOPSIS\r\n+\r\n+This script export specific tissue/matrix bank from HMDB source. \r\n+\r\n+=head1 DESCRIPTION\r\n+\r\n+This main program is a galaxy tool (W4M) allowing the export specific tissue/matrix bank from HMDB source in a tabular format.\r\n+\r\n+=over 4\r\n+\r\n+=item B<function01>\r\n+\r\n+=item B<function02>\r\n+\r\n+=back\r\n+\r\n+=head1 AUTHOR\r\n+\r\n+Franck Giacomoni E<lt>franck.giacomoni@inra.frE<gt>\r\n+\r\n+=head1 LICENSE\r\n+\r\n+This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.\r\n+\r\n+=head1 VERSION\r\n+\r\n+version 1 : 21 / 11 / 2018\r\n+\r\n+version 2 : ??\r\n+\r\n+=cut\n\\ No newline at end of file\n'
b
diff -r 000000000000 -r 7c9269bded0e downloader_bank_hmdb.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/downloader_bank_hmdb.xml Tue Jan 14 05:21:23 2020 -0500
[
@@ -0,0 +1,161 @@
+<tool id="downloader_bank_hmdb" name="HMDB bank downloader" version="2018.12">
+  <description>
+        : get a specific metabolite bank (as Urine...) from HMDB web portal.
+  </description>
+  
+  <requirements>
+      <requirement type="package" version="2.161">perl-data-dumper</requirement>
+      <requirement type="package" version="6.15">perl-lwp-simple</requirement>
+   <requirement type="package" version="6.15">perl-libwww-perl</requirement>
+      <requirement type="package" version="1.74">perl-uri</requirement>
+      <requirement type="package" version="1.97">perl-text-csv</requirement>
+      <requirement type="package" version="3.52">perl-xml-twig</requirement>
+      <requirement type="package" version="1.60">perl-archive-zip</requirement>
+      <requirement type="package" version="2.064">perl-io-uncompress-gunzip</requirement>
+  </requirements>
+  
+  <stdio>
+      <exit_code range="1" level="fatal" />
+  </stdio>
+  
+  
+  <command><![CDATA[
+        perl $__tool_directory__/downloader_bank_hmdb.pl
+            -bank "$bank"
+            -verbose "$verbose"
+            -format "$bankformat"
+            -outTab "$outTab"
+        
+  ]]></command>
+  <inputs>
+   <param name="bank" type="select" label="What is the specific bank you want to download? " help="All banks are extracted from downloads section on HMDB web portal.">
+        <option value="SERUM" selected="true">Human serum</option>
+        <option value="URINE">Human urine</option>
+        <option value="CSF">Human cerebrospinal fluid</option>
+        <option value="FECES">Human feces</option>
+        <option value="SALIVA">Human saliva</option>
+        <option value="COW">Bovine</option>
+        <option value="RUMEN">Bovine rumen</option>
+        <option value="MILK">Bovine milk</option>
+    </param>
+    <param name="bankformat" type="select" label="Which output format do you need? " help="Proposed formats are lighter than downloaded raw files and adapted to annotation tools.">
+        <option value="tabular" selected="true">tabular (for BiH tool)</option>
+        <!--<option value="json">json (still in construction)</option>-->
+    </param>
+    <param name="verbose" type="select" label="Level of script verbose " help="Information about script running.">
+        <option value="1" selected="true">low</option>
+        <option value="3">high</option>
+    </param>
+  </inputs>
+  
+  <outputs>
+    <data name="outTab" format="tabular" label="REF_HMDB_${bank}.tabular"/>
+    <!--<data name="outJson" format="json" label="REF_HMDB_${bank}.json"/>-->
+  </outputs>
+  
+  <tests>
+   <test>
+   <!--test 01 CSF download and produce a simple tabular -->
+   <param name="bank" value="CSF"/>
+   <param name="bankformat" value="tabular"/>
+   <param name="verbose" value="1"/>
+   <output name="outTab" file="out01.tabular"/>
+   </test>
+  </tests>
+
+  <help><![CDATA[
+
+.. class:: infomark
+
+**Authors** Charlotte Joly, Delphine Centeno and Franck Giacomoni
+
+---------------------------------------------------
+
+.. class:: infomark
+
+**Please cite** If you use this tool, please add the following reference
+  | Wishart DS, Feunang YD, Marcu A, Guo AC, Liang K, et al., HMDB 4.0 â€” The Human Metabolome Database for 2018. Nucleic Acids Res. 2018. Jan 4;46(D1):D608-17.
+
+
+---------------------------------------------------
+
+====================
+HMDB bank downloader
+====================
+
+-----------
+Description
+-----------
+
+ | Download a bank containing information (like : HMDB id,  Name, mz, inchikey) 
+ | from HMDB online web portal and convert it into W4M annotation tool input formats.
+ |
+
+
+-----------------
+Workflow position
+-----------------
+
+
+.. image:: ./static/images/metabolomics/hmdb.png
+        :width: 800
+
+
+
+----------
+Parameters
+----------
+
+What is the specific bank you want to download
+ | Choose whether specific metabolite banks:
+ | Urine
+ | Serum
+ | cerebrospinal fluid
+ | ...
+ |
+
+
+Which output format do you need
+ | tabular : for W4M BiH annotation tool as example
+ | json : still in construction
+ |
+
+
+
+------------
+Output files
+------------
+
+Two types of files
+ | REF_HMDB_BANKNAME.tabular: for W4M BiH annotation tool as example
+ | 
+ | REF_HMDB_BANKNAME.json: for linking with others modules.
+ |
+
+---------------------------------------------------
+
+
+---------------
+Working example
+---------------
+
+
+.. class:: warningmark
+
+Refer to the corresponding W4M HowTo section: http://workflow4metabolomics.org/howto
+ | Format Data For Postprocessing
+ | Perform LCMS Annotations
+
+.. class:: warningmark
+
+And their "W4M courses 2018":
+ | Using Galaxy4Metabolomics - W4M table format for Galaxy
+ | Annotation Banks - Annotation  
+
+
+ ]]></help>
+ <!-- [RECOMMANDED] All citations associated to this tool (main citation given above and other references). Can be extracted from the history panel -->
+  <citations>
+    <citation type="doi">10.1093/nar/gkx1089</citation>
+  </citations>
+</tool>
\ No newline at end of file
b
diff -r 000000000000 -r 7c9269bded0e lib/conf.pm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/conf.pm Tue Jan 14 05:21:23 2020 -0500
[
@@ -0,0 +1,259 @@
+package conf ;
+
+use strict;
+use warnings ;
+use Exporter ;
+use Carp ;
+use Data::Dumper ;
+
+use vars qw($VERSION @ISA @EXPORT %EXPORT_TAGS);
+
+our $VERSION = "1.0" ;
+our @ISA = qw(Exporter) ;
+our @EXPORT = qw( as_conf get_value_from_conf check_path_and_file ) ;
+our %EXPORT_TAGS = ( ALL => [qw( as_conf get_value_from_conf )] ) ;
+
+=head1 NAME
+
+conf - A module for manage pfem conf file
+
+=head1 SYNOPSIS
+
+    use conf ;
+    my $object = conf->new() ;
+
+=head1 DESCRIPTION
+
+This module does manage conf file (extract all or selected fields)
+
+=head1 METHODS
+
+Methods are :
+
+=head2 METHOD new
+
+ ## Description : new
+ ## Input : $self
+ ## Ouput : bless $self ;
+ ## Usage : new() ;
+
+=cut
+## START of SUB
+sub new {
+    ## Variables
+    my $self={};
+    bless($self) ;
+    return $self ;
+}
+### END of SUB
+
+=head2 METHOD as_conf
+
+ ## Description : permet de creer l'object conf a partir d'un fichier de conf de type KEY=VALUE
+ ## Input : $file
+ ## Ouput : $oConf (a hash)
+ ## Usage : my ( $oConf ) = as_conf( $file ) ;
+
+=cut
+## START of SUB
+sub as_conf {
+ ## Retrieve Values
+    my $self = shift ;
+    my ( $file, $separator ) = @_ ;
+    
+#    if (!defined $separator) { $separator = ';' } ## set separator to ;
+    
+    if ( !defined $file )  {  croak "Can't create object with an none defined file\n" ; }
+    
+    my %Conf = () ; ## Hash devant contenir l'ensemble des parametres locaux
+
+ if (-e $file) {
+ open (CFG, "<$file") or die "Can't open $file\n" ;
+ while (<CFG>) {
+ chomp $_ ;
+ if ( $_ =~ /^#(.*)/)  { next ; }
+ elsif ($_ =~/^(\w+?)=(.*)/) { ## ALPHANUMERIC OR UNDERSCORE ONLY FOR THE KEY AND ANYTHING ELSE FOR VALUE
+
+ my ($key, $value) = ($1, $2) ;
+
+ if (defined $separator) {
+ if ( $value=~/$separator/ ) { ## is a list to split
+ my @tmp = split(/$separator/ , $value) ;
+ $Conf{$key} = \@tmp ;
+ }
+ }
+ else {
+ $Conf{$key} = $value ;
+ }
+ }
+ }
+ close(CFG) ;
+ }
+ else { 
+ croak "Can't create object with an none existing file\n" ;
+ }
+
+    return ( \%Conf ) ;
+}
+## END of SUB
+
+=head2 METHOD as_conf_list
+
+ ## Description : permet de charger une liste txt en array
+ ## Input : $file
+ ## Output : elements
+ ## Usage : my ( elements ) = as_conf_list( $conf_file ) ;
+
+=cut
+## START of SUB
+sub as_conf_list {
+ ## Retrieve Values
+    my $self = shift ;
+    my ( $file ) = @_ ;
+    
+    my @elements = () ;
+    if ( !defined $file )  {  croak "Can't create object with an none defined file\n" ; }
+    
+    if (-e $file) {
+ open (CFG, "<$file") or die "Can't open $file\n" ;
+ while (<CFG>) {
+ chomp $_ ;
+ if ( $_ =~ /^#(.*)/)  { next ; }
+ elsif ($_ =~/^(.*)/) { if (defined $1) { push (@elements, $1) ; }  }
+ }
+    }
+    else {
+ croak "Can't create object with an none existing file\n" ;
+ }
+    return(\@elements) ;
+}
+## END of SUB
+
+=head2 METHOD get_value_from_conf
+
+ ## Description : permet de retourner une valeur du hash de conf a partir d'une key
+ ## Input : $oConf, $Key
+ ## Ouput : $Value
+ ## Usage : my ( $Value ) = get_value_from_conf( $oConf, $Key ) ;
+
+=cut
+## START of SUB
+sub get_value_from_conf {
+ ## Retrieve Values
+    my $self = shift ;
+    my ( $oConf, $Key ) = @_ ;
+    
+    my $Value = undef ;
+    
+    if ( defined $oConf ) {
+     if ( defined $oConf->{$Key} ) {
+     $Value = $oConf->{$Key} ;
+     }
+    }
+    else {
+     croak "Can't manage value with undefined object\n" ;
+    }
+    return($Value) ;
+}
+## END of SUB
+
+=head2 METHOD get_value_from_conf
+
+ ## Description : permet de retourner une valeur du hash de conf a partir d'une key
+ ## Input : $oConf, $Key
+ ## Ouput : $Value
+ ## Usage : my ( $Value ) = get_value_from_conf( $oConf, $Key ) ;
+
+=cut
+## START of SUB
+sub split_value_from_conf {
+ ## Retrieve Values
+    my $self = shift ;
+    my ( $oConf, $Key, $sep ) = @_ ;
+    
+    my $value = undef ;
+    my @values = () ;
+    
+    if ( defined $oConf ) {
+     if ( defined $oConf->{$Key} ) {
+     $value = $oConf->{$Key} ;
+     @values = split ( /$sep/, $value) ;
+     }
+    }
+    else {
+     croak "Can't manage value with undefined object\n" ;
+    }
+    return(\@values) ;
+}
+## END of SUB
+
+
+=head2 METHOD check_path_and_file
+
+ ## Description : permet de verifier les path et la presence des exe decrits dans le file conf. Bloque le script en cas de probleme
+ ## Input : $oConfs
+ ## Ouput : NA
+ ## Usage : &get_value_from_conf( $oConf ) ;
+
+=cut
+## START of SUB
+sub check_path_and_file {
+
+ my $self = shift ;
+ my ( $oConfs ) = @_ ;
+
+ foreach my $conf ( keys %{ $oConfs } ) {
+ if ( $conf =~ /^FILE/ ) {
+ if ( -e $oConfs->{$conf} ) {
+ if ( -s $oConfs->{$conf} ) { next ; }
+ else { carp "[Warning] : The size of file $oConfs->{$conf} is null\n" ; }
+ }
+ else {
+ carp "[Warning] : The file $oConfs->{$conf} doesn't exist\n" ;
+ }
+ }
+ elsif ( $conf =~ /^PATH/ ) {
+ if ( -d $oConfs->{$conf} ) { next ; }
+ else { carp "[Warning] :  The dir $oConfs->{$conf} doesn't exist\n" ; }
+ }
+ else {  next ;  }
+ }
+ return ;
+}
+## END of SUB
+
+1 ;
+
+
+__END__
+
+=head1 SUPPORT
+
+You can find documentation for this module with the perldoc command.
+
+ perldoc conf.pm
+
+
+=head1 Exports
+
+=over 4
+
+=item :ALL is as_conf get_value_from_conf
+
+=back
+
+=head1 AUTHOR
+
+Franck Giacomoni E<lt>franck.giacomoni@clermont.inra.frE<gt>
+
+=head1 LICENSE
+
+This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
+
+=head1 VERSION
+
+version 1 : 10 / 02 / 2013
+
+version 2 : 15 / 12 / 2015
+
+=cut
\ No newline at end of file
b
diff -r 000000000000 -r 7c9269bded0e lib/csv.pm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/csv.pm Tue Jan 14 05:21:23 2020 -0500
[
@@ -0,0 +1,240 @@
+package csv ;
+
+use strict;
+use warnings ;
+use Exporter ;
+use Carp ;
+
+use Text::CSV ;
+
+use Data::Dumper ;
+
+use vars qw($VERSION @ISA @EXPORT %EXPORT_TAGS);
+
+our $VERSION = "1.0";
+our @ISA = qw(Exporter);
+our @EXPORT = qw( get_csv_object get_value_from_csv_multi_header write_csv_from_hash);
+our %EXPORT_TAGS = ( ALL => [qw( get_csv_object get_value_from_csv_multi_header write_csv_from_hash )] );
+
+=head1 NAME
+
+My::Module - An example module
+
+=head1 SYNOPSIS
+
+    use My::Module;
+    my $object = My::Module->new();
+    print $object->as_string;
+
+=head1 DESCRIPTION
+
+This module does not really exist, it
+was made for the sole purpose of
+demonstrating how POD works.
+
+=head1 METHODS
+
+Methods are :
+
+=head2 METHOD new
+
+ ## Description : new
+ ## Input : $self
+ ## Ouput : bless $self ;
+ ## Usage : new() ;
+
+=cut
+
+sub new {
+    ## Variables
+    my $self={};
+    bless($self) ;
+    return $self ;
+}
+### END of SUB
+
+=head2 METHOD get_csv_object
+
+ ## Description : builds a csv object and etablishes format
+ ## Input : $separator
+ ## Output : $csv
+ ## Usage : my ( $csv ) = get_csv_object( $separator ) ;
+
+=cut
+## START of SUB
+sub get_csv_object {
+ ## Retrieve Values
+    my $self = shift ;
+    my ( $separator ) = @_ ;
+    
+#    my $csv = Text::CSV->new({'sep_char' => "$separator"});
+    my $csv = Text::CSV->new ( {'sep_char' => "$separator", binary => 1 } )  # should set binary attribute.
+     or die "Cannot use CSV: ".Text::CSV->error_diag ();
+    
+    return($csv) ;
+}
+## END of SUB
+
+=head2 METHOD get_value_from_csv_multi_header
+
+ ## Description : extract a targeted column in a csv file 
+ ## Input : $csv, $file, $column, $is_header, $nb_header
+ ## Output : $value
+ ## Usage : my ( $value ) = get_value_from_csv_multi_header( $csv, $file, $column, $is_header, $nb_header ) ;
+
+=cut
+## START of SUB
+sub get_value_from_csv_multi_header {
+ ## Retrieve Values
+    my $self = shift ;
+    my ( $csv, $file, $column, $is_header, $nb_header ) = @_ ;
+    
+    my @value = () ;
+    
+    ## Adapte the number of the colunm : (nb of column to position in array)
+ $column = $column - 1 ;
+    
+    open (CSV, "<", $file) or die $! ;
+
+ my $line = 0 ;
+
+ while (<CSV>) {
+ $line++ ;
+     chomp $_ ;
+ # file has a header
+ if ( defined $is_header and $is_header eq 'yes') { if ($line <= $nb_header) { next ; } }
+ # parsing the targeted column
+     if ( $csv->parse($_) ) {
+         my @columns = $csv->fields();
+         push ( @value, $columns[$column] ) ;
+     }
+     else {
+         my $err = $csv->error_input;
+         die "Failed to parse line: $err";
+     }
+ }
+ close CSV;
+    return(\@value) ;
+}
+## END of SUB
+
+=head2 METHOD parse_csv_object
+
+ ## Description : parse_all csv object and return a array of rows
+ ## Input : $csv, $file
+ ## Output : $csv_matrix
+ ## Usage : my ( $csv_matrix ) = parse_csv_object( $csv, $file ) ;
+
+=cut
+## START of SUB
+sub parse_csv_object {
+ ## Retrieve Values
+    my $self = shift ;
+    my ( $csv, $file ) = @_ ;
+    
+    my @csv_matrix = () ;
+    
+ open my $fh, "<:encoding(utf8)", $$file or die "Can't open csv file $$file: $!";
+
+ while ( my $row = $csv->getline( $fh ) ) {
+     push @csv_matrix, $row;
+ }
+ $csv->eof or $csv->error_diag();
+ close $fh;
+    
+    return(\@csv_matrix) ;
+}
+## END of SUB
+
+=head2 METHOD parse_allcsv_object
+
+ ## Description : parse_all csv object and return a array of rows with or without header
+ ## Input : $csv, $file, $keep_header
+ ## Output : $csv_matrix
+ ## Usage : my ( $csv_matrix ) = parse_csv_object( $csv, $file, $keep_header ) ;
+
+=cut
+## START of SUB
+sub parse_allcsv_object {
+ ## Retrieve Values
+    my $self = shift ;
+    my ( $csv, $file, $keep_header ) = @_ ;
+    
+    my @csv_matrix = () ;
+    my $line = 1 ;
+    
+ open my $fh, "<:encoding(utf8)", $$file or die "Can't open csv file $$file: $!";
+
+ while ( my $row = $csv->getline( $fh ) ) {
+ if ( ( $keep_header eq 'n' )  and ($line == 1) ) {  }
+ else { push @csv_matrix, $row; }
+     $line ++ ;
+ }
+ my $status = $csv->eof or $csv->error_diag();
+ close $fh;
+    
+    return(\@csv_matrix, $status) ;
+}
+## END of SUB
+
+
+=head2 METHOD write_csv_from_arrays
+
+ ## Description : write a csv file from list of rows
+ ## Input : $csv, $file_name, $rows
+ ## Output : $csv_file
+ ## Usage : my ( $csv_file ) = write_csv_from_arrays( $csv, $file_name, $rows ) ;
+
+=cut
+## START of SUB
+sub write_csv_from_arrays {
+ ## Retrieve Values
+    my $self = shift ;
+    my ( $csv, $file_name, $rows ) = @_ ;
+    
+    my $fh = undef ;
+    $csv->eol ("\n"); ##  end-of-line string to add to rows
+# $csv->quote_char(undef) ;
+    open $fh, ">:encoding(utf8)", "$file_name" or die "$file_name: $!";
+    
+ my $status = $csv->print ($fh, $_) for @{$rows};
+ close $fh or die "$file_name: $!";
+    
+    return(\$file_name) ;
+}
+## END of SUB
+
+1 ;
+
+
+__END__
+
+=head1 SUPPORT
+
+You can find documentation for this module with the perldoc command.
+
+ perldoc csv.pm
+
+=head1 Exports
+
+=over 4
+
+=item :ALL is get_csv_object, get_value_from_csv_multi_header
+
+=back
+
+=head1 AUTHOR
+
+Franck Giacomoni E<lt>franck.giacomoni@clermont.inra.frE<gt>
+
+=head1 LICENSE
+
+This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
+
+=head1 VERSION
+
+version 1 : 23 / 10 / 2013
+
+version 2 : ??
+
+=cut
\ No newline at end of file
b
diff -r 000000000000 -r 7c9269bded0e lib/hmdb_api.pm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/hmdb_api.pm Tue Jan 14 05:21:23 2020 -0500
[
b'@@ -0,0 +1,342 @@\n+package hmdb_api ;\r\n+\r\n+use strict;\r\n+use warnings ;\r\n+use Exporter ;\r\n+use Carp ;\r\n+\r\n+use Data::Dumper ;\r\n+use XML::Twig ;\r\n+\r\n+use csv ;\r\n+\r\n+use vars qw($VERSION @ISA @EXPORT %EXPORT_TAGS);\r\n+\r\n+our $VERSION = "1.0";\r\n+our @ISA = qw(Exporter);\r\n+our @EXPORT = qw( getMetaboliteFeatures cowmetdb_handle cowmetdb_hash cowmetdb_hash_to_inhouse_format buildMetabolitesArray setMetaboliteAcurrateMzToModesMz);\r\n+our %EXPORT_TAGS = ( ALL => [qw( getMetaboliteFeatures cowmetdb_handle cowmetdb_hash cowmetdb_hash_to_inhouse_format buildMetabolitesArray setMetaboliteAcurrateMzToModesMz)] );\r\n+\r\n+=head1 NAME\r\n+\r\n+My::Module - An example module\r\n+\r\n+=head1 SYNOPSIS\r\n+\r\n+    use My::Module;\r\n+    my $object = My::Module->new();\r\n+    print $object->as_string;\r\n+\r\n+=head1 DESCRIPTION\r\n+\r\n+This module does not really exist, it\r\n+was made for the sole purpose of\r\n+demonstrating how POD works.\r\n+\r\n+=head1 METHODS\r\n+\r\n+Methods are :\r\n+\r\n+=head2 METHOD new\r\n+\r\n+\t## Description : new\r\n+\t## Input : $self\r\n+\t## Ouput : bless $self ;\r\n+\t## Usage : new() ;\r\n+\r\n+=cut\r\n+\r\n+sub new {\r\n+    ## Variables\r\n+    my $self={};\r\n+    bless($self) ;\r\n+    return $self ;\r\n+}\r\n+### END of SUB\r\n+\r\n+\r\n+=head2 METHOD cowmetdb_handle\r\n+\r\n+\t## Description : open a flat file and push the contains in memory - compute entries number.\r\n+\t## Input : $flat\r\n+\t## Output : $handler, $entries\r\n+\t## Usage : my ( $handler ) = cowmetdb_handle( $flat ) ;\r\n+\t\r\n+=cut\r\n+## START of SUB\r\n+sub cowmetdb_handle {\r\n+\t## Retrieve Values\r\n+    my $self = shift ;\r\n+    my ( $flat ) = @_ ;\r\n+    \r\n+    my @handle = () ;\r\n+    my $entries = 0 ;\r\n+    my ( $begin, $end ) = ( 0, 0 ) ;\r\n+    \r\n+    if ( -e $flat ) {\r\n+    \topen(FILE, "<$flat") or die "Cant\' read the file $flat\\n" ;\r\n+    \twhile (my $line = <FILE>){\r\n+    \t\tchomp $line ;\r\n+    \t\tpush(@handle, $line) ;\r\n+    \t\tif ( $line =~ /^#BEGIN_METABOCARD/ ) { $begin = 1 ; }\r\n+    \t\telsif ( ( $line =~ /^#END_METABOCARD/ ) and ( $begin == 1 ) ){ $end = 1 ; }\r\n+    \t\t## count entries\r\n+    \t\tif ( ( $end == 1 ) and ( $begin == 1 ) ){ $entries++ ; ( $begin, $end ) = ( 0, 0 ) ; }\r\n+    \t}\r\n+    \tclose(FILE) ;\r\n+    }\r\n+    else {\r\n+    \tcroak "Can\'t find the source file $flat\\n" ;\r\n+    }\r\n+    \r\n+    return(\\@handle, \\$entries) ;\r\n+}\r\n+## END of SUB\r\n+\r\n+=head2 METHOD cowmetdb_hash\r\n+\r\n+\t## Description : work on a hmdb flat text handler and field data (selected fields), build a hash for each found entry\r\n+\t## Input : $handler\r\n+\t## Output : $entries\r\n+\t## Usage : my ( $entries ) = hmdb_hash( $handler ) ;\r\n+\t\r\n+=cut\r\n+## START of SUB\r\n+sub cowmetdb_hash {\r\n+\t## Retrieve Values\r\n+    my $self = shift ;\r\n+    my ( $handle ) = @_ ;\r\n+    \r\n+    my @entries = () ;\r\n+    my %entry = () ;\r\n+    my $pos = 0 ;\r\n+    \r\n+    if ( ( defined $handle ) ) {\r\n+    \tforeach my $data ( @$handle ) {\r\n+    \t\t\r\n+    \t\tif( $data =~ /^#BEGIN_METABOCARD/ ) { %entry = () ; }\r\n+    \t\telsif( $data =~ /^#END_METABOCARD/ ) { my %temp = %entry ; push (@entries, \\%temp) ; }\r\n+    \t    elsif( $data =~ /^# name:/ ) { \t\t\t\t\t\t$entry{\'COMMON_NAME\'} = $handle->[$pos+1] ; }\r\n+\t\t\telsif( $data =~ /^# iupac:/ ) { \t\t\t\t\t$entry{\'IUPAC\'} = $handle->[$pos+1] ; }\r\n+\t\t\telsif( $data =~ /^# kegg_compound_id:/ ) { \t\t\t$entry{\'KEGG_ID\'} = $handle->[$pos+1] ; }\r\n+    \t    elsif( $data =~ /^# chemical_formula:/ ) {\t\t\t$entry{\'FORMULA\'} = $handle->[$pos+1] ; }\r\n+    \t    elsif( $data =~ /^# taxonomy_super_class:/ ) {\t\t$entry{\'TAXONOMY\'} = $handle->[$pos+1] ; }\r\n+    \t    elsif( $data =~ /^# cas_number:/ ) {\t\t\t\t$entry{\'CAS\'} = $handle->[$pos+1] ; }\r\n+    \t    elsif( $data =~ /^# biofluid_location:/ ) {\t\t\t$entry{\'LOCATION\'} = $handle->[$pos+1] ; }\r\n+    \t    elsif( $data =~ /^# inchi_identifier:/ ) {\t\t\t$entry{\'INCHI\'} = $handle->[$pos+1] ; }\r\n+    \t    elsif( $data =~ /^# weight_average:/ ) {\t\t\t$entry{\'MZ_AVERAGE\'} = $handle->[$pos+1] ; }\r\n+    \t    elsif( $data =~ /^# weight_mono:/ ) {\t\t\t\t$entry{\'MZ_MONO\'} = $handle->[$pos+1] ; }\r\n+    \t    elsif( $data =~ /^# biocyc_id:/ ) {\t\t\t\t\t$entr'..b' $tmp_mass = $metabolites->{$id}{\'monisotopic_molecular_weight\'} ;\r\n+\t\t\t\t$metabolites->{$id}{\'[M+H]+\'} = ( $tmp_mass + $proton_mass - $electron_mass) * $charge ;\r\n+\t\t\t\t$metabolites->{$id}{\'[M-H]-\'} = ( $tmp_mass - $proton_mass + $electron_mass) * $charge ;\r\n+\t\t\t}\r\n+\t\t\telse {\r\n+\t\t\t\twarn "No monisotopic_molecular_weight field exists with metabolite $id\\n " ;\r\n+\t\t\t}\r\n+\t    }\t\r\n+\t}\r\n+\telsif ( ($format eq \'CARD\') ) {\r\n+\t\tforeach my $entry (@$metabolites) {\r\n+\t\t\t\tif ( $entry->{\'MZ_MONO\'} ) {\r\n+\t\t\t\t\tmy $tmp_mass = $entry->{\'MZ_MONO\'} ;\r\n+\t\t\t\t\t$entry->{\'MZ_[M+H]+\'} = ( $tmp_mass + $proton_mass - $electron_mass) * $charge ;\r\n+\t\t\t\t\t$entry->{\'MZ_[M-H]-\'} = ( $tmp_mass - $proton_mass + $electron_mass) * $charge ;\r\n+\t\t\t\t}\r\n+\t\t\t\telse {\r\n+\t\t\t\t\twarn "No MZ_MONO field exists with metabolite $entry->{\'HMDB_ID\'}\\n " ;\r\n+\t\t\t\t}\r\n+\t\t}\r\n+\t}\r\n+    \r\n+    \r\n+    return ($metabolites) ;\r\n+}\r\n+### END of SUB\r\n+\r\n+=head2 METHOD buildMetabolitesArray\r\n+\r\n+\t## Description : build a metabolite list from xml extraction\r\n+\t## Input : $metabolites, $headers\r\n+\t## Output : $metabolitesSorted\r\n+\t## Usage : my ( $metabolitesSorted ) = buildMetabolitesArray ( $metabolites, $headers ) ;\r\n+\t\r\n+=cut\r\n+## START of SUB\r\n+sub buildMetabolitesArray {\r\n+    ## Retrieve Values\r\n+    my $self = shift ;\r\n+    my ( $metabolites, $headers ) = @_;\r\n+    my ( @metabolitesSorted ) = ( () ) ;\r\n+    \r\n+    ## header format is [\'HMDB_ID\',\'MzBank\', \'MetName\', \'ChemFormula\', \'INChIkey\']\r\n+    if (defined $headers) {\r\n+    \tpush ( @metabolitesSorted, $headers ) ;\r\n+    }\r\n+    else {\r\n+    \tpush ( @metabolitesSorted, [\'HMDB_ID\',\'MzBank\', \'[M+H]+\', \'[M-H]-\', \'MetName\', \'ChemFormula\', \'INChIkey\'] ) ;\r\n+    }\r\n+    \r\n+    foreach my $id (sort keys %{$metabolites}) {\r\n+    \tmy @tmp = () ;\r\n+    \tpush (@tmp, $id) ;\r\n+    \tpush (@tmp, $metabolites->{$id}{\'monisotopic_molecular_weight\'}) ;\r\n+    \tpush (@tmp, $metabolites->{$id}{\'[M+H]+\'}) ;\r\n+    \tpush (@tmp, $metabolites->{$id}{\'[M-H]-\'}) ;\r\n+    \tpush (@tmp, $metabolites->{$id}{\'metabolite_name\'}) ;\r\n+    \tpush (@tmp, $metabolites->{$id}{\'chemical_formula\'}) ;\r\n+    \tpush (@tmp, $metabolites->{$id}{\'inchikey\'}) ;\r\n+    \t\r\n+    \t# merge\r\n+    \tpush (@metabolitesSorted, \\@tmp) ;\r\n+    }\r\n+\r\n+    return (\\@metabolitesSorted) ;\r\n+}\r\n+### END of SUB\r\n+\r\n+=head2 METHOD cowmetdb_hash_to_inhouse_format\r\n+\r\n+\t## Description : adaptator from hash cowmetdb entry to inhouse format \r\n+\t## Input : $entries\r\n+\t## Output : $tsv_handler\r\n+\t## Usage : my ( $tsv_handler ) = cowmetdb_hash_to_inhouse_format( $entries ) ;\r\n+\t\r\n+=cut\r\n+## START of SUB\r\n+sub cowmetdb_hash_to_inhouse_format {\r\n+\t## Retrieve Values\r\n+    my $self = shift ;\r\n+    my ( $entries ) = @_ ;\r\n+    \r\n+    my @fields_name = (\'HMDB_ID\', \'COMMON_NAME\', \'CAS\', \'FORMULA\', \'MZ_MONO\', \'MZ_AVERAGE\', \'MZ_[M+H]+\', \'MZ_[M-H]-\', \'KEGG_ID\', \'BIOCYC_ID\', \'INCHI\', \'LOCATION\', \'TAXONOMY\', \'IUPAC\') ;\r\n+    my @tsv_handler = () ;\r\n+    push (@tsv_handler, \\@fields_name) ; ## first line\r\n+    \r\n+    foreach my $entry (@$entries) {\r\n+    \tmy @tmp = ( $entry->{\'HMDB_ID\'}, $entry->{\'COMMON_NAME\'}, $entry->{\'CAS\'}, $entry->{\'FORMULA\'}, $entry->{\'MZ_MONO\'}, $entry->{\'MZ_AVERAGE\'}, $entry->{\'MZ_[M+H]+\'}, $entry->{\'MZ_[M-H]-\'}, $entry->{\'KEGG_ID\'}, $entry->{\'BIOCYC_ID\'}, \r\n+    \t$entry->{\'INCHI\'}, $entry->{\'LOCATION\'}, $entry->{\'TAXONOMY\'}, $entry->{\'IUPAC\'} ) ;\r\n+    \tpush (@tsv_handler, \\@tmp) ; ## one entry by one line\r\n+    }\r\n+    \r\n+    return(\\@tsv_handler) ;\r\n+}\r\n+## END of SUB\r\n+\r\n+\r\n+1 ;\r\n+\r\n+\r\n+__END__\r\n+\r\n+=head1 SUPPORT\r\n+\r\n+You can find documentation for this module with the perldoc command.\r\n+\r\n+ perldoc XXX.pm\r\n+\r\n+=head1 Exports\r\n+\r\n+=over 4\r\n+\r\n+=item :ALL is ...\r\n+\r\n+=back\r\n+\r\n+=head1 AUTHOR\r\n+\r\n+Franck Giacomoni E<lt>franck.giacomoni@clermont.inra.frE<gt>\r\n+\r\n+=head1 LICENSE\r\n+\r\n+This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.\r\n+\r\n+=head1 VERSION\r\n+\r\n+version 1 : xx / xx / 201x\r\n+\r\n+version 2 : ??\r\n+\r\n+=cut\n\\ No newline at end of file\n'
b
diff -r 000000000000 -r 7c9269bded0e lib/utils.pm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/utils.pm Tue Jan 14 05:21:23 2020 -0500
[
@@ -0,0 +1,256 @@
+package utils ;
+
+use strict;
+use warnings ;
+use Exporter ;
+use Carp ;
+
+use Data::Dumper ;
+use LWP::UserAgent ;
+use LWP::Simple ;
+use HTTP::Status qw(:constants :is status_message);
+use Archive::Zip ;
+use IO::Uncompress::Gunzip qw(gunzip $GunzipError) ;
+
+use vars qw($VERSION @ISA @EXPORT %EXPORT_TAGS);
+
+our $VERSION = "1.0";
+our @ISA = qw(Exporter);
+our @EXPORT = qw( getHttpFileVersion getHttpFile unzipFile );
+our %EXPORT_TAGS = ( ALL => [qw( getHttpFileVersion getHttpFile unzipFile )] );
+
+=head1 NAME
+
+My::Module - An example module
+
+=head1 SYNOPSIS
+
+    use My::Module;
+    my $object = My::Module->new();
+    print $object->as_string;
+
+=head1 DESCRIPTION
+
+This module does not really exist, it
+was made for the sole purpose of
+demonstrating how POD works.
+
+=head1 METHODS
+
+Methods are :
+
+=head2 METHOD new
+
+ ## Description : new
+ ## Input : $self
+ ## Ouput : bless $self ;
+ ## Usage : new() ;
+
+=cut
+
+sub new {
+    ## Variables
+    my $self={};
+    bless($self) ;
+    return $self ;
+}
+### END of SUB
+
+=head2 METHOD getHttpFileVersion
+
+ ## Description : fetch the version of a file from its http header
+ ## Input : $url
+ ## Output : $version
+ ## Usage : $version= getHttpFileVersion($url) ;
+
+=cut
+## START of SUB
+sub getHttpFileVersion {
+ ## Retrieve Values
+    my $self = shift ;
+    my ( $url ) = @_ ;
+    
+    my ( $version ) = undef ;
+    
+    # based on https://stackoverflow.com/questions/36903905/extract-headers-from-http-request-in-perl
+ my $ua = new LWP::UserAgent;
+ my $result = $ua->head($url);
+
+ for my $header_name ($result->header_field_names) {
+
+ if ($header_name eq 'Last-Modified') {
+# print $result->header($header_name)."\n";
+ if ($result->header($header_name) =~/[a-z|A-Z]+,\s(.*)\s[0-9]+:[0-9]+:[0-9]+\s[a-z|A-Z]+$/) {
+ $version = $1 ;
+
+ #version format is DD Month(3letters) YYYY (as "09 Jul 2018")
+ if ($version =~/([0-9]+)\s([a-z|A-Z]+)\s([0-9]+)/) {
+ $version = 'v'.$3.$2.$1 ;
+ }
+ else{
+ warn "the current version format - DD Month(3letters) YYYY - doesn't match with template" ;
+ }
+ }
+ }
+ else {
+     next ;
+ }
+#     print $version ;
+ }
+
+    return($version) ;
+}
+## END of SUB
+
+=head2 METHOD getHttpFile
+
+ ## Description : fetch a file from http
+ ## Input : $url, $filename
+ ## Output : $file
+ ## Usage : $file= getHttpFile($url, $filename) ;
+
+=cut
+## START of SUB
+sub getHttpFile {
+ ## Retrieve Values
+    my $self = shift ;
+    my ( $url, $fileNameToGet ) = @_ ;
+    
+    my ( $fileName ) = undef ;
+    
+    if ( (defined $url ) and (defined $fileNameToGet ) ) {
+     my $ua = LWP::UserAgent->new();
+     my $hstatus =  getstore ($url, $fileNameToGet);
+
+ if($hstatus != HTTP_OK) {
+ print "$hstatus: ", status_message($hstatus), "\n";
+ }
+
+ if (!-e $fileNameToGet) {
+ croak "None file (should be $fileNameToGet) was download from the given url($url)\n" ;
+ }
+    }
+
+    return(1) ;
+}
+## END of SUB
+
+=head2 METHOD unzipFile
+
+ ## Description : unzip a wanted file from a zip archive
+ ## Input : $archive, $filePath, $fileName
+ ## Output : 1
+ ## Usage : unzipFile($archive, $filePath, $fileName) ;
+
+=cut
+sub unzipFile {
+ ## Retrieve Values
+    my $self = shift ;
+    my ($archive, $filePath, $fileName) = @_ ;
+    
+    my $zip = Archive::Zip->new($archive);
+    
+    if ( (defined $fileName) and (defined $filePath) ) {
+    
+     foreach my $file ($zip->members) {
+         next unless ($file->fileName eq $fileName);
+         $file->extractToFileNamed($filePath);
+     }
+       
+     croak "There was a problem extracting $fileName from $archive" unless (-e $filePath);
+    }
+    else {
+     croak "the given filePath or the filename are undef\n" ;
+    }
+    
+    return 1;
+} 
+## END of SUB
+
+=head2 METHOD gunzipFile
+
+ ## Description : unzip a wanted file from a zip archive
+ ## Input : $archive, $filePath, $fileName
+ ## Output : 1
+ ## Usage : gunzipFile($archive, $filePath, $fileName) ;
+
+=cut
+sub gunzipFile {
+ ## Retrieve Values
+    my $self = shift ;
+    my ($archive, $filePath, $fileName) = @_ ;
+    
+    if ( (defined $fileName) and (defined $filePath) ) {
+    
+        gunzip $archive => $filePath
+        or die "gunzip failed: $GunzipError\n";
+    }
+    else {
+     croak "the given filePath or the filename are undef\n" ;
+    }
+    
+    return 1;
+} 
+## END of SUB
+
+
+=head2 METHOD cleanUnzip
+
+ ## Description : clean zip file if the unzip is successfully run
+ ## Input : $archive, $filePath
+ ## Output : 1
+ ## Usage : unzipFile($archive, $want, $dir) ;
+
+=cut
+sub cleanUnzip {
+ ## Retrieve Values
+    my $self = shift ;
+    my ($archive, $filePath ) = @_ ;
+    
+    if ( (defined $archive) and (defined $filePath) ) {
+    
+     croak "There was a problem extracting $filePath from $archive" unless (-e $filePath);
+     unlink $archive ;
+    }
+    else {
+     croak "Given filePath or the archive are undef\n" ;
+    }
+    
+    return 1;
+} 
+## END of SUB
+
+1 ;
+
+
+__END__
+
+=head1 SUPPORT
+
+You can find documentation for this module with the perldoc command.
+
+ perldoc XXX.pm
+
+=head1 Exports
+
+=over 4
+
+=item :ALL is ...
+
+=back
+
+=head1 AUTHOR
+
+Franck Giacomoni E<lt>franck.giacomoni@clermont.inra.frE<gt>
+
+=head1 LICENSE
+
+This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
+
+=head1 VERSION
+
+version 1 : xx / xx / 201x
+
+version 2 : ??
+
+=cut
\ No newline at end of file
b
diff -r 000000000000 -r 7c9269bded0e t/downloader_bank_hmdb.t
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/t/downloader_bank_hmdb.t Tue Jan 14 05:21:23 2020 -0500
[
b'@@ -0,0 +1,227 @@\n+#! perl\r\n+use diagnostics;\r\n+use warnings;\r\n+no warnings qw/void/;\r\n+use strict;\r\n+no strict "refs" ;\r\n+use Test::More qw( no_plan );\r\n+#use Test::More tests => 8 ; ## with MAPPER SEQUENCE\r\n+use FindBin ;\r\n+use Carp ;\r\n+\r\n+## Specific Modules\r\n+use lib $FindBin::Bin.\'/lib\' ;\r\n+my $binPath = $FindBin::Bin ;\r\n+use utilsTest qw( :ALL ) ;\r\n+use hmdb_apiTest qw( :ALL ) ;\r\n+\r\n+\r\n+## If needed to launch parallele test sequences : SEQ01, SEQ02, SEQ03, ...\r\n+my $sequence = \'SEQ02\' ; \r\n+my $current_test = 1 ;\r\n+\r\n+#### #### ##### ###### ################################################ ###### ##### ##### ###### ######\r\n+\r\n+\t\t\t\t\t\t\t\t## START of SEQ01 SEQUENCE ## \r\n+\t\t\t\t\t\t\t\r\n+#### #### ##### ###### ################################################ ###### ##### ##### ###### ######\r\n+\r\n+if ($sequence eq "SEQ01") {\r\n+\t\r\n+\tprint "\\n\\t\\t\\t\\t  * * * * * * \\n" ;\r\n+\tprint "\\t  * * * - - - Test module utils - - - * * * \\n\\n" ;\r\n+\r\n+\t##\t\t- - - - - - - - - - - - - - - - - - NEXT - - - - - - - - - - - - - - - - - - - -\r\n+\t# ARGVTS : $argt1, ...\r\n+\tsleep 1 ; print "\\n** Test $current_test getHttpFileVersion with a valid url **\\n" ; $current_test++ ; \r\n+\tis_deeply( getHttpFileVersionTest ( ## input parameters : here only one argt\r\n+\t\t\t\'http://www.hmdb.ca/system/downloads/current/urine_metabolites.zip\', \r\n+\t\t),\r\n+\t\t\'v2018Jul09\',\r\n+\t\'Method \\\'getHttpFileVersion\\\' works with a valid url and return the attended output\');\r\n+\r\n+\r\n+\t##\t\t- - - - - - - - - - - - - - - - - - - NEXT - - - - - - - - - - - - - - - - - - -\r\n+\t# ARGVTS : $argt1, ...\r\n+\tsleep 1 ; print "\\n** Test $current_test getHttpFile with a valid url and fileName **\\n" ; $current_test++ ; \r\n+\tis_deeply( getHttpFileTest ( ## input parameters : here only one argt\r\n+\t\t\t\'http://www.hmdb.ca/system/downloads/current/csf_metabolites.zip\',\r\n+\t\t\t\'/tmp/CSF_v2018Jul09/CSF_v2018Jul09.zip\'\r\n+\t\t),\r\n+\t\t1,\r\n+\t\'Method \\\'getHttpFile\\\' works with a valid url and a file name and return the attended output (a file)\');\r\n+\t\r\n+\t\r\n+\t##\t\t- - - - - - - - - - - - - - - - - - - NEXT - - - - - - - - - - - - - - - - - - -\r\n+\t# ARGVTS : $argt1, ...\r\n+\tsleep 1 ; print "\\n** Test $current_test unzipFile with a valid url, a dir and fileName **\\n" ; $current_test++ ; \r\n+\tis_deeply( unzipFileTest ( ## input parameters : here only one argt\r\n+\t\t\t\'/tmp/CSF_v2018Jul09/CSF_v2018Jul09.zip\',\r\n+\t\t\t\'/tmp/CSF_v2018Jul09/csf_metabolites.xml\',\r\n+\t\t\t\'csf_metabolites.xml\'\r\n+\t\t\t\r\n+\t\t),\r\n+\t\t1,\r\n+\t\'Method \\\'unzipFile\\\' works with a valid url and a file name and return the attended output (1)\');\r\n+\t\r\n+#### #### ##### ###### ################################################ ###### ##### ##### ###### ######\r\n+\r\n+\t\t\t\t\t\t\t\t## END of SEQ01 SEQUENCE ## \r\n+\t\t\t\t\t\t\t\r\n+#### #### ##### ###### ################################################ ###### ##### ##### ###### ######\r\n+\t\r\n+}\r\n+\r\n+#### #### ##### ###### ################################################ ###### ##### ##### ###### ######\r\n+\r\n+\t\t\t\t\t\t\t\t## START of SEQ02 SEQUENCE ## \r\n+\t\t\t\t\t\t\t\r\n+#### #### ##### ###### ################################################ ###### ##### ##### ###### ######\r\n+elsif ($sequence eq "SEQ02") {\r\n+\tprint "\\n\\t\\t\\t\\t  * * * * * * \\n" ;\r\n+\tprint "\\t  * * * - - - Test SEQ02 Main script - - - * * * \\n\\n" ;\r\n+\t\r\n+\t##\t\t- - - - - - - - - - - - - - - - - - - NEXT - - - - - - - - - - - - - - - - - - -\r\n+\t# ARGVTS : $argt1, ...\r\n+#\tsleep 1 ; print "\\n** Test $current_test getMetaboliteFeatures with a valid xml file **\\n" ; $current_test++ ; \r\n+#\tis_deeply( getMetaboliteFeaturesTest ( ## input parameters : here only one argt\r\n+#\t\t\t\'/Users/fgiacomoni/Inra/labs/perl/downloader-bank-hmdb/banks/CSF_v2018Jul09/csf_metabolites.xml\',\r\n+#\t\t),\r\n+#\t\t450,\r\n+#\t\'Method \\\'getMetaboliteFeatures\\\' works with a valid xml and return the attended output (HASH)\');\r\n+\t\r\n+\t##\t\t- - - - - - - - - - - - - - - - - - - NEXT - - - - - - - - - - - - - - - - - - -\r\n+\t# ARGVTS : $argt1, ...\r\n+\tsleep 1 ; print "\\n** Test $current_test buildMetabolitesArray with a hash of metabolites **\\n" ; $current_test+'..b'    \'INCHI\' => \'InChI=1/C47H93N2O7P/c1-6-8-10-12-14-16-18-20-21-22-23-24-25-27-28-30-32-34-36-38-44(50)42-47(52)48-45(43-56-57(53,54)55-41-40-49(3,4)5)46(51)39-37-35-33-31-29-26-19-17-15-13-11-9-7-2/h20-21,37,39,44-46,50-51H,6-19,22-36,38,40-43H2,1-5H3,(H-,48,52,53,54)/b21-20-,39-37+/t44?,45-,46+/m0/s1\',\r\n+\t            \'FORMULA\' => \'C47H93N2O7P\',\r\n+\t            \'TAXONOMY\' => \'Lipids\',\r\n+\t            \'HMDB_ID\' => \'HMDB13469\',\r\n+\t            \'KEGG_ID\' => \'C00550\',\r\n+\t            \'BIOCYC_ID\' => \'Not Available\',\r\n+\t            \'IUPAC\' => \'Not Available\',\r\n+\t            \'CAS\' => \'Not Available\',\r\n+\t            \'MZ_MONO\' => \'828.672058\'\r\n+\t          \t}\r\n+\t        ]\r\n+\t\t),\r\n+\t\t[\r\n+\t\t\t\t{\r\n+\t            \'MZ_[M-H]-\' => \'827.6647816\',\r\n+\t            \'COMMON_NAME\' => \'SM(d18:0/24:1(15Z)(OH))\',\r\n+\t            \'LOCATION\' => \'Rumen\',\r\n+\t            \'MZ_[M+H]+\' => \'829.6793344\',\r\n+\t            \'MZ_AVERAGE\' => \'829.224\',\r\n+\t            \'INCHI\' => \'InChI=1/C47H93N2O7P/c1-6-8-10-12-14-16-18-20-21-22-23-24-25-27-28-30-32-34-36-38-44(50)42-47(52)48-45(43-56-57(53,54)55-41-40-49(3,4)5)46(51)39-37-35-33-31-29-26-19-17-15-13-11-9-7-2/h20-21,37,39,44-46,50-51H,6-19,22-36,38,40-43H2,1-5H3,(H-,48,52,53,54)/b21-20-,39-37+/t44?,45-,46+/m0/s1\',\r\n+\t            \'FORMULA\' => \'C47H93N2O7P\',\r\n+\t            \'TAXONOMY\' => \'Lipids\',\r\n+\t            \'HMDB_ID\' => \'HMDB13469\',\r\n+\t            \'KEGG_ID\' => \'C00550\',\r\n+\t            \'BIOCYC_ID\' => \'Not Available\',\r\n+\t            \'IUPAC\' => \'Not Available\',\r\n+\t            \'CAS\' => \'Not Available\',\r\n+\t            \'MZ_MONO\' => \'828.672058\'\r\n+\t          }\r\n+\t     ],\r\n+\t\'Method \\\'setMetaboliteAcurrateMzToModesMz\\\' works with XML FORMAT AND a valid metabolites list and return the attended output (Array)\');\r\n+\t\r\n+\t##\t\t- - - - - - - - - - - - - - - - - - - NEXT - - - - - - - - - - - - - - - - - - -\r\n+\t# ARGVTS : $argt1, ...\r\n+\tsleep 1 ; print "\\n** Test $current_test setMetaboliteAcurrateMzToModesMz with a hash of metabolites **\\n" ; $current_test++ ; \r\n+\tis_deeply( setMetaboliteAcurrateMzToModesMzTest ( ## input parameters : here only one argt\r\n+\t\t\t\'XML\',\r\n+\t\t\t{\t\'HMDB0001565\' => {\t\t\'metabolite_name\' => \'Phosphorylcholine\',\r\n+\t\t\t\t\t                    \'monisotopic_molecular_weight\' => \'184.073869485\',\r\n+\t                \t\t\t        \'chemical_formula\' => \'C5H15NO4P\',\r\n+\t                           \t\t\t\'inchikey\' => \'YHHSONZFOIEMCP-UHFFFAOYSA-O\' },\r\n+\t             \'HMDB0006088\' => {\t\'monisotopic_molecular_weight\' => \'180.063388116\',\r\n+                           \t\t\t\'inchikey\' => \'CDAISMWEOUEBRE-CDRYSYESSA-N\',\r\n+                           \t\t\t\'chemical_formula\' => \'C6H12O6\',\r\n+                           \t\t\t\'metabolite_name\' => \'scyllo-Inositol\' }\r\n+\t\t\t}\r\n+\t\t),\r\n+\t\t{\t\'HMDB0001565\' => {\t\'metabolite_name\' => \'Phosphorylcholine\',\r\n+\t\t\t\t\t            \'monisotopic_molecular_weight\' => \'184.073869485\',\r\n+\t\t\t\t\t            \'[M+H]+\' => \'185.081145885\',\r\n+\t\t\t\t\t            \'[M-H]-\' => \'183.066593085\',\r\n+\t                \t\t\t\'chemical_formula\' => \'C5H15NO4P\',\r\n+\t                           \t\'inchikey\' => \'YHHSONZFOIEMCP-UHFFFAOYSA-O\' },\r\n+\t         \'HMDB0006088\' => {\t\'monisotopic_molecular_weight\' => \'180.063388116\',\r\n+\t         \t\t\t\t\t\'[M+H]+\' => \'181.070664516\',\r\n+\t\t\t\t\t            \'[M-H]-\' => \'179.056111716\',\r\n+                           \t\t\'inchikey\' => \'CDAISMWEOUEBRE-CDRYSYESSA-N\',\r\n+                           \t\t\'chemical_formula\' => \'C6H12O6\',\r\n+                           \t\t\'metabolite_name\' => \'scyllo-Inositol\' }\r\n+\t\t},\r\n+\t\'Method \\\'setMetaboliteAcurrateMzToModesMz\\\' works with XML FORMAT AND a valid metabolites list and return the attended output (Array)\');\r\n+\t    \r\n+} ## END ELSIF SEQ02\r\n+\t\t\r\n+#### #### ##### ###### ################################################ ###### ##### ##### ###### ######\r\n+\r\n+\t\t\t\t\t\t\t\t## END of SEQ02 SEQUENCE ## \r\n+\t\t\t\t\t\t\t\r\n+#### #### ##### ###### ################################################ ###### ##### ##### ###### ######\r\n+\r\n+\r\n+else {\r\n+\tcroak "Can\\\'t launch any test : no sequence clearly defined !!!!\\n" ;\r\n+}\r\n+\r\n'
b
diff -r 000000000000 -r 7c9269bded0e t/lib/hmdb_apiTest.pm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/t/lib/hmdb_apiTest.pm Tue Jan 14 05:21:23 2020 -0500
[
@@ -0,0 +1,51 @@
+package hmdb_apiTest ;
+
+use diagnostics; # this gives you more debugging information
+use warnings;    # this warns you of bad practices
+use strict;      # this prevents silly errors
+use Exporter ;
+use Carp ;
+
+use Data::Dumper ;
+
+our $VERSION = "1.0";
+our @ISA = qw(Exporter);
+our @EXPORT = qw( getMetaboliteFeaturesTest buildMetabolitesArrayTest setMetaboliteAcurrateMzToModesMzTest);
+our %EXPORT_TAGS = ( ALL => [qw( getMetaboliteFeaturesTest buildMetabolitesArrayTest setMetaboliteAcurrateMzToModesMzTest)] );
+
+use lib '/Users/fgiacomoni/Inra/labs/perl/downloader-bank-hmdb/lib' ;
+use hmdb_api qw( :ALL ) ;
+
+
+sub getMetaboliteFeaturesTest {
+ my ($xml) = @_ ;
+    my $oObject = hmdb_api->new() ;
+    my ($res, $nb) = $oObject->getMetaboliteFeatures($xml) ;
+    
+#    print $res ;
+    return ($nb) ;
+}
+
+
+sub buildMetabolitesArrayTest {
+ my ($met, $header) = @_ ;
+    my $oObject = hmdb_api->new() ;
+    my ($res) = $oObject->buildMetabolitesArray($met, $header) ;
+#    print Dumper $res ;
+    return ($res) ;
+}
+
+## SUB TEST for 
+sub setMetaboliteAcurrateMzToModesMzTest {
+    # get values
+    my ( $format, $met ) = @_;
+    
+    my $var2 = hmdb_api->new() ;
+    my $var3 = $var2->setMetaboliteAcurrateMzToModesMz($format, $met, 1.007825, 0.0005486, 1) ;
+    
+    return($var3) ;
+}
+## End SUB
+
+
+1 ;
\ No newline at end of file
b
diff -r 000000000000 -r 7c9269bded0e t/lib/utilsTest.pm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/t/lib/utilsTest.pm Tue Jan 14 05:21:23 2020 -0500
[
@@ -0,0 +1,45 @@
+package utilsTest ;
+
+use diagnostics; # this gives you more debugging information
+use warnings;    # this warns you of bad practices
+use strict;      # this prevents silly errors
+use Exporter ;
+use Carp ;
+
+use Data::Dumper ;
+
+our $VERSION = "1.0";
+our @ISA = qw(Exporter);
+our @EXPORT = qw( getHttpFileVersionTest getHttpFileTest unzipFileTest);
+our %EXPORT_TAGS = ( ALL => [qw( getHttpFileVersionTest getHttpFileTest unzipFileTest)] );
+
+use lib '/Users/fgiacomoni/Inra/labs/perl/downloader-bank-hmdb/lib' ;
+use utils qw( :ALL ) ;
+
+
+sub getHttpFileVersionTest {
+ my ($url) = @_ ;
+    my $oObject = utils->new() ;
+    my ($version) = $oObject->getHttpFileVersion($url) ;
+#    print Dumper $version ;
+    return ($version) ;
+}
+
+sub getHttpFileTest {
+ my ($url, $filename) = @_ ;
+    my $oObject = utils->new() ;
+    my ($file) = $oObject->getHttpFile($url, $filename) ;
+#    print Dumper $version ;
+    return ($file) ;
+}
+
+sub unzipFileTest {
+ my ($archive, $filePath, $fileName) = @_ ;
+    my $oObject = utils->new() ;
+    $oObject->unzipFile($archive, $filePath, $fileName) ;
+#    print Dumper $version ;
+    return (1) ;
+}
+
+
+1 ;
\ No newline at end of file
b
diff -r 000000000000 -r 7c9269bded0e test-data/out01.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/out01.tabular Tue Jan 14 05:21:23 2020 -0500
[
b'@@ -0,0 +1,451 @@\n+HMDB_ID\tMzBank\t[M+H]+\t[M-H]-\tMetName\tChemFormula\tINChIkey\n+HMDB0000001\t169.085126611\t170.092403011\t168.077850211\t1-Methylhistidine\tC7H11N3O2\tBRMWTNUJHUMWMS-LURJTMIESA-N\n+HMDB0000005\t102.031694058\t103.038970458\t101.024417658\t"2-Ketobutyric acid"\tC4H6O3\tTYEYBOSBBBHJIV-UHFFFAOYSA-N\n+HMDB0000008\t104.047344122\t105.054620522\t103.040067722\t"2-Hydroxybutyric acid"\tC4H8O3\tAFENDNXGAFYKQO-UHFFFAOYSA-N\n+HMDB0000011\t104.047344122\t105.054620522\t103.040067722\t"(R)-3-Hydroxybutyric acid"\tC4H8O3\tWHBMMWSBFZVSSR-GSVOUGTGSA-N\n+HMDB0000012\t228.074621504\t229.081897904\t227.067345104\tDeoxyuridine\tC9H12N2O5\tMXHRCPNRJAMMIM-SHYZEUOFSA-N\n+HMDB0000017\t183.053157781\t184.060434181\t182.045881381\t"4-Pyridoxic acid"\tC8H9NO4\tHXACOUQIXZGNBF-UHFFFAOYSA-N\n+HMDB0000019\t116.047344122\t117.054620522\t115.040067722\t"alpha-Ketoisovaleric acid"\tC5H8O3\tQHKABHOOEWYVLI-UHFFFAOYSA-N\n+HMDB0000020\t152.047344122\t153.054620522\t151.040067722\t"p-Hydroxyphenylacetic acid"\tC8H8O3\tXQXPVVBIMDBYFF-UHFFFAOYSA-N\n+HMDB0000022\t167.094628665\t168.101905065\t166.087352265\t3-Methoxytyramine\tC9H13NO2\tDIVQKHQLANKJQO-UHFFFAOYSA-N\n+HMDB0000023\t104.047344122\t105.054620522\t103.040067722\t"(S)-3-Hydroxyisobutyric acid"\tC4H8O3\tDBXBTMSZEOQQDU-VKHMYHEASA-N\n+HMDB0000026\t132.053492132\t133.060768532\t131.046215732\t"Ureidopropionic acid"\tC4H8N2O3\tJSJWCHRYRHKBBW-UHFFFAOYSA-N\n+HMDB0000027\t241.117489371\t242.124765771\t240.110212971\tTetrahydrobiopterin\tC9H15N5O3\tFNKQXYHWGSIFBK-UHFFFAOYSA-N\n+HMDB0000030\t244.088163078\t245.095439478\t243.080886678\tBiotin\tC10H16N2O3S\tYBJHBAHKTGYVGT-ZKWXMUAHSA-N\n+HMDB0000031\t290.224580204\t291.231856604\t289.217303804\tAndrosterone\tC19H30O2\tQGXBDMJGAMFCBF-HLUDHZFRSA-N\n+HMDB0000032\t384.33921603\t385.34649243\t383.33193963\t7-Dehydrocholesterol\tC27H44O\tUCTLRSWJYQTBFZ-DDPQNLDTSA-N\n+HMDB0000034\t135.054495185\t136.061771585\t134.047218785\tAdenine\tC5H5N5\tGFFGJBXGBJISGV-UHFFFAOYSA-N\n+HMDB0000038\t239.101839307\t240.109115707\t238.094562907\tDihydrobiopterin\tC9H13N5O3\tFEMXZDUTFRTWPE-UHFFFAOYSA-N\n+HMDB0000039\t88.0524295\t89.0597059\t87.0451531\t"Butyric acid"\tC4H8O2\tFERIUCNNQQJTOY-UHFFFAOYSA-N\n+HMDB0000042\t60.021129372\t61.028405772\t59.013852972\t"Acetic acid"\tC2H4O2\tQTBSBXVTEAMEQO-UHFFFAOYSA-N\n+HMDB0000044\t176.032087988\t177.039364388\t175.024811588\t"Ascorbic acid"\tC6H8O6\tCIWBSHSKHKDKBQ-JLAZNSOCSA-N\n+HMDB0000045\t347.063084339\t348.070360739\t346.055807939\t"Adenosine monophosphate"\tC10H14N5O7P\tUDMBCSSLTHHNCD-KQYNXXCUSA-N\n+HMDB0000050\t267.096753929\t268.104030329\t266.089477529\tAdenosine\tC10H13N5O4\tOIRDTQYFTABQOQ-KQYNXXCUSA-N\n+HMDB0000051\t17.026549101\t18.033825501\t16.019272701\tAmmonia\tH3N\tQGZKDVFQNNGYKY-UHFFFAOYSA-N\n+HMDB0000053\t286.193280076\t287.200556476\t285.186003676\tAndrostenedione\tC19H26O2\tAEMFNILZOJDQLW-QAGGRKNESA-N\n+HMDB0000054\t584.263484904\t585.270761304\t583.256208504\tBilirubin\tC33H36N4O6\tBPYKTIZUTYGOLE-IFADSCNNSA-N\n+HMDB0000056\t89.047678473\t90.054954873\t88.040402073\tbeta-Alanine\tC3H7NO2\tUCMIRNVEIXFBKS-UHFFFAOYSA-N\n+HMDB0000058\t329.052519653\t330.059796053\t328.045243253\t"Cyclic AMP"\tC10H12N5O6P\tIVOMOUWHDPKRLL-KQYNXXCUSA-N\n+HMDB0000060\t102.031694058\t103.038970458\t101.024417658\t"Acetoacetic acid"\tC4H6O3\tWDJHALXBUFZDSR-UHFFFAOYSA-N\n+HMDB0000062\t161.105193351\t162.112469751\t160.097916951\tL-Carnitine\tC7H15NO3\tPHIQHXFUZVPYII-ZCFIWIBFSA-N\n+HMDB0000063\t362.20932407\t363.21660047\t361.20204767\tCortisol\tC21H30O5\tJYGXADMDTFJGBT-VWUMJDOOSA-N\n+HMDB0000064\t131.069476547\t132.076752947\t130.062200147\tCreatine\tC4H9N3O2\tCVSVTCORWBXHQV-UHFFFAOYSA-N\n+HMDB0000067\t386.354866094\t387.362142494\t385.347589694\tCholesterol\tC27H46O\tHVYWMOMLDIMFJA-DPAQBDIFSA-N\n+HMDB0000068\t183.089543287\t184.096819687\t182.082266887\tEpinephrine\tC9H13NO3\tUCTWMZQNUQWSLP-VIFPVBQESA-N\n+HMDB0000070\t129.078978601\t130.086255001\t128.071702201\t"Pipecolic acid"\tC6H11NO2\tHXEACLLIILLPRG-UHFFFAOYSA-N\n+HMDB0000072\t174.016437924\t175.023714324\t173.009161524\t"cis-Aconitic acid"\tC6H6O6\tGTZCVFVGUGFEME-IWQZZHSRSA-N\n+HMDB0000073\t153.078978601\t154.086255001\t152.071702201\tDopamine\tC8H11NO2\tVYFYYTLLBUKUHU-UHFFFAOYSA-N\n+HMDB0000076\t114.042927446\t115.050203846\t113.0356510'..b'24242129\t319.22786849\t9-HETE\tC20H32O3\tKATOYYZUTNAWSA-DLJQHUEDSA-N\n+HMDB0010223\t296.23514489\t297.24242129\t295.22786849\t9-HODE\tC18H32O3\tNPDSHTNEKLQQIJ-SIGMCMEVSA-N\n+HMDB0010384\t523.363789599\t524.371065999\t522.356513199\tLysoPC(18:0)\tC26H54NO7P\tIHNKQIMGVNPMTC-RUZDIDTESA-N\n+HMDB0010395\t543.332489471\t544.339765871\t542.325213071\tLysoPC(20:4(5Z,8Z,11Z,14Z))\tC28H50NO7P\tLAXQYRRMGGEGOH-JXRLJXCWSA-N\n+HMDB0010396\t543.332489471\t544.339765871\t542.325213071\tLysoPC(20:4(8Z,11Z,14Z,17Z))\tC28H50NO7P\tGOMVPVRDBLLHQC-VEJNOCSESA-N\n+HMDB0010409\t320.23514489\t321.24242129\t319.22786849\t11,12-EpETrE\tC20H32O3\tDXOYQVHGIODESM-IQCOFVSKSA-N\n+HMDB0011134\t320.23514489\t321.24242129\t319.22786849\t5-HETE\tC20H32O3\tKGIJOOYOSFUGPC-JGKLHWIESA-N\n+HMDB0011620\t125.929815379\t126.937091779\t124.922538979\tArsenite\tAsH3O3\tGCPXMJHSNVMWNM-UHFFFAOYSA-N\n+HMDB0011697\t815.700600326\t816.707876726\t814.693323926\tSM(d18:1/24:0)\tC47H96N2O6P\tQEDPUVGSSDPBMD-XTAIVQBESA-O\n+HMDB0011698\t843.731900454\t844.739176854\t842.724624054\tSM(d18:1/26:0)\tC49H100N2O6P\tVRAWSAPVSSLIRI-MVUJCARGSA-O\n+HMDB0011738\t275.111735291\t276.119011691\t274.104458891\tN2-gamma-Glutamylglutamine\tC10H17N3O6\tJBFYFLXEJFQWMU-WDSKDSINSA-N\n+HMDB0012100\t728.583224846\t729.590501246\t727.575948446\tSM(d18:1/18:1(11Z))\tC41H81N2O6P\tFZMKZVXNTLAHFD-RTEXEOPXSA-N\n+HMDB0012101\t728.583224846\t729.590501246\t727.575948446\tSM(d18:1/18:1(9Z))\tC41H81N2O6P\tNBEADXWAAWCCDG-QDDWGVBQSA-N\n+HMDB0012107\t812.67712523\t813.68440163\t811.66984883\tSM(d18:1/24:1(15Z))\tC47H93N2O6P\tWKZHECFHXLTOLJ-QYKFWSDSSA-N\n+HMDB0012895\t1027.400405861\t1028.407682261\t1026.393129461\t"Arginine vasopressin 1-8"\tC44H61N13O12S2\tSXYIOPJBWYQZRQ-VMPYSSHJSA-N\n+HMDB0012935\t1474.912295913\t1475.919572313\t1473.905019513\t"Dynorphin A"\tC69H116N23O13\tZIHYAUCIMOSJIH-QGLXRRFISA-O\n+HMDB0013072\t1650.73230468\t1651.73958108\t1649.72502828\tSomatostatin\tC77H106N18O19S2\tKTEPWBJBSMMZIC-LJTSQLRWSA-N\n+HMDB0013122\t507.368874977\t508.376151377\t506.361598577\tLysoPC(P-18:0)\tC26H54NO6P\tWBOMIOWRFSPZMC-AYICAFKVSA-N\n+HMDB0013125\t233.126322723\t234.133599123\t232.119046323\tHydroxypropionylcarnitine\tC10H19NO5\tQJGJXKFJFRSERW-QMMMGPOBSA-N\n+HMDB0013128\t246.169984677\t247.177261077\t245.162708277\tValerylcarnitine\tC12H24NO4\tVSNFQQXVMPSASB-SNVBAGLBSA-O\n+HMDB0013461\t840.708425358\t841.715701758\t839.701148958\tSM(d18:1/26:1(17Z))\tC49H97N2O6P\tYXEXWUZHFGYOHJ-UOJCCMJYSA-N\n+HMDB0013462\t688.515539212\t689.522815612\t687.508262812\tSM(d18:0/14:1(9Z)(OH))\tC37H73N2O7P\tZNHNJXWKKQKMBU-POWUNZFVSA-N\n+HMDB0013463\t716.54683934\t717.55411574\t715.53956294\tSM(d18:0/16:1(9Z)(OH))\tC39H77N2O7P\tLPHMSPONPQCKTL-FKUNDBCPSA-N\n+HMDB0013464\t702.567574782\t703.574851182\t701.560298382\tSM(d18:0/16:1(9Z))\tC39H79N2O6P\tCGVOQSQIYSUXAT-PPLFXBRHSA-N\n+HMDB0013465\t754.59887491\t755.60615131\t753.59159851\tSM(d18:0/20:2(11Z,14Z))\tC43H83N2O6P\tYVTVVJRJLRHYSJ-XJRFMCMQSA-N\n+HMDB0013466\t800.640739724\t801.648016124\t799.633463324\tSM(d18:0/22:1(13Z)(OH))\tC45H89N2O7P\tZUSFLIGNJFDBRL-FYGIKZFGSA-N\n+HMDB0013467\t798.62508966\t799.63236606\t797.61781326\tSM(d18:0/22:2(13Z,16Z)(OH))\tC45H87N2O7P\tDRKCMBAZIYFIGX-ZWLRGCNFSA-N\n+HMDB0013469\t828.672039852\t829.679316252\t827.664763452\tSM(d18:0/24:1(15Z)(OH))\tC47H93N2O7P\tIOOMOQUTKQGEFH-BSZNTFKYSA-N\n+HMDB0013667\t88.905847902\t89.913124302\t87.898571502\tYttrium\tY\tVWQVUPCCIRVNHF-UHFFFAOYSA-N\n+HMDB0013668\t101.904349503\t102.911625903\t100.897073103\tRuthenium\tRu\tKJTLSVCANCCWHF-UHFFFAOYSA-N\n+HMDB0013669\t132.90544687\t133.91272327\t131.89817047\tCesium\tCs\tTVFDJXOCXUVLDH-UHFFFAOYSA-N\n+HMDB0013670\t105.903483087\t106.910759487\t104.896206687\tPalladium\tPd\tKDLHZDBZIXYQEI-UHFFFAOYSA-N\n+HMDB0013671\t194.964774449\t195.972050849\t193.957498049\tPlatinum\tPt\tBASFCYQUMIYNBI-UHFFFAOYSA-N\n+HMDB0013672\t139.905434035\t140.912710435\t138.898157635\tCerium\tCe\tGWXLDORMOJMVQZ-UHFFFAOYSA-N\n+HMDB0015532\t63.929146578\t64.936422978\t62.921870178\tZinc\tZn\tHCHKCACWOHOZIP-UHFFFAOYSA-N\n+HMDB0029147\t275.111735279\t276.119011679\t274.104458879\tN-gamma-Glutamylglutamine\tC10H17N3O6\tFCWNOQOVMGNKNG-WDSKDSINSA-N\n+HMDB0059655\t148.037173366\t149.044449766\t147.029896966\t2-Hydroxyglutarate\tC5H8O5\tHWXBTNAVRSUOJR-UHFFFAOYSA-N\n'
b
diff -r 000000000000 -r 7c9269bded0e test-data/out02.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/out02.tabular Tue Jan 14 05:21:23 2020 -0500
[
b'@@ -0,0 +1,138 @@\n+HMDB_ID\tCOMMON_NAME\tCAS\tFORMULA\tMZ_MONO\tMZ_AVERAGE\tMZ_[M+H]+\tMZ_[M-H]-\tKEGG_ID\tBIOCYC_ID\tINCHI\tLOCATION\tTAXONOMY\tIUPAC\n+HMDB00020\t"p-Hydroxyphenylacetic acid"\t156-38-7\tC8H8O3\t152.047348\t152.147\t153.0546244\t151.0400716\tC00642\t4-HYDROXYPHENYLACETATE\tInChI=1/C8H8O3/c9-7-3-1-6(2-4-7)5-8(10)11/h1-4,9H,5H2,(H,10,11)\tRumen\t"Organic acids"\t"2-(4-hydroxyphenyl)acetic acid"\n+HMDB00033\tCarnosine\t305-84-0\tC9H14N4O3\t226.106583\t226.232\t227.1138594\t225.0993066\tC00386\tCARNOSINE\tInChI=1/C9H14N4O3/c10-2-1-8(14)13-7(9(15)16)3-6-4-11-5-12-6/h4-5,7H,1-3,10H2,(H,11,12)(H,13,14)(H,15,16)/t7-/m0/s1\tRumen\t"Amino acids and Amino Acid conjugates"\t"(2S)-2-(3-aminopropanoylamino)-3-(3H-imidazol-4-yl)propanoic acid"\n+HMDB00039\t"Butyric acid"\t107-92-6\tC4H8O2\t88.052429\t88.105\t89.0597054\t87.0451526\tC00246\t"Not Available"\tInChI=1/C4H8O2/c1-2-3-4(5)6/h2-3H2,1H3,(H,5,6)\tRumen\t"Organic acids"\t"Butanoic acid"\n+HMDB00042\t"Acetic acid"\t64-19-7\tC2H4O2\t60.021130\t60.052\t61.0284064\t59.0138536\tC00033\tACET\tInChI=1/C2H4O2/c1-2(3)4/h1H3,(H,3,4)\tRumen\t"Organic acids"\t"acetic acid"\n+HMDB00060\t"Acetoacetic acid"\t541-50-4\tC4H6O3\t102.031693\t102.089\t103.0389694\t101.0244166\tC00164\t3-KETOBUTYRATE\tInChI=1/C4H6O3/c1-3(5)2-4(6)7/h2H2,1H3,(H,6,7)\tRumen\t"Organic acids"\t"3-oxobutanoic acid"\n+HMDB00097\tCholine\t62-49-7\tC5H14NO\t104.107536\t104.171\t105.1148124\t103.1002596\tC00114\tCPD-563\tInChI=1/C5H14NO/c1-6(2,3)4-5-7/h7H,4-5H2,1-3H3/q+1\tRumen\t"Amino acids and Amino Acid conjugates"\t2-hydroxyethyl-trimethyl-ammonium\n+HMDB00108\tEthanol\t64-17-5\tC2H6O\t46.041866\t46.068\t47.0491424\t45.0345896\tC00469\tETOH\tInChI=1/C2H6O/c1-2-3/h3H,2H2,1H3\tRumen\tAlcohols\tethanol\n+HMDB00122\tD-Glucose\t50-99-7\tC6H12O6\t180.063385\t180.156\t181.0706614\t179.0561086\tC00031\tGLC\tInChI=1/C6H12O6/c7-1-2-3(8)4(9)5(10)6(11)12-2/h2-11H,1H2/t2-,3-,4+,5-,6u/m1/s1\tRumen\t"Carbohydrates and Carbohydrate conjugates"\t(3R,4R,5S,6S)-6-(hydroxymethyl)oxane-2,3,4,5-tetrol\n+HMDB00123\tGlycine\t56-40-6\tC2H5NO2\t75.032028\t75.067\t76.0393044\t74.0247516\tC00037\tGLY\tInChI=1/C2H5NO2/c3-1-2(4)5/h1,3H2,(H,4,5)\tRumen\t"Amino acids and Amino Acid conjugates"\t"2-aminoacetic acid"\n+HMDB00131\tGlycerol\t56-81-5\tC3H8O3\t92.047340\t92.094\t93.0546164\t91.0400636\tC00116\tGLYCEROL\tInChI=1/C3H8O3/c4-1-3(6)2-5/h3-6H,1-2H2\tRumen\tAlcohols\t1,2,3-Propanetriol\n+HMDB00134\t"Fumaric acid"\t110-17-8\tC4H4O4\t116.010956\t116.072\t117.0182324\t115.0036796\tC00122\tFUM\tInChI=1/C4H4O4/c5-3(6)1-2-4(7)8/h1-2H,(H,5,6)(H,7,8)/b2-1+\tRumen\t"Organic acids"\t"(E)-2-Butenedioic acid"\n+HMDB00142\t"Formic acid"\t64-18-6\tCH2O2\t46.005478\t46.025\t47.0127544\t44.9982016\tC00058\tFORMATE\tInChI=1/CH2O2/c2-1-3/h1H,(H,2,3)\tRumen\t"Organic acids"\t"Formic acid"\n+HMDB00143\tD-Galactose\t59-23-4\tC6H12O6\t180.063385\t180.156\t181.0706614\t179.0561086\tC00124\tGALACTOSE\tInChI=1/C6H12O6/c7-1-2-3(8)4(9)5(10)6(11)12-2/h2-11H,1H2/t2-,3+,4+,5-,6+/m1/s1\tRumen\t"Carbohydrates and Carbohydrate conjugates"\talpha-D-galactopyranose\n+HMDB00149\tEthanolamine\t141-43-5\tC2H7NO\t61.052765\t61.083\t62.0600414\t60.0454886\tC00189\tETHANOL-AMINE\tInChI=1/C2H7NO/c3-1-2-4/h4H,1-3H2\tRumen\tAlcohols\t2-aminoethanol\n+HMDB00157\tHypoxanthine\t68-94-0\tC5H4N4O\t136.038513\t136.111\t137.0457894\t135.0312366\tC00262\tHYPOXANTHINE\tInChI=1/C5H4N4O/c10-5-3-4(7-1-6-3)8-2-9-5/h1-2H,(H2,6,7,8,9,10)\tRumen\t"Nucleosides and Nucleoside conjugates"\t3,7-dihydropurin-6-one\n+HMDB00158\tL-Tyrosine\t60-18-4\tC9H11NO3\t181.073898\t181.189\t182.0811744\t180.0666216\tC00082\tTYR\tInChI=1/C9H11NO3/c10-8(9(12)13)5-6-1-3-7(11)4-2-6/h1-4,8,11H,5,10H2,(H,12,13)/t8-/m0/s1\tRumen\t"Amino acids and Amino Acid conjugates"\t"2-amino-3-(4-hydroxyphenyl)-propanoic acid"\n+HMDB00159\tL-Phenylalanine\t63-91-2\tC9H11NO2\t165.078979\t165.189\t166.0862554\t164.0717026\tC00079\tPHE\tInChI=1/C9H11NO2/c10-8(9(11)12)6-7-4-2-1-3-5-7/h1-5,8H,6,10H2,(H,11,12)/t8-/m0/s1\tRumen\t"Amino acids and Amino Acid conjugates"\t"2-amino-3-phenyl-propanoic acid"\n+HMDB00161\tL-Alanine\t56-41-7\tC3H7NO2\t89.047676\t89.093\t90.0549524\t88.0403996\tC00041\tL-ALPHA-ALANINE\tInChI=1/C3H7NO2/c1-2(4)3(5)6/h2H,4H2,1H3,(H,5,6)/t2-/m0/s1\tRumen\t"Amino acids and Amino A'..b'able"\tInChI=1/C14H25NO6/c1-15(2,3)11(9-10-13(18)19)21-14(20)8-6-4-5-7-12(16)17/h11H,4-10H2,1-3H3,(H-,16,17,18,19)/t11-/m0/s1\tRumen\t"Not Available"\t"Not Available"\n+HMDB13334\t9,12-Hexadecadienoylcarnitine\t"Not Available"\tC23H41NO4\t395.303558\t395.576\t396.3108344\t394.2962816\t"Not Available"\t"Not Available"\tInChI=1/C23H41NO4/c1-5-6-7-8-9-10-11-12-13-14-15-16-17-18-23(27)28-21(24(2,3)4)19-20-22(25)26/h7-8,10-11,21H,5-6,9,12-20H2,1-4H3/b8-7-,11-10-/t21-/m0/s1\tRumen\t"Not Available"\t"Not Available"\n+HMDB13462\tSM(d18:0/14:1(9Z)(OH))\t"Not Available"\tC37H73N2O7P\t688.515564\t688.958\t689.5228404\t687.5082876\tC00550\t"Not Available"\tInChI=1/C37H73N2O7P/c1-6-8-10-12-14-16-17-18-19-21-23-25-27-29-36(41)35(33-46-47(43,44)45-31-30-39(3,4)5)38-37(42)32-34(40)28-26-24-22-20-15-13-11-9-7-2/h13,15,27,29,34-36,40-41H,6-12,14,16-26,28,30-33H2,1-5H3,(H-,38,42,43,44)/b15-13-,29-27+/t34?,35-,36+/m0/s1\tRumen\tLipids\t"Not Available"\n+HMDB13463\tSM(d18:0/16:1(9Z)(OH))\t"Not Available"\tC39H77N2O7P\t716.546814\t717.012\t717.5540904\t715.5395376\tC00550\t"Not Available"\tInChI=1/C39H77N2O7P/c1-6-8-10-12-14-16-18-19-21-23-25-27-29-31-38(43)37(35-48-49(45,46)47-33-32-41(3,4)5)40-39(44)34-36(42)30-28-26-24-22-20-17-15-13-11-9-7-2/h17,20,29,31,36-38,42-43H,6-16,18-19,21-28,30,32-35H2,1-5H3,(H-,40,44,45,46)/b20-17-,31-29+/t36?,37-,38+/m0/s1\tRumen\tLipids\t"Not Available"\n+HMDB13464\tSM(d18:0/16:1(9Z))\t"Not Available"\tC39H79N2O6P\t702.567566\t703.028\t703.5748424\t701.5602896\tC00550\t"Not Available"\tInChI=1/C39H79N2O6P/c1-6-8-10-12-14-16-18-20-22-24-26-28-30-32-38(42)37(36-47-48(44,45)46-35-34-41(3,4)5)40-39(43)33-31-29-27-25-23-21-19-17-15-13-11-9-7-2/h17,19,37-38,42H,6-16,18,20-36H2,1-5H3,(H-,40,43,44,45)/b19-17-/t37-,38+/m0/s1\tRumen\tLipids\t"Not Available"\n+HMDB13465\tSM(d18:0/20:2(11Z,14Z))\t"Not Available"\tC43H83N2O6P\t754.598877\t755.103\t755.6061534\t753.5916006\tC00550\t"Not Available"\tInChI=1/C43H83N2O6P/c1-6-8-10-12-14-16-18-20-21-22-23-25-27-29-31-33-35-37-43(47)44-41(40-51-52(48,49)50-39-38-45(3,4)5)42(46)36-34-32-30-28-26-24-19-17-15-13-11-9-7-2/h14,16,20-21,34,36,41-42,46H,6-13,15,17-19,22-33,35,37-40H2,1-5H3,(H-,44,47,48,49)/b16-14-,21-20-,36-34+/t41-,42+/m0/s1\tRumen\tLipids\t"Not Available"\n+HMDB13466\tSM(d18:0/22:1(13Z)(OH))\t"Not Available"\tC45H89N2O7P\t800.640747\t801.171\t801.6480234\t799.6334706\tC00550\t"Not Available"\tInChI=1/C45H89N2O7P/c1-6-8-10-12-14-16-18-20-21-22-23-25-26-28-30-32-34-36-42(48)40-45(50)46-43(41-54-55(51,52)53-39-38-47(3,4)5)44(49)37-35-33-31-29-27-24-19-17-15-13-11-9-7-2/h20-21,35,37,42-44,48-49H,6-19,22-34,36,38-41H2,1-5H3,(H-,46,50,51,52)/b21-20-,37-35+/t42?,43-,44+/m0/s1\tRumen\tLipids\t"Not Available"\n+HMDB13467\tSM(d18:0/22:2(13Z,16Z)(OH))\t"Not Available"\tC45H87N2O7P\t798.625061\t799.155\t799.6323374\t797.6177846\tC00550\t"Not Available"\tInChI=1/C45H87N2O7P/c1-6-8-10-12-14-16-18-20-21-22-23-25-26-28-30-32-34-36-42(48)40-45(50)46-43(41-54-55(51,52)53-39-38-47(3,4)5)44(49)37-35-33-31-29-27-24-19-17-15-13-11-9-7-2/h14,16,20-21,35,37,42-44,48-49H,6-13,15,17-19,22-34,36,38-41H2,1-5H3,(H-,46,50,51,52)/b16-14-,21-20-,37-35+/t42?,43-,44+/m0/s1\tRumen\tLipids\t"Not Available"\n+HMDB13468\tSM(d18:0/22:3(10Z,13Z,16Z))\t"Not Available"\tC45H85N2O6P\t780.614502\t781.140\t781.6217784\t779.6072256\tC00550\t"Not Available"\tInChI=1/C45H85N2O6P/c1-6-8-10-12-14-16-18-20-21-22-23-24-25-27-29-31-33-35-37-39-45(49)46-43(42-53-54(50,51)52-41-40-47(3,4)5)44(48)38-36-34-32-30-28-26-19-17-15-13-11-9-7-2/h14,16,20-21,23-24,36,38,43-44,48H,6-13,15,17-19,22,25-35,37,39-42H2,1-5H3,(H-,46,49,50,51)/b16-14-,21-20-,24-23-,38-36+/t43-,44+/m0/s1\tRumen\tLipids\t"Not Available"\n+HMDB13469\tSM(d18:0/24:1(15Z)(OH))\t"Not Available"\tC47H93N2O7P\t828.672058\t829.224\t829.6793344\t827.6647816\tC00550\t"Not Available"\tInChI=1/C47H93N2O7P/c1-6-8-10-12-14-16-18-20-21-22-23-24-25-27-28-30-32-34-36-38-44(50)42-47(52)48-45(43-56-57(53,54)55-41-40-49(3,4)5)46(51)39-37-35-33-31-29-26-19-17-15-13-11-9-7-2/h20-21,37,39,44-46,50-51H,6-19,22-36,38,40-43H2,1-5H3,(H-,48,52,53,54)/b21-20-,39-37+/t44?,45-,46+/m0/s1\tRumen\tLipids\t"Not Available"\n'
b
diff -r 000000000000 -r 7c9269bded0e test-data/out03.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/out03.tabular Tue Jan 14 05:21:23 2020 -0500
b
b'@@ -0,0 +1,1234 @@\n+HMDB_ID\tMzBank\tMetName\tChemFormula\tINChIkey\n+HMDB0000001\t169.085126611\t1-Methylhistidine\tC7H11N3O2\tBRMWTNUJHUMWMS-LURJTMIESA-N\n+HMDB0000005\t102.031694058\t"2-Ketobutyric acid"\tC4H6O3\tTYEYBOSBBBHJIV-UHFFFAOYSA-N\n+HMDB0000008\t104.047344122\t"2-Hydroxybutyric acid"\tC4H8O3\tAFENDNXGAFYKQO-UHFFFAOYSA-N\n+HMDB0000017\t183.053157781\t"4-Pyridoxic acid"\tC8H9NO4\tHXACOUQIXZGNBF-UHFFFAOYSA-N\n+HMDB0000019\t116.047344122\t"alpha-Ketoisovaleric acid"\tC5H8O3\tQHKABHOOEWYVLI-UHFFFAOYSA-N\n+HMDB0000020\t152.047344122\t"p-Hydroxyphenylacetic acid"\tC8H8O3\tXQXPVVBIMDBYFF-UHFFFAOYSA-N\n+HMDB0000023\t104.047344122\t"(S)-3-Hydroxyisobutyric acid"\tC4H8O3\tDBXBTMSZEOQQDU-VKHMYHEASA-N\n+HMDB0000030\t244.088163078\tBiotin\tC10H16N2O3S\tYBJHBAHKTGYVGT-ZKWXMUAHSA-N\n+HMDB0000033\t226.106590334\tCarnosine\tC9H14N4O3\tCQOVPNPJLQNMDC-ZETCQYMHSA-N\n+HMDB0000034\t135.054495185\tAdenine\tC5H5N5\tGFFGJBXGBJISGV-UHFFFAOYSA-N\n+HMDB0000037\t360.193674006\tAldosterone\tC21H28O5\tPQSUYGKTWSAVDQ-SRPWZAMTSA-N\n+HMDB0000038\t239.101839307\tDihydrobiopterin\tC9H13N5O3\tFEMXZDUTFRTWPE-UHFFFAOYSA-N\n+HMDB0000039\t88.0524295\t"Butyric acid"\tC4H8O2\tFERIUCNNQQJTOY-UHFFFAOYSA-N\n+HMDB0000042\t60.021129372\t"Acetic acid"\tC2H4O2\tQTBSBXVTEAMEQO-UHFFFAOYSA-N\n+HMDB0000043\t117.078978601\tBetaine\tC5H11NO2\tKWIUHFFTVRNATP-UHFFFAOYSA-N\n+HMDB0000044\t176.032087988\t"Ascorbic acid"\tC6H8O6\tCIWBSHSKHKDKBQ-JLAZNSOCSA-N\n+HMDB0000045\t347.063084339\t"Adenosine monophosphate"\tC10H14N5O7P\tUDMBCSSLTHHNCD-KQYNXXCUSA-N\n+HMDB0000050\t267.096753929\tAdenosine\tC10H13N5O4\tOIRDTQYFTABQOQ-KQYNXXCUSA-N\n+HMDB0000056\t89.047678473\tbeta-Alanine\tC3H7NO2\tUCMIRNVEIXFBKS-UHFFFAOYSA-N\n+HMDB0000060\t102.031694058\t"Acetoacetic acid"\tC4H6O3\tWDJHALXBUFZDSR-UHFFFAOYSA-N\n+HMDB0000062\t161.105193351\tL-Carnitine\tC7H15NO3\tPHIQHXFUZVPYII-ZCFIWIBFSA-N\n+HMDB0000063\t362.20932407\tCortisol\tC21H30O5\tJYGXADMDTFJGBT-VWUMJDOOSA-N\n+HMDB0000064\t131.069476547\tCreatine\tC4H9N3O2\tCVSVTCORWBXHQV-UHFFFAOYSA-N\n+HMDB0000067\t386.354866094\tCholesterol\tC27H46O\tHVYWMOMLDIMFJA-DPAQBDIFSA-N\n+HMDB0000070\t129.078978601\t"Pipecolic acid"\tC6H11NO2\tHXEACLLIILLPRG-UHFFFAOYSA-N\n+HMDB0000071\t252.085854882\tDeoxyinosine\tC10H12N4O4\tVGONTNSXDCQUGY-RRKCRQDMSA-N\n+HMDB0000072\t174.016437924\t"cis-Aconitic acid"\tC6H6O6\tGTZCVFVGUGFEME-IWQZZHSRSA-N\n+HMDB0000076\t114.042927446\tDihydrouracil\tC4H6N2O2\tOIVLITBTBDPEFK-UHFFFAOYSA-N\n+HMDB0000077\t288.20893014\tDehydroepiandrosterone\tC19H28O2\tFMGSKLZLMKYGDP-USOAJAOKSA-N\n+HMDB0000078\t178.041212886\tCysteinylglycine\tC5H10N2O3S\tZUKPVRWZDMRIEO-VKHMYHEASA-N\n+HMDB0000079\t128.05857751\tDihydrothymine\tC5H8N2O2\tNBAKTGXDIBVZOO-UHFFFAOYSA-N\n+HMDB0000085\t267.096753929\tDeoxyguanosine\tC10H13N5O4\tYKBGVTZYEHREMT-KVQBGUIXSA-N\n+HMDB0000086\t257.102823889\tGlycerophosphocholine\tC8H20NO6P\tSUHOQUVVVLNYQR-QMMMGPOBSA-N\n+HMDB0000087\t45.057849229\tDimethylamine\tC2H7N\tROSDSFDQCJNGOL-UHFFFAOYSA-N\n+HMDB0000089\t243.085520541\tCytidine\tC9H13N3O5\tUHDGCWIWMRVCDJ-XVFCMESISA-N\n+HMDB0000092\t103.063328537\tDimethylglycine\tC4H9NO2\tFFDGPVCHZBVARC-UHFFFAOYSA-N\n+HMDB0000094\t192.02700261\t"Citric acid"\tC6H8O7\tKRKNYBCHXYNGOX-UHFFFAOYSA-N\n+HMDB0000095\t323.051850951\t"Cytidine monophosphate"\tC9H14N3O8P\tIERHLVCPSMICTF-XVFCMESISA-N\n+HMDB0000097\t104.107539075\tCholine\tC5H14NO\tOEYIOHPDSNJKLS-UHFFFAOYSA-N\n+HMDB0000098\t150.05282343\tD-Xylose\tC5H10O5\tSRBFZHDQGSBBOR-IOVATXLUSA-N\n+HMDB0000107\t182.07903818\tGalactitol\tC6H14O6\tFBPFZTCFMRRESA-GUCUJZIJSA-N\n+HMDB0000108\t46.041864814\tEthanol\tC2H6O\tLFQSCWFLJHTTHZ-UHFFFAOYSA-N\n+HMDB0000112\t103.063328537\t"gamma-Aminobutyric acid"\tC4H9NO2\tBTCSSZJGUNDROE-UHFFFAOYSA-N\n+HMDB0000115\t76.016043994\t"Glycolic acid"\tC2H4O3\tAEMRFAOFKBGASW-UHFFFAOYSA-N\n+HMDB0000118\t182.057908808\t"Homovanillic acid"\tC9H10O4\tQRMZSPFSDQBLIX-UHFFFAOYSA-N\n+HMDB0000122\t180.063388116\tD-Glucose\tC6H12O6\tWQZGKKKJIJFFOK-GASJEMHNSA-N\n+HMDB0000123\t75.032028409\tGlycine\tC2H5NO2\tDHMQDGOQFOQNFH-UHFFFAOYSA-N\n+HMDB0000124\t260.029718526\t"Fructose 6-phosphate"\tC6H13O9P\tGSXOAOHZAIYLCY-HSUXUTPPSA-N\n+HMDB0000125\t307.083805981\tGlutathione\tC10H17N3O6S\tRWSXRVCMGQZWBV-WDSKDSINSA-N\n+HMDB0000126\t172.013674532\t"Glycerol 3-phosphate"\tC3H9O6P\tAWU'..b'4,4-Dimethyl-2-pentene\tC7H14\tBIDIHFPLDRSAMB-AATRIKPKSA-N\n+HMDB0061895\t98.109550448\t2,4-Dimethyl-2-pentene\tC7H14\tVVCFYASOGFVJFN-UHFFFAOYSA-N\n+HMDB0061896\t114.10446507\t2-Methyl-3-hexanone\tC7H14O\tHIGGFWFRAWSMBR-UHFFFAOYSA-N\n+HMDB0061897\t108.093900384\t(Z)-1,3-Octadiene\tC8H12\tRRKODOZNUZCUBN-HSFFGMMNSA-N\n+HMDB0061898\t124.088815006\tMethyl-1-cyclopenten-1-yl)-ethanone\tC8H12O\tHDURLXYBKGWETC-UHFFFAOYSA-N\n+HMDB0061899\t110.109550448\t2-(Methylenebutyl)-cyclopropane\tC8H14\tVDKZAQZRSGYRSL-POYBYMJQSA-N\n+HMDB0061900\t110.109550448\t2,4-Octadiene\tC8H14\tNZLCAHVLJPDRBL-VSAQMIDASA-N\n+HMDB0061902\t110.109550448\t2,5-Dimethyl-2,4-hexadiene\tC8H14\tDZPCYXCBXGQBRN-UHFFFAOYSA-N\n+HMDB0061903\t112.125200512\t(Z)-2-Octene\tC8H16\tILPBINAXDRFYPL-HYXAFXHYSA-N\n+HMDB0061904\t112.125200512\t(E)-2-Octene\tC8H16\tILPBINAXDRFYPL-UHFFFAOYSA-N\n+HMDB0061905\t112.125200512\t(Z)-3-Octene\tC8H16\tYCTDZYMMFQCTEO-ALCCZGGFSA-N\n+HMDB0061906\t112.125200512\t(E)-3-Octene\tC8H16\tYCTDZYMMFQCTEO-FNORWQNLSA-N\n+HMDB0061907\t112.125200512\t3-Methyleneheptane\tC8H16\tXTVRLCUJHGUXCP-UHFFFAOYSA-N\n+HMDB0061908\t112.125200512\t3-Methyl-1-heptene\tC8H16\tQDMFTFWKTYXBIW-UHFFFAOYSA-N\n+HMDB0061909\t112.125200512\t3-Methyl-3-heptene\tC8H16\tAAUHUDBDDBJONC-BQYQJAHWSA-N\n+HMDB0061910\t112.125200512\t(E)-4-Methyl-2-heptene\tC8H16\tSVGLFIBXFVQUQY-GQCTYLIASA-N\n+HMDB0061911\t112.125200512\t4-Methyl-3-heptene\tC8H16\tKKVVJQGDNYIIMN-SOFGYWHQSA-N\n+HMDB0061912\t128.120115134\t3,4-Dimethylcyclohexanol\tC8H16O\tZBAXJUPCYVIBSP-UHFFFAOYSA-N\n+HMDB0061913\t128.120115134\t3,5-Dimethylcyclohexanol\tC8H16O\tWIYNOPYNRFPWNB-UHFFFAOYSA-N\n+HMDB0061915\t114.140850576\t2-Methylheptane\tC8H18\tJVSWJIKNEAIKJW-UHFFFAOYSA-N\n+HMDB0061918\t133.052763851\t1,3-Dihydro-(2H)-indol-2-one\tC8H7NO\tJYGFTBXVXVMTGB-UHFFFAOYSA-N\n+HMDB0061919\t151.063328537\t2\'-Hydroxyacetanilide\tC8H9NO2\tADVGKWPZRIDURE-UHFFFAOYSA-N\n+HMDB0061920\t124.125200512\tProp-2-enylcyclohexane\tC9H16\tKVOZXXSUSRZIKD-UHFFFAOYSA-N\n+HMDB0061921\t92.903634644\tNiobium\tNb\tQUWPZPLTANKXAM-UHFFFAOYSA-N\n+HMDB0061922\t180.063388116\tAlpha-D-Glucopyranoside\tC6H12O6\tWQZGKKKJIJFFOK-GKFJPSPNSA-N\n+HMDB0061923\t190.172150704\t1,3-Di-tert-butylbenzene\tC14H22\tILNDSSCEZZFNGE-UHFFFAOYSA-N\n+HMDB0061924\t198.23475096\t2,3,5,8-Tetramethyldecane\tC14H30\tXTIADNINQBIUNR-UHFFFAOYSA-N\n+HMDB0061925\t300.20893014\t"Dehydroabietic acid"\tC20H28O2\tNFWKVWVWBFBAOV-IPNZSQQUSA-N\n+HMDB0061926\t393.339550381\tP,P-Dioctyldiphenylamine\tC28H43N\tQAPVYZRWKDXNDK-UHFFFAOYSA-N\n+HMDB0061927\t118.062994186\t"5-Hydroxypentanoic acid"\tC5H10O3\tPHOJOSOUIAQEDH-UHFFFAOYSA-N\n+HMDB0061928\t140.044899461\t"Trifluoromethyl-bismethyl ketone"\tC5H7F3O\tNLCCAFQWEKMQLM-UHFFFAOYSA-N\n+HMDB0061929\t114.068079564\tDihydro-4,4-dimethyl-2(3H)-furanone\tC6H10O2\tLZAKUZBAAQDJCF-UHFFFAOYSA-N\n+HMDB0061930\t146.057908808\t"4-Ethoxy-4-oxobutanoic acid"\tC6H10O4\tLOLKAJARZKDJTD-UHFFFAOYSA-N\n+HMDB0061931\t144.115029756\tTetrahydro-2,5-dimethyl-2H-pyranmethanol\tC8H16O2\tBJQJGDGEKXRYBA-UHFFFAOYSA-N\n+HMDB0061932\t171.107940704\tValero-1,5-lactam\tC8H17NOSi\tPMQNJTKTWDVUNY-UHFFFAOYSA-N\n+HMDB0061933\t147.032028409\t1H-Indole-2,3-dione\tC8H5NO2\tJXDYKVIHCLTXOP-UHFFFAOYSA-N\n+HMDB0061934\t92.970690481\t"Thiocarbamic acid"\tCH3NS2\tDKVNPHBNOWQYFE-UHFFFAOYSA-N\n+HMDB0061935\t264.172544634\t"3,5-Bis(1,1-dimethylethyl)-4-hydroxy-benzoic acid ethyl ester"\tC16H24O3\tUPVYFJALDJUSOV-UHFFFAOYSA-N\n+HMDB0061936\t174.161979948\tIsooctanedioldibutyrate\tC10H22O2\tWMEDSSFYIKNTNG-UHFFFAOYSA-N\n+HMDB0061938\t136.125200512\tIsoterpinolene\tC10H16\tCIPXOBMYVWRNLL-UHFFFAOYSA-N\n+HMDB0061939\t179.043855423\tMethyl-N,N-diethylthiocarbamate\tC6H13NOS2\tVQRMNXBTDRJEKI-UHFFFAOYSA-N\n+HMDB0061942\t220.109944378\t"cis-3-Hexenyl salicylate"\tC13H16O3\tIEPWIPZLLIOZLU-ARJAWSKDSA-N\n+HMDB0061943\t222.125594442\t"Hexyl salicylic acid"\tC13H18O3\tDUKPKQFHJQGTGU-UHFFFAOYSA-N\n+HMDB0061944\t106.062994186\tTrihydroxybutane\tC4H10O3\tGTTSNKDQDACYLV-UHFFFAOYSA-N\n+HMDB0061945\t126.10446507\t2-Ethyl-2-hexenal\tC8H14O\tPYLMCYQHBRSDND-SOFGYWHQSA-N\n+HMDB0061946\t284.271530396\t"Hexyl dodecanoate"\tC18H36O2\tCMBYOWLFQAFZCP-UHFFFAOYSA-N\n+HMDB0062403\t197.032422339\t4-hydroxy-3-nitrophenylacetate\tC8H7NO5\tQBHBHOSRLDPIHG-UHFFFAOYSA-N\n'
b
diff -r 000000000000 -r 7c9269bded0e test-data/out04.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/out04.tabular Tue Jan 14 05:21:23 2020 -0500
b
b'@@ -0,0 +1,2356 @@\n+HMDB_ID\tMzBank\tMetName\tChemFormula\tINChIkey\n+BMDB00001\t169.085126611\t1-Methylhistidine\tC7H11N3O2\tBRMWTNUJHUMWMS-LURJTMIESA-N\n+BMDB00008\t104.047344122\t"2-Hydroxybutyric acid"\tC4H8O3\tAFENDNXGAFYKQO-UHFFFAOYSA-N\n+BMDB00014\t227.090605919\tDeoxycytidine\tC9H13N3O4\tCKTSBUTUHBMZGZ-SHYZEUOFSA-N\n+BMDB00020\t152.047344122\t"p-Hydroxyphenylacetic acid"\tC8H8O3\tXQXPVVBIMDBYFF-UHFFFAOYSA-N\n+BMDB00030\t244.088163078\tBiotin\tC10H16N2O3S\tYBJHBAHKTGYVGT-ZKWXMUAHSA-N\n+BMDB00033\t226.106590334\tCarnosine\tC9H14N4O3\tCQOVPNPJLQNMDC-ZETCQYMHSA-N\n+BMDB00034\t135.054495185\tAdenine\tC5H5N5\tGFFGJBXGBJISGV-UHFFFAOYSA-N\n+BMDB00037\t360.193674006\tAldosterone\tC21H28O5\tPQSUYGKTWSAVDQ-SRPWZAMTSA-N\n+BMDB00039\t88.0524295\t"Butyric acid"\tC4H8O2\tFERIUCNNQQJTOY-UHFFFAOYSA-N\n+BMDB00042\t60.021129372\t"Acetic acid"\tC2H4O2\tQTBSBXVTEAMEQO-UHFFFAOYSA-N\n+BMDB00043\t117.078978601\tBetaine\tC5H11NO2\tKWIUHFFTVRNATP-UHFFFAOYSA-N\n+BMDB00044\t176.032087988\t"Ascorbic acid"\tC6H8O6\tTYQCGQRIZGCHNB-MVHIGOERSA-N\n+BMDB00045\t347.063084339\t"Adenosine monophosphate"\tC10H14N5O7P\tUDMBCSSLTHHNCD-KQYNXXCUSA-N\n+BMDB00050\t267.096753929\tAdenosine\tC10H13N5O4\tOIRDTQYFTABQOQ-KQYNXXCUSA-N\n+BMDB00053\t286.193280076\tAndrostenedione\tC19H26O2\tAEMFNILZOJDQLW-QAGGRKNESA-N\n+BMDB00058\t329.052519653\t"Cyclic AMP"\tC10H12N5O6P\tIVOMOUWHDPKRLL-KQYNXXCUSA-N\n+BMDB00060\t102.031694058\t"Acetoacetic acid"\tC4H6O3\tWDJHALXBUFZDSR-UHFFFAOYSA-N\n+BMDB00062\t161.105193351\tL-Carnitine\tC7H15NO3\tPHIQHXFUZVPYII-LURJTMIESA-N\n+BMDB00064\t131.069476547\tCreatine\tC4H9N3O2\tCVSVTCORWBXHQV-UHFFFAOYSA-N\n+BMDB00067\t386.354866094\tCholesterol\tC27H46O\tHVYWMOMLDIMFJA-FNOPAARDSA-N\n+BMDB00070\t129.078978601\t"Pipecolic acid"\tC6H11NO2\tHXEACLLIILLPRG-UHFFFAOYSA-N\n+BMDB00072\t174.016437924\t"cis-Aconitic acid"\tC6H6O6\tGTZCVFVGUGFEME-IWQZZHSRSA-N\n+BMDB00073\t153.078978601\tDopamine\tC8H11NO2\tVYFYYTLLBUKUHU-UHFFFAOYSA-N\n+BMDB00076\t114.042927446\tDihydrouracil\tC4H6N2O2\tOIVLITBTBDPEFK-UHFFFAOYSA-N\n+BMDB00077\t288.20893014\tDehydroepiandrosterone\tC19H28O2\tFMGSKLZLMKYGDP-INNQQZFDSA-N\n+BMDB00079\t128.05857751\tDihydrothymine\tC5H8N2O2\tNBAKTGXDIBVZOO-UHFFFAOYSA-N\n+BMDB00086\t257.102823889\tGlycerophosphocholine\tC8H20NO6P\tSUHOQUVVVLNYQR-QMMMGPOBSA-N\n+BMDB00087\t45.057849229\tDimethylamine\tC2H7N\tROSDSFDQCJNGOL-UHFFFAOYSA-N\n+BMDB00089\t243.085520541\tCytidine\tC9H13N3O5\tUHDGCWIWMRVCDJ-XVFCMESISA-N\n+BMDB00092\t103.063328537\tDimethylglycine\tC4H9NO2\tFFDGPVCHZBVARC-UHFFFAOYSA-N\n+BMDB00094\t192.02700261\t"Citric acid"\tC6H8O7\tKRKNYBCHXYNGOX-UHFFFAOYSA-N\n+BMDB00095\t323.051850951\t"Cytidine monophosphate"\tC9H14N3O8P\tIERHLVCPSMICTF-XVFCMESISA-N\n+BMDB00097\t104.107539075\tCholine\tC5H14NO\tOEYIOHPDSNJKLS-UHFFFAOYSA-N\n+BMDB00099\t222.067427636\tL-Cystathionine\tC7H14N2O4S\tILRYLPWNYFXEMH-WHFBIAKZSA-N\n+BMDB00101\t251.101839307\tDeoxyadenosine\tC10H13N5O3\tOLXZPDWKRNYJJZ-RRKCRQDMSA-N\n+BMDB00107\t182.07903818\tGalactitol\tC6H14O6\tFBPFZTCFMRRESA-GUCUJZIJSA-N\n+BMDB00108\t46.041864814\tEthanol\tC2H6O\tLFQSCWFLJHTTHZ-UHFFFAOYSA-N\n+BMDB00112\t103.063328537\t"Gamma-Aminobutyric acid"\tC4H9NO2\tBTCSSZJGUNDROE-UHFFFAOYSA-N\n+BMDB00118\t182.057908808\t"Homovanillic acid"\tC9H10O4\tQRMZSPFSDQBLIX-UHFFFAOYSA-N\n+BMDB00121\t441.139681375\t"Folic acid"\tC19H19N7O6\tOVBPIULPVIDEAO-LBPRGKRZSA-N\n+BMDB00122\t180.063388116\tD-Glucose\tC6H12O6\tWQZGKKKJIJFFOK-GASJEMHNSA-N\n+BMDB00123\t75.032028409\tGlycine\tC2H5NO2\tDHMQDGOQFOQNFH-UHFFFAOYSA-N\n+BMDB00124\t260.029718526\t"Fructose 6-phosphate"\tC6H13O9P\tGSXOAOHZAIYLCY-HSUXUTPPSA-N\n+BMDB00126\t172.013674532\t"Glycerol 3-phosphate"\tC3H9O6P\tAWUCVROLDVIAJX-GSVOUGTGSA-N\n+BMDB00127\t194.042652674\t"D-Glucuronic acid"\tC6H10O7\tAEMOLEFTQBMNLQ-WAXACMCWSA-N\n+BMDB00130\t168.042258744\t"Homogentisic acid"\tC8H8O4\tIGMNYECMUMZDDF-UHFFFAOYSA-N\n+BMDB00131\t92.047344122\tGlycerol\tC3H8O3\tPEDCQBHIVMGVHV-UHFFFAOYSA-N\n+BMDB00132\t151.049409807\tGuanine\tC5H5N5O\tUYTPUPDQBNUYGX-UHFFFAOYSA-N\n+BMDB00133\t283.091668551\tGuanosine\tC10H13N5O5\tNYHBQMYGNKIUIF-UUOKFMHZSA-N\n+BMDB00134\t116.010958616\t"Fumaric acid"\tC4H4O4\tVZCYOOQTPOCHFL-OWOJBTEDSA-N\n+BMDB00138\t465.309038113\t"Glycocholic acid"\tC26H43NO6\tRFDAIACWWDREDC-MZMBZMQMSA-N\n+BMDB00139\t106.02660868\t"Gl'..b'1(11E)/17:0)\tC38H77N2O6P\tNFKIRSWGHHRNCC-FQCGQDBESA-N\n+BMDB63581\t702.56757527\tSM(16:1(11E)/18:0)\tC39H79N2O6P\tSHHZAYWGLRSCPR-CTJXKQIDSA-N\n+BMDB63582\t700.551925205\tSM(16:1(11E)/18:1(11E))\tC39H77N2O6P\tOLTDDQQBTMKIJV-XNYODWHASA-N\n+BMDB63583\t716.583225334\tSM(16:1(11E)/19:0)\tC40H81N2O6P\tSEWCPYNJRIBRDH-ACOKGBTCSA-N\n+BMDB63584\t730.598875399\tSM(16:1(11E)/20:0)\tC41H83N2O6P\tLYUBDOFTFDCHCS-FVSABMTJSA-N\n+BMDB63585\t728.583225334\tSM(18:1(11E)/18:1(9E))\tC41H81N2O6P\tPDJBDVPBAZFKPT-PRCCPDMFSA-N\n+BMDB63586\t758.630175527\tSM(18:1(11E)/20:0)\tC43H87N2O6P\tKFYASDPSVLPJFZ-RLUGYQEDSA-N\n+BMDB63588\t772.645825592\tSM(18:1(11E)/21:0)\tC44H89N2O6P\tZZOWDUOKDXULKW-MQDRILMCSA-N\n+BMDB63589\t786.661475656\tSM(18:1(11E)/22:0)\tC45H91N2O6P\tYWTQZDQCLLJJMO-SKACQKSKSA-N\n+BMDB63590\t784.645825592\tSM(18:2(9E,12E)/22:0)\tC45H89N2O6P\tKNKHTTBVLRIQFG-URMKVRBYSA-N\n+BMDB63591\t800.677125721\tSM(17:1(10E)/24:0)\tC46H93N2O6P\tWDCZPNUFGZODRI-NELHSPAMSA-N\n+BMDB63592\t798.661475656\tSM(18:2(9E,12E)/23:0)\tC46H91N2O6P\tZRKFXRCPPWXSJE-ADZKJEMBSA-N\n+BMDB63593\t814.692775785\tSM(18:1(11E)/24:0)\tC47H95N2O6P\tPYLWNJICBMYPHE-LCHFQSLOSA-N\n+BMDB63594\t842.724075914\tSM(18:2(9E,12E)/24:0)\tC49H99N2O6P\tAJTHGVHRBBWIEP-FVNSHYMDSA-N\n+BMDB63595\t828.708425849\tSM(19:0/24:1(15Z))\tC48H97N2O6P\tLXMARZYBSFYVSY-KUQVZNNZSA-N\n+BMDB63596\t842.724075914\tSM(20:0/24:1(15Z))\tC49H99N2O6P\tJWKOQODXKXAOQW-ALKNTWKZSA-N\n+BMDB63598\t602.527410734\tDG(O-16:0/20:4(8E,11E,14E,17E))\tC39H70O4\tZOQPRIBCWWPWEH-LGUDIITJSA-N\n+BMDB63599\t730.647525862\tDG(24:0/20:3(8Z,11Z,14Z)\tC47H86O5\tVOJMKRSTEQMACO-SNGWNOJZSA-N\n+BMDB63600\t170.021523293\t"gallic acid"\tC7H6O5\tLNTHITQWFMADLM-UHFFFAOYSA-N\n+BMDB63601\t361.8757165\tAldrin\tC12H8Cl6\tQBYJBZPUGVGKQQ-SJJAEHHWSA-N\n+BMDB63602\t287.8600664\talpha-Hexachlorocyclohexane(HCH)\tC6H6Cl6\tJLYXXMFPNIAWKQ-LKPKBOIGSA-N\n+BMDB63604\t215.09377318\t"atrazine "\tC8H14ClN5\tMXWJVTOOROXGIU-UHFFFAOYSA-N\n+BMDB63605\t287.860066434\tbeta-Hexachlorocyclohexane(HCH)\tC6H6Cl6\tJLYXXMFPNIAWKQ-CDRYSYESSA-N\n+BMDB63606\t287.860066434\tdelta-Hexachlorocyclohexane\tC6H6Cl6\tJLYXXMFPNIAWKQ-GPIVLXJGSA-N\n+BMDB63609\t287.860066434\tgamma-Hexachlorocyclohexane(HCH)\tC6H6Cl6\tJLYXXMFPNIAWKQ-GNIYUCBRSA-N\n+BMDB63610\t317.953661148\t"o,p\xe2\x80\xb2-DDD"\tC14H10Cl4\tJWBOIMRXGHLCPP-UHFFFAOYSA-N\n+BMDB63611\t315.9380111\t"o,p\xe2\x80\xb2-DDE"\tC14H8Cl4\tZDYJWDIWLRZXDB-UHFFFAOYSA-N\n+BMDB63612\t351.914688823\t"o,p\xe2\x80\xb2-DDT"\tC14H9Cl5\tCVUGPAFCQJIYDT-UHFFFAOYSA-N\n+BMDB63613\t261.063722467\t"Oxolinic Acid "\tC13H11NO5\tKYGZCKSPAKDVKC-UHFFFAOYSA-N\n+BMDB63614\t317.953661148\t"p,p\xe2\x80\xb2-DDD"\tC14H10Cl4\tAHJKRLASYNVKDZ-UHFFFAOYSA-N\n+BMDB63615\t315.938011084\t"p,p\xe2\x80\xb2-DDE"\tC14H8Cl4\tUCNVFOCBFJOQAL-UHFFFAOYSA-N\n+BMDB63616\t351.914688823\t"p,p\xe2\x80\xb2-DDT"\tC14H9Cl5\tYVGGHNCTFXOJCH-UHFFFAOYSA-N\n+BMDB63619\t403.8168814\tbeta-endosulfan\tC9H6Cl6O3S\tRDYMFSUJUZBWLH-FYHLGZKHSA-N\n+BMDB63620\t403.8168814\talpha-endosulfan\tC9H6Cl6O3S\tRDYMFSUJUZBWLH-AMHWMVONSA-N\n+BMDB63621\t537.512095021\tCer(d18:0/16:1(11Z))\tC34H67NO3\tCNOVLYHRDNYVLT-DIBQBJQOSA-N\n+BMDB63622\t593.574695279\tCer(d18:0/20:1(11Z))\tC38H75NO3\tPULBITQLTXYVQX-FMECKOKGSA-N\n+BMDB63623\t635.621645472\tCer(d17:0/24:1(15Z))\tC41H81NO3\tILZGEVUWFUWJOI-QVEKJMDDSA-N\n+BMDB63624\t647.621645472\tCer(d20:0/22:2(6Z,13Z))\tC42H81NO3\tABZIJOKCYYZWFJ-LHRBHQDFSA-N\n+BMDB63625\t152.047344122\t"3-Cresotinic acid"\tC8H8O3\tWHSXTWFYRGOBGO-UHFFFAOYSA-N\n+BMDB63626\t188.116092388\tGlycyl-Isoleucine\tC8H16N2O3\tKGVHCTWYMPWEGN-UHFFFAOYSA-N\n+BMDB63627\t226.106590334\tHistidinyl-Alanine\tC9H14N4O3\tFRJIAZKQGSCKPQ-UHFFFAOYSA-N\n+BMDB63628\t207.125928791\tPhenyl-Leucine\tC12H17NO2\tGUKOKXKMWGOHJJ-NSHDSACASA-N\n+BMDB63629\t238.095356946\tTyrosyl-Glycine\tC11H14N2O4\tHPYDSVWYXXKHRD-UHFFFAOYSA-N\n+BMDB63630\t925.749956311\tPC(24:0/22:2(6Z,13Z))\tC54H104NO8P\tQYVKBNMHUYGIRK-IHXGGWPCSA-N\n+BMDB63631\t877.692441433\tPC(O-22:0/22:5(7Z,10Z,13Z,16Z,19Z))\tC52H96NO7P\tVNNPAAOAYXMMKU-JCWXPRBNSA-N\n+BMDB63632\t240.089022153\tCyanazine\tC9H13ClN6\tMZZBPDKVEFVLFF-UHFFFAOYSA-N\n+BMDB63633\t241.136116323\tPrometryn\tC10H19N5S\tAAEVYOVXGOFMJO-UHFFFAOYSA-N\n+BMDB63634\t201.078123116\tSimazine\tC7H12ClN5\tODCWYMIRDDJXKW-UHFFFAOYSA-N\n+BMDB63635\t241.136116323\tTerbutryn\tC10H19N5S\tIROINLKCQGIITA-UHFFFAOYSA-N\n'
b
diff -r 000000000000 -r 7c9269bded0e test-data/out05.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/out05.tabular Tue Jan 14 05:21:23 2020 -0500
[
b'@@ -0,0 +1,6737 @@\n+HMDB_ID\tMzBank\tMetName\tChemFormula\tINChIkey\n+HMDB0000001\t169.085126611\t1-Methylhistidine\tC7H11N3O2\tBRMWTNUJHUMWMS-LURJTMIESA-N\n+HMDB0000002\t74.08439833\t1,3-Diaminopropane\tC3H10N2\tXFNJVJPLKCPIBV-UHFFFAOYSA-N\n+HMDB0000008\t104.047344122\t"2-Hydroxybutyric acid"\tC4H8O3\tAFENDNXGAFYKQO-UHFFFAOYSA-N\n+HMDB0000012\t228.074621504\tDeoxyuridine\tC9H12N2O5\tMXHRCPNRJAMMIM-SHYZEUOFSA-N\n+HMDB0000014\t227.090605919\tDeoxycytidine\tC9H13N3O4\tCKTSBUTUHBMZGZ-SHYZEUOFSA-N\n+HMDB0000015\t346.214409448\tCortexolone\tC21H30O4\tWHBHBVVOGNECLV-OBQKJFGGSA-N\n+HMDB0000017\t183.053157781\t"4-Pyridoxic acid"\tC8H9NO4\tHXACOUQIXZGNBF-UHFFFAOYSA-N\n+HMDB0000019\t116.047344122\t"alpha-Ketoisovaleric acid"\tC5H8O3\tQHKABHOOEWYVLI-UHFFFAOYSA-N\n+HMDB0000020\t152.047344122\t"p-Hydroxyphenylacetic acid"\tC8H8O3\tXQXPVVBIMDBYFF-UHFFFAOYSA-N\n+HMDB0000023\t104.047344122\t"(S)-3-Hydroxyisobutyric acid"\tC4H8O3\tDBXBTMSZEOQQDU-VKHMYHEASA-N\n+HMDB0000026\t132.053492132\t"Ureidopropionic acid"\tC4H8N2O3\tJSJWCHRYRHKBBW-UHFFFAOYSA-N\n+HMDB0000027\t241.117489371\tTetrahydrobiopterin\tC9H15N5O3\tFNKQXYHWGSIFBK-UHFFFAOYSA-N\n+HMDB0000030\t244.088163078\tBiotin\tC10H16N2O3S\tYBJHBAHKTGYVGT-ZKWXMUAHSA-N\n+HMDB0000033\t226.106590334\tCarnosine\tC9H14N4O3\tCQOVPNPJLQNMDC-ZETCQYMHSA-N\n+HMDB0000034\t135.054495185\tAdenine\tC5H5N5\tGFFGJBXGBJISGV-UHFFFAOYSA-N\n+HMDB0000036\t515.291673489\t"Taurocholic acid"\tC26H45NO7S\tWBWWGRHZICKQGZ-HZAMXZRMSA-N\n+HMDB0000038\t239.101839307\tDihydrobiopterin\tC9H13N5O3\tFEMXZDUTFRTWPE-UHFFFAOYSA-N\n+HMDB0000039\t88.0524295\t"Butyric acid"\tC4H8O2\tFERIUCNNQQJTOY-UHFFFAOYSA-N\n+HMDB0000042\t60.021129372\t"Acetic acid"\tC2H4O2\tQTBSBXVTEAMEQO-UHFFFAOYSA-N\n+HMDB0000043\t117.078978601\tBetaine\tC5H11NO2\tKWIUHFFTVRNATP-UHFFFAOYSA-N\n+HMDB0000045\t347.063084339\t"Adenosine monophosphate"\tC10H14N5O7P\tUDMBCSSLTHHNCD-KQYNXXCUSA-N\n+HMDB0000050\t267.096753929\tAdenosine\tC10H13N5O4\tOIRDTQYFTABQOQ-KQYNXXCUSA-N\n+HMDB0000054\t584.263484904\tBilirubin\tC33H36N4O6\tBPYKTIZUTYGOLE-IFADSCNNSA-N\n+HMDB0000056\t89.047678473\tbeta-Alanine\tC3H7NO2\tUCMIRNVEIXFBKS-UHFFFAOYSA-N\n+HMDB0000058\t329.052519653\t"Cyclic AMP"\tC10H12N5O6P\tIVOMOUWHDPKRLL-KQYNXXCUSA-N\n+HMDB0000060\t102.031694058\t"Acetoacetic acid"\tC4H6O3\tWDJHALXBUFZDSR-UHFFFAOYSA-N\n+HMDB0000062\t161.105193351\tL-Carnitine\tC7H15NO3\tPHIQHXFUZVPYII-ZCFIWIBFSA-N\n+HMDB0000064\t131.069476547\tCreatine\tC4H9N3O2\tCVSVTCORWBXHQV-UHFFFAOYSA-N\n+HMDB0000067\t386.354866094\tCholesterol\tC27H46O\tHVYWMOMLDIMFJA-DPAQBDIFSA-N\n+HMDB0000070\t129.078978601\t"Pipecolic acid"\tC6H11NO2\tHXEACLLIILLPRG-UHFFFAOYSA-N\n+HMDB0000071\t252.085854882\tDeoxyinosine\tC10H12N4O4\tVGONTNSXDCQUGY-RRKCRQDMSA-N\n+HMDB0000073\t153.078978601\tDopamine\tC8H11NO2\tVYFYYTLLBUKUHU-UHFFFAOYSA-N\n+HMDB0000076\t114.042927446\tDihydrouracil\tC4H6N2O2\tOIVLITBTBDPEFK-UHFFFAOYSA-N\n+HMDB0000085\t267.096753929\tDeoxyguanosine\tC10H13N5O4\tYKBGVTZYEHREMT-KVQBGUIXSA-N\n+HMDB0000086\t257.102823889\tGlycerophosphocholine\tC8H20NO6P\tSUHOQUVVVLNYQR-QMMMGPOBSA-N\n+HMDB0000087\t45.057849229\tDimethylamine\tC2H7N\tROSDSFDQCJNGOL-UHFFFAOYSA-N\n+HMDB0000089\t243.085520541\tCytidine\tC9H13N3O5\tUHDGCWIWMRVCDJ-XVFCMESISA-N\n+HMDB0000092\t103.063328537\tDimethylglycine\tC4H9NO2\tFFDGPVCHZBVARC-UHFFFAOYSA-N\n+HMDB0000094\t192.02700261\t"Citric acid"\tC6H8O7\tKRKNYBCHXYNGOX-UHFFFAOYSA-N\n+HMDB0000095\t323.051850951\t"Cytidine monophosphate"\tC9H14N3O8P\tIERHLVCPSMICTF-XVFCMESISA-N\n+HMDB0000097\t104.107539075\tCholine\tC5H14NO\tOEYIOHPDSNJKLS-UHFFFAOYSA-N\n+HMDB0000098\t150.05282343\tD-Xylose\tC5H10O5\tSRBFZHDQGSBBOR-IOVATXLUSA-N\n+HMDB0000099\t222.067427636\tL-Cystathionine\tC7H14N2O4S\tILRYLPWNYFXEMH-WHFBIAKZSA-N\n+HMDB0000101\t251.101839307\tDeoxyadenosine\tC10H13N5O3\tOLXZPDWKRNYJJZ-RRKCRQDMSA-N\n+HMDB0000107\t182.07903818\tGalactitol\tC6H14O6\tFBPFZTCFMRRESA-GUCUJZIJSA-N\n+HMDB0000108\t46.041864814\tEthanol\tC2H6O\tLFQSCWFLJHTTHZ-UHFFFAOYSA-N\n+HMDB0000112\t103.063328537\t"gamma-Aminobutyric acid"\tC4H9NO2\tBTCSSZJGUNDROE-UHFFFAOYSA-N\n+HMDB0000114\t215.055873697\tGlycerylphosphorylethanolamine\tC5H14NO6P\tFRMZOWIQVCBEAC-UHFFFAOYSA-N\n+HMDB0000115\t76.016043994\t"Glycolic acid"\tC2H4O3\tAEMRFAOFKBGASW-UHFFFAOYSA-N\n+HMDB0000118\t182.057908808\t"Homov'..b'DB0094659\t186.161979948\t"1,1-Dimethylethyl heptanoic acid"\tC11H22O2\tWLUUTGIJNRNHRF-UHFFFAOYSA-N\n+HMDB0094660\t222.089208936\t"Diethyl phthalic acid"\tC12H14O4\tFLKPEMZONWLCSK-UHFFFAOYSA-N\n+HMDB0094661\t176.120115135\t1-Phenyl-2-hexanone\tC12H16O\tDYQAZJQDLPPHNB-UHFFFAOYSA-N\n+HMDB0094664\t254.115833018\t"1,2-Benzenediol bis(trimethylsilyl) ether"\tC12H22O2Si2\tGEHYZCCVQVOFAF-UHFFFAOYSA-N\n+HMDB0094665\t168.187800773\t2,2,4,6,6-Pentamethyl-3-heptene\tC12H24\tNBUMCEJRJRRLCA-CSKARUKUSA-N\n+HMDB0094666\t168.187800773\t"Nonyl cyclopropane"\tC12H24\tDTLFSMAJSOYMCO-UHFFFAOYSA-N\n+HMDB0094667\t168.187800773\t"3-Methyl-2-undecene (Z)"\tC12H24\tLKWKOLGLWOJMQP-XGICHPGQSA-N\n+HMDB0094668\t230.170206612\t"Trimethylsilyl nonanoic acid"\tC12H26O2Si\tISTGUORKGWWKMI-UHFFFAOYSA-N\n+HMDB0094669\t250.12050906\t"Methyl neopentyl phthalic acid"\tC14H18O4\tLJBHDCZOMUACDL-UHFFFAOYSA-N\n+HMDB0094670\t190.172150708\t1,4-Bis-(1,1-dimethylethyl)-benzene\tC14H22\tOOWNNCMFKFBNOF-UHFFFAOYSA-N\n+HMDB0094671\t226.193280077\t"Heptyl cyclohexane carboxylic acid"\tC14H26O2\tTXWXLLMVRVKQSO-UHFFFAOYSA-N\n+HMDB0094672\t244.203844762\t3-Hydroxymyristate\tC14H28O3\tATRNZOYKSNPPBF-UHFFFAOYSA-N\n+HMDB0094673\t260.152477892\tCyclo(Leu-Phe)\tC15H20N2O2\tQPDMOMIYLJMOQJ-STQMWFEESA-N\n+HMDB0094674\t218.167065328\t"N-Octyl phenyl ketone"\tC15H22O\tPFUPABFCHVRLLY-UHFFFAOYSA-N\n+HMDB0094675\t309.158032183\t"N,O-Bis- (trimethylsilyl)phenylalanine"\tC15H27NO2Si2\tDWNFNBPPSFIIBG-UHFFFAOYSA-N\n+HMDB0094676\t315.215806426\tVal-Val-Val\tC15H29N3O4\tLSLXWOCIIFUZCQ-UHFFFAOYSA-N\n+HMDB0094677\t272.217156805\t"Dodecanoic acid, trimethylsilyl ester"\tC15H32O2Si\tRHDZBWSXEZTMPK-UHFFFAOYSA-N\n+HMDB0094680\t370.220282686\t"Octaethylene glycol"\tC16H34O9\tGLZWNFNQMJAZGY-UHFFFAOYSA-N\n+HMDB0094681\t314.264106999\t"Trimethylsilyl n-pentadecanoic acid"\tC18H38O2Si\tSHDTWSQDHLKGEO-UHFFFAOYSA-N\n+HMDB0094682\t452.153860338\t"5alpha-Androstan-3alpha,17beta-diol disulfate"\tC19H32O8S2\tJHFAETDERBWUOO-KHOSGYARSA-N\n+HMDB0094683\t342.295407127\t"Trimethylsilyl heptadecanoic acid"\tC20H42O2Si\tKCEZRIREPDDPDI-UHFFFAOYSA-N\n+HMDB0094684\t356.292659768\tMonooleoylglycerol\tC21H40O4\tRZRNAYUHWVFMIP-KTKRTIGZSA-N\n+HMDB0094685\t346.287180464\t"Hexadecyl Benzoic acid"\tC23H38O2\tRAMRROOXFMYSNA-UHFFFAOYSA-N\n+HMDB0094686\t384.342357321\t"Eicosanoic acid, trimethylsilyl ester"\tC23H48O2Si\tAYSGFBVOWSXJCN-UHFFFAOYSA-N\n+HMDB0094687\t425.350508997\tOctadecenoylcarnitine\tC25H47NO4\tYIGBMCKQXUEBKC-UHFFFAOYSA-N\n+HMDB0094688\t524.371615113\t1-Stearoylglycerophosphocholine\tC26H55NO7P\tARQYPVZFUYHQFR-RUZDIDTESA-N\n+HMDB0094690\t88.070826921\tTetramethylsilane\tC4H12Si\tCZDYPVPMEAXLPK-UHFFFAOYSA-N\n+HMDB0094691\t84.021129369\t"Furanone A"\tC4H4O2\tRHDGNLCLDBVESU-UHFFFAOYSA-N\n+HMDB0094692\t103.063328537\tN-Methylalanine\tC4H9NO2\tGDFAOVXKHJXLEI-VKHMYHEASA-N\n+HMDB0094693\t103.063328537\t3-Aminobutyrate\tC4H9NO2\tOQEBBZSWEGYTPG-UHFFFAOYSA-N\n+HMDB0094694\t150.05282343\tbeta-Arabinose\tC5H10O5\tHMFHBZSHGGEWLO-KLVWXMOXSA-N\n+HMDB0094696\t129.078978601\t"N-Methyl proline"\tC6H11NO2\tCWLQUGTUXBXTLF-YFKPBYRVSA-N\n+HMDB0094698\t145.073893218\tN-Propionylalanine\tC6H11NO3\tINPGLFHHFHOGRM-BYPYZUCNSA-N\n+HMDB0094699\t161.087205262\t"Trimethylsilyl l-Alanine"\tC6H15NO2Si\tMNHNHHIHUYPXHP-YFKPBYRVSA-N\n+HMDB0094701\t157.073893223\tN-Acetylproline\tC7H11NO3\tGNMSLDIYJOSUSW-LURJTMIESA-N\n+HMDB0094703\t189.082119882\t"Propanoic acid, 2-(methoxyimino)-, trimethylsilyl ester"\tC7H15NO3Si\tRDATZQIINHXKAG-SOFGYWHQSA-N\n+HMDB0094704\t205.077264521\tN-Propionylmethionine\tC8H15NO3S\tRBAAEQRITQHPJM-LURJTMIESA-N\n+HMDB0094705\t112.125200515\t6-Methyl-1-heptene\tC8H16\tDFVOXRAAHOJJBN-UHFFFAOYSA-N\n+HMDB0094707\t130.1357652\t2-Propyl-1-pentanol\tC8H18O\tLASHFHLFDRTERB-UHFFFAOYSA-N\n+HMDB0094708\t194.115423686\t"Tetraethylene glycol"\tC8H18O5\tUWHCKJMYHZGTIT-UHFFFAOYSA-N\n+HMDB0094710\t246.019809216\t"3-[3-(Sulfooxy)phenyl]propanoic acid"\tC9H10O6S\tIQWLPDPKVFZEOK-UHFFFAOYSA-N\n+HMDB0240219\t282.255880332\t"cis-Vaccenic acid"\tC18H34O2\tUWHZIFQPPBDJPM-FPLPWBNLSA-N\n+HMDB0240252\t371.085245751\t"Salicyluric beta-D-glucuronide"\tC15H17NO10\tOEPADIDIUZTYOX-QKZHPOIUSA-N\n+HMDB0240253\t167.025228948\tN-Acetyltaurine\tC4H9NO4S\tCXJAAWRLVGAKDV-UHFFFAOYSA-N\n'