1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| sub analyse_study($) {
my ($study) = @_;
local $/ = "\r\n";
my @cols = ("Factor Value[Compound]", "Characteristics[StdInChIKey]");
open my $STUDY, "<", \$study;
my ($header, %header) = (0);
if (defined(my $h = <$STUDY>)) {
$header{$_} = $header++ foreach map { chomp ; $_ } split /\t/, $h;
my %std_in_chi_key;
foreach my $line (<$STUDY>) {
chomp($line);
my ($compound, $std_in_chi_key) = (split /\t/, $line)[@header{@cols}];
push @{$std_in_chi_key{$compound}}, $std_in_chi_key;
#say "Compound=$compound std_in_chi_key=$std_in_chi_key";
}
foreach my $compound (keys %std_in_chi_key){
my %diff_std_in_chi_key_count;
foreach my $v (@{$std_in_chi_key{$compound}}){
$diff_std_in_chi_key_count{$v}=1;
}
my @diif_std_in_chi_key = keys (%diff_std_in_chi_key_count);
if ( int(@diif_std_in_chi_key) > 1){
say "The following Compound have several StdInChiKeys:\n".$compound."\t".join (',', @diif_std_in_chi_key);
}
}
=h
if (my @duplicated = grep @{$std_in_chi_key{$_}}>1, keys %std_in_chi_key) {
say "The following Compound have several StdInChiKeys:\n",
join "\n", map { " $_: @{$std_in_chi_key{$_}}" } @duplicated;
}
=cut
}
} |
Partager