NAME
Chemistry::OpenSMILES - OpenSMILES format reader and writer
SYNOPSIS
use Chemistry::OpenSMILES::Parser;
my $parser = Chemistry::OpenSMILES::Parser->new;
my @moieties = $parser->parse( 'C#C.c1ccccc1' );
$\ = "\n";
for my $moiety (@moieties) {
# $moiety is a Graph::Undirected object
print scalar $moiety->vertices;
print scalar $moiety->edges;
}
use Chemistry::OpenSMILES::Writer qw(write_SMILES);
print write_SMILES( \@moieties );
DESCRIPTION
Chemistry::OpenSMILES provides support for SMILES chemical identifiers conforming to OpenSMILES v1.0 specification (http://opensmiles.org/opensmiles.html).
Chemistry::OpenSMILES::Parser reads in SMILES strings and returns them parsed to arrays of Graph::Undirected objects. Each atom is represented by a hash.
Chemistry::OpenSMILES::Writer performs the inverse operation. For SMILES writing conventions and options refer to its description.
Molecular graph
Disconnected parts of a compound are represented as separate Graph::Undirected objects. Atoms are represented as vertices, and bonds are represented as edges.
Atoms
Atoms, or vertices of a molecular graph, are represented as hash references:
{
"symbol" => "C",
"isotope" => 13,
"chirality" => "@@",
"hcount" => 3,
"charge" => 1,
"class" => 0,
"number" => 0,
}
Except for symbol
, class
and number
, all keys of hash are optional. Per OpenSMILES specification, default values for hcount
and class
are 0.
For chiral atoms, the order of their neighbours in input is preserved in an array added as value for chirality_neighbours
key of the atom hash. The order of atoms there follow OpenSMILES convention.
Bonds
Bonds, or edges of a molecular graph, rely completely on Graph::Undirected internal representation. Bond orders other than single (-
, which is also a default) are represented as values of edge attribute bond
. They correspond to the symbols used in OpenSMILES specification.
AUTHORS
Andrius Merkys, <merkys@cpan.org>