Mercurial > repos > fgiacomoni > massbank_ws_searchspectrum
diff t/massbank_ws_searchspectrum_Test.t @ 0:023c380900ef draft default tip
Init repository with last massbank_ws_searchspectrum master version
| author | fgiacomoni |
|---|---|
| date | Wed, 19 Apr 2017 11:31:58 -0400 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/t/massbank_ws_searchspectrum_Test.t Wed Apr 19 11:31:58 2017 -0400 @@ -0,0 +1,1178 @@ +#! perl +use diagnostics; +use warnings; +no warnings qw/void/; +use strict; +no strict "refs" ; +use Test::More qw( no_plan ); +#use Test::More tests => 8 ; ## with MAPPER SEQUENCE +use FindBin ; +use Carp ; + +## Specific Modules +use lib $FindBin::Bin ; +my $binPath = $FindBin::Bin ; +use lib::massbank_api_Test qw( :ALL ) ; +use lib::massbank_mapper_Test qw( :ALL ) ; +use lib::massbank_main_Test qw( :ALL ) ; + + +## To launch the right sequence : MAIN, API, MAPPER, THREADER, COMPUTE... +my $sequence = 'COMPUTE' ; +my $current_test = 1 ; +my $server = 'EU' ; + + +if ($sequence eq "COMPUTE") { + print "\n\t\t\t\t * * * * * * \n" ; + print "\t * * * - - - Test MassBank Main script - - - * * * \n\n" ; + sleep 1 ; print "\n** Test $current_test min_from_double_with_delta with doubles **\n" ; $current_test++ ; + is_deeply( min_from_double_with_deltaTest ( + 303.0485467, 'Da', 0.01), + 303.0385467, + 'Method \'min_and_max_from_double_with_delta\' works with a double and return the attended min value'); + + sleep 1 ; print "\n** Test $current_test max_from_double_with_delta with doubles **\n" ; $current_test++ ; + is_deeply( max_from_double_with_deltaTest ( + 303.0485467, 'Da', 0.01), + 303.0585467001, + 'Method \'max_from_double_with_delta\' works with a double and return the attended max value'); + +} +elsif ($sequence eq "MAIN") { + print "\n\t\t\t\t * * * * * * \n" ; + print "\t * * * - - - Test MassBank Main script - - - * * * \n\n" ; + ## Test NORMAL file => OK + ok( run_main_massbank_pl( + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/pcgrp_annot.tsv', + 1, 14, 7, 1, 0.5, + 'Positive', 'all', 2, 'unit', 0.3, 5, 'EU', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out1.json', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out1.csv', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out1.xls'), + 'Main script massbank_ws_searchspectrum.pl with is running and manage normal data (mz, ) ' ); + + ## Test BUG file wih relative intensities => OK + ok( run_main_massbank_pl( + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/261-pcgroups-mz-relative_int.tsv', + '2', '1', '3', '1', 0.5, + 'Positive', 'all', 2, 'unit', 0.3, 5, 'JP', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out2.json', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out2.csv', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out2.xls'), + 'Main script massbank_ws_searchspectrum.pl with is running and manage real file (mz, relative int, ...)' ); + + ## Test BUG file wih real intensities (>10000) => OK + ok( run_main_massbank_pl( + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/2214-mz-int-pcgroups.tsv', + '1', '3', '2', '1', 0.5, + 'Positive', 'all', 2, 'unit', 0.3, 5, 'JP', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out3.json', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out3.csv', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out3.xls'), + 'Main script massbank_ws_searchspectrum.pl with is running and manage real file (mz, relative int, ...)' ); + + ## Test BUG file wih relative intensities and ppm / 15 / 5 => OK + ok( run_main_massbank_pl( + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/261-pcgroups-mz-relative_int.tsv', + '2', '1', '3', '1', 0.5, + 'Positive', 'all', 2, 'ppm', 15, 5, 'JP', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out4.json', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out4.csv', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out4.xls'), + 'Main script massbank_ws_searchspectrum.pl with is running and manage real file (mz, relative int, ...)' ); + + ## Test BUG file wih real intensities (>10000) and ppm / 15 / 5 + long file => OK + ok( run_main_massbank_pl( + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/2214-mz-int-pcgroups.tsv', + '1', '3', '2', '1', 0.5, + 'Positive', 'all', 2, 'ppm', 15, 5, 'JP', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out5.json', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out5.csv', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out5.xls'), + 'Main script massbank_ws_searchspectrum.pl with is running and manage real file (mz, int, ...)' ); + + ## Test BUG file wih real intensities (>10000) and ppm / 15 / 5 + long file -> parameters c5b5ac363f7bdb2d => OK + ok( run_main_massbank_pl( + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/2214-mz-int-pcgroups.tsv', + '1', '3', '2', '1', 0.5, + 'Positive', "LC-ESI-IT,LC-ESI-ITFT,LC-ESI-ITTOF,LC-ESI-Q,LC-ESI-QFT,LC-ESI-QIT,LC-ESI-QQ,LC-ESI-QTOF,LC-ESI-TOF", 10, 'ppm', 15, 5, 'JP', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out6.json', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out6.csv', + '/Users/fgiacomoni/Inra/labs/tests/massbank_V02/out6.xls'), + 'Main script massbank_ws_searchspectrum.pl with is running and manage real file (mz, int, ...)' ); + +} + + +#-masses +#-col_mz 1 +#-col_pcgroup 14 +#-col_int 7 +#-lineheader 1 +#-mode Positive +#-instruments all +#-max 2 +#-unit unit +#-tolerance 0.3 +#-cutoff 5 +#-server JP +#-json /Users/fgiacomoni/Inra/labs/tests/massbank_V02/out.json +#-csv /Users/fgiacomoni/Inra/labs/tests/massbank_V02/out.csv +#-xls /Users/fgiacomoni/Inra/labs/tests/massbank_V02/out.xls + + +elsif ($sequence eq "MAPPER") { + + ## testing mapper module of massbank wrapper. + ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + print "\n\t\t\t\t * * * * * * \n" ; + print "\t * * * - - - Test MassBank Mapper module - - - * * * \n\n" ; + + ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + # ARGVTS : $pcs, $mzs, $ints + sleep 1 ; print "\n** Test $current_test get_pcgroup_list with pcs array **\n" ; $current_test++ ; + is_deeply( get_pcgroup_listTest ( + [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,7,8,8,8,8,8,9,9,10,10,10,10,11,12,13,13,13,14,14,14] ), + ['1', '2','3','4','5','6','7','8','9','10','11','12','13','14'] , + 'Method \'getPcgroupList\' works with various and multiple pcgroups and return the attended uniq pcgroups array'); + + + ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + # ARGVTS : $pcs, $mzs, $ints + print "\n** Test $current_test get_pcgroups with pcs, mzs, ints arrays **\n" ; $current_test++ ; + is_deeply( get_pcgroupsTest ( + [1, 2, 1, 2, 1, 2, 1], ['273.096', '289.086', '290.118', '291.096', '292.113', '579.169', '580.179'], ['300', '300', '300', '300', '300', '300', '300'] ), + { '1' => { 'id' => '1', + 'mzmed' => ['273.096','290.118','292.113','580.179'], + 'into' => ['300','300','300','300'], + 'annotation' => {}, + 'massbank_ids' => [] }, + '2' => { 'annotation' => {}, + 'into' => ['300','300','300'], + 'mzmed' => ['289.086','291.096','579.169'], + 'id' => '2', + 'massbank_ids' => [], } + }, + 'Method \'getPcgroups\' works with two pcgroups and return the attended pcgroups object'); + + ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + # ARGVTS : $pcs, $mzs, $ints + print "\n** Test $current_test get_pcgroups with pcs, mzs, ints (some can be equal to 0) arrays **\n" ; $current_test++ ; + is_deeply( get_pcgroupsTest ( + [1, 2, 1, 2, 1, 2, 1], ['273.096', '289.086', '290.118', '291.096', '292.113', '579.169', '580.179'], ['0', '300', '300', '300', '300', '300', '300'] ), + { '1' => { 'id' => '1', + 'mzmed' => ['273.096','290.118','292.113','580.179'], + 'into' => ['0','300','300','300'], + 'annotation' => {}, + 'massbank_ids' => [] }, + '2' => { 'annotation' => {}, + 'into' => ['300','300','300'], + 'mzmed' => ['289.086','291.096','579.169'], + 'id' => '2', + 'massbank_ids' => [], } + }, + 'Method \'getPcgroups\' works with two pcgroups (with intensity equal to 0) and return the attended pcgroups object'); + + + + ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + ## ARGVTS : $header, $init_pcs, $pcgroups + sleep 1 ; print "\n** Test $current_test set_massbank_matrix_object with pc array and pcgroups object **\n" ; $current_test++ ; + is_deeply( set_massbank_matrix_objectTest ( 'massbank', [1,1,2,2,1], + { '1' => { 'id' => '1', + 'mzmed' => ['273.096','290.118','292.113','580.179'], + 'into' => ['300','300','300','300'], + 'annotation' => {'num_res' => 3}, + 'massbank_ids' => ['CA0001', 'CA0011', 'CA0111'] }, + '2' => { 'annotation' => {'num_res' => 3}, + 'into' => ['300','300','300'], + 'mzmed' => ['289.086','291.096','579.169'], + 'id' => '2', + 'massbank_ids' => ['CA0002', 'CA0022', 'CA0222'], } + } ), ## end argvts + [ [ 'massbank' ], ['CA0001|CA0011|CA0111'],['CA0001|CA0011|CA0111'], ['CA0002|CA0022|CA0222'], ['CA0002|CA0022|CA0222'], ['CA0001|CA0011|CA0111'] ], + 'Method \'set_massbank_matrix_object\' works with header, pcs list, pcgroups and return the attended massbank matrix'); + + ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + ## ARGVTS : $header, $init_pcs, $pcgroups + sleep 1 ; print "\n** Test $current_test set_massbank_matrix_object with undef hearder, pc array and pcgroups object **\n" ; $current_test++ ; + is_deeply( set_massbank_matrix_objectTest ( undef, [1,1,2,2,1], + { '1' => { 'id' => '1', + 'mzmed' => ['273.096','290.118','292.113','580.179'], + 'into' => ['300','300','300','300'], + 'annotation' => {'num_res' => 3}, + 'massbank_ids' => ['CA0001', 'CA0011', 'CA0111'] }, + '2' => { 'annotation' => {'num_res' => 3}, + 'into' => ['300','300','300'], + 'mzmed' => ['289.086','291.096','579.169'], + 'id' => '2', + 'massbank_ids' => ['CA0002', 'CA0022', 'CA0222'], } + } ), ## end argvts + [ ['CA0001|CA0011|CA0111'],['CA0001|CA0011|CA0111'], ['CA0002|CA0022|CA0222'], ['CA0002|CA0022|CA0222'], ['CA0001|CA0011|CA0111'] ], + 'Method \'set_massbank_matrix_object\' works with undef header and return the attended massbank matrix'); + + ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + ## ARGVTS : $header, $init_pcs, $pcgroups + sleep 1 ; print "\n** Test $current_test set_massbank_matrix_object with empty massbankIds **\n" ; $current_test++ ; + is_deeply( set_massbank_matrix_objectTest ( 'massbank', [1,1,2,2,1], + { '1' => { 'id' => '1', + 'mzmed' => ['273.096','290.118','292.113','580.179'], + 'into' => ['300','300','300','300'], + 'annotation' => {'num_res' => 3}, + 'massbank_ids' => ['CA0001', 'CA0011', 'CA0111'] }, + '2' => { 'annotation' => {'num_res' => 0}, + 'into' => ['300','300','300'], + 'mzmed' => ['289.086','291.096','579.169'], + 'id' => '2', + 'massbank_ids' => [], } + } ), ## end argvts + [ [ 'massbank' ], ['CA0001|CA0011|CA0111'],['CA0001|CA0011|CA0111'], ['No_result_found_on_MassBank'], ['No_result_found_on_MassBank'], ['CA0001|CA0011|CA0111'] ], + 'Method \'set_massbank_matrix_object\' works with empty massbank_ids and return the attended massbank matrix'); + + ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + ## ARGVTS : $input_matrix_object, $massbank_matrix_object + sleep 1 ; print "\n** Test $current_test add_massbank_matrix_to_input_matrix with two matrix **\n" ; $current_test++ ; + is_deeply( add_massbank_matrix_to_input_matrixTest ( + [[ 'pcgroup' ],[1],[1],[2],[2],[1]], + [ [ 'massbank' ], ['CA0001|CA0011|CA0111'],['CA0001|CA0011|CA0111'], ['CA0002|CA0022|CA0222'], ['CA0002|CA0022|CA0222'], ['CA0001|CA0011|CA0111'] ], + ), ## end argvts + [ ['pcgroup','massbank'],[1,'CA0001|CA0011|CA0111'],[1,'CA0001|CA0011|CA0111'],[2,'CA0002|CA0022|CA0222'],[2,'CA0002|CA0022|CA0222'],[1,'CA0001|CA0011|CA0111'] + ], ## end results + 'Method \'add_massbank_matrix_to_input_matrix\' works with two wel formatted matrix and return the right csv matrix'); + + ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + ## ARGVTS : $pcgroups_object, threshold + sleep 1 ; print "\n** Test $current_test filter_pcgroup_res with pcgroups object and a threshold **\n" ; $current_test++ ; + is_deeply( filter_pcgroup_resTest ( + { '1' => { 'massbank_ids' => ['MB0004', 'MB0005', 'MB0008'], 'annotation' => {'res' => [ {'score' => 0.4, 'id' => 'MB0004'}, {'score' => 0.8, 'id' => 'MB0008' }, {'score' => 0.5, 'id' => 'MB0005' } ], 'num_res' => 3 } }, '2' => { 'massbank_ids' => ['MB0004', 'MB0008', 'MB0007'], 'annotation' => {'res' => [{'score' => 0.4, 'id' => 'MB0004'}, {'score' => 0.8, 'id' => 'MB0008'}, {'score' => 0.7, 'id' => 'MB0007'} ], 'num_res' => 3 } } }, + 0.5 + ), ## end argvts + { '1' => { 'massbank_ids' => ['MB0005', 'MB0008'], 'annotation' => { 'res' => [ {'score' => 0.5, 'id' => 'MB0005' }, {'score' => 0.8, 'id' => 'MB0008'} ], 'num_res' => 2 } }, '2' => { 'massbank_ids' => ['MB0007', 'MB0008'], 'annotation' => {'res' => [{'score' => 0.7, 'id' => 'MB0007' }, {'score' => 0.8, 'id' => 'MB0008' } ], 'num_res' => 2 } } }, + ## end results + 'Method \'filter_pcgroup_resTest\' works with well formated pcgroups object and a float for threshold'); + + ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + ## ARGVTS : $pcgroups_object, threshold + sleep 1 ; print "\n** Test $current_test filter_pcgroup_res with empty pcgroups object and a threshold **\n" ; $current_test++ ; + is_deeply( filter_pcgroup_resTest ( + { '1' => { 'massbank_ids' => [], 'annotation' => {'res' => [ ], 'num_res' => 1 } }, '2' => { 'massbank_ids' => [], 'annotation' => {'res' => [ ], 'num_res' => 1 } } }, + 0.5 + ), ## end argvts + { '1' => { 'massbank_ids' => [], 'annotation' => { 'res' => [ ], 'num_res' => 0 } }, '2' => { 'massbank_ids' => [], 'annotation' => {'res' => [ ], 'num_res' => 0 } } }, + ## end results + 'Method \'filter_pcgroup_resTest\' works with an empty pcgroups object and a float for threshold'); + + ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + ## ARGVTS : $pcgroups_object, threshold + sleep 1 ; print "\n** Test $current_test filter_pcgroup_res with pcgroups object but undef params and a threshold **\n" ; $current_test++ ; + is_deeply( filter_pcgroup_resTest ( + { '1' => { 'massbank_ids' => [], 'annotation' => {'res' => [ {'score' => undef, 'id' => undef} ], 'num_res' => 0 } }, '2' => { 'massbank_ids' => ['MB0004', 'MB0008', 'MB0007'], 'annotation' => {'res' => [{'score' => 0.4, 'id' => 'MB0004'}, {'score' => 0.8, 'id' => 'MB0008'}, {'score' => 0.7, 'id' => 'MB0007'} ], 'num_res' => 3 } } }, + 0.5 + ), ## end argvts + { '1' => { 'massbank_ids' => [], 'annotation' => { 'res' => [ {'score' => undef, 'id' => undef } ], 'num_res' => 0 } }, '2' => { 'massbank_ids' => ['MB0007', 'MB0008'], 'annotation' => {'res' => [{'score' => 0.7, 'id' => 'MB0007' }, {'score' => 0.8, 'id' => 'MB0008' } ], 'num_res' => 2 } } }, + ## end results + 'Method \'filter_pcgroup_resTest\' works with well formated pcgroups object (but undef value) and a float for threshold'); + + ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + ## ARGVTS : $pcgroups_object + sleep 1 ; print "\n** Test $current_test compute_ids_from_pcgroups_res with pcgroups object **\n" ; $current_test++ ; + is_deeply( compute_ids_from_pcgroups_resTest ( + { '1' => { 'massbank_ids' => ['MB0004', 'MB0005', 'MB0008'], 'annotation' => {'res' => [ {'score' => 0.4, 'id' => 'MB0004'}, {'score' => 0.8, 'id' => 'MB0008' }, {'score' => 0.5, 'id' => 'MB0005' } ], 'num_res' => 3 } }, '2' => { 'massbank_ids' => ['MB0004', 'MB0008', 'MB0007'], 'annotation' => {'res' => [{'score' => 0.4, 'id' => 'MB0004'}, {'score' => 0.8, 'id' => 'MB0008'}, {'score' => 0.7, 'id' => 'MB0007'} ], 'num_res' => 3 } } }, + ), ## end argvts + ['MB0004', 'MB0005', 'MB0007', 'MB0008'], + ## end results + 'Method \'compute_ids_from_pcgroups_res\' works with a classic pcgroups object return a nice and unique list of ids'); + + + ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + ## ARGVTS : $massbank_ids, chunk_size + sleep 1 ; print "\n** Test $current_test get_massbank_records_by_chunk with ids list **\n" ; $current_test++ ; + is_deeply( get_massbank_records_by_chunkTest ( + 'EU', + ['KOX00002', 'KOX00003', 'FU000001', 'TY000040', 'TY000041', 'FU000002'], + 2 + ), ## end argvts + ['ACCESSION: KOX00002 +RECORD_TITLE: GABA; LC-ESI-QTOF; MS2; MERGED; [M+H]+ +DATE: 2011.08.24 (Created 2008.11.28) +AUTHORS: Institute for Advanced Biosciences, Keio Univ. +LICENSE: Copyright 2006-2011 Keio +COMMENT: Peak data in the following records are not open to the public as requested by their authors. +COMMENT: Instead MassBank provides the merged spectra for the public. +COMMENT: This record was generated by merging the following three MassBank records. +COMMENT: [Merging] KO006374 GABA; LC-ESI-QTOF; MS2; CE:10 V [M+H]+ +COMMENT: [Merging] KO006375 GABA; LC-ESI-QTOF; MS2; CE:20 V [M+H]+ +COMMENT: [Merging] KO006376 GABA; LC-ESI-QTOF; MS2; CE:30 V [M+H]+ +COMMENT: [Merging] KO006377 GABA; LC-ESI-QTOF; MS2; CE:40 V [M+H]+ +COMMENT: [Merging] KO006378 GABA; LC-ESI-QTOF; MS2; CE:50 V [M+H]+ +CH$NAME: GABA +CH$NAME: 4-Aminobutanoate +CH$NAME: 4-Aminobutanoic acid +CH$NAME: 4-Aminobutylate +CH$NAME: 4-Aminobutyrate +CH$NAME: 4-Aminobutyric acid +CH$NAME: gamma-Aminobutyric acid +CH$COMPOUND_CLASS: N/A +CH$FORMULA: C4H9NO2 +CH$EXACT_MASS: 103.06333 +CH$SMILES: NCCCC(O)=O +CH$IUPAC: InChI=1S/C4H9NO2/c5-3-1-2-4(6)7/h1-3,5H2,(H,6,7) +CH$LINK: CAS 56-12-2 +CH$LINK: CHEBI 30566 +CH$LINK: KEGG C00334 +CH$LINK: NIKKAJI J1.375G +CH$LINK: PUBCHEM SID:3628 +AC$INSTRUMENT: Qstar, Applied Biosystems +AC$INSTRUMENT_TYPE: LC-ESI-QTOF +AC$MASS_SPECTROMETRY: MS_TYPE MS2 +AC$MASS_SPECTROMETRY: ION_MODE POSITIVE +MS$FOCUSED_ION: PRECURSOR_M/Z 104 +MS$FOCUSED_ION: PRECURSOR_TYPE [M+H]+ +PK$ANNOTATION: 39.0234750963 45.0340397826 68.0500241978 69.0340397826 86.0605888841 87.0446044689 104.0711535704 +PK$NUM_PEAK: N/A +PK$PEAK: m/z int. rel.int. + N/A +', + 'ACCESSION: KOX00003 +RECORD_TITLE: Adenosine; LC-ESI-QTOF; MS2; MERGED; [M-H]- +DATE: 2012.05.21 (Created 2008.11.28) +AUTHORS: Institute for Advanced Biosciences, Keio Univ. +LICENSE: Copyright 2006-2011 Keio +COMMENT: Peak data in the following records are not open to the public as requested by their authors. +COMMENT: Instead MassBank provides the merged spectra for the public. +COMMENT: This record was generated by merging the following three MassBank records. +COMMENT: [Merging] KO004298 Adenosine; LC-ESI-QTOF; MS2; CE:10 V [M-H]- +COMMENT: [Merging] KO004299 Adenosine; LC-ESI-QTOF; MS2; CE:20 V [M-H]- +COMMENT: [Merging] KO004301 Adenosine; LC-ESI-QTOF; MS2; CE:40 V [M-H]- +COMMENT: [Merging] KO004302 Adenosine; LC-ESI-QTOF; MS2; CE:50 V [M-H]- +CH$NAME: Adenosine +CH$COMPOUND_CLASS: N/A +CH$FORMULA: C10H13N5O4 +CH$EXACT_MASS: 267.09675 +CH$SMILES: OC[C@@H](O1)[C@@H](O)[C@@H](O)[C@@H]1n(c3)c(n2)c(n3)c(N)nc2 +CH$IUPAC: InChI=1S/C10H13N5O4/c11-8-5-9(13-2-12-8)15(3-14-5)10-7(18)6(17)4(1-16)19-10/h2-4,6-7,10,16-18H,1H2,(H2,11,12,13)/t4-,6-,7-,10-/m1/s1 +CH$LINK: CAS 58-61-7 +CH$LINK: CHEBI 16335 +CH$LINK: CHEMPDB ADN +CH$LINK: KEGG C00212 +CH$LINK: NIKKAJI J4.501B +CH$LINK: PUBCHEM SID:3512 +AC$INSTRUMENT: Qstar, Applied Biosystems +AC$INSTRUMENT_TYPE: LC-ESI-QTOF +AC$MASS_SPECTROMETRY: MS_TYPE MS2 +AC$MASS_SPECTROMETRY: ION_MODE NEGATIVE +MS$FOCUSED_ION: PRECURSOR_M/Z 266 +MS$FOCUSED_ION: PRECURSOR_TYPE [M-H]- +PK$ANNOTATION: 107.0357711171 134.0466701544 136.0623202186 266.0889288996 +PK$NUM_PEAK: N/A +PK$PEAK: m/z int. rel.int. + N/A +', + 'ACCESSION: FU000001 +RECORD_TITLE: 3-Man2GlcNAc; LC-ESI-QQ; MS2; CE:15V; Amide +DATE: 2016.01.19 (Created 2009.02.18, modified 2011.05.06) +AUTHORS: Matsuura F, Ohta M, Kittaka M, Faculty of Life Science and Biotechnology, Fukuyama University +LICENSE: CC BY-SA +CH$NAME: 3-Man2GlcNAc +CH$NAME: Man-alpha-1-3Man-beta-1-4GlcNac +CH$COMPOUND_CLASS: Natural Product; Oligosaccharide; N-linked glycan; High-mannose type +CH$FORMULA: C20H35NO16 +CH$EXACT_MASS: 545.19558 +CH$SMILES: CC(=O)NC(C(O)1)C(O)C(OC(O2)C(O)C(OC(O3)C(O)C(O)C(O)C(CO)3)C(O)C(CO)2)C(CO)O1 +CH$IUPAC: InChI=1/C20H35NO16/c1-5(25)21-9-12(28)16(8(4-24)33-18(9)32)36-20-15(31)17(11(27)7(3-23)35-20)37-19-14(30)13(29)10(26)6(2-22)34-19/h6-20,22-24,26-32H,2-4H2,1H3,(H,21,25)/t6-,7-,8-,9-,10-,11-,12-,13+,14-,15+,16-,17+,18+,19-,20+/m1/s1/f/h21H +CH$LINK: CHEMSPIDER 24606097 +CH$LINK: KEGG G00319 +CH$LINK: OligosaccharideDataBase man 547428 +CH$LINK: OligosaccharideDataBase2D map5 ODS=1.21 Amide=2.85 +AC$INSTRUMENT: 2695 HPLC Quadro Micro API, Waters +AC$INSTRUMENT_TYPE: LC-ESI-QQ +AC$MASS_SPECTROMETRY: MS_TYPE MS2 +AC$MASS_SPECTROMETRY: ION_MODE POSITIVE +AC$MASS_SPECTROMETRY: COLLISION_ENERGY 15.0 V +AC$MASS_SPECTROMETRY: DATAFORMAT Centroid +AC$MASS_SPECTROMETRY: DESOLVATION_GAS_FLOW 897 L/Hr +AC$MASS_SPECTROMETRY: DESOLVATION_TEMPERATURE 399 C +AC$MASS_SPECTROMETRY: FRAGMENTATION_METHOD LOW-ENERGY CID +AC$MASS_SPECTROMETRY: IONIZATION ESI +AC$MASS_SPECTROMETRY: SCANNING 1 amu/sec (m/z = 20-2040) +AC$MASS_SPECTROMETRY: SOURCE_TEMPERATURE 100C +AC$CHROMATOGRAPHY: COLUMN_NAME TSK-GEL Amide-80 2.0 mm X 250 mm (TOSOH) +AC$CHROMATOGRAPHY: COLUMN_TEMPERATURE 40 C +AC$CHROMATOGRAPHY: FLOW_GRADIENT 74/26 at 0 min, 50/50 at 60 min. +AC$CHROMATOGRAPHY: FLOW_RATE 0.2 ml/min +AC$CHROMATOGRAPHY: RETENTION_TIME 7.080 min +AC$CHROMATOGRAPHY: SAMPLING_CONE 43.10 V +AC$CHROMATOGRAPHY: SOLVENT CH3CN/H2O +MS$FOCUSED_ION: DERIVATIVE_FORM C29H46N2O17 +MS$FOCUSED_ION: DERIVATIVE_MASS 694.27965 +MS$FOCUSED_ION: DERIVATIVE_TYPE ABEE (p-Aminobenzoic acid ethyl ester) +MS$FOCUSED_ION: PRECURSOR_M/Z 695.00 +MS$FOCUSED_ION: PRECURSOR_TYPE [M+H]+ +PK$SPLASH: splash10-00080az000-bfe86aa7211a87812a06 +PK$NUM_PEAK: 8 +PK$PEAK: m/z int. rel.int. + 370.8 3.277e5 366 + 371.4 3.036e4 34 + 532.0 5.812e4 65 + 532.6 2.982e5 333 + 533.3 5.196e4 58 + 694.1 4.564e5 510 + 694.8 8.939e5 999 + 695.4 5.537e4 62 +', + 'ACCESSION: FU000002 +RECORD_TITLE: 3-Man2GlcNAc; LC-ESI-QQ; MS2; CE:20V; Amide +DATE: 2016.01.19 (Created 2009.02.18, modified 2011.05.06) +AUTHORS: Matsuura F, Ohta M, Kittaka M, Faculty of Life Science and Biotechnology, Fukuyama University +LICENSE: CC BY-SA +CH$NAME: 3-Man2GlcNAc +CH$NAME: Man-alpha-1-3Man-beta-1-5GlcNac +CH$COMPOUND_CLASS: Natural Product; Oligosaccharide; N-linked glycan; High-mannose type +CH$FORMULA: C20H35NO16 +CH$EXACT_MASS: 545.19558 +CH$SMILES: CC(=O)NC(C(O)1)C(O)C(OC(O2)C(O)C(OC(O3)C(O)C(O)C(O)C(CO)3)C(O)C(CO)2)C(CO)O1 +CH$IUPAC: InChI=1/C20H35NO16/c1-5(25)21-9-12(28)16(8(4-24)33-18(9)32)36-20-15(31)17(11(27)7(3-23)35-20)37-19-14(30)13(29)10(26)6(2-22)34-19/h6-20,22-24,26-32H,2-4H2,1H3,(H,21,25)/t6-,7-,8-,9-,10-,11-,12-,13+,14-,15+,16-,17+,18+,19-,20+/m1/s1/f/h21H +CH$LINK: CHEMSPIDER 24606097 +CH$LINK: KEGG G00319 +CH$LINK: OligosaccharideDataBase man 547428 +CH$LINK: OligosaccharideDataBase2D map5 ODS=1.21 Amide=2.85 +AC$INSTRUMENT: 2695 HPLC Quadro Micro API, Waters +AC$INSTRUMENT_TYPE: LC-ESI-QQ +AC$MASS_SPECTROMETRY: MS_TYPE MS2 +AC$MASS_SPECTROMETRY: ION_MODE POSITIVE +AC$MASS_SPECTROMETRY: COLLISION_ENERGY 20.0 V +AC$MASS_SPECTROMETRY: DATAFORMAT Centroid +AC$MASS_SPECTROMETRY: DESOLVATION_GAS_FLOW 897 L/Hr +AC$MASS_SPECTROMETRY: DESOLVATION_TEMPERATURE 399 C +AC$MASS_SPECTROMETRY: FRAGMENTATION_METHOD LOW-ENERGY CID +AC$MASS_SPECTROMETRY: IONIZATION ESI +AC$MASS_SPECTROMETRY: SCANNING 1 amu/sec (m/z = 20-2040) +AC$MASS_SPECTROMETRY: SOURCE_TEMPERATURE 100C +AC$CHROMATOGRAPHY: COLUMN_NAME TSK-GEL Amide-80 2.0 mm X 250 mm (TOSOH) +AC$CHROMATOGRAPHY: COLUMN_TEMPERATURE 40 C +AC$CHROMATOGRAPHY: FLOW_GRADIENT 74/26 at 0 min, 50/50 at 60 min. +AC$CHROMATOGRAPHY: FLOW_RATE 0.2 ml/min +AC$CHROMATOGRAPHY: RETENTION_TIME 7.088 min +AC$CHROMATOGRAPHY: SAMPLING_CONE 43.10 V +AC$CHROMATOGRAPHY: SOLVENT CH3CN/H2O +MS$FOCUSED_ION: DERIVATIVE_FORM C29H46N2O17 +MS$FOCUSED_ION: DERIVATIVE_MASS 694.27965 +MS$FOCUSED_ION: DERIVATIVE_TYPE ABEE (p-Aminobenzoic acid ethyl ester) +MS$FOCUSED_ION: PRECURSOR_M/Z 695.00 +MS$FOCUSED_ION: PRECURSOR_TYPE [M+H]+ +PK$SPLASH: splash10-000z0fb000-52e2618a90c53226e008 +PK$NUM_PEAK: 10 +PK$PEAK: m/z int. rel.int. + 324.9 5.549e4 65 + 370.8 8.511e5 999 + 371.3 8.989e4 106 + 486.8 2.622e4 31 + 532.0 5.832e4 68 + 532.7 3.515e5 413 + 533.3 3.910e4 46 + 693.9 4.249e4 50 + 694.5 1.979e5 232 + 695.3 9.682e4 114 +', + 'ACCESSION: TY000040 +RECORD_TITLE: Aconitine; LC-ESI-ITTOF; MS; [M+H]+ +DATE: 2016.01.19 (Created 2008.10.10, modified 2011.05.06) +AUTHORS: Ken Tanaka +LICENSE: CC BY-SA +CH$NAME: Aconitine +CH$NAME: NSC56464 +CH$NAME: 16-Ethyl-1alpha,6alpha,19beta-trimethoxy-4-(methoxymethyl)-aconitane-3alpha,8,10alpha,11,18alpha-pentol, 8-acetate 10-benzoate +CH$NAME: 20-ethyl-3alpha,13,15alpha-trihydroxy-1alpha,6alpha,16beta-trimethoxy-4-(methoxymethyl)aconitane-8,14alpha-diyl 8-acetate 14-benzoate +CH$COMPOUND_CLASS: Natural Product; Alkaloid +CH$FORMULA: C34H47NO11 +CH$EXACT_MASS: 645.31491 +CH$SMILES: COC(C7)C(C61[H])(C5([H])2)C(N(CC(COC)6C7O)CC)([H])C(C(C5([H])3)(C(C(OC)C(O)(C(OC(=O)c(c4)cccc4)3)C2)O)OC(C)=O)([H])C1OC +CH$IUPAC: InChI=1S/C34H47NO11/c1-7-35-15-31(16-41-3)20(37)13-21(42-4)33-19-14-32(40)28(45-30(39)18-11-9-8-10-12-18)22(19)34(46-17(2)36,27(38)29(32)44-6)23(26(33)35)24(43-5)25(31)33/h8-12,19-29,37-38,40H,7,13-16H2,1-6H3/t19-,20-,21+,22-,23+,24+,25-,26+,27+,28-,29+,31+,32-,33+,34-/m1/s1 +CH$LINK: CAS 302-27-2 +CH$LINK: NIKKAJI J9.871J +CH$LINK: PUBCHEM 245005 +AC$INSTRUMENT: Shimadzu LC20A-IT-TOFMS +AC$INSTRUMENT_TYPE: LC-ESI-ITTOF +AC$MASS_SPECTROMETRY: MS_TYPE MS +AC$MASS_SPECTROMETRY: ION_MODE POSITIVE +AC$MASS_SPECTROMETRY: CDL_TEMPERATURE 200 C +AC$MASS_SPECTROMETRY: INTERFACE_VOLTAGE +4.50 kV +AC$MASS_SPECTROMETRY: SCANNING_RANGE 100-2000 +AC$CHROMATOGRAPHY: COLUMN_NAME Waters Atlantis T3 (2.1 x 150 mm, 5 um) +AC$CHROMATOGRAPHY: COLUMN_TEMPERATURE 40 C +AC$CHROMATOGRAPHY: FLOW_GRADIENT 10 % B to 100 % B/40 min +AC$CHROMATOGRAPHY: FLOW_RATE 0.2 ml/min +AC$CHROMATOGRAPHY: RETENTION_TIME 1197.701 +AC$CHROMATOGRAPHY: SOLVENT (A)5 mM ammonium acetate, (B)CH3CN +MS$FOCUSED_ION: ION_TYPE [M+H]+ +PK$SPLASH: splash10-000000z000-1f6554288e1249b37bcb +PK$NUM_PEAK: 3 +PK$PEAK: m/z int. rel.int. + 646.3223 64380108 999 + 647.3252 26819201 416 + 648.3309 7305831 113 +', + 'ACCESSION: TY000041 +RECORD_TITLE: Atropine; LC-ESI-ITTOF; MS; [M+H]+ +DATE: 2016.01.19 (Created 2008.10.10, modified 2011.05.06) +AUTHORS: Ken Tanaka +LICENSE: CC BY-SA +CH$NAME: Atropine +CH$NAME: Benzeneacetic acid, alpha-(hydroxymethyl)- (3-endo)-8-methyl-8-azabicyclo[3.2.1]oct-3-yl ester +CH$NAME: 1alphaH,5alphaH-Tropan-3alpha-ol (+-)-tropate (ester) +CH$NAME: Benzeneacetic acid, alpha-(hydroxymethyl)-, 8-methyl-8-azabicyclo[3.2.1]oct-3-yl ester, endo- +CH$NAME: (+-)-Atropine +CH$NAME: (+-)-Hyoscyamine +CH$NAME: Tropine (+-)-tropate +CH$NAME: dl-Tropyl tropate +CH$NAME: dl-Hyoscyamine +CH$NAME: Tropine tropate +CH$NAME: Atropinol +CH$NAME: Eyesules +CH$NAME: Atropen +CH$NAME: Isopto-atropine +CH$NAME: Troyl tropate +CH$NAME: Belladenal +CH$NAME: Atropina +CH$NAME: Cytospaz +CH$NAME: Donnagel +CH$NAME: Anaspaz +CH$NAME: Atnaa +CH$NAME: Lonox +CH$NAME: Neo-Diophen +CH$NAME: DL-Tropanyl 2-hydroxy-1-phenylpropionate +CH$NAME: 2-Phenylhydracrylic acid 3-alpha-tropanyl ester +CH$NAME: tropan-3alpha-yl 3-hydroxy-2-phenylpropanoate +CH$NAME: 8-Methyl-8-azabicyclo[3.2.1]oct-3-yl tropate +CH$NAME: 8-Methyl-8-azabicyclo[3.2.1]oct-3-yl 3-hydroxy-2-phenylpropanoate +CH$NAME: alpha-(Hydroxymethyl)benzeneacetic acid 8-methyl-8-azabicyclo(3.2.1)oct-3-yl ester +CH$NAME: Benzeneacetic acid, alpha-(hydroxymethyl)-, (3-endo)-8-methyl-8-azabicyclo(3.2.1)oct-3-yl ester +CH$NAME: (3-endo)-8-methyl-8-azabicyclo[3.2.1]oct-3-yl (2S)-3-hydroxy-2-phenylpropanoate +CH$NAME: [(1R,5S)-8-methyl-8-azabicyclo[3.2.1]octan-3-yl] 3-hydroxy-2-phenylpropanoate +CH$NAME: beta-(Hydroxymethyl)benzeneacetic acid 8-methyl-8-azabicyclo[3.2.1]oct-3-yl ester +CH$NAME: endo-(+/-)-alpha-(Hydroxymethyl)benzeneacetic acid 8-methyl-8-azabicyclo[3.2.1]oct-3-yl ester +CH$COMPOUND_CLASS: Natural Product; Alkaloid +CH$FORMULA: C17H23NO3 +CH$EXACT_MASS: 289.16779 +CH$SMILES: OCC(C(=O)OC(C2)CC(C3)N(C)C(C3)2)c(c1)cccc1 +CH$IUPAC: InChI=1S/C17H23NO3/c1-18-13-7-8-14(18)10-15(9-13)21-17(20)16(11-19)12-5-3-2-4-6-12/h2-6,13-16,19H,7-11H2,1H3/t13-,14+,15+,16? +CH$LINK: CAS 51-55-8 +CH$LINK: NIKKAJI J237.402A +CH$LINK: PUBCHEM 174174 +AC$INSTRUMENT: Shimadzu LC20A-IT-TOFMS +AC$INSTRUMENT_TYPE: LC-ESI-ITTOF +AC$MASS_SPECTROMETRY: MS_TYPE MS +AC$MASS_SPECTROMETRY: ION_MODE POSITIVE +AC$MASS_SPECTROMETRY: CDL_TEMPERATURE 200 C +AC$MASS_SPECTROMETRY: INTERFACE_VOLTAGE +4.50 kV +AC$MASS_SPECTROMETRY: SCANNING_RANGE 100-2000 +AC$CHROMATOGRAPHY: COLUMN_NAME Waters Atlantis T3 (2.1 x 150 mm, 5 um) +AC$CHROMATOGRAPHY: COLUMN_TEMPERATURE 40 C +AC$CHROMATOGRAPHY: FLOW_GRADIENT 10 % B to 100 % B/40 min +AC$CHROMATOGRAPHY: FLOW_RATE 0.2 ml/min +AC$CHROMATOGRAPHY: RETENTION_TIME 641.701 +AC$CHROMATOGRAPHY: SOLVENT (A)5 mM ammonium acetate, (B)CH3CN +MS$FOCUSED_ION: ION_TYPE [M+H]+ +PK$SPLASH: splash10-00z0000000-bdadd43ab0e2444986f1 +PK$NUM_PEAK: 2 +PK$PEAK: m/z int. rel.int. + 290.1754 109188681 999 + 291.1762 21571851 197 +' + ], + ## end results + 'Method \'get_massbank_records_by_chunk\' works with a full ids list and return a nice and unique list of records from WS-MassBank'); + + +#### #### ##### ###### ################################################ ###### ##### ##### ###### ###### + + ## END of MAPPER SEQUENCE ## + +#### #### ##### ###### ################################################ ###### ##### ##### ###### ###### +} + +#### #### ##### ###### ################################################ ###### ##### ##### ###### ###### + + ## START of API SEQUENCE ## + +#### #### ##### ###### ################################################ ###### ##### ##### ###### ###### +elsif ($sequence eq "API") { + + ## testing connectMassBank on Japan and DE servers. + ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + print "\n\t\t\t\t * * * * * * \n" ; + print "\t * * * - - - Test MassBank API from SOAP - - - * * * \n\n" ; + + + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +print "\n** Test $current_test connectMassBankJP with real uri and proxy **\n" ; $current_test++; +isa_ok( connectMassBankJPTest(), 'SOAP::Lite' ); + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +print "\n** Test $current_test connectMassBankDE with real uri and proxy **\n" ; $current_test++ ; +isa_ok( connectMassBankDETest(), 'SOAP::Lite' ); + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +print "\n** Test $current_test getInstrumentTypes with the JP server **\n" ; $current_test++ ; +#is_deeply( getInstrumentTypesTest('JP'), ['APCI-ITFT', 'APCI-ITTOF','CE-ESI-TOF', 'CI-B', 'EI-B', 'EI-EBEB', 'ESI-ITFT', 'ESI-ITTOF', 'FAB-B', 'FAB-EB', 'FAB-EBEB', 'FD-B', 'FI-B', 'GC-EI-QQ', 'GC-EI-TOF', 'LC-APCI-QTOF', 'LC-APPI-QQ', 'LC-ESI-IT', 'LC-ESI-ITFT', 'LC-ESI-ITTOF', 'LC-ESI-Q', 'LC-ESI-QFT', 'LC-ESI-QIT', 'LC-ESI-QQ', 'LC-ESI-QTOF', 'LC-ESI-TOF', 'MALDI-QIT', 'MALDI-TOF', 'MALDI-TOFTOF'], "Works with \'JP server\' and return a list of instrument types"); +print "-- no test -- skipped because JP getInstrumentTypes method is down\n" ; + +print "\n** Test $current_test getInstrumentTypes with the DE server **\n" ; $current_test++ ; +#is_deeply( getInstrumentTypesTest('EU'), ['APCI-ITFT', 'APCI-ITTOF', 'CE-ESI-TOF', 'CI-B', 'EI-B', 'EI-EBEB', 'ESI-FTICR', 'ESI-ITFT', 'ESI-ITTOF', 'FAB-B', 'FAB-EB', 'FAB-EBEB', 'FD-B', 'FI-B', 'GC-EI-QQ', 'GC-EI-TOF', 'HPLC-ESI-TOF', 'LC-APCI-Q', 'LC-APCI-QTOF', 'LC-APPI-QQ', 'LC-ESI-IT', 'LC-ESI-ITFT', 'LC-ESI-ITTOF', 'LC-ESI-Q', 'LC-ESI-QFT', 'LC-ESI-QIT', 'LC-ESI-QQ', 'LC-ESI-QTOF', 'LC-ESI-TOF', 'MALDI-QIT', 'MALDI-TOF', 'MALDI-TOFTOF', 'UPLC-ESI-QTOF'], "Works with $server server and return a list of instrument types"); +print "-- no test -- skipped because DE method is down\n" ; +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +print "\n** Test $current_test initRecordObject on a well formatted massbank record string **\n" ; $current_test++ ; +is_deeply( initRecordObjectTest('ACCESSION: KOX00001 +RECORD_TITLE: GABA; LC-ESI-QTOF; MS2; MERGED; [M-H]- +DATE: 2011.08.24 (Created 2008.11.28) +AUTHORS: Institute for Advanced Biosciences, Keio Univ. +LICENSE: Copyright 2006-2011 Keio +COMMENT: Peak data in the following records are not open to the public as requested by their authors. +COMMENT: Instead MassBank provides the merged spectra for the public. +COMMENT: This record was generated by merging the following three MassBank records. +COMMENT: [Merging] KO004290 GABA; LC-ESI-QTOF; MS2; CE:10 V [M-H]- +COMMENT: [Merging] KO004291 GABA; LC-ESI-QTOF; MS2; CE:20 V [M-H]- +COMMENT: [Merging] KO004292 GABA; LC-ESI-QTOF; MS2; CE:30 V [M-H]- +CH$NAME: GABA +CH$NAME: 4-Aminobutanoate +CH$NAME: 4-Aminobutanoic acid +CH$NAME: 4-Aminobutylate +CH$NAME: 4-Aminobutyrate +CH$NAME: 4-Aminobutyric acid +CH$NAME: gamma-Aminobutyric acid +CH$COMPOUND_CLASS: N/A +CH$FORMULA: C4H9NO2 +CH$EXACT_MASS: 103.06333 +CH$SMILES: NCCCC(O)=O +CH$IUPAC: InChI=1S/C4H9NO2/c5-3-1-2-4(6)7/h1-3,5H2,(H,6,7) +CH$LINK: CAS 56-12-2 +CH$LINK: CHEBI 30566 +CH$LINK: KEGG C00334 +CH$LINK: NIKKAJI J1.375G +CH$LINK: PUBCHEM SID:3628 +AC$INSTRUMENT: Qstar, Applied Biosystems +AC$INSTRUMENT_TYPE: LC-ESI-QTOF +AC$MASS_SPECTROMETRY: MS_TYPE MS2 +AC$MASS_SPECTROMETRY: ION_MODE NEGATIVE +MS$FOCUSED_ION: PRECURSOR_M/Z 102 +MS$FOCUSED_ION: PRECURSOR_TYPE [M-H]- +PK$ANNOTATION: 41.9979886273 84.0449388199 102.0555035062 +PK$NUM_PEAK: N/A +PK$PEAK: m/z int. rel.int. + N/A +'), +{ + 'CH$NAME' => 'gamma-Aminobutyric acid', + 'AC$MASS_SPECTROMETRY' => 'ION_MODE NEGATIVE', + 'CH$LINK: PUBCHEM SID' => '3628', + 'ACCESSION' => 'KOX00001', + 'CH$COMPOUND_CLASS' => 'N/A', + 'LICENSE' => 'Copyright 2006-2011 Keio', + 'COMMENT: [Merging] KO004292 GABA; LC-ESI-QTOF; MS2; CE' => '30 V [M-H]-', + 'COMMENT: [Merging] KO004291 GABA; LC-ESI-QTOF; MS2; CE' => '20 V [M-H]-', + 'CH$IUPAC' => 'InChI=1S/C4H9NO2/c5-3-1-2-4(6)7/h1-3,5H2,(H,6,7)', + 'PK$ANNOTATION' => '41.9979886273 84.0449388199 102.0555035062', + 'AUTHORS' => 'Institute for Advanced Biosciences, Keio Univ.', + 'PK$NUM_PEAK' => 'N/A', + 'CH$SMILES' => 'NCCCC(O)=O', + 'AC$INSTRUMENT_TYPE' => 'LC-ESI-QTOF', + 'CH$EXACT_MASS' => '103.06333', + 'CH$LINK' => 'NIKKAJI J1.375G', + 'CH$FORMULA' => 'C4H9NO2', + 'PK$PEAK' => { + 'relint' => [], + 'int' => [], + 'mz' => [] + }, + 'DATE' => '2011.08.24 (Created 2008.11.28)', + 'MS$FOCUSED_ION' => 'PRECURSOR_TYPE [M-H]-', + 'RECORD_TITLE' => 'GABA; LC-ESI-QTOF; MS2; MERGED; [M-H]-', + 'COMMENT: [Merging] KO004290 GABA; LC-ESI-QTOF; MS2; CE' => '10 V [M-H]-', + 'AC$INSTRUMENT' => 'Qstar, Applied Biosystems', + 'COMMENT' => 'This record was generated by merging the following three MassBank records.' + }, +"Works with a well formatted massbank record string and return one record object from \"KOX00001\" id"); + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +print "\n** Test $current_test initRecordObject on a well formatted massbank record string (has peaks !!) **\n" ; $current_test++ ; +is_deeply( initRecordObjectTest('ACCESSION: TY000040 +RECORD_TITLE: Aconitine; LC-ESI-ITTOF; MS; [M+H]+ +DATE: 2011.05.06 (Created 2008.10.10) +AUTHORS: Ken Tanaka +LICENSE: CC BY-SA +CH$NAME: Aconitine +CH$NAME: NSC56464 +CH$NAME: 16-Ethyl-1alpha,6alpha,19beta-trimethoxy-4-(methoxymethyl)-aconitane-3alpha,8,10alpha,11,18alpha-pentol, 8-acetate 10-benzoate +CH$NAME: 20-ethyl-3alpha,13,15alpha-trihydroxy-1alpha,6alpha,16beta-trimethoxy-4-(methoxymethyl)aconitane-8,14alpha-diyl 8-acetate 14-benzoate +CH$COMPOUND_CLASS: Natural Product; Alkaloid +CH$FORMULA: C34H47NO11 +CH$EXACT_MASS: 645.31491 +CH$SMILES: COC(C7)C(C61[H])(C5([H])2)C(N(CC(COC)6C7O)CC)([H])C(C(C5([H])3)(C(C(OC)C(O)(C(OC(=O)c(c4)cccc4)3)C2)O)OC(C)=O)([H])C1OC +CH$IUPAC: InChI=1S/C34H47NO11/c1-7-35-15-31(16-41-3)20(37)13-21(42-4)33-19-14-32(40)28(45-30(39)18-11-9-8-10-12-18)22(19)34(46-17(2)36,27(38)29(32)44-6)23(26(33)35)24(43-5)25(31)33/h8-12,19-29,37-38,40H,7,13-16H2,1-6H3/t19-,20-,21+,22-,23+,24+,25-,26+,27+,28-,29+,31+,32-,33+,34-/m1/s1 +CH$LINK: CAS 302-27-2 +CH$LINK: NIKKAJI J9.871J +CH$LINK: PUBCHEM 245005 +AC$INSTRUMENT: Shimadzu LC20A-IT-TOFMS +AC$INSTRUMENT_TYPE: LC-ESI-ITTOF +AC$MASS_SPECTROMETRY: MS_TYPE MS +AC$MASS_SPECTROMETRY: ION_MODE POSITIVE +AC$MASS_SPECTROMETRY: CDL_TEMPERATURE 200 C +AC$MASS_SPECTROMETRY: INTERFACE_VOLTAGE +4.50 kV +AC$MASS_SPECTROMETRY: SCANNING_RANGE 100-2000 +AC$CHROMATOGRAPHY: COLUMN_NAME Waters Atlantis T3 (2.1 x 150 mm, 5 um) +AC$CHROMATOGRAPHY: COLUMN_TEMPERATURE 40 C +AC$CHROMATOGRAPHY: FLOW_GRADIENT 10 % B to 100 % B/40 min +AC$CHROMATOGRAPHY: FLOW_RATE 0.2 ml/min +AC$CHROMATOGRAPHY: RETENTION_TIME 1197.701 +AC$CHROMATOGRAPHY: SOLVENT (A)5 mM ammonium acetate, (B)CH3CN +MS$FOCUSED_ION: ION_TYPE [M+H]+ +PK$NUM_PEAK: 3 +PK$PEAK: m/z int. rel.int. + 646.3223 64380108 999 + 647.3252 26819201 416 + 648.3309 7305831 113 +'), +{ + 'MS$FOCUSED_ION' => 'ION_TYPE [M+H]+', + 'CH$COMPOUND_CLASS' => 'Natural Product; Alkaloid', + 'CH$EXACT_MASS' => '645.31491', + 'AC$MASS_SPECTROMETRY' => 'SCANNING_RANGE 100-2000', + 'AC$INSTRUMENT' => 'Shimadzu LC20A-IT-TOFMS', + 'PK$PEAK' => { + 'mz' => [ + '646.3223', + '647.3252', + '648.3309' + ], + 'int' => [ + '64380108', + '26819201', + '7305831' + ], + 'relint' => [ + '999', + '416', + '113' + ] + }, + 'CH$IUPAC' => 'InChI=1S/C34H47NO11/c1-7-35-15-31(16-41-3)20(37)13-21(42-4)33-19-14-32(40)28(45-30(39)18-11-9-8-10-12-18)22(19)34(46-17(2)36,27(38)29(32)44-6)23(26(33)35)24(43-5)25(31)33/h8-12,19-29,37-38,40H,7,13-16H2,1-6H3/t19-,20-,21+,22-,23+,24+,25-,26+,27+,28-,29+,31+,32-,33+,34-/m1/s1', + 'AC$CHROMATOGRAPHY' => 'SOLVENT (A)5 mM ammonium acetate, (B)CH3CN', + 'DATE' => '2011.05.06 (Created 2008.10.10)', + 'LICENSE' => 'CC BY-SA', + 'AC$INSTRUMENT_TYPE' => 'LC-ESI-ITTOF', + 'CH$FORMULA' => 'C34H47NO11', + 'CH$LINK' => 'PUBCHEM 245005', + 'CH$NAME' => '20-ethyl-3alpha,13,15alpha-trihydroxy-1alpha,6alpha,16beta-trimethoxy-4-(methoxymethyl)aconitane-8,14alpha-diyl 8-acetate 14-benzoate', + 'PK$NUM_PEAK' => '3', + 'ACCESSION' => 'TY000040', + 'RECORD_TITLE' => 'Aconitine; LC-ESI-ITTOF; MS; [M+H]+', + 'CH$SMILES' => 'COC(C7)C(C61[H])(C5([H])2)C(N(CC(COC)6C7O)CC)([H])C(C(C5([H])3)(C(C(OC)C(O)(C(OC(=O)c(c4)cccc4)3)C2)O)OC(C)=O)([H])C1OC', + 'AUTHORS' => 'Ken Tanaka' + }, +"Works with a well formatted massbank record string and return one record object from \"KOX00001\" id"); + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +print "\n** Test $current_test getRecord on $server server with a true ID **\n" ; $current_test++ ; +is_deeply( getRecordInfoTest($server, ['KOX00001']), +['ACCESSION: KOX00001 +RECORD_TITLE: GABA; LC-ESI-QTOF; MS2; MERGED; [M-H]- +DATE: 2011.08.24 (Created 2008.11.28) +AUTHORS: Institute for Advanced Biosciences, Keio Univ. +LICENSE: Copyright 2006-2011 Keio +COMMENT: Peak data in the following records are not open to the public as requested by their authors. +COMMENT: Instead MassBank provides the merged spectra for the public. +COMMENT: This record was generated by merging the following three MassBank records. +COMMENT: [Merging] KO004290 GABA; LC-ESI-QTOF; MS2; CE:10 V [M-H]- +COMMENT: [Merging] KO004291 GABA; LC-ESI-QTOF; MS2; CE:20 V [M-H]- +COMMENT: [Merging] KO004292 GABA; LC-ESI-QTOF; MS2; CE:30 V [M-H]- +CH$NAME: GABA +CH$NAME: 4-Aminobutanoate +CH$NAME: 4-Aminobutanoic acid +CH$NAME: 4-Aminobutylate +CH$NAME: 4-Aminobutyrate +CH$NAME: 4-Aminobutyric acid +CH$NAME: gamma-Aminobutyric acid +CH$COMPOUND_CLASS: N/A +CH$FORMULA: C4H9NO2 +CH$EXACT_MASS: 103.06333 +CH$SMILES: NCCCC(O)=O +CH$IUPAC: InChI=1S/C4H9NO2/c5-3-1-2-4(6)7/h1-3,5H2,(H,6,7) +CH$LINK: CAS 56-12-2 +CH$LINK: CHEBI 30566 +CH$LINK: KEGG C00334 +CH$LINK: NIKKAJI J1.375G +CH$LINK: PUBCHEM SID:3628 +AC$INSTRUMENT: Qstar, Applied Biosystems +AC$INSTRUMENT_TYPE: LC-ESI-QTOF +AC$MASS_SPECTROMETRY: MS_TYPE MS2 +AC$MASS_SPECTROMETRY: ION_MODE NEGATIVE +MS$FOCUSED_ION: PRECURSOR_M/Z 102 +MS$FOCUSED_ION: PRECURSOR_TYPE [M-H]- +PK$ANNOTATION: 41.9979886273 84.0449388199 102.0555035062 +PK$NUM_PEAK: N/A +PK$PEAK: m/z int. rel.int. + N/A +'], +"Works with $server server and return one record from \"KOX00001\" id"); + +## test a false massbank ID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +print "\n** Test $current_test getRecord with a false ID **\n" ; $current_test++ ; +is_deeply( getRecordInfoTest($server, ['KOX100101']), [undef], "Method \'getRecordInfo\' works with $server server and manage no sended record from \"KOX100101\" a false id"); + +## test a false massbank ID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +print "\n** Test $current_test getRecord with a false ID into a real list **\n" ; $current_test++; +is_deeply( getRecordInfoTest($server, ['KOX100101', 'KOX00001']), ['ACCESSION: KOX00001 +RECORD_TITLE: GABA; LC-ESI-QTOF; MS2; MERGED; [M-H]- +DATE: 2011.08.24 (Created 2008.11.28) +AUTHORS: Institute for Advanced Biosciences, Keio Univ. +LICENSE: Copyright 2006-2011 Keio +COMMENT: Peak data in the following records are not open to the public as requested by their authors. +COMMENT: Instead MassBank provides the merged spectra for the public. +COMMENT: This record was generated by merging the following three MassBank records. +COMMENT: [Merging] KO004290 GABA; LC-ESI-QTOF; MS2; CE:10 V [M-H]- +COMMENT: [Merging] KO004291 GABA; LC-ESI-QTOF; MS2; CE:20 V [M-H]- +COMMENT: [Merging] KO004292 GABA; LC-ESI-QTOF; MS2; CE:30 V [M-H]- +CH$NAME: GABA +CH$NAME: 4-Aminobutanoate +CH$NAME: 4-Aminobutanoic acid +CH$NAME: 4-Aminobutylate +CH$NAME: 4-Aminobutyrate +CH$NAME: 4-Aminobutyric acid +CH$NAME: gamma-Aminobutyric acid +CH$COMPOUND_CLASS: N/A +CH$FORMULA: C4H9NO2 +CH$EXACT_MASS: 103.06333 +CH$SMILES: NCCCC(O)=O +CH$IUPAC: InChI=1S/C4H9NO2/c5-3-1-2-4(6)7/h1-3,5H2,(H,6,7) +CH$LINK: CAS 56-12-2 +CH$LINK: CHEBI 30566 +CH$LINK: KEGG C00334 +CH$LINK: NIKKAJI J1.375G +CH$LINK: PUBCHEM SID:3628 +AC$INSTRUMENT: Qstar, Applied Biosystems +AC$INSTRUMENT_TYPE: LC-ESI-QTOF +AC$MASS_SPECTROMETRY: MS_TYPE MS2 +AC$MASS_SPECTROMETRY: ION_MODE NEGATIVE +MS$FOCUSED_ION: PRECURSOR_M/Z 102 +MS$FOCUSED_ION: PRECURSOR_TYPE [M-H]- +PK$ANNOTATION: 41.9979886273 84.0449388199 102.0555035062 +PK$NUM_PEAK: N/A +PK$PEAK: m/z int. rel.int. + N/A +'], "Method \'getRecordInfo\' works with $server server and don\'t send record from \"KOX100101\" a false id into a list"); + + +## test an undef massbank IDs list - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +print "\n** Test $current_test getRecord with a undef list of IDs **\n" ; $current_test++; +is_deeply( getRecordInfoTest($server, undef), [], "Method \'getRecordInfo\' works with $server server and manage undef massbank ids list"); + +## test an empty massbank IDs list - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +print "\n** Test $current_test getRecord with a void list of IDs **\n" ; $current_test++ ; +is_deeply( getRecordInfoTest($server, [] ), [], "Method \'getRecordInfo\' works with $server server and manage empty massbank ids list"); + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +print "\n** Test $current_test getRecord on $server server with only one real ID **\n" ; $current_test++; +is_deeply( getRecordInfoTest($server, ['KOX00001']), +['ACCESSION: KOX00001 +RECORD_TITLE: GABA; LC-ESI-QTOF; MS2; MERGED; [M-H]- +DATE: 2011.08.24 (Created 2008.11.28) +AUTHORS: Institute for Advanced Biosciences, Keio Univ. +LICENSE: Copyright 2006-2011 Keio +COMMENT: Peak data in the following records are not open to the public as requested by their authors. +COMMENT: Instead MassBank provides the merged spectra for the public. +COMMENT: This record was generated by merging the following three MassBank records. +COMMENT: [Merging] KO004290 GABA; LC-ESI-QTOF; MS2; CE:10 V [M-H]- +COMMENT: [Merging] KO004291 GABA; LC-ESI-QTOF; MS2; CE:20 V [M-H]- +COMMENT: [Merging] KO004292 GABA; LC-ESI-QTOF; MS2; CE:30 V [M-H]- +CH$NAME: GABA +CH$NAME: 4-Aminobutanoate +CH$NAME: 4-Aminobutanoic acid +CH$NAME: 4-Aminobutylate +CH$NAME: 4-Aminobutyrate +CH$NAME: 4-Aminobutyric acid +CH$NAME: gamma-Aminobutyric acid +CH$COMPOUND_CLASS: N/A +CH$FORMULA: C4H9NO2 +CH$EXACT_MASS: 103.06333 +CH$SMILES: NCCCC(O)=O +CH$IUPAC: InChI=1S/C4H9NO2/c5-3-1-2-4(6)7/h1-3,5H2,(H,6,7) +CH$LINK: CAS 56-12-2 +CH$LINK: CHEBI 30566 +CH$LINK: KEGG C00334 +CH$LINK: NIKKAJI J1.375G +CH$LINK: PUBCHEM SID:3628 +AC$INSTRUMENT: Qstar, Applied Biosystems +AC$INSTRUMENT_TYPE: LC-ESI-QTOF +AC$MASS_SPECTROMETRY: MS_TYPE MS2 +AC$MASS_SPECTROMETRY: ION_MODE NEGATIVE +MS$FOCUSED_ION: PRECURSOR_M/Z 102 +MS$FOCUSED_ION: PRECURSOR_TYPE [M-H]- +PK$ANNOTATION: 41.9979886273 84.0449388199 102.0555035062 +PK$NUM_PEAK: N/A +PK$PEAK: m/z int. rel.int. + N/A +'], +"Method \'getRecordInfo\' works with $server server and return one record from \"KOX00001\" id"); + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# ARGVTS : $mzs, $intensities, $ion, $instruments, $max, $unit, $tol, $cutoff +# Structure of res : %ret = {'res' => [], 'num_res' => int, 'pcgroup_id'=> int } +print "\n** Test $current_test searchSpectrum with a list of mzs, intensities and real search parameters **\n" ; $current_test++; +is_deeply( searchSpectrumTest( + ['273.096', '289.086', '290.118', '291.096', '292.113', '579.169', '580.179'], + ['300', '300', '300', '300', '300', '300', '300'], + 'Positive', # mode + ['all'], # instrument + '2', # max return / only 2 for test + 'unit', # unit (unit or ppm) + 0.3, # tol with unit = unit / can be also 50 with unit = ppm + 50 # cutoff + ), + { 'num_res' => 2, 'pcgroup_id' => 1, 'res' => + [ + { + 'title' => 'Lormetazepam; LC-ESI-Q; MS; POS; 60 V', + 'exactMass' => '334.02758', + 'score' => '0.428034082411', + 'id' => 'WA001260', + 'formula' => 'C16H12Cl2N2O2' + }, + { + 'formula' => 'C16H12Cl2N2O2', + 'exactMass' => '334.02758', + 'score' => '0.385859601865', + 'id' => 'WA001261', + 'title' => 'Lormetazepam; LC-ESI-Q; MS; POS; 45 V' + } + ] + }, +"Method \'searchSpectrum\' works with $server server and return a list of entries from given mzs list"); + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# ARGVTS : $mzs, $intensities, $ion, $instruments, $max, $unit, $tol, $cutoff +# Structure of res : %ret = {'res' => [], 'num_res' => int, 'pcgroup_id'=> int } +print "\n** Test $current_test searchSpectrum with the Atrazine fingerprint and real search parameters **\n" ; $current_test++; +is_deeply( searchSpectrumTest( + ['68.0245', '96.056', '104.0014', '132.0328', '138.1031', '146.0233', '174.0547', '180.125', '188.0703'], + ['300', '300', '300', '300', '300', '300', '300'], + 'Positive', # mode + ['all'], # instrument + '2', # max return / only 2 for test + 'unit', # unit (unit or ppm) + 0.3, # tol with unit = unit / can be also 50 with unit = ppm + 50 # cutoff + ), + { 'num_res' => 2, 'pcgroup_id' => 1, 'res' => + [ + { + 'title' => 'Lormetazepam; LC-ESI-Q; MS; POS; 60 V', + 'exactMass' => '334.02758', + 'score' => '0.428034082411', + 'id' => 'WA001260', + 'formula' => 'C16H12Cl2N2O2' + }, + { + 'formula' => 'C16H12Cl2N2O2', + 'exactMass' => '334.02758', + 'score' => '0.385859601865', + 'id' => 'WA001261', + 'title' => 'Lormetazepam; LC-ESI-Q; MS; POS; 45 V' + } + ] + }, +"Method \'searchSpectrum\' works with $server server and return the Atrazine record from given mzs list"); + + + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# ARGVTS : $mzs, $intensities, $ion, $instruments, $max, $unit, $tol, $cutoff +print "\n** Test $current_test searchSpectrum with a list of mzs, intensities and real search parameters **\n" ; $current_test++; +is_deeply( searchSpectrumTest( + ['273.096', '289.086', '290.118', '291.096', '292.113', '579.169', '580.179'], + ['5', '5', '5', '5', '5', '5', '5'], + 'Positive', # mode + ['all'], # instrument + '2', # max return / only 2 for test + 'unit', # unit (unit or ppm) + 0.3, # tol with unit = unit / can be also 50 with unit = ppm + 50 # cutoff + ), + { 'num_res' => 2, 'pcgroup_id' => 1, 'res' => + [ + { + 'title' => 'Lormetazepam; LC-ESI-Q; MS; POS; 60 V', + 'exactMass' => '334.02758', + 'score' => '0.428034082411', + 'id' => 'WA001260', + 'formula' => 'C16H12Cl2N2O2' + }, + { + 'formula' => 'C16H12Cl2N2O2', + 'exactMass' => '334.02758', + 'score' => '0.385859601865', + 'id' => 'WA001261', + 'title' => 'Lormetazepam; LC-ESI-Q; MS; POS; 45 V' + } + ] + }, +"Method \'searchSpectrum\' works with $server server and return a list of entries from given mzs list with no intensity (very low in true)"); +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# ARGVTS : $mzs, $intensities, $ion, $instruments, $max, $unit, $tol, $cutoff +print "\n** Test $current_test searchSpectrum with a list of mzs, intensities and real search parameters - /!\\ Bug - Real intensity **\n" ; $current_test++; +is_deeply( searchSpectrumTest( + ['121.5145853','121.6260795','126.186473','126.2979602','126.4094198','184.0731041'], + ['614328.101','298110.8522','1372105.065','799423.8448','99064.65118','2342541.316'], + 'Positive', # mode + ['all'], # instrument + '2', # max return / only 2 for test + 'unit', # unit (unit or ppm) + 0.3, # tol with unit = unit / can be also 50 with unit = ppm + 50 # cutoff + ), + { 'num_res' => 1, 'pcgroup_id' => 1, 'res' => + [ + { + 'formula' => 'C12H13NO2', + 'id' => 'KO003209', + 'title' => '3-Indolebutyric acid; LC-ESI-QQ; MS2; CE:30 V; [M+H]+', + 'score' => '0.239887404489', + 'exactMass' => '203.09463' + } + ] + }, +"Method \'searchSpectrum\' works with $server server and return a list of entries from given mzs list /!\\ Bug - Real intensity"); + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# ARGVTS : $mzs, $intensities, $ion, $instruments, $max, $unit, $tol, $cutoff +print "\n** Test $current_test searchSpectrum with a list of mzs, intensities and real search parameters - /!\\ Bug - Real relative intensity **\n" ; $current_test++; +is_deeply( searchSpectrumTest( + ['121.51459','121.62608','126.18647','126.29796','126.40942','184.0731','385.23','502.29222','503.29564','548.33424','550.32453','551.32481','566.28931','566.79058','568.339'], + ['2','1','7','4','1','5','0','18','5','4','1','1','0','0','999'], + 'Positive', # mode + ['all'], # instrument + '2', # max return / only 2 for test + 'unit', # unit (unit or ppm) + 0.3, # tol with unit = unit / can be also 50 with unit = ppm + 50 # cutoff + ), + { 'num_res' => 2, 'pcgroup_id' => 1, 'res' => + [ + { + 'id' => 'CA000162', + 'exactMass' => '568.42803', + 'title' => 'beta,beta-Carotene-2,2\'-diol; FAB-EBEB; MS2; m/z: 568.43; [M]*+', + 'formula' => 'C40H56O2', + 'score' => '0.904567659364' + }, + { + 'exactMass' => '568.42803', + 'id' => 'CA000153', + 'score' => '0.620521335460', + 'formula' => 'C40H56O2', + 'title' => 'Isozeaxanthin; FAB-EBEB; MS2; m/z: 568.43; [M]*+' + } + ] + }, +"Method \'searchSpectrum\' works with $server server and return a list of entries from given mzs list /!\\ Bug - Real relative intensity"); + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# ARGVTS : $mzs, $intensities, $ion, $instruments, $max, $unit, $tol, $cutoff +print "\n** Test $current_test searchSpectrum with a list of mzs, intensities and max = 2 **\n" ; $current_test++; +is_deeply( searchSpectrumNBTest( + ['273.096', '289.086', '290.118', '291.096', '292.113', '579.169', '580.179'], + ['300', '300', '300', '300', '300', '300', '300'], + 'Positive', # mode + ['all'], # instrument + '2', # max return / only 2 for test + 'unit', # unit (unit or ppm) + 0.3, # tol with unit = unit / can be also 50 with unit = ppm + 50 # cutoff + ), + 2, +'Method \'searchSpectrum\' works with $server server and return the right number of entries from given mzs list and parameters (max)'); + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# ARGVTS : $mzs, $intensities, $ion, $instruments, $max, $unit, $tol, $cutoff +print "\n** Test $current_test searchSpectrum with a list of mzs, but no intensity (in true very low) and max = 2 **\n" ; $current_test++; +is_deeply( searchSpectrumNBTest( + ['273.096', '289.086', '290.118', '291.096', '292.113', '579.169', '580.179'], + [10, 10, 10, 10, 10, 10, 10 ], + 'Positive', # mode + ['all'], # instrument + '2', # max return / only 2 for test + 'unit', # unit (unit or ppm) + 0.3, # tol with unit = unit / can be also 50 with unit = ppm + 50 # cutoff + ), + 2, +'Method \'searchSpectrum\' works with $server server and return the right number of entries from given mzs list and no intensity'); + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# ARGVTS : $mzs, $intensities, $ion, $instruments, $max, $unit, $tol, $cutoff +print "\n** Test $current_test searchSpectrum with a list of mzs, intensities and no optionnal parameter like instrument, unit, tolerance and cutoff **\n" ; $current_test ++; +is_deeply( searchSpectrumNBTest( + ['273.096', '289.086', '290.118', '291.096', '292.113', '579.169', '580.179'], + ['300', '300', '300', '300', '300', '300', '300'], + 'Positive', # mode + undef, # instrument + '2', # max return / only 2 for test + undef, # unit (unit or ppm) + undef, # tol with unit = unit / can be also 50 with unit = ppm + undef # cutoff + ), + 2, +'Method \'searchSpectrum\' works with $server server and return the right number of entries from def parameters (instrument, unit, tolerance, cutoff )'); + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# ARGVTS : $mzs, $intensities, $ion, $instruments, $max, $unit, $tol, $cutoff, $max +print "\n** Test $current_test searchSpectrum with a list of mzs, intensities and no conf parameters for instrument, unit, tolerance and cutoff (value by default) **\n" ; $current_test++; +is_deeply( searchSpectrumNBTest( + ['273.096', '289.086', '290.118', '291.096', '292.113', '579.169', '580.179'], + ['300', '300', '300', '300', '300', '300', '300'], + 'Positive', # mode + undef, # instrument - ['all'] by default + undef, # max return - 0 by default + undef, # unit - unit by default + undef, # tol - 0.3 (by default) with unit = unit / can be also 50 (by default) with unit = ppm + undef # cutoff - 5 by default + ), + 388, +'Method \'searchSpectrum\' works with $server server and return the right number of entries (363) with undef parameters (instrument, unit, tolerance, cutoff, max )'); + +## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# ARGVTS : $ids +print "\n** Test $current_test getPeak with a list ids **\n" ; $current_test++; +is_deeply( getPeakTest( ['PR020003', 'FU000001']), + [ + { + 'numPeaks' => '9', + 'mzs' => ['207.0897','210.0499','224.5345','225.2768','226.0377','226.9938','227.9228','243.1025','410.0056'], + 'intensities' => ['8.488e2','9.442e2','1.093e3','5.294e4','2.896e4','7.015e3','7.870e2','4.024e3','5.620e2'], + 'id' => 'PR020003' + }, + { + 'id' => 'FU000001', + 'intensities' => ['3.277e5', '3.036e4', '5.812e4', '2.982e5', '5.196e4','4.564e5', '8.939e5','5.537e4'], + 'mzs' => ['370.8', '371.4', '532.0', '532.6', '533.3', '694.1', '694.8','695.4'], + 'numPeaks' => '8' + } + ], +'Method \'getPeak\' works with $server server and return the peak lists from given ids list'); + + + + +print "\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n" ; + +} +else { + croak "Can\'t launch any test : no sequence clearly defined !!!!\n" ; +} +
