Mercurial > repos > fgiacomoni > bank_inhouse
diff bank_inhouse.pl @ 1:52798007c6b2 draft default tip
Master branch Updating - - Fxx
author | fgiacomoni |
---|---|
date | Thu, 24 Jan 2019 10:02:05 -0500 |
parents | be582bcd6585 |
children |
line wrap: on
line diff
--- a/bank_inhouse.pl Thu Oct 04 10:37:14 2018 -0400 +++ b/bank_inhouse.pl Thu Jan 24 10:02:05 2019 -0500 @@ -83,6 +83,7 @@ print "--nbheader $nbline_header " if (defined $nbline_header) ; print "--colrt $col_rt " if (defined $col_rt) ; print "--rt $manual_rt " if (defined $manual_rt) ; +print "--rt_delta $rt_delta " if (defined $rt_delta) ; print "--colmass $col_mass " if (defined $col_mass) ; print "--mz_delta $mz_delta_type " if (defined $mz_delta_type) ; print "--mass_delta $mz_delta " if (defined $mz_delta) ; @@ -145,8 +146,14 @@ ## parse csv ids and masses my $ocsv = lib::csv->new() ; my $csv = $ocsv->get_csv_object( "\t" ) ; - if ( ( defined $nbline_header ) and ( $nbline_header > 0 ) ) { $header_choice = 'yes' ; } else{ $header_choice = 'no' ; } - $masses = $ocsv->get_value_from_csv_multi_header( $csv, $masses_file, $col_mass, $header_choice, $nbline_header ) ; ## retrieve mz values on csv + + if ( ( defined $nbline_header ) and ( $nbline_header > 0 ) ) { $header_choice = 'yes' ; } + else{ $header_choice = 'no' ; } + + ## retrieve mz values on csv + $masses = $ocsv->get_value_from_csv_multi_header( $csv, $masses_file, $col_mass, $header_choice, $nbline_header ) ; + + ## retrieve rt values on csv if ( ( defined $col_rt ) and ( $col_rt ne "" ) ) { $rt = $ocsv->get_value_from_csv_multi_header( $csv, $masses_file, $col_rt, $header_choice, $nbline_header ) ; ## retrieve rt values on csv } @@ -175,8 +182,7 @@ if ( ( defined $masses ) and ( scalar (@{$masses}) > 0 ) ) { $min = min @{$masses} ; $max = max @{$masses} ; -# print Dumper $masses ; - ## TODO: adjust min and max with delta + my ( $min_delta, undef ) = $opfws->mz_delta_conversion(\$min, \$mz_delta_type, \$mz_delta) ; my ( undef, $max_delta ) = $opfws->mz_delta_conversion(\$max, \$mz_delta_type, \$mz_delta) ; @@ -193,10 +199,13 @@ else { croak "Can't work : missing a PForest REST paramater\n" ; } } ## End ELSIF PForest elsif ( ( defined $CONF->{'INHOUSE_BANK'} ) and ( $CONF->{'INHOUSE_BANK'} ne '' ) ) { - $col_mzdb = 4; - $bank_name = "internal_bank"; + + $col_mzdb = $CONF->{'INHOUSE_BANK_MZ_COLUMN'} ; + $bank_name = $CONF->{'INHOUSE_BANK_NAME'} ; + my $html_file = $binPath.'/'.$CONF->{'INHOUSE_BANK'} ; + if ( (defined $col_rt) or (defined $manual_rt) or (defined $rt_delta) ) { croak "No retention time in the internal bank, please use your own bank\n" ; } - my $html_file = $binPath.'/'.$CONF->{'INHOUSE_BANK'} ; + if ( -e $html_file ) { ## parse all csv for later : output csv build my $ocsv_input = lib::csv->new() ; @@ -240,7 +249,7 @@ my $compt_masses = 0; foreach my $mz (@$masses) { $compt_masses++; - my ($MZmessage) = $oBih->check_interval($mz, 0, 10000) ; + my ($MZmessage) = $oBih->check_interval($mz, $CONF->{'BANK_MZ_MIN'}, $CONF->{'BANK_MZ_MAX'}) ; if ( $MZmessage eq 'OK' ){ my ( $min, $max ) = $oBih->mz_delta_conversion(\$mz, \$mz_delta_type, \$mz_delta) ; @@ -253,11 +262,11 @@ for (my $i=$$marj_inf; $i<$$marj_sup; $i++){ my $bank_tmp = $$bank{$sort_masses_bank[$i]}; if ( ( defined $rt ) and ( $rt ne "" ) ) { - my ($RTmessage) = $oBih->check_interval($$rt[$compt_masses-1], 0, 60) ; + my ($RTmessage) = $oBih->check_interval($$rt[$compt_masses-1], $CONF->{'BANK_RT_MIN'}, $CONF->{'BANK_RT_MAX'}) ; if ( $RTmessage eq 'OK' ){ my $bank_rt = []; for(my $nb_rt=0; $nb_rt<=$#$bank_tmp; $nb_rt++){ - my ($RTbank) = $oBih->check_interval($bank_tmp->[$nb_rt]->[$rtdb-1], 0, 60) ; + my ($RTbank) = $oBih->check_interval($bank_tmp->[$nb_rt]->[$rtdb-1], $CONF->{'BANK_RT_MIN'}, $CONF->{'BANK_RT_MAX'}) ; my ($RTsearch) = $oBih->check_interval($bank_tmp->[$nb_rt]->[$rtdb-1], $$rt[$compt_masses-1]-$rt_delta, $$rt[$compt_masses-1]+$rt_delta) ; if ( ($RTbank eq 'OK') and ($RTsearch eq 'OK') ){ push (@$result, $bank_tmp->[$nb_rt]) ; @@ -282,15 +291,15 @@ my $compt_masses = 0; foreach my $mz (@$masses) { $compt_masses++; - my ($MZmessage) = $oBih->check_interval($mz, 0, 10000) ; + my ($MZmessage) = $oBih->check_interval($mz, $CONF->{'BANK_MZ_MIN'}, $CONF->{'BANK_MZ_MAX'}) ; if ( $MZmessage eq 'OK' ){ if ($$bank{$mz}){ my $bank_tmp = $$bank{$mz}; if ( ( defined $rt ) and ( $rt ne "" ) ) { - my ($RTmessage) = $oBih->check_interval($$rt[$compt_masses-1], 0, 60) ; + my ($RTmessage) = $oBih->check_interval($$rt[$compt_masses-1], $CONF->{'BANK_RT_MIN'}, $CONF->{'BANK_RT_MAX'}) ; if ( $RTmessage eq 'OK' ){my $bank_rt = []; for(my $nb_rt=0; $nb_rt<=$#$bank_tmp; $nb_rt++){ - my ($RTbank) = $oBih->check_interval($bank_tmp->[$nb_rt]->[$rtdb-1], 0, 60) ; + my ($RTbank) = $oBih->check_interval($bank_tmp->[$nb_rt]->[$rtdb-1], $CONF->{'BANK_RT_MIN'}, $CONF->{'BANK_RT_MAX'}) ; my ($RTsearch) = $oBih->check_interval($bank_tmp->[$nb_rt]->[$rtdb-1], $$rt[$compt_masses-1]-$rt_delta, $$rt[$compt_masses-1]+$rt_delta) ; if ( ($RTbank eq 'OK') and ($RTsearch eq 'OK') ){ push (@$bank_rt, $bank_tmp->[$nb_rt]) ; @@ -317,8 +326,8 @@ } ## end ELSE -if ( ( defined $rt ) and ( $rt ne "" ) ) { unshift (@$bank_head, ("DELTA_mass(".$mz_delta.$mz_delta_type.")", "MASS_Result", "DELTA_RT(".$rt_delta.")", "RT_Result")) ; } -else { unshift (@$bank_head, ("DELTA_mass(".$mz_delta.$mz_delta_type.")", "MASS_Result")) ; } +if ( ( defined $rt ) and ( $rt ne "" ) ) { unshift (@$bank_head, ("MzDelta_Query-Bank(".$mz_delta.$mz_delta_type.")", "MzBank", "RtQuery", "RtDelta_Query-Bank(".$rt_delta."min.)", "RtBank")) ; } +else { unshift (@$bank_head, ("MzDelta_Query-Bank(".$mz_delta.$mz_delta_type.")", "MzBank")) ; } ## -------------- Produce JSON output ------------------ : @@ -365,12 +374,12 @@ if ( ( $header_choice eq 'yes' ) and ( defined $nbline_header ) and ( $nbline_header > 0 )) { my $header = join("$sep", @$bank_head); my $out_head = "BiH_".$bank_name."_(".$header.")"; - $lm_matrix = $ocsv->set_lm_matrix_object($out_head, $masses, $col_mzdb, $results, $rt, $rtdb, $bank_head, $sep ) ; - $lm_matrix = $ocsv->add_lm_matrix_to_input_matrix($complete_rows, $lm_matrix, $nbline_header-1) ; + $lm_matrix = $ocsv->set_bih_matrix_object($out_head, $masses, $col_mzdb, $results, $rt, $rtdb, $bank_head, $sep ) ; + $lm_matrix = $ocsv->add_bih_matrix_to_input_matrix($complete_rows, $lm_matrix, $nbline_header-1) ; } elsif ( ( $header_choice eq 'no' ) or ( $nbline_header <= 0 )) { - $lm_matrix = $ocsv->set_lm_matrix_object(undef, $masses, $col_mzdb, $results, $rt, $rtdb, $bank_head, $sep ) ; - $lm_matrix = $ocsv->add_lm_matrix_to_input_matrix($complete_rows, $lm_matrix, 0) ; + $lm_matrix = $ocsv->set_bih_matrix_object(undef, $masses, $col_mzdb, $results, $rt, $rtdb, $bank_head, $sep ) ; + $lm_matrix = $ocsv->add_bih_matrix_to_input_matrix($complete_rows, $lm_matrix, 0) ; } else { croak "The number of header line is not identifiable\n" ; } $ocsv->write_csv_skel(\$out_tab, $lm_matrix) ; @@ -415,11 +424,11 @@ # bank_inhouse is a script to query a in house bank (file) using chemical mass and return a list of common names. # Input : mass or list of masses -# Author : Marion LANDI and Franck Giacomoni (for the Rest part) -# Email : franck.giacomoni\@clermont.inra.fr -# Version : 1.1 +# Author : Marion LANDI and Franck Giacomoni (as maintainers) +# Email : franck.giacomoni\@inra.fr +# Version : 1.2.1 # Created : 15/10/2014 -# Updated : 15/12/2015 +# Updated : 24/01/2019 USAGE : bank_inhouse.pl -masse [mass] -tolerance [Delta of mass (Da)] -mode [Ionization type: positive/negative/neutral] @@ -479,6 +488,7 @@ =head1 AUTHOR Marion LANDI E<lt>marion.landi@clermont.inra.frE<gt> +Frank Giacomoni E<lt>franck.giacomoni@inra.frE<gt> =head1 LICENSE @@ -486,8 +496,15 @@ =head1 VERSION -version 1 : 15 / 10 / 2014 +version 1.1.1 : 15 / 10 / 2014 + +version 1.1.2 : 21 / 11 / 2014 -version 2 : 21 / 11 / 2014 +version 1.1.3 : 13 / 11 / 2018 + +version 1.2.0 : 12 / 12 / 2018 + +version 1.2.1 : 24 / 01 / 2019 - new version with no more rest methods + =cut