Mercurial > repos > fgiacomoni > hr2
comparison lib/hr.pm @ 3:78afd7f439f3 draft default tip
master branch Updating with tag :CI_COMMIT_TAG - - Fxx
| author | fgiacomoni |
|---|---|
| date | Wed, 15 Feb 2023 15:57:49 +0000 |
| parents | 23970530a518 |
| children |
comparison
equal
deleted
inserted
replaced
| 2:23970530a518 | 3:78afd7f439f3 |
|---|---|
| 12 | 12 |
| 13 use vars qw($VERSION @ISA @EXPORT %EXPORT_TAGS); | 13 use vars qw($VERSION @ISA @EXPORT %EXPORT_TAGS); |
| 14 | 14 |
| 15 our $VERSION = "1.0"; | 15 our $VERSION = "1.0"; |
| 16 our @ISA = qw(Exporter); | 16 our @ISA = qw(Exporter); |
| 17 our @EXPORT = qw( manage_atoms_and_ranges manage_atoms check_hr_exe manage_atom_and_range manage_tolerance manage_mode config_hr_exe ); | 17 our @EXPORT = qw( manageAtomsConf manage_atoms_and_ranges check_hr_exe manage_tolerance manage_mode config_hr_exe ); |
| 18 our %EXPORT_TAGS = ( ALL => [qw(manage_atoms_and_ranges manage_atoms check_hr_exe manage_atom_and_range manage_tolerance manage_mode config_hr_exe )] ); | 18 our %EXPORT_TAGS = ( ALL => [qw(manageAtomsConf manage_atoms_and_ranges check_hr_exe manage_tolerance manage_mode config_hr_exe )] ); |
| 19 | 19 |
| 20 =head1 NAME | 20 =head1 NAME |
| 21 | 21 |
| 22 lib::hr - A module for managing / launching hr binary (structure elucidation c++ progr) | 22 lib::hr - A module for managing / launching hr binary (structure elucidation c++ progr) |
| 23 | 23 |
| 52 bless($self) ; | 52 bless($self) ; |
| 53 return $self ; | 53 return $self ; |
| 54 } | 54 } |
| 55 ### END of SUB | 55 ### END of SUB |
| 56 | 56 |
| 57 | |
| 58 =head2 METHOD manageAtomsConf | |
| 59 | |
| 60 ## Description : take all max atom values from CONF file and personal choice | |
| 61 ## Input : $confFile, $C12_max_value, $C13_max_value, $H_max_value, $N_max_value, $O_max_value, $P_max_value, $S_max_value, $F_max_value, $Cl_max_value, $K_max_value, $Br_max_value, $Na_max_value | |
| 62 ## Output : $atomFullConfig | |
| 63 ## Usage : my ( $atomFullConfig ) = manageAtomsConf ( $confFile, $C12_max_value, $C13_max_value, $H_max_value, $N_max_value, $O_max_value, $P_max_value, $S_max_value, $F_max_value, $Cl_max_value, $K_max_value, $Br_max_value, $Na_max_value ) ; | |
| 64 | |
| 65 =cut | |
| 66 ## START of SUB | |
| 67 sub manageAtomsConf{ | |
| 68 ## Retrieve Values | |
| 69 my $self = shift ; | |
| 70 my ($confFile, $C12_max_value, $C13_max_value, $H_max_value, $N_max_value, $O_max_value, $P_max_value, $S_max_value, $F_max_value, $Cl_max_value, $K_max_value, $Br_max_value, $Na_max_value) = @_ ; | |
| 71 | |
| 72 my %atomFullConfig = () ; | |
| 73 $atomFullConfig{'C'} = {'min' => 0, 'max' => 0} ; | |
| 74 $atomFullConfig{'H'} = {'min' => 0, 'max' => 0} ; | |
| 75 $atomFullConfig{'N'} = {'min' => 0, 'max' => 0} ; | |
| 76 $atomFullConfig{'O'} = {'min' => 0, 'max' => 0} ; | |
| 77 $atomFullConfig{'P'} = {'min' => 0, 'max' => 0} ; | |
| 78 $atomFullConfig{'S'} = {'min' => 0, 'max' => 0} ; | |
| 79 $atomFullConfig{'F'} = {'min' => 0, 'max' => 0} ; | |
| 80 $atomFullConfig{'L'} = {'min' => 0, 'max' => 0} ; | |
| 81 $atomFullConfig{'K'} = {'min' => 0, 'max' => 0} ; | |
| 82 $atomFullConfig{'B'} = {'min' => 0, 'max' => 0} ; | |
| 83 $atomFullConfig{'A'} = {'min' => 0, 'max' => 0} ; | |
| 84 $atomFullConfig{'1'} = {'min' => 0, 'max' => 0} ; | |
| 85 | |
| 86 if (defined $C12_max_value) { $atomFullConfig{'C'}{'max'} = $C12_max_value ; } | |
| 87 else { $atomFullConfig{'C'}{'max'} = $confFile->{'C'} } | |
| 88 | |
| 89 if (defined $H_max_value) { $atomFullConfig{'H'}{'max'} = $H_max_value ; } | |
| 90 else { $atomFullConfig{'H'}{'max'} = $confFile->{'H'} } | |
| 91 | |
| 92 if (defined $N_max_value) { $atomFullConfig{'N'}{'max'} = $N_max_value ; } | |
| 93 else { $atomFullConfig{'N'}{'max'} = $confFile->{'N'} } | |
| 94 | |
| 95 if (defined $O_max_value) { $atomFullConfig{'O'}{'max'} = $O_max_value ; } | |
| 96 else { $atomFullConfig{'O'}{'max'} = $confFile->{'O'} } | |
| 97 | |
| 98 if (defined $P_max_value) { $atomFullConfig{'P'}{'max'} = $P_max_value ; } | |
| 99 else { $atomFullConfig{'P'}{'max'} = $confFile->{'DEFAULT_MAX'} } | |
| 100 | |
| 101 if (defined $S_max_value) { $atomFullConfig{'S'}{'max'} = $S_max_value ; } | |
| 102 else { $atomFullConfig{'S'}{'max'} = $confFile->{'DEFAULT_MAX'} } | |
| 103 | |
| 104 if (defined $F_max_value) { $atomFullConfig{'F'}{'max'} = $F_max_value ; } | |
| 105 else { $atomFullConfig{'F'}{'max'} = $confFile->{'DEFAULT_MAX'} } | |
| 106 | |
| 107 if (defined $Cl_max_value) { $atomFullConfig{'L'}{'max'} = $Cl_max_value ; } | |
| 108 else { $atomFullConfig{'L'}{'max'} = $confFile->{'DEFAULT_MAX'} } | |
| 109 | |
| 110 if (defined $K_max_value) { $atomFullConfig{'K'}{'max'} = $K_max_value ; } | |
| 111 else { $atomFullConfig{'K'}{'max'} = $confFile->{'DEFAULT_MAX'} } | |
| 112 | |
| 113 if (defined $Br_max_value) { $atomFullConfig{'B'}{'max'} = $Br_max_value ; } | |
| 114 else { $atomFullConfig{'B'}{'max'} = $confFile->{'DEFAULT_MAX'} } | |
| 115 | |
| 116 if (defined $Na_max_value) { $atomFullConfig{'A'}{'max'} = $Na_max_value ; } | |
| 117 else { $atomFullConfig{'A'}{'max'} = $confFile->{'DEFAULT_MAX'} } | |
| 118 | |
| 119 if (defined $C13_max_value) { $atomFullConfig{'1'}{'max'} = $C13_max_value ; } | |
| 120 else { $atomFullConfig{'1'}{'max'} = $confFile->{'DEFAULT_MAX'} } | |
| 121 | |
| 122 return (\%atomFullConfig) ; | |
| 123 } | |
| 124 ### END of SUB | |
| 125 | |
| 57 =head2 METHOD manage_atoms_and_ranges | 126 =head2 METHOD manage_atoms_and_ranges |
| 58 | 127 |
| 59 ## Description : allow from an initial config to add or delete atoms and their range | 128 ## Description : allow from an initial config to add or delete atoms and their range |
| 60 ## Input : $atomsconfig, $atombasic, $atomsupp | 129 ## Input : $atomsconfig, $atombasic, $atomsupp |
| 61 ## Output : $atomcleanconfig | 130 ## Output : $atomcleanconfig |
| 64 =cut | 133 =cut |
| 65 ## START of SUB | 134 ## START of SUB |
| 66 sub manage_atoms_and_ranges { | 135 sub manage_atoms_and_ranges { |
| 67 ## Retrieve Values | 136 ## Retrieve Values |
| 68 my $self = shift ; | 137 my $self = shift ; |
| 69 my ( $atomsconfig, $CONF, $atombasic, $atomsupp ) = @_; | 138 my ( $atomFullconfig, $atombasic, $atomsupp ) = @_; |
| 70 my ( $atomcleanconfig ) = ( undef ) ; | 139 my ( $atomConfigCmd ) = ( undef ) ; |
| 140 my %atomCurrentConfig = () ; | |
| 141 $atomCurrentConfig{'C'} = {'min' => 0, 'max' => 0} ; | |
| 142 $atomCurrentConfig{'H'} = {'min' => 0, 'max' => 0} ; | |
| 143 $atomCurrentConfig{'N'} = {'min' => 0, 'max' => 0} ; | |
| 144 $atomCurrentConfig{'O'} = {'min' => 0, 'max' => 0} ; | |
| 145 $atomCurrentConfig{'P'} = {'min' => 0, 'max' => 0} ; | |
| 146 $atomCurrentConfig{'S'} = {'min' => 0, 'max' => 0} ; | |
| 147 $atomCurrentConfig{'F'} = {'min' => 0, 'max' => 0} ; | |
| 148 $atomCurrentConfig{'L'} = {'min' => 0, 'max' => 0} ; | |
| 149 $atomCurrentConfig{'K'} = {'min' => 0, 'max' => 0} ; | |
| 150 $atomCurrentConfig{'B'} = {'min' => 0, 'max' => 0} ; | |
| 151 $atomCurrentConfig{'A'} = {'min' => 0, 'max' => 0} ; | |
| 152 $atomCurrentConfig{'1'} = {'min' => 0, 'max' => 0} ; | |
| 71 | 153 |
| 72 # basic atoms case: | 154 # basic atoms case: |
| 73 foreach my $atom ( (split(",", $atombasic )) ) { | 155 foreach my $atom ( (split(",", $atombasic )) ) { |
| 74 if ( exists $CONF->{$atom} ) { $atomsconfig->{$atom}{'max'} = $CONF->{$atom} ; } | 156 if ( exists $atomFullconfig->{$atom}{'max'} ) { $atomCurrentConfig{$atom}{'max'} = $atomFullconfig->{$atom}{'max'} ; } |
| 75 else { print "*** $atom not recognized***\n" ; } | 157 else { print "*** $atom not recognized***\n" ; } |
| 76 } | 158 } |
| 77 | 159 |
| 78 # suppl. atoms case | 160 # suppl. atoms case |
| 79 foreach my $atom ( (split(",", $atomsupp )) ) { | 161 foreach my $atom ( (split(",", $atomsupp )) ) { |
| 80 #print "*** $atom***\n" ; | 162 #print "*** $atom***\n" ; |
| 81 if ( exists $atomsconfig->{$atom} ) { $atomsconfig->{$atom}{'max'} = $CONF->{'DEFAULT_MAX'} ; } | 163 if ( exists $atomFullconfig->{$atom}{'max'} ) { $atomCurrentConfig{$atom}{'max'} = $atomFullconfig->{$atom}{'max'} ; } |
| 82 else { print "*** $atom not recognized***\n" ; } | 164 else { print "*** $atom not recognized***\n" ; } |
| 83 | 165 |
| 84 } | 166 } |
| 85 | 167 |
| 86 # Create atoms and range parameters: | 168 # Create atoms and range parameters: |
| 87 foreach my $selectedAtom ( keys %{$atomsconfig} ) { | 169 foreach my $selectedAtom ( keys %atomCurrentConfig ) { |
| 88 $atomcleanconfig .= ' -'.$selectedAtom.' '.$atomsconfig->{$selectedAtom}{'min'}.'-'.$atomsconfig->{$selectedAtom}{'max'} ; | 170 $atomConfigCmd .= ' -'.$selectedAtom.' '.$atomCurrentConfig{$selectedAtom}{'min'}.'-'.$atomCurrentConfig{$selectedAtom}{'max'} ; |
| 89 } | 171 } |
| 90 | 172 |
| 91 return ($atomcleanconfig) ; | 173 return ($atomConfigCmd) ; |
| 92 } | 174 } |
| 93 ### END of SUB | 175 ### END of SUB |
| 94 | |
| 95 | |
| 96 | |
| 97 =head2 METHOD manage_atoms ### DEPRECATED | |
| 98 | |
| 99 ## Description : controles atoms input list and prepare it like hr binary parameter | |
| 100 ## Input : $input_atoms, $conf_atoms | |
| 101 ## Output : $hr_atoms_param | |
| 102 ## Usage : my ( $hr_atoms_param ) = manage_atoms( $input_atoms, $conf_atoms ) ; | |
| 103 ### DEPRECATED | |
| 104 | |
| 105 =cut | |
| 106 ## START of SUB | |
| 107 sub manage_atoms { ### DEPRECATED | |
| 108 ## Retrieve Values | |
| 109 my $self = shift ; | |
| 110 my ( $input_atoms, $conf_atoms ) = @_ ; | |
| 111 my $hr_atoms_param = undef ; | |
| 112 | |
| 113 if ( ( defined $$input_atoms ) and ( defined $$conf_atoms ) ) { | |
| 114 if ( ( $$input_atoms eq 'None' ) or ( $$input_atoms eq '' ) or ( $$input_atoms eq ' ' ) ) { $hr_atoms_param = $$conf_atoms ; } | |
| 115 elsif ( $$input_atoms =~ /[P|S|F|L|K|B|A|1|,]+/ ) { $hr_atoms_param = $$conf_atoms.','.$$input_atoms ; } | |
| 116 else { $hr_atoms_param = $$conf_atoms ; } | |
| 117 } ## END IF | |
| 118 elsif ( !defined $$input_atoms ) { $hr_atoms_param = $$conf_atoms ; } | |
| 119 elsif ( !defined $$conf_atoms ) { warn "hr module can't manage any atom list (undef values in conf)\n" ; } | |
| 120 else { warn "hr module musn't manage any atom list\n" ; } | |
| 121 | |
| 122 return(\$hr_atoms_param) ; | |
| 123 } | |
| 124 ## END of SUB | |
| 125 | |
| 126 =head2 METHOD manage_atom_and_range ### DEPRECATED | |
| 127 | |
| 128 ## Description : build atom range with defined value in conf file | |
| 129 ## Input : $atom, $min, $max | |
| 130 ## Output : $hr_range | |
| 131 ## Usage : my ( ) = manage_atom_and_range( $atom, $min, $max ) ; | |
| 132 ### DEPRECATED | |
| 133 | |
| 134 =cut | |
| 135 ## START of SUB | |
| 136 sub manage_atom_and_range { ### DEPRECATED | |
| 137 ## Retrieve Values | |
| 138 my $self = shift ; | |
| 139 my ( $atom, $min, $max ) = @_ ; | |
| 140 my $hr_range = undef ; | |
| 141 | |
| 142 if ( ( defined $$atom ) and ( defined $$min ) and ( defined $$max ) ) { | |
| 143 ## manage ragne like "-C 0-200" | |
| 144 $hr_range = ' -'.$$atom.' '.$$min.'-'.$$max ; | |
| 145 } ## END IF | |
| 146 else { | |
| 147 warn "Some argvts are missing to build the current atom range line\n" ; | |
| 148 } | |
| 149 return(\$hr_range) ; | |
| 150 } | |
| 151 ## END of SUB | |
| 152 | 176 |
| 153 =head2 METHOD manage_tolerance | 177 =head2 METHOD manage_tolerance |
| 154 | 178 |
| 155 ## Description : check range and format of tolerance | 179 ## Description : check range and format of tolerance |
| 156 ## Input : $tolerance, $default_value | 180 ## Input : $tolerance, $default_value |
| 755 | 779 |
| 756 =head1 Exports | 780 =head1 Exports |
| 757 | 781 |
| 758 =over 4 | 782 =over 4 |
| 759 | 783 |
| 760 =item :ALL is manage_atoms, check_hr_exe, manage_tolerance | 784 =item :ALL is manageAtomsConf manage_atoms_and_ranges check_hr_exe manage_tolerance manage_mode config_hr_exe |
| 761 | 785 |
| 762 =back | 786 =back |
| 763 | 787 |
| 764 =head1 AUTHOR | 788 =head1 AUTHOR |
| 765 | 789 |
| 771 | 795 |
| 772 =head1 VERSION | 796 =head1 VERSION |
| 773 | 797 |
| 774 version 1 : 02 / 20 / 2014 | 798 version 1 : 02 / 20 / 2014 |
| 775 | 799 |
| 776 version 2 : ?? | 800 version 2 : 02/ 15 / 2023 - Add personal max value for each atom manager methods, remove deprecated methods |
| 777 | 801 |
| 778 =cut | 802 =cut |
