Viewing file: xyz2cml.php (3.13 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#! /usr/local/bin/php -q <?php // // +----------------------------------------------------------------------+ // | PHP Version 4 | // +----------------------------------------------------------------------+ // | Copyright (c) 1997-2003 The PHP Group | // +----------------------------------------------------------------------+ // | This source file is subject to version 2.0 of the PHP license, | // | that is bundled with this package in the file LICENSE, and is | // | available at through the world-wide-web at | // | http://www.php.net/license/2_02.txt. | // | If you did not receive a copy of the PHP license and are unable to | // | obtain it through the world-wide-web, please send a note to | // | license@php.net so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Authors: Jesus M. Castagnetto <jmcastagnetto@php.net> | // +----------------------------------------------------------------------+ // // Sample script that uses the Chemistry classes to convert a XYZ file to CML // // $Id: xyz2cml.php,v 1.3 2003/01/04 11:56:25 mj Exp $
require_once "Science/Chemistry.php"; require_once "Science/Chemistry/Molecule_XYZ.php";
// save the old value of "track_errors" $oldtrack = ini_get("track_errors"); // set it so $php_errormsg will be used ini_set("track_errors", 1);
// Use a local or the original DTD //$DTDPATH = "http://www.xml-cml.org/cml_10.dtd"; // change the local path $DTDPATH = "/usr/local/dtd/cml.dtd";
function usage ($extra) { global $argv; echo $extra; echo "Usage:\n\t".basename($argv[0])." xyzfile cmlfile [title] \n\n"; // restore old "track_errors" value ini_set("track_errors", $oldtrack); exit -1; }
if ($argc < 3) usage("*ERROR* Wrong number of parameters\n");
// assume that any parameter after the cmlfile name // is part of the title if ($argc > 3) for ($i=3; $i < $argc; $i++) $title .= $argv[$i]." "; else $title = "molecule";
$date = date("Y-m-d H:i:s T"); $title = trim($title); $xyz = realpath($argv[1]); $id = str_replace("/","_", $xyz); list($moltitle,) = explode(".",basename($xyz)); $cml = $argv[2];
echo "Converting ".$argv[1]." to $cml... "; // create the molecule object $mol = new Science_Chemistry_Molecule_XYZ($xyz);
// prepare output $out = "<?xml version=\"1.0\"> <!DOCTYPE document SYSTEM \"$DTDPATH\" [ <!ELEMENT document ANY> <!ELEMENT cml ANY> <!ATTLIST cml title CDATA #IMPLIED id CDATA #IMPLIED > ]> <!-- -- CML document -- converted from: $xyz -- on: $date -->\n"; $out .= "<document>\n<cml title=\"$title\" id=\"$id\">\n"; $out .= $mol->toCML($moltitle, $moltitle."1", true); $out .= "</cml>\n</document>";
// write the output $fp = @fopen($cml, "w"); if ($fp) { fwrite($fp, $out); flush(); fclose($fp); echo " finished!\n\n"; } else { usage("\n*ERROR* while writing to $cml\n--> $php_errormsg\n"); }
// restore old "track_errors" value ini_set("track_errors", $oldtrack); ?>
|