Mercurial > repos > fgiacomoni > hmdb_ms_search
view t/hmdb_managerTest.pl @ 26:76872ac24fb2 draft
master branch Updating with tag :CI_COMMIT_TAG - - Fxx
author | fgiacomoni |
---|---|
date | Wed, 27 Sep 2023 12:21:00 +0000 |
parents | 2d8a310e86ce |
children |
line wrap: on
line source
#! perl use diagnostics; use warnings; no warnings qw/void/; use strict; no strict "refs" ; use Test::More qw( no_plan ); use Test::Exception; use FindBin ; use Carp ; ## Specific Modules use lib $FindBin::Bin ; my $binPath = $FindBin::Bin ; use lib::hmdbTest qw( :ALL ) ; ## To launch the right sequence : API, MAPPER, THREADER, ... #my $sequence = 'MAPPER' ; my $sequence = 'MAIN' ; my $current_test = 1 ; if ($sequence eq "MAIN") { print "\n\t\t\t\t * * * * * * \n" ; print "\t * * * - - - Test HMDB Main script - - - * * * \n\n" ; print "\n** Test $current_test extract_sub_mz_lists with an empty list of mzs **\n" ; $current_test++; throws_ok{ extract_sub_mz_listsTest([], 3)} '/The provided mzs list is empty/', 'Method \'extract_sub_mz_lists\' detects empty argument and died correctly' ; print "\n** Test $current_test extract_sub_mz_lists with a list of mzs and a limit of 3 **\n" ; $current_test++; is_deeply( extract_sub_mz_listsTest( ['175.01', '238.19', '420.16', '780.32', '956.25', '1100.45' ], 3), [ [ '175.01', '238.19', '420.16' ], [ '780.32', '956.25', '1100.45' ] ], 'Method \'extract_sub_mz_lists\' works with a list and return a well formated list of sublist of mzs'); print "\n** Test $current_test prepare_multi_masses_query with an empty list of mzs **\n" ; $current_test++; throws_ok{ prepare_multi_masses_queryTest([])} '/The input method parameter mass list is empty/', 'Method \'prepare_multi_masses_query\' detects empty argument and died correctly' ; print "\n** Test $current_test prepare_multi_masses_query with a list of mzs **\n" ; $current_test++; is_deeply( prepare_multi_masses_queryTest( ['175.01', '238.19', '420.16', '780.32', '956.25', '1100.45' ] ), '175.01%0D%0A238.19%0D%0A420.16%0D%0A780.32%0D%0A956.25%0D%0A1100.45%0D%0A', 'Method \'prepare_multi_masses_query\' works with a list of and return a well formated string for hmdb querying'); print "\n** Test $current_test get_matches_from_hmdb_ua with a well-formated string of mzs **\n" ; $current_test++; is_deeply( getMatchesFromHmdb5WithUATest( '175.01%0D%0A420.16%0D%0A780.32%0D%0A956.25%0D%0A1100.45%0D%0A', 0.001, 'positive'), [ 'query_mass,compound_id,compound_name,formula,monoisotopic_mass,adduct,adduct_type,adduct_m/z,"delta(ppm),",ccs_value', '175.01,HMDB0259477,"S-(N,N-Diethyldithiocarbamoyl)-N-acetyl-L-cysteine",C10H18N2O3S3,310.04795597,M+H+K,+,175.009195,5,', '175.01,HMDB0258038,9-(Formyloxymethyl)-9H-fluorene-2-sulfonic acid,C15H12O5S,304.04054466,M+2Na,+,175.00949,3,', '175.01,HMDB0257737,"4,5-Dihydroxy-3-methyl-1H-imidazol-2-one",C4H6N2O3,130.037842061,M+2Na-H,+,175.009002,6,', '175.01,HMDB0240502,Dihydroresveratrol 4\'-sulfate,C14H14O6S,310.051109345,M+H+K,+,175.010772,4,', '175.01,HMDB0240500,Dihydroresveratrol 3-sulfate,C14H14O6S,310.051109345,M+H+K,+,175.010772,4,', '175.01,HMDB0246744,"5-Amino-1,3,4-thiadiazole-2-thiol",C2H3N3S2,132.976839457,M+ACN+H,+,175.010662,4,', '175.01,HMDB0252977,Phosphoaminophosphonic acid-guanylate ester,C10H17N6O13P3,522.006645625,M+3H,+,175.009491,3,', '175.01,HMDB0246800,5-Hydroxy-1-methylhydantoin,C4H6N2O3,130.037842061,M+2Na-H,+,175.009002,6,', '175.01,HMDB0258677,Tafamidis,C14H7Cl2NO3,306.980298509,M+ACN+2H,+,175.010699,4,', '175.01,HMDB0240280,Mesylate,CH4O3S,95.988114684,M+DMSO+H,+,175.009335,4,', '175.01,HMDB0000257,Thiosulfate,H2O3S2,113.94453531,M+IsoProp+H,+,175.009875,1,', '175.01,HMDB0035230,Aurantricholide B,C17H10O6,310.047738052,M+H+K,+,175.009086,5,', '175.01,HMDB0033657,De-O-methylsterigmatocystin,C17H10O6,310.047738052,M+H+K,+,175.009086,5,', '175.01,HMDB0003745,Mesna,C2H6O3S2,141.975835438,M+CH3OH+H,+,175.009324,4,', '420.16,HMDB0250452,Core oligosaccharide,C27H48O24,756.253552426,M+2ACN+2H,+,420.160599,1,', '420.16,HMDB0245742,"N-(6,8-Difluoro-2-methyl-4-quinolinyl)-N\'-[4-(dimethylamino)phenyl]urea",C19H18F2N4O,356.144867542,M+ACN+Na,+,420.160633,2,', '420.16,HMDB0256144,Pazopanib,C21H23N7O2S,437.163393705,M+H-H2O,+,420.160694,2,', '420.16,HMDB0060838,N-Desmethyl-p-hydroxyrosiglitazone,C17H17N3O4S,359.093976737,M+IsoProp+H,+,420.159317,2,', '420.16,HMDB0060836,N-Desmethyl-O-hydroxy rosiglitazone,C17H17N3O4S,359.093976737,M+IsoProp+H,+,420.159317,2,' ], 'Method \'getMatchesFromHmdb5WithUA\' works again (API v5.0 compatible) with a well-formated string of mzs and return a complete csv from hmdb'); print "\n** Test $current_test test_matches_from_hmdb_ua to get hmdb status **\n" ; $current_test++; is_deeply (testMatchesFromHmdb5WithUATest (), \'200', 'The HMDB server is available: returns successful HTTP requests' ) ; print "\n** Test $current_test check_state_from_hmdb_ua to manage script execution with the hmdb server status **\n" ; $current_test++; is_deeply (check_state_from_hmdb_uaTest (\'200'), 1, 'The status 200 returns no error/warn' ) ; print "\n** Test $current_test check_state_from_hmdb_ua to manage script execution with the hmdb server status **\n" ; $current_test++; throws_ok{ check_state_from_hmdb_uaTest(\'504')} qr/Gateway Timeout \(504\): The HMDB server was acting as a gateway or proxy and did not receive a timely response from the upstream server\. The Hmdb tool is stopped with error\./, 'Method \'check_state_from_hmdb_ua\' detects HTTP error code returned by HMDB and died correctly' ; print "\n** Test $current_test parseHmdb5CSVResults (version 5.0) with the correct inputs for hmdb outputs parsing (csv format) **\n" ; $current_test++; is_deeply ( parseHmdb5CSVResultsTest ( [ 'query_mass,compound_id,compound_name,formula,monoisotopic_mass,adduct,adduct_type,adduct_m/z,"delta(ppm),",ccs_value', '175.01,HMDB0259477,"S-(N,N-Diethyldithiocarbamoyl)-N-acetyl-L-cysteine",C10H18N2O3S3,310.04795597,M+H+K,+,175.009195,5,', '175.01,HMDB0258038,9-(Formyloxymethyl)-9H-fluorene-2-sulfonic acid,C15H12O5S,304.04054466,M+2Na,+,175.00949,3,', '175.01,HMDB0257737,"4,5-Dihydroxy-3-methyl-1H-imidazol-2-one",C4H6N2O3,130.037842061,M+2Na-H,+,175.009002,6,', '175.01,HMDB0240502,Dihydroresveratrol 4\'-sulfate,C14H14O6S,310.051109345,M+H+K,+,175.010772,4,', '175.01,HMDB0240500,Dihydroresveratrol 3-sulfate,C14H14O6S,310.051109345,M+H+K,+,175.010772,4,', '175.01,HMDB0246744,"5-Amino-1,3,4-thiadiazole-2-thiol",C2H3N3S2,132.976839457,M+ACN+H,+,175.010662,4,', '175.01,HMDB0252977,Phosphoaminophosphonic acid-guanylate ester,C10H17N6O13P3,522.006645625,M+3H,+,175.009491,3,', '175.01,HMDB0246800,5-Hydroxy-1-methylhydantoin,C4H6N2O3,130.037842061,M+2Na-H,+,175.009002,6,', '175.01,HMDB0258677,Tafamidis,C14H7Cl2NO3,306.980298509,M+ACN+2H,+,175.010699,4,', '175.01,HMDB0240280,Mesylate,CH4O3S,95.988114684,M+DMSO+H,+,175.009335,4,', '175.01,HMDB0000257,Thiosulfate,H2O3S2,113.94453531,M+IsoProp+H,+,175.009875,1,', '175.01,HMDB0035230,Aurantricholide B,C17H10O6,310.047738052,M+H+K,+,175.009086,5,', '175.01,HMDB0033657,De-O-methylsterigmatocystin,C17H10O6,310.047738052,M+H+K,+,175.009086,5,', '175.01,HMDB0003745,Mesna,C2H6O3S2,141.975835438,M+CH3OH+H,+,175.009324,4,', '420.16,HMDB0250452,Core oligosaccharide,C27H48O24,756.253552426,M+2ACN+2H,+,420.160599,1,', '420.16,HMDB0245742,"N-(6,8-Difluoro-2-methyl-4-quinolinyl)-N\'-[4-(dimethylamino)phenyl]urea",C19H18F2N4O,356.144867542,M+ACN+Na,+,420.160633,2,', '420.16,HMDB0256144,Pazopanib,C21H23N7O2S,437.163393705,M+H-H2O,+,420.160694,2,', '420.16,HMDB0060838,N-Desmethyl-p-hydroxyrosiglitazone,C17H17N3O4S,359.093976737,M+IsoProp+H,+,420.159317,2,', '420.16,HMDB0060836,N-Desmethyl-O-hydroxy rosiglitazone,C17H17N3O4S,359.093976737,M+IsoProp+H,+,420.159317,2,' ], ['175.01', '238.19', '420.16'], 10 ), [ [ { 'ENTRY_CPD_MZ' => '310.04795597', 'ENTRY_DELTA' => '5', 'ENTRY_FORMULA' => 'C10H18N2O3S3', 'ENTRY_ADDUCT' => 'M+H+K', 'ENTRY_ENTRY_NAME' => '"S-(N,N-Diethyldithiocarbamoyl)-N-acetyl-L-cysteine"', 'ENTRY_ENTRY_ID' => 'HMDB0259477', 'ENTRY_ADDUCT_TYPE' => '+', 'ENTRY_ADDUCT_MZ' => '175.009195' }, { 'ENTRY_ADDUCT_TYPE' => '+', 'ENTRY_ADDUCT_MZ' => '175.00949', 'ENTRY_ENTRY_ID' => 'HMDB0258038', 'ENTRY_ENTRY_NAME' => '9-(Formyloxymethyl)-9H-fluorene-2-sulfonic acid', 'ENTRY_FORMULA' => 'C15H12O5S', 'ENTRY_ADDUCT' => 'M+2Na', 'ENTRY_DELTA' => '3', 'ENTRY_CPD_MZ' => '304.04054466' }, { 'ENTRY_FORMULA' => 'C14H14O6S', 'ENTRY_ADDUCT' => 'M+H+K', 'ENTRY_ENTRY_NAME' => 'Dihydroresveratrol 4\'-sulfate', 'ENTRY_CPD_MZ' => '310.051109345', 'ENTRY_DELTA' => '4', 'ENTRY_ADDUCT_TYPE' => '+', 'ENTRY_ADDUCT_MZ' => '175.010772', 'ENTRY_ENTRY_ID' => 'HMDB0240502' }, { 'ENTRY_ADDUCT_MZ' => '175.010772', 'ENTRY_ADDUCT_TYPE' => '+', 'ENTRY_ENTRY_ID' => 'HMDB0240500', 'ENTRY_ADDUCT' => 'M+H+K', 'ENTRY_FORMULA' => 'C14H14O6S', 'ENTRY_ENTRY_NAME' => 'Dihydroresveratrol 3-sulfate', 'ENTRY_CPD_MZ' => '310.051109345', 'ENTRY_DELTA' => '4' }, { 'ENTRY_ENTRY_ID' => 'HMDB0246744', 'ENTRY_ADDUCT_TYPE' => '+', 'ENTRY_ADDUCT_MZ' => '175.010662', 'ENTRY_CPD_MZ' => '132.976839457', 'ENTRY_DELTA' => '4', 'ENTRY_ENTRY_NAME' => '"5-Amino-1,3,4-thiadiazole-2-thiol"', 'ENTRY_FORMULA' => 'C2H3N3S2', 'ENTRY_ADDUCT' => 'M+ACN+H' }, { 'ENTRY_ENTRY_ID' => 'HMDB0252977', 'ENTRY_ADDUCT_MZ' => '175.009491', 'ENTRY_ADDUCT_TYPE' => '+', 'ENTRY_CPD_MZ' => '522.006645625', 'ENTRY_DELTA' => '3', 'ENTRY_ADDUCT' => 'M+3H', 'ENTRY_FORMULA' => 'C10H17N6O13P3', 'ENTRY_ENTRY_NAME' => 'Phosphoaminophosphonic acid-guanylate ester' }, { 'ENTRY_ENTRY_ID' => 'HMDB0258677', 'ENTRY_ADDUCT_MZ' => '175.010699', 'ENTRY_ADDUCT_TYPE' => '+', 'ENTRY_CPD_MZ' => '306.980298509', 'ENTRY_DELTA' => '4', 'ENTRY_ADDUCT' => 'M+ACN+2H', 'ENTRY_FORMULA' => 'C14H7Cl2NO3', 'ENTRY_ENTRY_NAME' => 'Tafamidis' }, { 'ENTRY_ENTRY_ID' => 'HMDB0240280', 'ENTRY_ADDUCT_TYPE' => '+', 'ENTRY_ADDUCT_MZ' => '175.009335', 'ENTRY_DELTA' => '4', 'ENTRY_CPD_MZ' => '95.988114684', 'ENTRY_FORMULA' => 'CH4O3S', 'ENTRY_ADDUCT' => 'M+DMSO+H', 'ENTRY_ENTRY_NAME' => 'Mesylate' }, { 'ENTRY_DELTA' => '1', 'ENTRY_CPD_MZ' => '113.94453531', 'ENTRY_FORMULA' => 'H2O3S2', 'ENTRY_ADDUCT' => 'M+IsoProp+H', 'ENTRY_ENTRY_NAME' => 'Thiosulfate', 'ENTRY_ENTRY_ID' => 'HMDB0000257', 'ENTRY_ADDUCT_TYPE' => '+', 'ENTRY_ADDUCT_MZ' => '175.009875' }, { 'ENTRY_DELTA' => '5', 'ENTRY_CPD_MZ' => '310.047738052', 'ENTRY_ENTRY_NAME' => 'Aurantricholide B', 'ENTRY_FORMULA' => 'C17H10O6', 'ENTRY_ADDUCT' => 'M+H+K', 'ENTRY_ENTRY_ID' => 'HMDB0035230', 'ENTRY_ADDUCT_TYPE' => '+', 'ENTRY_ADDUCT_MZ' => '175.009086' } ], [], [ { 'ENTRY_ADDUCT_MZ' => '420.160599', 'ENTRY_ADDUCT_TYPE' => '+', 'ENTRY_ENTRY_ID' => 'HMDB0250452', 'ENTRY_ADDUCT' => 'M+2ACN+2H', 'ENTRY_FORMULA' => 'C27H48O24', 'ENTRY_ENTRY_NAME' => 'Core oligosaccharide', 'ENTRY_CPD_MZ' => '756.253552426', 'ENTRY_DELTA' => '1' }, { 'ENTRY_CPD_MZ' => '356.144867542', 'ENTRY_DELTA' => '2', 'ENTRY_ENTRY_NAME' => '"N-(6,8-Difluoro-2-methyl-4-quinolinyl)-N\'-[4-(dimethylamino)phenyl]urea"', 'ENTRY_FORMULA' => 'C19H18F2N4O', 'ENTRY_ADDUCT' => 'M+ACN+Na', 'ENTRY_ENTRY_ID' => 'HMDB0245742', 'ENTRY_ADDUCT_TYPE' => '+', 'ENTRY_ADDUCT_MZ' => '420.160633' }, { 'ENTRY_ADDUCT_MZ' => '420.159317', 'ENTRY_ADDUCT_TYPE' => '+', 'ENTRY_ENTRY_ID' => 'HMDB0060838', 'ENTRY_ADDUCT' => 'M+IsoProp+H', 'ENTRY_FORMULA' => 'C17H17N3O4S', 'ENTRY_ENTRY_NAME' => 'N-Desmethyl-p-hydroxyrosiglitazone', 'ENTRY_CPD_MZ' => '359.093976737', 'ENTRY_DELTA' => '2' }, { 'ENTRY_ADDUCT_MZ' => '420.159317', 'ENTRY_ADDUCT_TYPE' => '+', 'ENTRY_ENTRY_ID' => 'HMDB0060836', 'ENTRY_ADDUCT' => 'M+IsoProp+H', 'ENTRY_FORMULA' => 'C17H17N3O4S', 'ENTRY_ENTRY_NAME' => 'N-Desmethyl-O-hydroxy rosiglitazone', 'ENTRY_DELTA' => '2', 'ENTRY_CPD_MZ' => '359.093976737' } ] ], 'Method \'parseHmdb5CSVResults\' works with a well-formated csv output and returns a a well formated array' ) ; # print "\n** Test $current_test parse_hmdb_csv_results with a void hmdb output and a list of mzs **\n" ; $current_test++; # is_deeply ( parse_hmdb_csv_resultsTest ( [], ['175.01', '238.19', '420.16'] ), # [ [], [], [] ], # 'Method \'parse_hmdb_csv_results\' works with a empty csv output and returns an empty but well formatted array' ) ; # # print "\n** Test $current_test parse_hmdb_csv_results with a void hmdb output and a void mz list **\n" ; $current_test++; # is_deeply ( parse_hmdb_csv_resultsTest ( [], [] ), # [], # 'Method \'parse_hmdb_csv_results\' works with a empty csv output/mz list and returns an empty but well formatted array' ) ; # # ## Other example... from mz 265.0567515 # print "\n** Test $current_test parse_hmdb_csv_results with mz 265.0567515 and the correct inputs for hmdb outputs parsing (csv format) **\n" ; $current_test++; # is_deeply ( parse_hmdb_csv_resultsTest ( # [ # 'query_mass,compound_id,compound_name,kegg_id,formula,monoisotopic_mass,adduct,adduct_type,adduct_m/z,delta(ppm)', # '265.0567515,HMDB0059667,3-Methylsulfolene,n/a,C5H8O2S,132.02450019,2M+H,+,265.056276,2', # '265.0567515,HMDB0038767,Camelliaside b,n/a,C32H38O19,726.200729034,M+3Na,+,265.056128,2', # '265.0567515,HMDB0039759,Kaempferol 3-(2g-apiosylrobinobioside),n/a,C32H38O19,726.200729034,M+3Na,+,265.056128,2', # '265.0567515,HMDB0040875,Isoschaftoside 4\'-glucoside,n/a,C32H38O19,726.200729034,M+3Na,+,265.056128,2', # '265.0567515,HMDB0040878,Schaftoside 4\'-glucoside,n/a,C32H38O19,726.200729034,M+3Na,+,265.056128,2', # '265.0567515,HMDB0059600,erythro-5-Phosphonooxy-L-lysine,C03366,C6H15N2O6P,242.066772734,M+Na,+,265.055991,3', # '265.0567515,HMDB0061174,"2,4-Imidazolidinedione, 3-ethyl-5-(4-hydroxyphenyl)-",n/a,C11H12N2O3,220.08479226,M+2Na-H,+,265.055952,3', # '265.0567515,HMDB0015571,Oxitriptan,C00643,C11H12N2O3,220.08479226,M+2Na-H,+,265.055952,3', # '265.0567515,HMDB0000472,5-hydroxy-l-tryptophan,C01017,C11H12N2O3,220.08479226,M+2Na-H,+,265.055952,3', # '265.0567515,HMDB0030584,Silidianin,n/a,C25H24O10,484.136946988,M+2Na,+,265.057691,4', # ], # ['265.0567515'], # 5 # ), # [ # [ # { # 'ENTRY_DELTA' => '2', # 'ENTRY_FORMULA' => 'C5H8O2S', # 'ENTRY_ENTRY_ID' => 'HMDB0059667', # 'ENTRY_ADDUCT_MZ' => '265.056276', # 'ENTRY_ADDUCT_TYPE' => '+', # 'ENTRY_CPD_MZ' => '132.02450019', # 'ENTRY_ADDUCT' => '2M+H' # }, # { # 'ENTRY_ADDUCT_MZ' => '265.056128', # 'ENTRY_ENTRY_ID' => 'HMDB0038767', # 'ENTRY_ADDUCT_TYPE' => '+', # 'ENTRY_CPD_MZ' => '726.200729034', # 'ENTRY_ADDUCT' => 'M+3Na', # 'ENTRY_DELTA' => '2', # 'ENTRY_FORMULA' => 'C32H38O19' # }, # { # 'ENTRY_DELTA' => '2', # 'ENTRY_FORMULA' => 'C32H38O19', # 'ENTRY_ENTRY_ID' => 'HMDB0039759', # 'ENTRY_ADDUCT_MZ' => '265.056128', # 'ENTRY_ADDUCT_TYPE' => '+', # 'ENTRY_CPD_MZ' => '726.200729034', # 'ENTRY_ADDUCT' => 'M+3Na' # }, # { # 'ENTRY_FORMULA' => 'C32H38O19', # 'ENTRY_DELTA' => '2', # 'ENTRY_ADDUCT_TYPE' => '+', # 'ENTRY_ADDUCT_MZ' => '265.056128', # 'ENTRY_ENTRY_ID' => 'HMDB0040875', # 'ENTRY_CPD_MZ' => '726.200729034', # 'ENTRY_ADDUCT' => 'M+3Na' # }, # { # 'ENTRY_ADDUCT_TYPE' => '+', # 'ENTRY_ENTRY_ID' => 'HMDB0040878', # 'ENTRY_ADDUCT_MZ' => '265.056128', # 'ENTRY_ADDUCT' => 'M+3Na', # 'ENTRY_CPD_MZ' => '726.200729034', # 'ENTRY_FORMULA' => 'C32H38O19', # 'ENTRY_DELTA' => '2' # } # ] # ], # 'Method \'parse_hmdb_csv_results\' works with a well-formated csv output and returns a a well formated array' ) ; # # } ## END of the script