Wednesday, December 05, 2007

New European Initiatives about Open Access

Open Access (OA) is a free and unrestricted online availability of scientific and scholarly materials (data, literature, ...). The Budapest Open Access Initiative in December 2001 published the first major international statement on OA in February 2002. Since then, OA has become a popular subject. For more details about Open Access, you can read the dedicated wikipedia page.

Recently, two documents have been published:

Friday, August 17, 2007

Mychem 0.2 is out !

Mychem is an extension for MySQL that provides chemical functions. It's based on Open Babel 2 and is distributed under GPL-v2 license. In the current Mychem version, the following functions are supported:
- conversion of chemical files (CML, InChI, SMILES, MDL Mol)
- calculation of some chemical properties (formula, molecular weight)

Other functions, like fingerprint generation or tanimoto calculation are available on the SVN trunk:
svn co mychem

The package contains also:
- a short documentation (mychem.docbook)
- MychemAdmin, a graphical interface for creating MySQL chemical database (fig. 1)

A graphical interface for creating chemistry databaseFigure 1. MychemAdmin, a chemical database creator

Friday, July 27, 2007

CML file reloaded

Here's an updated version of a valid CML file:

<?xml version="1.0"?>
<molecule xmlns=""
xmlns:iupac="" id="CS_oxolane">
<formula concise=" C 4 H 8 O 1 "/>
<identifier convention="iupac:inchi" value="1/C4H8O/c1-2-4-5-3-1/h1-4H2"/>
<name convention="IUPAC">Oxolan</name>
<atom id="a1" elementType="C" x3="-0.03" y3="1.09" z3="-0.03"/>
<atom id="a2" elementType="C" x3="-1.33" y3="0.28" z3="0.024"/>
<atom id="a3" elementType="O" x3="-1.01" y3="-1.10" z3="-0.13"/>
<atom id="a4" elementType="C" x3="0.39" y3="-1.30" z3="0.02"/>
<atom id="a5" elementType="C" x3="1.09" y3="0.06" z3="-0.04"/>
<atom id="a6" elementType="H" x3="0.04" y3="1.79" z3="0.82"/>
<atom id="a7" elementType="H" x3="-0.00" y3="1.73" z3="-0.94"/>
<atom id="a8" elementType="H" x3="-2.03" y3="0.51" z3="-0.79"/>
<atom id="a9" elementType="H" x3="-1.86" y3="0.39" z3="0.98"/>
<atom id="a10" elementType="H" x3="0.68" y3="-1.98" z3="-0.79"/>
<atom id="a11" elementType="H" x3="0.55" y3="-1.81" z3="0.98"/>
<atom id="a12" elementType="H" x3="1.72" y3="0.15" z3="-0.94"/>
<atom id="a13" elementType="H" x3="1.78" y3="0.20" z3="0.82"/>
<bond atomRefs2="a1 a2" order="1"/>
<bond atomRefs2="a2 a3" order="1"/>
<bond atomRefs2="a3 a4" order="1"/>
<bond atomRefs2="a4 a5" order="1"/>
<bond atomRefs2="a5 a1" order="1"/>
<bond atomRefs2="a1 a6" order="1"/>
<bond atomRefs2="a1 a7" order="1"/>
<bond atomRefs2="a2 a8" order="1"/>
<bond atomRefs2="a2 a9" order="1"/>
<bond atomRefs2="a4 a10" order="1"/>
<bond atomRefs2="a4 a11" order="1"/>
<bond atomRefs2="a5 a12" order="1"/>
<bond atomRefs2="a5 a13" order="1"/>
<property dictRef="cml:molwt" title="Molecular weight">
<scalar dataType="xsd:double" dictRef="cml:molwt" units="units:g">
<property dictRef="cml:isotopicwt" title="Monoisotopic mass">
<scalar dataType="xsd:double" dictRef="cml:monoisotopicwt" units="units:g">
<property dictRef="cml:mp" title="Melting point">
<scalar dataType="xsd:double" errorValue="1.0" dictRef="cml:mp" units="units:celsius">
<property dictRef="cml:bp" title="Boiling point">
<scalar dataType="xsd:double" errorValue="1.0" dictRef="cml:bp" units="units:celsius">

Thursday, July 19, 2007

PyMOL 1.0 is released

The version 1.0 of PyMOL has been released on 2007-06-21.

PyMOL 1.0 executables are available for download by current PyMOL Subscribers. The open-source code for 1.0 is freely available from the b10 branche of the subversion repository:

svn co pymol-1.0

Read the entire news on the Alchem Website !

Tuesday, February 27, 2007

Chemical Structure 2.0 released !

The news. The version 2.0 of Chemical Structures released today. This release has many new features and fixes:
- the project contains 524 structures
- the build system is based on CMake
- the user interface has been improved by using a new html design
- SMILES string is displayed on the molecule page
- Python scripts are used to generate html pages (instead of XSLT)
- name and formula indexes are available
- many bug fixes
- ...


Chemical Structure Project. An online version is available on the following website:

Download. The last version can be downloaded on this page:

About Chemical Structures
. The Chemical Structures project aims to provide a complete set of molecular structures. The version 2.0 contains over 500 structures of organic compounds. In addition to structural data, each file contains complementary informations, like molecular weight, boiling point, melting point or InChI code.
Chemical Structures is part of the Blue Obelisk Data Repository.

Thursday, February 22, 2007

KOpenBabel: a new building block for a chemistry-aware desktop

KOpenBabel is a graphical interface to Open Babel. It permits the conversion of chemical files (more than 70 file formats are supported).
KOpenBabel is divided in three parts:
- KOpenBabel3: a KDE3 interface
- KOpenBabel4: a KDE4 interface
- QOpenBabel: a Qt4 interface

KOpenBabel3 and QOpenBabel are the most advanced projects. Translastions are available in french and german. All basic features are working. Some works are needed on the translation of KOpenBabel4. Each packages are released under the GNU Public License.

QOpenBabel has been successfully compiled on Microsoft Windows XP.

A screenshot of KOpenBabel3

For furthers informations, visit the project website:

Monday, January 08, 2007

A simple CML parser written in Python

Python is a powerful programming language. It can be easily extended by importing modules.
Below is a simple module for parsing CML file. As you can see, it's really easy to add the support for another tags.

import xml.sax.handler

class CMLHandler(xml.sax.handler.ContentHandler):
def __init__(self): = ""
self.formula = ""
self.inIdentifier = False
self.inchi = "InChI/1="
self.inInChI = False
self.inBasic = False = ""
self.inName = False
self.weight = ""
self.inWeight = False
self.mpt = ""
self.mptSet = False
self.inMpt = False
self.bpt = ""
self.inBpt = False
self.bptSet = False

def startElement(self, name, attributes):
if name == "molecule": = attributes["id"]

if name == "formula":
self.formula = attributes["concise"]

if name == "identifier":
self.inIdentifier = True
if attributes.has_key("version") and attributes["version"] == "InChI/1":
self.inInChI = True

if name == "basic":
self.inBasic = True

if name == "name":
self.inName = True

if name == "scalar":
if attributes["dictRef"] == "cml:molwt":
self.inWeight = True
elif attributes["dictRef"] == "cml:mpt":
self.inMpt = True
elif attributes["dictRef"] == "cml:bpt":
self.inBpt = True

def characters(self, data):
if self.inName: += data

if self.inWeight:
self.weight += data

if self.inMpt:
self.mpt += data

if self.inBpt:
self.bpt += data

if self.inBasic and self.inInChI:
self.inchi += data

def endElement(self,name):
if name == "identifier":
self.inIdenfitier = False

if name == "basic":
self.inBasic = False
if self.inInChI:
self.inInChI = False

if name == "name":
self.inName = False

if name == "inchi":
self.inInChI = False

if name == "scalar":
if self.inWeight:
self.inWeight = False
elif self.inMpt:
self.inMpt = False
self.mptSet = True
elif self.inBpt:
self.inBpt = False
self.bptSet = True