Mercurial > repos > fgiacomoni > hmdb_ms_search
comparison lib/hmdb.pm @ 14:625fa968d99a draft
Master branch Updating - - Fxx
author | fgiacomoni |
---|---|
date | Thu, 10 Jan 2019 09:10:14 -0500 (2019-01-10) |
parents | c32280662103 |
children | beb9619263b0 |
comparison
equal
deleted
inserted
replaced
13:3587cb923890 | 14:625fa968d99a |
---|---|
193 | 193 |
194 if (!defined $$status) { | 194 if (!defined $$status) { |
195 croak "No http status is defined for the distant server" ; | 195 croak "No http status is defined for the distant server" ; |
196 } | 196 } |
197 else { | 197 else { |
198 unless ( $$status == 200 ) { | 198 unless ( $$status == 200 ) { |
199 if ( $$status == 504 ) { croak "Gateway Timeout: The HMDB server was acting as a gateway or proxy and did not receive a timely response from the upstream server" ; } | 199 if ( $$status == 504 ) { croak "Gateway Timeout: The HMDB server was acting as a gateway or proxy and did not receive a timely response from the upstream server" ; } |
200 if ( $$status == 500 ) { croak "Internal Server Error: The HMDB server returns an unexpected internal server error" ; } | |
200 else { | 201 else { |
201 ## None supported http code error ## | 202 ## None supported http code error ## |
203 croak "Internal Server Error $$status..." ; | |
202 } | 204 } |
203 } | 205 } |
206 if ( $$status == 200 ) { print "The HMDB server returns that your request was fulfilled" ; } | |
204 } | 207 } |
205 | 208 |
206 return (1) ; | 209 return (1) ; |
207 } | 210 } |
208 ## END of SUB | 211 ## END of SUB |
230 my $req = HTTP::Request->new( | 233 my $req = HTTP::Request->new( |
231 POST => 'http://specdb.wishartlab.com/ms/search.csv'); | 234 POST => 'http://specdb.wishartlab.com/ms/search.csv'); |
232 | 235 |
233 $req->content_type('application/x-www-form-urlencoded'); | 236 $req->content_type('application/x-www-form-urlencoded'); |
234 $req->content('utf8=TRUE&mode='.$mode.'&query_masses='.$masses.'&tolerance='.$delta.'&database=HMDB&commit=Download Results As CSV'); | 237 $req->content('utf8=TRUE&mode='.$mode.'&query_masses='.$masses.'&tolerance='.$delta.'&database=HMDB&commit=Download Results As CSV'); |
235 | 238 # print Dumper $req ; |
236 my $res = $ua->request($req); | 239 my $res = $ua->request($req); |
237 # print $res->as_string; | 240 # print $res->as_string; |
238 if ($res->is_success) { | 241 if ($res->is_success) { |
239 @page = split ( /\n/, $res->decoded_content ) ; | 242 @page = split ( /\n/, $res->decoded_content ) ; |
240 } else { | 243 } else { |
267 | 270 |
268 my %result_by_entry = () ; | 271 my %result_by_entry = () ; |
269 my %features = () ; | 272 my %features = () ; |
270 | 273 |
271 # print Dumper $csv ; | 274 # print Dumper $csv ; |
275 # print Dumper $masses ; | |
276 # print Dumper $max_query ; | |
272 | 277 |
273 foreach my $line (@{$csv}) { | 278 foreach my $line (@{$csv}) { |
274 ## HMDB csv output - [DEPRECATED]... | |
275 # if ($line !~ /query_mass,compound_id,formula,compound_mass,adduct,adduct_type,adduct_mass,delta/) { | |
276 # my @entry = split(/,/, $line) ; | |
277 # | |
278 # if ( !exists $result_by_entry{$entry[0]} ) { $result_by_entry{$entry[0]} = [] ; } | |
279 # | |
280 # $features{ENTRY_ENTRY_ID} = $entry[1] ; | |
281 # $features{ENTRY_FORMULA} = $entry[2] ; | |
282 # $features{ENTRY_CPD_MZ} = $entry[3] ; | |
283 # $features{ENTRY_ADDUCT} = $entry[4] ; | |
284 # $features{ENTRY_ADDUCT_TYPE} = $entry[5] ; | |
285 # $features{ENTRY_ADDUCT_MZ} = $entry[6] ; | |
286 # $features{ENTRY_DELTA} = $entry[7] ; | |
287 # | |
288 # my %temp = %features ; | |
289 # | |
290 # push (@{$result_by_entry{$entry[0]} }, \%temp) ; | |
291 # } | |
292 ## NEW HMDB format V4.0 - dec2017 | 279 ## NEW HMDB format V4.0 - dec2017 |
293 if ($line !~ /query_mass,compound_id,compound_name,kegg_id,formula,monoisotopic_mass,adduct,adduct_type,adduct_m\/z,delta\(ppm\)/) { | 280 if ($line !~ /query_mass,compound_id,compound_name,kegg_id,formula,monoisotopic_mass,adduct,adduct_type,adduct_m\/z,delta\(ppm\)/) { |
294 | 281 |
295 if ( $line =~ /(\d+\.\d+),(\w+),(.*),([\w|n\/a]+)\s*,(\w+),(\d+\.\d+),(.*),(\+|\-),(\d+\.\d+),(\d+)/ ) { | 282 if ( $line =~ /(\d+\.\d+),(\w+),(.*),([\w|n\/a]+)\s*,(\w+),(\d+\.\d+),(.*),(\+|\-),(\d+\.\d+),(\d+)/ ) { |
296 my @entry = ("$1","$2","$3","$4","$5","$6","$7","$8","$9","$10") ; | 283 my @entry = ("$1","$2","$3","$4","$5","$6","$7","$8","$9","$10") ; |
339 # push (@results, $result_by_entry{$_}) ; | 326 # push (@results, $result_by_entry{$_}) ; |
340 } | 327 } |
341 else {push (@results, [] ) ;} ; | 328 else {push (@results, [] ) ;} ; |
342 | 329 |
343 } | 330 } |
331 | |
344 return(\@results) ; | 332 return(\@results) ; |
345 } | 333 } |
346 ## END of SUB | 334 ## END of SUB |
347 | 335 |
348 =head2 METHOD parse_hmdb_page_results | 336 =head2 METHOD parse_hmdb_page_results |
1028 sub write_csv_skel { | 1016 sub write_csv_skel { |
1029 ## Retrieve Values | 1017 ## Retrieve Values |
1030 my $self = shift ; | 1018 my $self = shift ; |
1031 my ( $csv_file, $rows ) = @_ ; | 1019 my ( $csv_file, $rows ) = @_ ; |
1032 | 1020 |
1033 my $ocsv = lib::csv::new( {is_binary => 1 , quote_binary => 0, quote_char => undef }) ; | 1021 # my $ocsv = lib::csv::new( {is_binary => 1 , quote_binary => 0, quote_char => undef }) ; |
1022 my $ocsv = lib::csv::new() ; | |
1034 my $csv = $ocsv->get_csv_object("\t") ; | 1023 my $csv = $ocsv->get_csv_object("\t") ; |
1035 $ocsv->write_csv_from_arrays($csv, $$csv_file, $rows) ; | 1024 $ocsv->write_csv_from_arrays($csv, $$csv_file, $rows) ; |
1036 | 1025 |
1037 return($csv_file) ; | 1026 return($csv_file) ; |
1038 } | 1027 } |
1051 ## Retrieve Values | 1040 ## Retrieve Values |
1052 my $self = shift ; | 1041 my $self = shift ; |
1053 my ( $masses, $ids, $results, $file, ) = @_ ; | 1042 my ( $masses, $ids, $results, $file, ) = @_ ; |
1054 | 1043 |
1055 open(CSV, '>:utf8', "$file") or die "Cant' create the file $file\n" ; | 1044 open(CSV, '>:utf8', "$file") or die "Cant' create the file $file\n" ; |
1056 print CSV "ID\tQuery(Da)\tDelta\tMetabolite_Name\tCpd_MW(Da)\tFormula\tAdduct\tAdduct_MW(Da)\tHMDB_ID\n" ; | 1045 print CSV "ID\tQuery(Da)\tDelta(ppm)\tMetabolite_Name\tCpd_MW(Da)\tFormula\tAdduct\tAdduct_MW(Da)\tHMDB_ID\n" ; |
1057 | 1046 |
1058 my $i = 0 ; | 1047 my $i = 0 ; |
1059 | 1048 |
1060 foreach my $id (@{$ids}) { | 1049 foreach my $id (@{$ids}) { |
1061 my $mass = undef ; | 1050 my $mass = undef ; |