#!/bin/sh
use strict "vars";
use warnings;
push (@ARGV,split(' ', $ENV{'wims_exec_parm'})) if ($ENV{'wims_exec_parm'});
my @valence1=('Li','Na','K','F','Cl','Br','I','At');
my @valence2=('Be','Mg','Ca','Sr','Ba','O','Se','Te','Mn','Hg','Zn','Cu','S');
my @valence3=('B','Al','N','P','As','Fe');
my @valence4=('C','Si','Ge','Sn','A','Q');
my @other=('H');
my ($nbatom, $nbbond);
my $cnt=1; my $nH=0;
my %hash = ();
my $hash = \%hash;
my %bond=();
my $bond = \%bond;
my %atom = ();
my $atom = \%atom;
my $cntmax=10000;
my @a=();
while(<IN>) {
if($cnt==4){
$nbatom=$a[0]; $nbbond=$a[1];$cntmax=4+$nbatom;
};
if($cnt>4 && $cnt <= $cntmax) {
$hash->{$cnt-4}{name}=$a[3];
if(!$atom->{$a[3]}) { $atom->{$a[3]}=1} else { $atom->{$a[3]} ++}
if ( grep { $_ eq $a[3] } @valence4 ){ $hash->{$cnt-4}{hydrogen
}=4}
elsif ( grep { $_ eq $a[3] } @valence1 ){ $hash->{$cnt-4}{hydrogen
}=1}
elsif ( grep { $_ eq $a[3] } @valence2 ){ $hash->{$cnt-4}{hydrogen
}=2}
elsif ( grep { $_ eq $a[3] } @valence3 ){ $hash->{$cnt-4}{hydrogen
}=3}
elsif ( grep { $_ eq $a[3] } @other) {}
else {
#die( "$a[3]")
}
}
my $tt;
if ($cnt > $cntmax && $cnt <= $cntmax + $nbbond) {
if (!($hash->{$a[0]}{name} =~ /H\b/) && !($hash->{$a[1]}{name} =~ /H\b/)) {
$hash->{$a[0]}{'hydrogen'}-= $a[2];
$hash->{$a[1]}{'hydrogen'}-= $a[2];
$bond->{$cnt}=$a[0] . ',' . $a[1];
$tt=$cnt<= $cntmax ? $cnt: $cnt-$cntmax;
$bond->{$a[0]}=!$bond->{$a[0]} ? $tt: $bond->{$a[0]}.','. $tt;
$bond->{$a[1]}=!$bond->{$a[1]} ? $tt: $bond->{$a[1]}.','. $tt;
}
if (!($hash->{$a[0]}{name} =~ /H\b/) && ($hash->{$a[1]}{name} =~ /H\b/)) {
$hash->{$a[0]}{'hydrogenfichier'}++;
}
if (!($hash->{$a[1]}{name} =~ /H\b/) && ($hash->{$a[0]}{name} =~ /H\b/)) {
$hash->{$a[1]}{'hydrogenfichier'}++;
}
}
my $cc=1;
for my $ion (@a) {
if ($cc%2==0) {
$hash->{$ion}{'hydrogen'} += $a[$cc];
}
$cc++;
}
};
$cnt ++;
}
my $nbhydrogen='';
$hash{$at}{'hydrogen'}=0 if (!(defined $hash{$at}{'hydrogen'}) || $hash{$at}{'hydrogen'}<0);
$nH = $nH+ $hash{$at}{'hydrogen'};
$nbhydrogen .= "$at,$hash->{$at}{name},$hash->{$at}{'hydrogen'}\n";
}
my $nbhydrogenfichier='';
if(!($hash->{$at}{name} =~ /H\b/)){
$hash{$at}{'hydrogenfichier'}=0 if (!(defined $hash{$at}{'hydrogenfichier'})
|| $hash{$at}{'hydrogenfichier'}<0);
$nbhydrogenfichier .= "$at,$hash->{$at}{name},$hash->{$at}{'hydrogenfichier'}\n";
}
}
$atom{'H'}=$nH;
my $formula=$atom{'C'} > 0 ? 'C' : '' ;
$formula .= $atom{'C'} if $atom{'C'} > 1;
$formula .= 'H' if $atom{'H'} > 0;
$formula .= $atom{'H'} if $atom{'H'} > 1;
next if (!(defined ($atom{$at})) || $atom{$at}==0 );
next if ($at=~'C\b' || $at=~'H\b');
$formula .= $atom{$at}==1? $at : $at . $atom{$at};
}
my $bondprint="";
if($bd <= $nbatom){
$bondprint .= "atom $bd,$bond{$bd}\n";
} else {
my $bd1=$bd-$nbatom-4; $bondprint .= "bond $bd1,$bond{$bd}\n";
}
}
print "$formula,[$nbhydrogen],[$nbhydrogenfichier],[$bondprint]";
EOF