#!/usr/bin/perl
#
# mol2tocml.pl
#
# FyD, April 2006,
# Universite de Picardie - Jules Verne
# http://www.q4md-forcefieldtools.org/
# GPL license
#
#
#
# -0.682
#
#
#
#
#
use warnings;
# use strict;
use FileHandle;
if (!@ARGV) { @ARGV = ; chop(@ARGV); }
$z = 1;
foreach $file (@ARGV) {
if (!-f $file) { print "Skipping non-regular file: $file\n"; next; }
if (-B $file) { print "Skipping binary file: $file\n"; next; }
system ("echo \"Name of the file converted = $file\"\n");
open (TRIPOS,"<$file");
$i=0;
foreach (){
if(/\s+(\-\d+|\d+)\.\d+\s+(\-\d+|\d+)\.\d+\s+(\-\d+|\d+)\.\d+\s/){
# AtName Xcoord Ycoord Zcoord Element Charge
($T[1][$i][$z],$T[2][$i][$z],$T[3][$i][$z],$T[4][$i][$z],$T[5][$i][$z],$T[6][$i][$z],$T[7][$i][$z],$T[8][$i][$z]) = (split(' '))[1,2,3,4,5,6,7,8];
$T[0][$i][$z] = $i+1;
# print "nbA = $T[0][$i][$z]; Atom = $T[1][$i][$z]\n"; # Checking
$i++;
}
}
$NbA=$i;
close(TRIPOS);
open(TRIPOS,"<$file");
$j=$flag1=$flag2=$flag3=0;
foreach (){
if(/\@BOND/ig) { $flag1=1; }
if(($flag1 == 1) && ($flag2 < 2)) { $flag2++; }
if(($flag2 == 2) && ($flag3 == 0)){
if(/\s+\d+\s+\d+\s+\d+\s+\d+\s/){
($T[10][$j][$z],$T[11][$j][$z],$T[12][$j][$z]) = (split(' '))[1,2,3];
# print "nbB = $T[7][$j][$z]\n"; # Checking
$j++;
}
else { $flag3 = 1; }
}
}
$NbB=$j;
close(TRIPOS);
$NbAtom=$NbA-1; $NbBond=$NbB-1;
open (CML, ">$file.cml");
printf CML ("\n");
printf CML (" \n");
for ($i=0; $i<=$NbAtom; $i++) {
printf (CML " $T[8][$i][$z]\n");
# printf (CML " $T[8][$i][$z]\n");
}
printf CML (" \n");
printf CML (" \n");
for ($j=0; $j<=$NbBond; $j++) {
printf (CML " \n");
}
printf CML (" \n");
printf CML ("\n");
close(CML);
$z++;
}