If you get errors trying to register using a SMILES string, verify that the SMILES string follows the Daylight SMILES syntax. In the example below, trying to register a structure using a SMILES string containing ‘Zn-2’ returns this error:
SQL> insert into sample2d(cdbregno, ctab)
values (391, mol('[K+].[K+].N#C[''Zn-2''](C#N)(C#N)C#N'));
insert into sample2d(cdbregno, ctab)
values (391, mol('[K+].[K+].N#C[''Zn-2''](C#N)(C#N)C#N'))
*
ERROR at line 1:
ORA-20100: MDL-1919: Molecule failed registration check:
Error: (root) No query features allowed for registration
Error: (root) Unknown atom symbols: Zn-2
MDL-0633: Unable to convert molfile string to binary molecule ctab
ORA-06512: at "C\$DIRECT2022.MDLAUXOP", line 343
ORA-06512: at "C\$DIRECT2022.MDLAUXOP", line 336
ORA-06512: at "C\$DIRECT2022.MDLAUXOP", line 319
SQL> select mdlaux.errors from dual;
ERRORS
-------------------------------------------------------
MDL-1919: Molecule failed registration check:
Error: (root) No query features allowed for registration
Error: (root) Unknown atom symbols: Zn-2
MDL-0633: Unable to convert molfile string to binary molecule ctab
Solution
BIOVIA bases our SMILES format on Daylight SMILES. The problem in the above registration is that ‘Zn-2’ (or Zn2-) are not valid Daylight SMILES.
Zn with a negative 2 charge should be [Zn-2] as in the example below:
SQL> insert into sample2d(cdbregno, ctab)
values (392, mol('[K+].[K+].N#C[Zn-2](C#N)(C#N)C#N'));
1 row created.
SQL> commit;
Commit complete.
If you have the structure as a molfile, you can use BIOVIA Draw, Pipeline Pilot, or Direct to calculate the SMILES string.
BIOVIA Draw:
Select the structure, then choose Chemistry > Generate Text from Structure > SMILES string:
In BIOVIA Direct, you can use the use the smiles operator. The default output is a canonical SMILES.
There is option for non-canonical output if you prefer that. If you have the structure in your database, you can use the smiles operator against the column containing your chemistry:
SQL> select smiles(ctab) from mymoltable
where upper(name) = 'POTASSIUM ZINC CYANIDE';
SMILES(CTAB)
---------------------------------------------
[K+].[K+].N#C[Zn-2](C#N)(C#N)C#N
If you have a molfile, you can log in to a schema enabled for use with BIOVIA Direct, and create the molecule object to pass to the smiles operator by using the Direct mol operator:
SQL> select smiles(mol('C:\molfiles\MFCD00049666.mol')) smiles from dual;
SMILES
----------------------------------
[K+].[K+].N#C[Zn-2](C#N)(C#N)C#N
For more information about the smiles operator and mdlaux.smiles function, see the BIOVIA Direct Reference Guide and the BIOVIA Direct Developers Guide.
Pipeline Pilot also has components for reading and writing SMILES, including a ‘Canonical Smiles’ component that can write canonical and/or noncanonical SMILES.
For more information about Daylight SMILES, see http://www.daylight.com/smiles/index.html
See also https://www.daylight.com/dayhtml/doc/theory/theory.smiles.html for information on the syntax and rules for Daylight SMILES.