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" ;
+}
+