SMILES™, SMARTS™

Codenames: smiles, smarts=smiles:s

Contents:

SMILES

Marvin imports and exports SMILES strings with the following specification rules:

SMARTS

Marvin imports and exports SMARTS strings with the following features:

In case of SMARTS:

Implicit bond types: The default bond types for import and export strongly depend on the atoms connected by the bond.

Smiles/Smarts with additional information

Information stored after the SMILES string separated by space or tab character are treated as molecule field. (According to the SMILES definition they can be ignored or used as comment.) More molecule fields can be stored after the first one but they should be separated by tab character (to allow space in the data field). The newline and tab characters are escaped during export. By default the first additional information is the molecule name. However, the molecule name is never considered as a field, it is a special property of the molecule. After that more informations can be stored as fields in field_1, field_2, etc. The default behavior can be overridden by import option f, eg: import option "fid,flogP" imports the first field as "id" and the next one as "pKa".

Examples:
Smiles file containing the following line (note the separator characters are tabs):
CC ethane   1   1.35
By default imported as a methane molecule with molecule name: ethane, with data field_1: 1 and data field_2: 1.35.
With import option "fname,fid,flogP" it is imported as a methane molecule with molecule name: ethane, with id: 1 and logP: 1.35.

Smiles/Smarts files with header

As SMILES format does not support to save additional information stored in the molecule, Chemaxon adds a header line to the smiles file, if the export of these additional information is requested by T option.
The header files starts with the '#' character followed by the file format string "SMILES" or "SMARTS" and the field names separated by tab characters. The lines followed by the header contains the smiles/smarts string and the field data separated by tab characters.
Examples:
Smiles file (1.smi) containing the following line (note the separator characters are tabs):
CC ethane   1   1.35
Exported to smiles format (molconvert smiles 1.smi):
CC
Exported to smiles format with export option T* (molconvert smiles:T\* 1.smi) results in:
#SMILES name    field_1 field_2
CC      ethane  1       1.35
With import option "fname,fid,flogP" and export option T* (molconvert smiles:T\* "1.smi{fname,fid,flogP}") results in:
#SMILES name    id      logP
CC      ethane  1       1.35

Import options

f
{fFIELD1,fFIELD2,...}  
Import data fields from a multi-column file. The fields should be separated by tab character. The first column contains the SMILES/SMARTS strings, the second may contain the molecule name or the data field called FIELD1, the following columns contain the other fields.
Example:
molconvert sdf "foo.smi{fname,fID}" 
reads the smiles string, the name and the ID from the foo.smi file and converts it to sdf format.
d
Import with Daylight compatiblity for query H.
In daylight smarts, H is only considered as H atom when the atom expression has the syntax [<mass>H<charge><map>] (mass, charge and map are optional). Otherwise it is considered as query H count.
Examples: [!H!#6] without d option is imported as an atom which is not H and not C. However with d option it is imported as an atom which has not one H attached, and which is not C.
Use "H1" or "#1" or "#1A" instead of "H" to avoid ambiguous meaning of H. "H1" always means query H count. "#1" always means H atom, "#1A" means aliphatic H atom.
c
Ignore fixing of double bond stereo information in small rings, also ignore fixing of aromatic bonds to aliphatic if necessary.
Double bonds in small rings (ring size < 8) is imported automatically with CIS stereo information. If c options is set, the double bond stereo information is not changed to CIS during the import.
By default the bond is aromatic between two aromatic atom. But this is not true e.g. in case of biphenyl where the bond connecting the two aromatic ring is single. If biphenyl is represented with the SMILES string: "c1ccc(cc1)c1ccccc1" then it is necessary to set the bond between the two rings to single. If the molecule is exported by Chemaxon tools, the single bond between two aromatic atom is always explicitly written to avoid any confusion, so fixing aromatic bonds to aliphatic can be avoided.
Z
Import compressed smiles. The compressed format must be specified expicitly, as it is not recognized by the importer automatically.

After importing SMILES, invoking of MoleculeGraph.clearCashedInfo method is recommended in order to remove cashed informations which results increased molecule size.

Export options

Export options can be specified in the format string. The format descriptor and the options are separated by a colon.

... Basic options for aromatization and H atom adding/removal.
0 Do not include chirality (parity) and double bond stereo (cis/trans) information.
Examples: "smiles:0" (not stereo), "smiles:a0" (aromatic, not stereo)
q Obsolete option.
Atom equivalences are checked by default using graph invariants at double bonds.
Example: molconvert smiles -s "C/C=C(/C)C" results CC=C(C)C
ri Smiles export rigorousness (i with the following values):
  1. Export the most information from the molecule to SMILES or SMARTS format. Don't check anything.
  2. Atoms, bonds and the molecule is checked for SMILES, SMARTS compatibility (default).
  3. In addition to the checks in case of value 5, double bonds in alternating single and double bond chain are checked for correct export.
Example: Let m_1.mrv file contain the molecule CC=CC=CC=CC where the two side double bonds are in TRANS configuration but the middle one has no CIS, TRANS information (crossed double bond, or double bond with wiggly bond).
molconvert smiles:r7 m.mrv will drop an Exception: "Nonstereo double bond between active CIS TRANS stereo bonds. Not possible to export it correctly to SMILES"
molconvert smiles m.mrv results C\C=C\C=C\C=C\C (which is incorrect in the sense that the middle bond became TRANS configuration).
s Write query smarts. (See query Smarts for details.)
u Write unique smiles (considering chirality info also [2]). Note: Use this option if you want unique smiles export.
h Convert explicit H atoms to query hydrogen count.
Tf1:f2:... Export f1, f2 ... SDF fields. The fields are separated by tab character.
If '-' is given before the T option like '-Tf1:f2:...' then no header line is written.
'*' character is used to export all fields (and name also) in the molecules.
'name' field is used to export molecule name (if no 'name' field in the molecule exists).
t Export terminal atom with single_or_aromatic bond.
Examples: instead of [#6]-c1ccccc1 export the molecule to [#6]c1ccccc1
instead of [#6]-[#6] export the molecule to [#6][#6]
n Export molecule name (the first line of an MDL molfile).
Z Use compressed format, and compress the SMILES string. Note that the compressed format is not recognized by the import, so it should be specified explicitly.
BOM Write the UTF-8 byte order mark (BOM), if the given or the system's encoding is UTF-8.

See also

Reference

[1] SMILES 2. Algorithm for Generation of Unique SMILES Notation; D. Weininger, A. Weininger, J. L. Weininger; J. Chem. Inf. Comput. Sci. 1989, 29, 97-101
[2] A New Effective Algorithm for the Unambiguous Identification of the Stereochemical Characteristics of Compounds During Their Registration in Databases; T. Cieplak and J.L. Wisniewski; Molecules 2001, 6, 915-926

™: SMILES, SMARTS, and SMIRKS are trademarks of Daylight Chemical Information Systems.