PerlMol - Features

What follows is a list of the main features currently implemented in the PerlMol toolkit, along with their status, according to this code:
Basic functionality only (very incomplete)1
Partially implemented2
Mostly implemented (missing minor features or optimizations)3
Fully implemented4

Note that even level 1 features work, it's just that they don't do everything yet. For details about missing features and possible problems, see the appropriate manpage.

Basic functions

Clone molecules 3
Delete atoms and bonds 3
Combine/separate molecules (connected graphs) 3

Geometric functions

Calculate distances, angles, and dihedrals from cartesian coordinates 4
Find shortest distance between two molecules 3
Cartesian coordinates from internal coordinates 4
Z-matrix builder: create an internal coordinate representation of a molecule from scratch using the Cartesian coordinates 3
3D molecule structure builder: generate atomic coordinates from a connection table 1
Calculate the centroid and best-fit plane of a ring 4

Topological functions

Create bonds from cartesian coordinates 3
Automatically assign formal bond orders 3
Ring perception (including SSSR)3
Detect aromaticity 2
Substructure matching 3
Formula matching 4
Canonicalization / topological symmetry perception 4
Z-matrix builder: create an internal coordinate representation of a molecule from scratch using the Cartesian coordinates 3

Input/output and file formats

MDL Molfile parser/writer 2
MDL SDF file parser/writer 2
PDB file parser/writer 2
SMILES parser/writer 3
Unique SMILES generator 3
SMARTS parser 3
Sybyl Line Notation (SLN) parser/writer 2
Midas/Chimera atom specification language parser 2
Formula parser/formatter 4
Formula pattern parser 4
Mopac input file parser/writer 3
XYZ format file parser/writer 4
VRML format file writer 3
Perl Data::Dumper file format 4
A "printf" for molecules and atoms 3

Data

Relative atomic masses4
Exact isotope masses4

Mini-language

Mok - "an AWK for molecules"3

Frequently Asked Question: When will feature X be implemented?

Answer: I usually add features when I need them. Some features I will never need, so they are not likely to be implemented by me. However, if you implement the feature you need and want to donate it so that I can add it to the PerlMol distribution, I'll be happy to do so. Any feedback is welcome, however, even if I can't implement the feature myself.