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