Skip to content

Commit 8921c56

Browse files
committed
Updated SAtomTypes
1 parent e6d8746 commit 8921c56

1 file changed

Lines changed: 100 additions & 15 deletions

File tree

rmgpy/molecule/atomtype.py

Lines changed: 100 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ def getFeatures(self):
236236
'O','Os','Od','Oa','Ot',
237237
'Ne',
238238
'Si','Sis','Sid','Sidd','Sit','SiO','Sib','Sibf',
239-
'S','Ss','Sd','Sa','St',
239+
'S','S0s','Sa','S2s','S2sp','S2sn','S2d','S2dc','S4s','S4sc','S4d','S4dc','S4b','S4dd','S4t','S4tc','S6s','S6d','S6dc','S6dd','S6ddc','S6ddd','S6t','S6td','S6tt',
240240
'Cl','Ar']
241241
)
242242
atomTypes['R!H'] = AtomType(label='R!H', generic=['R'], specific=[
@@ -247,7 +247,7 @@ def getFeatures(self):
247247
'O','Os','Od','Oa','Ot',
248248
'Ne',
249249
'Si','Sis','Sid','Sidd','Sit','SiO','Sib','Sibf',
250-
'S','Ss','Sd','Sa','St',
250+
'S','S0s','Sa','S2s','S2sp','S2sn','S2d','S2dc','S4s','S4sc','S4d','S4dc','S4b','S4dd','S4t','S4tc','S6s','S6d','S6dc','S6dd','S6ddc','S6ddd','S6t','S6td','S6tt',
251251
'Cl','Ar'])
252252

253253
atomTypes['Val4'] = AtomType(label='Val4', generic=['R','R!H'], specific=[
@@ -259,7 +259,7 @@ def getFeatures(self):
259259

260260
atomTypes['Val6'] = AtomType(label='Val6', generic=['R','R!H'], specific=[
261261
'O','Os','Od','Oa','Ot',
262-
'S','Ss','Sd','Sa', 'St'])
262+
'S','S0s','Sa','S2s','S2sp','S2sn','S2d','S2dc','S4s','S4sc','S4d','S4dc','S4b','S4dd','S4t','S4tc','S6s','S6d','S6dc','S6dd','S6ddc','S6ddd','S6t','S6td','S6tt'])
263263

264264
atomTypes['Val7'] = AtomType(label='Val7', generic=['R','R!H'], specific=[
265265
'Cl'])
@@ -356,15 +356,80 @@ def getFeatures(self):
356356
atomTypes['Sibf'] = AtomType('Sibf', generic=['R','R!H','Si','Val4'], specific=[],
357357
single=[], allDouble=[0], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[3])
358358

359-
atomTypes['S' ] = AtomType('S', generic=['R','R!H','Val6'], specific=['Ss','Sd','Sa','St'])
360-
atomTypes['Ss' ] = AtomType('Ss', generic=['R','R!H','S','Val6'], specific=[],
361-
single=[], allDouble=[0], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0])
362-
atomTypes['Sd' ] = AtomType('Sd', generic=['R','R!H','S','Val6'], specific=[],
363-
single=[], allDouble=[1], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0])
359+
atomTypes['S' ] = AtomType('S', generic=['R','R!H','Val6'], specific=['S0s','Sa','S2s','S2sp','S2sn','S2d','S2dc','S4s','S4sc','S4d','S4dc','S4b','S4dd','S4t','S4tc','S6s','S6d','S6dc','S6dd','S6ddc','S6ddd','S6t','S6td','S6tt'],
360+
single=[], allDouble=[], rDouble=[], oDouble=[], sDouble=[], triple=[], benzene=[], lonePairs=[])
361+
atomTypes['S0s' ] = AtomType('S0s', generic=['R','R!H','S','Val6'], specific=[],
362+
single=[1], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[0], benzene=[0], lonePairs=[3])
363+
# examples for S0s: [S-][S+], S3 {[S-][S+]=S}
364364
atomTypes['Sa' ] = AtomType('Sa', generic=['R','R!H','S','Val6'], specific=[],
365-
single=[0], allDouble=[0], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0])
366-
atomTypes['St' ] = AtomType('St', generic=['R','R!H','S','Val6'], specific=[],
367-
single=[], allDouble=[0], rDouble=[], oDouble=[], sDouble=[], triple=[1], benzene=[0])
365+
single=[0], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[0], benzene=[0], lonePairs=[3])
366+
# examples for Sa: atomic sulfur (closed shell)
367+
atomTypes['S2s' ] = AtomType('S2s', generic=['R','R!H','S','Val6'], specific=[],
368+
single=[0,1,2], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[0], benzene=[0], lonePairs=[2])
369+
# examples for S2s: [S], [SH], S {H2S}, [S][S], SS {H2S2}, SSC, CSSC, SO {HSOH}...
370+
atomTypes['S2sp'] = AtomType('S2sp', generic=['R','R!H','S','Val6'], specific=[],
371+
single=[1], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[0], benzene=[0], lonePairs=[2])
372+
# examples for S2sp: [S-][S+]
373+
atomTypes['S2sn'] = AtomType('S2sn', generic=['R','R!H','S','Val6'], specific=[],
374+
single=[3], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[0], benzene=[0], lonePairs=[2])
375+
# examples for S2sn: N#[N+][S-](O)O
376+
atomTypes['S2d' ] = AtomType('S2d', generic=['R','R!H','S','Val6'], specific=[],
377+
single=[0], allDouble=[1], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0], lonePairs=[2])
378+
# examples for S2d: S=S, C=S, S=O, S=N, S=C=S, S=C=O, S=C=S...
379+
atomTypes['S2dc'] = AtomType('S2dc', generic=['R','R!H','S','Val6'], specific=[],
380+
single=[1], allDouble=[1], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0], lonePairs=[2])
381+
# examples for S2d: S=S, C=S, S=O, S=N, S=C=S, S=C=O, S=C=S...
382+
atomTypes['S4s' ] = AtomType('S4s', generic=['R','R!H','S','Val6'], specific=[],
383+
single=[0,1,2,3,4], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[0], benzene=[0], lonePairs=[1])
384+
# examples for S4s: H4S, SH3CH3...
385+
atomTypes['S4sc'] = AtomType('S4sc', generic=['R','R!H','S','Val6'], specific=[],
386+
single=[3], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[0], benzene=[0], lonePairs=[1])
387+
# examples for S4sc: CS[S+]([O-])C
388+
atomTypes['S4d' ] = AtomType('S4d', generic=['R','R!H','S','Val6'], specific=[],
389+
single=[0,1,2], allDouble=[1], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0], lonePairs=[1])
390+
# examples for S4d: O=S(O)O {Sulfurous acid}
391+
atomTypes['S4dc'] = AtomType('S4dc', generic=['R','R!H','S','Val6'], specific=[],
392+
single=[0,1], allDouble=[1], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0], lonePairs=[1])
393+
# examples for S4dc: [CH2-][S+]=C {where the [CH2-] has a lone pair}, [O-][S+]=C, [NH-][S+]=C {where the [NH-] has two lone pairs}, [O-][S+]=O {two of the tree resonance structures of SO2, Adjlist: 1 O u0 p3 c-1 {2,S}; 2 S u0 p1 c+1 {1,S} {3,D}; 3 O u0 p2 c0 {2,D}}
394+
atomTypes['S4b' ] = AtomType('S4b', generic=['R','R!H','S','Val6'], specific=[],
395+
single=[0], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[0], benzene=[2], lonePairs=[1])
396+
# examples for S4b: Thiophene, Benzothiophene, Benzo[c]thiophene, Thiazole, Benzothiazole...
397+
atomTypes['S4dd'] = AtomType('S4dd', generic=['R','R!H','S','Val6'], specific=[],
398+
single=[0], allDouble=[2], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0], lonePairs=[1])
399+
# examples for S4dd: O=S=O
400+
atomTypes['S4t' ] = AtomType('S4t', generic=['R','R!H','S','Val6'], specific=[],
401+
single=[0,1], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[1], benzene=[0], lonePairs=[1])
402+
# examples for S4t: C#S, C#SO, C#[S]
403+
atomTypes['S4tc'] = AtomType('S4tc', generic=['R','R!H','S','Val6'], specific=[],
404+
single=[0], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[1], benzene=[0], lonePairs=[1])
405+
# examples for S4tc: [C-]#[S+]
406+
atomTypes['S6s' ] = AtomType('S6s', generic=['R','R!H','S','Val6'], specific=[],
407+
single=[0,1,2,3,4,5,6], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[0], benzene=[0], lonePairs=[0])
408+
# examples for S6s: H6S, F6S
409+
atomTypes['S6d' ] = AtomType('S6d', generic=['R','R!H','S','Val6'], specific=[],
410+
single=[0,1,2,3,4], allDouble=[1], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0], lonePairs=[0])
411+
# examples for S6d: [SH4]=O, SF4=O, [SH4]=C, C[SH3]=C...
412+
atomTypes['S6dc'] = AtomType('S6dc', generic=['R','R!H','S','Val6'], specific=[],
413+
single=[0,1,2,3], allDouble=[1], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0], lonePairs=[0])
414+
# examples for S6dc: O=[S+2]([O-])[O-], [CH-]=[SH3+], [CH-]=[SH2+]O, [CH-][SH2+]
415+
atomTypes['S6dd'] = AtomType('S6dd', generic=['R','R!H','S','Val6'], specific=[],
416+
single=[0,1,2], allDouble=[2], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0], lonePairs=[0])
417+
# examples for S6dd: S(=O)(=O)(O)O {H2SO4, Sulfuric acid}, Perfluorooctanesulfonic acid, Pyrosulfuric acid, Thiosulfuric acid {middle S}, OS(=O)(=O)OOS(=O)(=O)O
418+
atomTypes['S6ddc'] = AtomType('S6ddc', generic=['R','R!H','S','Val6'], specific=[],
419+
single=[0,1], allDouble=[2], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0], lonePairs=[0])
420+
# examples for S6ddc: O=[S+](=O)[O-]
421+
atomTypes['S6ddd'] = AtomType('S6ddd', generic=['R','R!H','S','Val6'], specific=[],
422+
single=[0], allDouble=[3], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0], lonePairs=[0])
423+
# examples for S6ddd: O=S(=O)(=O)
424+
atomTypes['S6t' ] = AtomType('S6t', generic=['R','R!H','S','Val6'], specific=[],
425+
single=[0,1,2,3], allDouble=[0], rDouble=[], oDouble=[], sDouble=[], triple=[1], benzene=[0], lonePairs=[0])
426+
# examples for S6t: H3S#N
427+
atomTypes['S6td' ] = AtomType('S6td', generic=['R','R!H','S','Val6'], specific=[],
428+
single=[0,1], allDouble=[1], rDouble=[], oDouble=[], sDouble=[], triple=[1], benzene=[0], lonePairs=[0])
429+
# examples for S6td: HS(=O)#N
430+
atomTypes['S6tt' ] = AtomType('S6tt', generic=['R','R!H','S','Val6'], specific=[],
431+
single=[0], allDouble=[0], rDouble=[], oDouble=[], sDouble=[], triple=[2], benzene=[0], lonePairs=[0])
432+
# examples for S6tt: N#S#N
368433

369434

370435
atomTypes['Cl' ] = AtomType('Cl', generic=['R','R!H','Val7'], specific=[])
@@ -426,10 +491,30 @@ def getFeatures(self):
426491
atomTypes['Sibf'].setActions(incrementBond=[], decrementBond=[], formBond=[], breakBond=[], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=[])
427492

428493
atomTypes['S' ].setActions(incrementBond=['S'], decrementBond=['S'], formBond=['S'], breakBond=['S'], incrementRadical=['S'], decrementRadical=['S'], incrementLonePair=['S'], decrementLonePair=['S'])
429-
atomTypes['Ss' ].setActions(incrementBond=['Sd'], decrementBond=[], formBond=['Ss'], breakBond=['Ss'], incrementRadical=['Ss'], decrementRadical=['Ss'], incrementLonePair=['Ss'], decrementLonePair=['Ss'])
430-
atomTypes['Sd' ].setActions(incrementBond=[], decrementBond=['Ss'], formBond=[], breakBond=[], incrementRadical=[], decrementRadical=[], incrementLonePair=['Sd'], decrementLonePair=['Sd'])
431-
atomTypes['Sa' ].setActions(incrementBond=[], decrementBond=[], formBond=[], breakBond=[], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=[])
432-
atomTypes['St' ].setActions(incrementBond=[], decrementBond=['Sd'], formBond=[], breakBond=[], incrementRadical=[], decrementRadical=[], incrementLonePair=['St'], decrementLonePair=['St'])
494+
atomTypes['S0s' ].setActions(incrementBond=[], decrementBond=[], formBond=[], breakBond=['Sa'], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=['S2s'])
495+
atomTypes['Sa' ].setActions(incrementBond=[], decrementBond=[], formBond=['S0s'], breakBond=[], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=['S2s'])
496+
atomTypes['S2s' ].setActions(incrementBond=['S2d'], decrementBond=[], formBond=['S2s','S2sp'],breakBond=['S2s'], incrementRadical=['S2s'], decrementRadical=['S2s'], incrementLonePair=['Sa','S0s'],decrementLonePair=['S4s','S4sc'])
497+
atomTypes['S2sp'].setActions(incrementBond=[], decrementBond=[], formBond=[], breakBond=['S2s'], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=['S4sc'])
498+
atomTypes['S2sn'].setActions(incrementBond=[], decrementBond=[], formBond=[], breakBond=['S2s'], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=['S4sc'])
499+
atomTypes['S2d' ].setActions(incrementBond=['S4t','S4tc'], decrementBond=['S2s'], formBond=['S2d'], breakBond=['S2d'], incrementRadical=['S2d'], decrementRadical=['S2d'], incrementLonePair=[], decrementLonePair=['S4dc','S4d'])
500+
atomTypes['S2dc'].setActions(incrementBond=[], decrementBond=[], formBond=[], breakBond=['S2d'], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=[])
501+
atomTypes['S4s' ].setActions(incrementBond=['S4d','S4dc'], decrementBond=[], formBond=['S4s'], breakBond=['S4s'], incrementRadical=['S4s'], decrementRadical=['S4s'], incrementLonePair=['S2s'], decrementLonePair=['S6s'])
502+
atomTypes['S4sc'].setActions(incrementBond=['S4d','S4dc'], decrementBond=[], formBond=['S4s','S4sc'],breakBond=['S4sc'], incrementRadical=['S4sc'], decrementRadical=['S4sc'], incrementLonePair=['S2s','S2sp'],decrementLonePair=['S6s'])
503+
atomTypes['S4d' ].setActions(incrementBond=['S4dd','S4t','S4tc'],decrementBond=['S4s','S4sc'],formBond=['S4dc','S4d'],breakBond=['S4d','S4dc'],incrementRadical=['S4d'], decrementRadical=['S4d'], incrementLonePair=['S2d'], decrementLonePair=['S6d'])
504+
atomTypes['S4dc'].setActions(incrementBond=['S4dd'], decrementBond=['S4sc'], formBond=['S4d'], breakBond=['S4d'], incrementRadical=[], decrementRadical=[], incrementLonePair=['S2d'], decrementLonePair=['S6d'])
505+
atomTypes['S4b' ].setActions(incrementBond=[], decrementBond=[], formBond=[], breakBond=[], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=[])
506+
atomTypes['S4dd'].setActions(incrementBond=[], decrementBond=['S4dc','S4d'], formBond=[], breakBond=[], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=['S6dd'])
507+
atomTypes['S4t' ].setActions(incrementBond=[], decrementBond=['S4d'], formBond=['S4t'], breakBond=['S4t'], incrementRadical=['S4t'], decrementRadical=['S4t'], incrementLonePair=[], decrementLonePair=['S6t'])
508+
atomTypes['S4tc'].setActions(incrementBond=[], decrementBond=['S4d'], formBond=[], breakBond=[], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=[])
509+
atomTypes['S6s' ].setActions(incrementBond=['S6dc'], decrementBond=[], formBond=['S6s'], breakBond=['S6s'], incrementRadical=['S6s'], decrementRadical=['S6s'], incrementLonePair=['S4s','S4sc'],decrementLonePair=[])
510+
atomTypes['S6d' ].setActions(incrementBond=['S6dd','S6t'], decrementBond=['S6s'], formBond=['S6d'], breakBond=['S6d'], incrementRadical=['S6d'], decrementRadical=['S6d'], incrementLonePair=['S4d'],decrementLonePair=[])
511+
atomTypes['S6dc'].setActions(incrementBond=['S6ddc'], decrementBond=[], formBond=['S6d'], breakBond=['S6d'], incrementRadical=['S6dc'], decrementRadical=['S6dc'], incrementLonePair=['S4d','S4dc'],decrementLonePair=[])
512+
atomTypes['S6dd'].setActions(incrementBond=['S6ddd','S6td'], decrementBond=['S6d','S6dc'], formBond=['S6dd','S6ddc'],breakBond=['S6dd'], incrementRadical=['S6dd'], decrementRadical=['S6dd'], incrementLonePair=['S4dd'],decrementLonePair=[])
513+
atomTypes['S6ddc'].setActions(incrementBond=['S6ddd'], decrementBond=['S6dc'], formBond=[], breakBond=['S6dd'], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=[])
514+
atomTypes['S6ddd'].setActions(incrementBond=[], decrementBond=['S6dd','S6ddc'], formBond=[], breakBond=[], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=[])
515+
atomTypes['S6t' ].setActions(incrementBond=['S6td'], decrementBond=['S6d'], formBond=['S6t'], breakBond=['S6t'], incrementRadical=['S6t'], decrementRadical=['S6t'], incrementLonePair=['S4t'], decrementLonePair=[])
516+
atomTypes['S6td'].setActions(incrementBond=['S6tt'], decrementBond=['S6t','S6dd'], formBond=['S6td'], breakBond=['S6td'], incrementRadical=['S6td'], decrementRadical=['S6td'], incrementLonePair=[], decrementLonePair=[])
517+
atomTypes['S6tt'].setActions(incrementBond=[], decrementBond=['S6td'], formBond=[], breakBond=[], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=[])
433518

434519

435520
atomTypes['Cl' ].setActions(incrementBond=[], decrementBond=['Cl'], formBond=['Cl'], breakBond=['Cl'], incrementRadical=['Cl'], decrementRadical=['Cl'], incrementLonePair=[], decrementLonePair=[])

0 commit comments

Comments
 (0)