loosen rules on molfile headers

User 677b9c22ff

14-05-2009 18:18:07

Hi,


I have some legacy mol and SDF files and always have errors opening them with


Mview or MSketch or cxcalc. They contain multiple long strings with, sometimes longer than


72 chars.


 


Is there a way to circumvent that, except parsing the mols and sdfs externally?


Example file (creates error below):


dsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsa
dsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsa
dsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsa
12 13 0 0 0 0 999 V2000
-0.7661 2.0330 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.4805 2.4455 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-2.1951 2.0330 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-2.1951 1.2080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.4805 0.7955 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.7661 1.2080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.0516 0.7955 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
0.6629 1.2080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
0.6629 2.0330 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.0516 2.4455 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.4805 -0.0295 0.0000 Br 0 0 0 0 0 0 0 0 0 0 0 0
-0.0516 3.2705 0.0000 Br 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0 0 0 0
2 3 2 0 0 0 0
3 4 1 0 0 0 0
4 5 2 0 0 0 0
5 6 1 0 0 0 0
7 8 2 0 0 0 0
8 9 1 0 0 0 0
9 10 2 0 0 0 0
1 6 2 0 0 0 0
1 10 1 0 0 0 0
6 7 1 0 0 0 0
5 11 1 0 0 0 0
10 12 1 0 0 0 0
M END


OK, the following code is allowed:


adsdsadsadsadsadsadsaadsdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsdsadsadsadsadsadsaadsdsadsadsadsadsadsadsadsadsadsadsadsadsadsads

adsdsadsadsadsadsadsaadsdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsdsadsadsadsadsadsaadsdsadsadsadsadsadsadsadsadsadsadsadsadsadsads
12 13 0 0 0 0 999 V2000
-0.7661 2.0330 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.4805 2.4455 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-2.1951 2.0330 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-2.1951 1.2080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.4805 0.7955 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.7661 1.2080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.0516 0.7955 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
0.6629 1.2080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
0.6629 2.0330 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.0516 2.4455 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.4805 -0.0295 0.0000 Br 0 0 0 0 0 0 0 0 0 0 0 0
-0.0516 3.2705 0.0000 Br 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0 0 0 0
2 3 2 0 0 0 0
3 4 1 0 0 0 0
4 5 2 0 0 0 0
5 6 1 0 0 0 0
7 8 2 0 0 0 0
8 9 1 0 0 0 0
9 10 2 0 0 0 0
1 6 2 0 0 0 0
1 10 1 0 0 0 0
6 7 1 0 0 0 0
5 11 1 0 0 0 0
10 12 1 0 0 0 0
M END


The following code is also allowed (see middle line)


adsdsadsadsadsadsadsaadsdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsdsadsadsadsadsadsaadsdsadsadsadsadsadsadsadsadsadsadsadsadsadsads
X
adsdsadsadsadsadsadsaadsdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsdsadsadsadsadsadsaadsdsadsadsadsadsadsadsadsadsadsadsadsadsadsads
12 13 0 0 0 0 999 V2000
-0.7661 2.0330 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.4805 2.4455 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-2.1951 2.0330 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-2.1951 1.2080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.4805 0.7955 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.7661 1.2080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.0516 0.7955 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
0.6629 1.2080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
0.6629 2.0330 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.0516 2.4455 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.4805 -0.0295 0.0000 Br 0 0 0 0 0 0 0 0 0 0 0 0
-0.0516 3.2705 0.0000 Br 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0 0 0 0
2 3 2 0 0 0 0
3 4 1 0 0 0 0
4 5 2 0 0 0 0
5 6 1 0 0 0 0
7 8 2 0 0 0 0
8 9 1 0 0 0 0
9 10 2 0 0 0 0
1 6 2 0 0 0 0
1 10 1 0 0 0 0
6 7 1 0 0 0 0
5 11 1 0 0 0 0
10 12 1 0 0 0 0
M END


However the following code with the middle line extended abit is not allowed


adsdsadsadsadsadsadsaadsdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsdsadsadsadsadsadsaadsdsadsadsadsadsadsadsadsadsadsadsadsadsadsads
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
adsdsadsadsadsadsadsaadsdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsdsadsadsadsadsadsaadsdsadsadsadsadsadsadsadsadsadsadsadsadsadsads
12 13 0 0 0 0 999 V2000
-0.7661 2.0330 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.4805 2.4455 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-2.1951 2.0330 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-2.1951 1.2080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.4805 0.7955 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.7661 1.2080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.0516 0.7955 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
0.6629 1.2080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
0.6629 2.0330 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.0516 2.4455 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.4805 -0.0295 0.0000 Br 0 0 0 0 0 0 0 0 0 0 0 0
-0.0516 3.2705 0.0000 Br 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0 0 0 0
2 3 2 0 0 0 0
3 4 1 0 0 0 0
4 5 2 0 0 0 0
5 6 1 0 0 0 0
7 8 2 0 0 0 0
8 9 1 0 0 0 0
9 10 2 0 0 0 0
1 6 2 0 0 0 0
1 10 1 0 0 0 0
6 7 1 0 0 0 0
5 11 1 0 0 0 0
10 12 1 0 0 0 0
M END


 


Only when that middle line is less than 30 chars or so it will import in MSKetch/MView?


Thats weird (maybe by definition). I am working with with MSketch 5.1.3.2




The resulting error below follows. I am not sure what the rules are but I am quitye sure,


not only the length but also special chars may not be allows (country specific?).


 


Cheers


Tobias


 


Error from msketch:


chemaxon.formats.MolFormatException: Invalid energy specification in molfile header: "adsadsadsads"
at chemaxon.marvin.io.formats.mdl.MolImport.readHeader(MolImport.java:696)
at chemaxon.marvin.io.formats.mdl.MolImport.readMol0(MolImport.java:630)
at chemaxon.marvin.io.formats.mdl.MolImport.readMol(MolImport.java:304)
at chemaxon.marvin.io.MRecordImporter.readDoc(MRecordImporter.java:170)
at chemaxon.marvin.common.swing.modules.EditMolfileFrame.doImport(EditMolfileFrame.java:624)
at chemaxon.marvin.common.swing.modules.ImportDialog$1.run(ImportDialog.java:78)
at java.lang.Thread.run(Unknown Source)
at chemaxon.marvin.common.swing.modules.ImportDialog.doImport(ImportDialog.java:76)
at chemaxon.marvin.common.swing.modules.ImportDialog.apply(ImportDialog.java:209)
at chemaxon.marvin.uif.util.swing.AbstractDialog.doOk(AbstractDialog.java:153)
at chemaxon.marvin.common.swing.modules.ImportDialog$ImportAction.actionPerformed(ImportDialog.java:234)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.Dialog$1.run(Unknown Source)
at java.awt.Dialog$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at java.awt.Dialog.setVisible(Unknown Source)
at chemaxon.marvin.uif.util.swing.AbstractDialog.open(AbstractDialog.java:160)
at chemaxon.marvin.common.swing.modules.EditMolfileFrame$ImportAsAction.actionPerformed(EditMolfileFrame.java:892)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.menuDragMouseReleased(Unknown Source)
at javax.swing.JMenuItem.fireMenuDragMouseReleased(Unknown Source)
at javax.swing.JMenuItem.processMenuDragMouseEvent(Unknown Source)
at javax.swing.JMenuItem.processMouseEvent(Unknown Source)
at javax.swing.MenuSelectionManager.processMouseEvent(Unknown Source)
at javax.swing.plaf.basic.BasicPopupMenuUI$MouseGrabber.eventDispatched(Unknown Source)
at java.awt.Toolkit$SelectiveAWTEventListener.eventDispatched(Unknown Source)
at java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Unknown Source)
at java.awt.Toolkit.notifyAWTEventListeners(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


 

User ef5e605ae6

21-05-2009 15:42:22

Hi Tobias,


Your molfiles are incorrect, see the specification of the second header line in http://www.mdl.com/downloads/public/ctfile/ctfile.pdf page 38. You get exception because characters 35-46 are imported as energy and you have "XXXXXXX" there.


cheers,
Peter

User 677b9c22ff

21-05-2009 17:00:57

Hi Peter,


ok, so somebody misused the MOL files :-).


Well then I have to write a parser for that.


Thank you!


Tobias