Saturday, June 20, 2009

chem-bla-ics: Bioclipse-JChemPaint

Les équipes de développement CDK à l'université d'Uppsala et à l'EBI ont travaillé intensivement à la ré-écriture de JChemPaint. La nouvelle version est maintenant stable et devrait être prochainement annoncée officiellement. Ci-dessous, le lien vers l'annonce sur le blog d'Egon Willighagen, l'un des fondateurs du projet CDK :
chem-bla-ics: Bioclipse-JChemPaint

Sunday, January 04, 2009

Mychem v0.6.0 is Released !

The version 0.6.0 of Mychem has been released on 2008-12-30. The main changes are:

  • New functions:

    • bit_fp_or

    • bit_fp_count

    • bit_fp_and

    • molecule_to_inchi

    • inchi_to_molecule

  • Bug fixes

  • Updated documentation

  • Molecule type is now MDL Molfile

  • Works with Open Babel v2.1.1 and v2.2.0.

Two versions of Mychem are now available:


  • Mychem2 - Designed for Open Babel v2.1.1.

  • Mychem3 - Designed for Open Babel v2.2.0.

Monday, November 10, 2008

Major fix in Mychem

A major bug has been fixed into Mychem. Fredrik Wallner has posted the main patch.
In some case, the return value of Mychem functions was blank and no error were raised.
Fredrik Wallner has founded that setting a character at the end of the string to '\0' fixes this issue.

The old code:
const char *inputMol = args->args[0];

The new code:
char *inputMol = (char *) malloc(sizeof(char)*(args->lengths[0]+1));
strncpy(inputMol, args->args[0], args->lengths[0]);
inputMol[args->lengths[0]] = 0;

This indicates that the character string given by MySQL as parameter does not contains the '\0' character at the end.

Many thanks to Fredrik Wallner !

The road is now open to go to the next release (0.6.0)

Saturday, June 14, 2008

Mychem works on Windows XP

After some works on the source files and tuning Microsoft Visual Express C++, I'm proud to announce that Mychem is working on Microsoft Windows XP.



The Microsoft Windows version of Mychem will be released soon. The Mychem documentation will also contain a section about the compilation and the installation of Mychem on Windows XP.

Tuesday, April 08, 2008

New release of Mychem

The version 0.5.5 of Mychem has been released on 2008-04-08. The main changes are:



  • New functions:

    • strip_salts

    • molecule_to_canonical_smiles

    • is_2D

    • is_3D

    • is_chiral

    • number_of_rings

    • number_of_acceptors

    • number_of_donors

    • molpsa

    • molmr

    • mollogp



  • Bug fixes

  • Updated documentation


The Tanimoto function has been enhanced by two methods. The first was to store the
fingerprint as binary string. The second was to implement directly the tanimoto algorithm. Now, the Tanimoto coefficient computation of more than 70.000 entries takes less than 0.4 second on my laptop.


At least, a short article has been published about Pgchem and Mychem on Alchem.org.

Friday, February 22, 2008

Some news about Mychem

Mychem is an Open Source package providing a set of chemical functions for MySQL. These functions are designed to permit you to handle chemical data within a MySQL database.

The last version is v0.4.5 and has been released on 2008-02-18.

There are three major updates in this version:
  • The build system has been modified (each module is in a directory)
  • Five function have been added to the property module
  • The documentation has now a troubleshooting appendix
The development of v0.5.0 has began on 2008-02-19. A new directory has been created for tests. The CTest tool, provided by CMake, is used to perform unit testing. The preliminary tests are working well.

Tuesday, January 15, 2008

Chemical Structures v2.1

The Chemical Structures is a complete set of molecular structures. The last version (v2.1) contains over 550 structures of organic compounds and has been released on 2008-01-03. In addition to structural data, each file contains complementary informations, like molecular weight, boiling point, melting point or InChI code.

Each structure can be accessed through a web interface. Structure are displayed with the Jmol applet. These html pages contain also Microformat data (InChI and SMILES).

The project has been translated into 5 languages (english, dutch, french, german and spanish) and new languages can be easily added by editing a single file.

The project is actually used in german and french schools.

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 https://mychem.svn.sourceforge.net/svnroot/mychem/trunk 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="http://www.xml-cml.org/schema"
xmlns:cml="http://www.xml-cml.org/dict/cml"
xmlns:units="http://www.xml-cml.org/units/units"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:iupac="http://www.iupac.org" 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>
<atomArray>
<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"/>
</atomArray>
<bondArray>
<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"/>
</bondArray>
<propertyList>
<property dictRef="cml:molwt" title="Molecular weight">
<scalar dataType="xsd:double" dictRef="cml:molwt" units="units:g">
72.11
</scalar>
</property>
<property dictRef="cml:isotopicwt" title="Monoisotopic mass">
<scalar dataType="xsd:double" dictRef="cml:monoisotopicwt" units="units:g">
72.06
</scalar>
</property>
<property dictRef="cml:mp" title="Melting point">
<scalar dataType="xsd:double" errorValue="1.0" dictRef="cml:mp" units="units:celsius">
-108
</scalar>
</property>
<property dictRef="cml:bp" title="Boiling point">
<scalar dataType="xsd:double" errorValue="1.0" dictRef="cml:bp" units="units:celsius">
65
</scalar>
</property>
</propertyList>
</molecule>

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 https://pymol.svn.sourceforge.net/svnroot/pymol/branches/b10/pymol 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
- ...

Screenshot.


Chemical Structure Project. An online version is available on the following website:
http://chem-file.sourceforge.net/

Download. The last version can be downloaded on this page:
https://sourceforge.net/project/showfiles.php?group_id=169897

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:
http://kopenbabel.sourceforge.net

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.id = ""
self.formula = ""
self.inIdentifier = False
self.inchi = "InChI/1="
self.inInChI = False
self.inBasic = False
self.name = ""
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":
self.id = 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:
self.name += 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

Thursday, June 15, 2006

CML, a powerful chemical file type

CML (Chemical Markup Language) is a chemistry-oriented file format, based on a markup language. It's capable of holding many informations, like chemical structures, chemical properties or reactions.

By using the right style sheet, it's possible to transform or to render easily the information. For example, it's used in the chemical-structures project to generate html datasheet of each compound.

Some papers relevant to this topic have been published.

Here is an example of molecule (D-Alanine) in cml format:
<?xml version="1.0"?>
<molecule xmlns="http://www.xml-cml.org/schema/cml2/core"
id="D-alanine">
<name convention="IUPAC">(2R)-2-Aminopropanoic acid</name>
<atomArray>
<atom id="a1" elementType="H" x3="-3.496" y3="1.763" z3="-2.499"/>
<atom id="a2" elementType="C" x3="-3.687" y3="0.754" z3="-2.120"/>
<atom id="a3" elementType="N" x3="-2.411" y3="0.067" z3="-1.892"/>
<atom id="a4" elementType="H" x3="-1.649" y3="0.745" z3="-1.865"/>
<atom id="a5" elementType="H" x3="-2.208" y3="-0.558" z3="-2.672"/>
<atom id="a6" elementType="C" x3="-4.450" y3="0.847" z3="-0.803"/>
<atom id="a7" elementType="H" x3="-5.398" y3="1.380" z3="-0.932"/>
<atom id="a8" elementType="H" x3="-3.872" y3="1.391" z3="-0.048"/>
<atom id="a9" elementType="H" x3="-4.682" y3="-0.144" z3="-0.401"/>
<atom id="a10" elementType="C" x3="-4.453" y3="-0.004" z3="-3.198"/>
<atom id="a11" elementType="O" x3="-4.044" y3="-0.991" z3="-3.791"/>
<atom id="a12" elementType="O" x3="-5.639" y3="0.577" z3="-3.501"/>
<atom id="a13" elementType="H" x3="-6.093" y3="0.057" z3="-4.197"/>
</atomArray>
<bondArray>
<bond atomRefs2="a1 a2" order="1"/>
<bond atomRefs2="a2 a3" order="1"/>
<bond atomRefs2="a2 a6" order="1"/>
<bond atomRefs2="a2 a10" order="1"/>
<bond atomRefs2="a3 a4" order="1"/>
<bond atomRefs2="a3 a5" order="1"/>
<bond atomRefs2="a6 a7" order="1"/>
<bond atomRefs2="a6 a8" order="1"/>
<bond atomRefs2="a6 a9" order="1"/>
<bond atomRefs2="a10 a11" order="2"/>
<bond atomRefs2="a10 a12" order="1"/>
<bond atomRefs2="a12 a13" order="1"/>
</bondArray>
</molecule>