LibMCS issues (list)

User 677b9c22ff

23-08-2008 07:03:19


there are several weird things happening with LibMCS 0.7.

It seems to have problems with metals Mn, Sn, I ,As and general

metals and all kinds of metal organics. The bad thing is that the error reporting is turned off(?). Or in some cases it never finishes. This is also true for the old NCI-10000 test set see old post

which could be finished under 2 minutes, but now never finishes (see the ZIP file with the several test cases)

If it looses its marbels it eats all the CPU cores and runs havoc.


The scroll bar error is very bad, after its finished and one clicks the molecule view and tries to click the right scroll bar, the whole thing starts growing like a homunculus. (since version 0.X)




as attached never finish to read. And 1000 molecules can be fisnished in less than 1 second usually.


NCI-10000-sort-desc.smi never finishes.


NCI-1000-asc and NCI-1000-desc (the same molecules, sorted according to their string length) give different cluster values

NCI-1000-asc.smi: top: 96 total cluster: 532

NCI-1000-desc.smi top: 99 total cluster: 567

One would expect to have the same cluster number for the same molecules. This is a bad error (I assume). It can be avoided

by sorting the SMILES according to their length, but I rather suspect a

programming error. I checked again, the molecules are exactly the same.


if you click the property during a run a NPE occurs

see below


scrolling through molecules -> NPE


If I remove the bracket molecules following times (standard start settings; Dual Quad Intel(R) Xeon(R) CPU X5460, 3.16GHz).

see addenum.

NCI-10000.smi (n=10000) : Clustering time : 4:15 min

NCI-10000-nobrackets.smi (n=8926) : Clustering time : 1:51 min

NCI-brackets.smi (n=1074) : Clustering time : 0:01 min

I don't know, but this looks like a) there are problematic molecules or b) it would be possible to randomly split the whole list and merge them later to obtain a speed-up.


I also runs with 18 threads but doesnt make use of all 8 CPU cores?

Sorry for reporting so many problems, I still like LibMCS :-)





        at chemaxon.clustering.gui.JKMenuBar.actionPerformed(

        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.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.pumpOneEventForHierarchy(Unknown Source)

        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

        at Source)


listing molecules

java.lang.IllegalArgumentException: No nodes with property:h_bond_donors

        at chemaxon.clustering.MGraph.getPropertySpecificValue(

        at chemaxon.clustering.MGraph.getPropertyMin(

        at chemaxon.clustering.gui.MWrapNode.getPropertyMin(

        at chemaxon.clustering.gui.component.ChartPanel.initChart(

        at chemaxon.clustering.gui.component.ChartPanel.<init>(

        at chemaxon.clustering.gui.component.TreeTableModel.getValueAt(

        at chemaxon.clustering.gui.component.TreeTableSorter.getValueAt(

        at javax.swing.JTable.getValueAt(

        at javax.swing.JTable.prepareRenderer(

        at chemaxon.clustering.gui.component.TreeTable.prepareRenderer(

        at javax.swing.plaf.basic.BasicTableUI.paintCell(

        at javax.swing.plaf.basic.BasicTableUI.paintCells(

        at javax.swing.plaf.basic.BasicTableUI.paint(

        at javax.swing.plaf.ComponentUI.update(

        at javax.swing.JComponent.paintComponent(

        at javax.swing.JComponent.paint(

        at javax.swing.JComponent.paintChildren(

        at javax.swing.JComponent.paint(

        at javax.swing.JViewport.paint(

        at javax.swing.JComponent.paintChildren(

        at javax.swing.JComponent.paint(

        at javax.swing.JComponent.paintChildren(

        at javax.swing.JSplitPane.paintChildren(

        at javax.swing.JComponent.paint(

        at javax.swing.JComponent.paintChildren(

        at javax.swing.JComponent.paint(

        at javax.swing.JComponent.paintWithOffscreenBuffer(

        at javax.swing.JComponent.paintDoubleBuffered(

        at javax.swing.JComponent._paintImmediately(

        at javax.swing.JComponent.paintImmediately(

        at javax.swing.RepaintManager.paintDirtyRegions(

        at javax.swing.SystemEventQueueUtilities$

        at java.awt.event.InvocationEvent.dispatch(

        at java.awt.EventQueue.dispatchEvent(

        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(

        at java.awt.EventDispatchThread.pumpEventsForHierarchy(

        at java.awt.EventDispatchThread.pumpEvents(

        at java.awt.EventDispatchThread.pumpEvents(



(edit times)

ChemAxon efa1591b5a

25-08-2008 09:24:46

Hi Tobias,

thorough and useful as ever! Thank you for all comment - even if it does cause headache. :-)

Most issues do surprise me as we have not touched either MCS search or main clustering algorithm in LibMCS for several months.

Anyway, I'll investigate all problems and we will fixed them asap - when I'm back from my holiday on September 1.

Kind regards,


ChemAxon efa1591b5a

18-09-2008 20:39:06

Hi Tobias,

we are still investigating most issues, so I cannot give you full report yet, so I just would like to reassure you that these problems have not been forgotten or ignored.

In those cases where libmcs does not terminate the underlying reason is the complexity of the structures (like 8 Br atoms, all bonded to each other etc). that kills the ring search algorithm (smallest set of smallest rings, actually). This step is part of the chemical fingerprint generation that LibraryMCS uses to predict which structures need to be searched for an MCS first, second etc.

For these structures I will use other descriptors not the chemical fingerprint. For now I introduced a simple complexity scores that exclude these structures from the search. But that's just a temporary quick and dirty fix.

The most puzzling problem the asc vs. desc giving different results. At present I am working on that and I believe to find out the reason behind this weird behaviour very soon.

The GUI issues are all know and scheduled to be fixed soon.

I will get back with a more detailed and nevertheless complete response.

Thank you for your patience and understanding.

Best regards