--Version 20030620 -- -- Needed to suppress special meaning of '&' in sqlplus set define off -- -- Encoding of the rules in VCS as SMIRKS -- -- table is name, smirks, direction, class, notes. -- Remove old entries -- By convention class 0 are the Daylight CIS defined set -- So remove only this class -- delete from transform where class = 0; commit; insert into transform values ('Deprotonate', '[*+;$([!#6;!$([+]~[-])]):1][H]>>[*+0:1]', 'FORWARD', 0, 'Deprotonation of cations to neutral species where possible'); insert into transform values ('Protonate', '[*-;$([!#6;!$([-]~[+]);!$([v4;B,Fe]);!$([v5;S,Se,Te,Sn]);!$([v6;P,As,Sb])]):1]>>[*+0:1][H]', 'FORWARD', 0, 'Protonation of anions to neutral species where valence allows' ); insert into transform values ('Nitros', '[O-:1][*+;#7;v4:2]>>[O+0:1]=[*+0;#7;v5:2]', 'REVERSE', 0, 'Nitro groups and N-oxides including aromatics' || 'Business rules decide whether to allow 5-valent' || 'uncharged nitrogen'); insert into transform values ('P-oxides', '[O-:1][P+;v4:2]>>[O+0:1]=[P+0;v5:2]', 'FORWARD', 0, 'P-oxides excluding aromatics' || 'Business rules decide whether to prefer 5-valent' || 'uncharged phosphorous. It would be unlikely' || 'this transform would be run in reverse.'); insert into transform values ('Azides', '[N-;X1:1]=[N+;v4:2]>>[N+0:1]#[N+0;v5:2]', 'REVERSE', 0, 'Diazo alkanes and ketones, azides' || 'Business rules decide whether to allow 5-valent' || 'uncharged nitrogen'); insert into transform values ( 'S-Oxides', '[O-:1][*+;X3;$([#16]([#6])[#6]):2]>>[O+0:1]=[*+0;X3;$([#16]([#6])[#6]):2]', 'FORWARD', 0, 'S-oxides including aromatics, but excluding oxyacids of sulphur' || 'Business rules decide whether to prefer 4-valent' || 'uncharged sulphur'); insert into transform values ('Ionic', '[*;$([Li,Na,K,Rb]):1][*;!#1:2]>>[*+:1].[*:2][H]', 'FORWARD', 0, 'Ensure that there are no covalent bonds to Group I metals'|| 'MH is left alone'); commit; -- Simple salt list for illustration -- -- table is: name, smiles, class, note. -- Remove old entries -- By convention class 0 are the Daylight CIS defined set -- So remove only this class -- delete from salt where class = 0; commit; -- Add normalized version too. vcs_normalize ( smiles, iso, class ) -- Use standard class 0 -- -- These will not normalize -- insert into salt values ('Lithium', '[Li+]', 0, NULL); insert into salt values ('Sodium', '[Na+]', 0, NULL); insert into salt values ('Potassium', '[K+]', 0, NULL); insert into salt values ('Rubidium', '[Rb+]', 0, NULL); insert into salt values ('Cesium', '[Cs+]', 0, NULL); -- -- These will normalize -- insert into salt values ('Ammonium', '[NH4+]', 0, 'Cationic'); insert into salt values ('Ammonium', vcs_normalize( '[NH4+]',1 ,0 ), 0, 'Normalized neutral'); -- insert into salt values ('Fluoride', '[F-]', 0, 'Anionic'); insert into salt values ('Fluoride', vcs_normalize( '[F-]',1 ,0 ), 0, 'Normalized neutral' ); insert into salt values ('Chloride', '[Cl-]', 0, 'Anionic'); insert into salt values ('Chloride', vcs_normalize( '[Cl-]',1 ,0 ), 0, 'Normalized neutral' ); insert into salt values ('Bromide', '[Br-]', 0, 'Anionic'); insert into salt values ('Bromide', vcs_normalize('[Br-]',1 ,0 ), 0, 'Normalized neutral' ); insert into salt values ('Iodide', '[I-]', 0, 'Anionic'); insert into salt values ('Iodide', vcs_normalize('[I-]',1 ,0 ), 0, 'Normalized neutral'); -- insert into salt values ('Perchlorate', 'O=Cl(=O)(=O)[O-]', 0, 'Anionic'); insert into salt values ('Perchlorate', vcs_normalize( 'O=Cl(=O)(=O)[O-]',1 ,0 ), 0, 'Normalized neutral' ); -- -- Add additional states for poly oxyanions to allow the functions -- vcs_desalt() and vcs_normalize() to be commutative -- These extra rows are unnecessary if -- vcs_desalt ( vcs_normalize(smiles, 1, 0), 1, 0) -- is used. -- insert into salt values ('Sulphate', 'O=S(=O)([O-])[O-]', 0, 'Anionic'); insert into salt values ('Sulphate', vcs_normalize( 'O=S(=O)([O-])[O-]',1 ,0 ), 0, 'Normalized neutral' ); insert into salt values ('Sulphate', 'O=S(=O)(O)[O-]', 0, 'Anionic' ); -- insert into salt values ('Phosphate', 'O=P([O-])([O-])[O-]', 0, 'Anionic'); insert into salt values ('Phosphate', vcs_normalize( 'O=P([O-])([O-])[O-]',1 ,0 ), 0, 'Normalized neutral' ); insert into salt values ('Phosphate', 'O=P(O)([O-])[O-]', 0, 'Anionic' ); insert into salt values ('Phosphate', 'O=P(O)(O)[O-]', 0, 'Anionic' ); -- commit;