Jump to content

Mod:Hunt Research Group/conv xyz2conf

From ChemWiki
#!/usr/bin/perl
$name=$ARGV[0];
$i=1;
open(PDB,"${name}.xyz");
while($line=<PDB>){
if($line=~/ NA /){
chomp($line);
@data=split(/ +/,$line);
$atomType[$i]=$data[1];$atomX[$i]=$data[2];$atomY[$i]=$data[3];$atomZ[$i]=$data[4];
$i++;
}
if($line=~/ CL /){
chomp($line);
@data=split(/ +/,$line);
$atomType[$i]=$data[1];$atomX[$i]=$data[2];$atomY[$i]=$data[3];$atomZ[$i]=$data[4];
$i++;
}
if($line=~/ OH2 /){
chomp($line);
@data=split(/ +/,$line);
$atomType[$i]=$data[1];$atomX[$i]=$data[2];$atomY[$i]=$data[3];$atomZ[$i]=$data[4];
$i++;
}
if($line=~/ HO /){
chomp($line);
@data=split(/ +/,$line);
$atomType[$i]=$data[1];$atomX[$i]=$data[2];$atomY[$i]=$data[3];$atomZ[$i]=$data[4];
$i++;
}
}
open(CFG,">${name}.cfg");
$header="Converted from Packmol XYZ\n";
print CFG $header;
printf CFG "%10d%10d%10d%20.6f\n",0,0,0,0;
printf CFG "%20.12f%20.12f%20.12f\n",0,0,0;
printf CFG "%20.12f%20.12f%20.12f\n",0,0,0;
printf CFG "%20.12f%20.12f%20.12f\n",0,0,0;

#writing atom types and coordinates into DL_POLY CONFIG

for($i=1;$i<=$#atomType;$i++){
printf CFG "%-8s%10d\n",$atomType[$i],$i;
printf CFG "%20.6f%20.6f%20.6f\n",$atomX[$i],$atomY[$i],$atomZ[$i];
}

close(CFG);
close(PDB);