From e86c61537607a6fc71049afe9d3c7179fb9f9d75 Mon Sep 17 00:00:00 2001 From: Mitch Miller Date: Thu, 29 Aug 2024 13:01:16 -0400 Subject: [PATCH 1/3] wrapping a CDK call that failed for some structures in a try/catch to prevent the exception from bubbling up to the UI. --- pom.xml | 2 +- .../ncats/molwitch/cdk/CdkChemicalImpl.java | 7 +- src/test/java/TestChiralRead.java | 69 ++ src/test/resources/mols/SANORG-123781.mol | 600 ++++++++++++++++++ .../resources/mols/hypromellose_deriv.mol | 81 +++ 5 files changed, 757 insertions(+), 2 deletions(-) create mode 100644 src/test/resources/mols/SANORG-123781.mol create mode 100644 src/test/resources/mols/hypromellose_deriv.mol diff --git a/pom.xml b/pom.xml index c679168..442ece9 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ gov.nih.ncats molwitch-cdk - 1.0.19 + 1.0.21 molwitch-cdk https://github.com/ncats/molwitch-cdk/ diff --git a/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java b/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java index 13d1acc..e6d0660 100644 --- a/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java +++ b/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java @@ -54,6 +54,7 @@ import org.openscience.cdk.aromaticity.Kekulization; import org.openscience.cdk.atomtype.CDKAtomTypeMatcher; import org.openscience.cdk.exception.CDKException; +import org.openscience.cdk.exception.NoSuchAtomException; import org.openscience.cdk.geometry.cip.CIPTool; import org.openscience.cdk.geometry.cip.CIPToolMod; import org.openscience.cdk.graph.ConnectivityChecker; @@ -254,7 +255,11 @@ public static void setMaxUndefinedStereoCenters(int maxUndefinedStereoCenters) { CIPTool.label(cimp.getContainer()); } else { Logger.getLogger(this.getClass().getName()).fine("This molecule is considered NOT complex"); - CIPToolMod.label(cimp.getContainer()); + try { + CIPToolMod.label(cimp.getContainer()); + } catch (NoSuchAtomException ex) { + Logger.getLogger(this.getClass().getName()).warning("Error in call to CIPToolMod.label. Processing will continue"); + } } for (int i = 0; i < container.getAtomCount(); i++) { diff --git a/src/test/java/TestChiralRead.java b/src/test/java/TestChiralRead.java index 219f410..a36a21b 100644 --- a/src/test/java/TestChiralRead.java +++ b/src/test/java/TestChiralRead.java @@ -34,6 +34,7 @@ import gov.nih.ncats.molwitch.TetrahedralChirality; import gov.nih.ncats.molwitch.cdk.CdkChemicalImpl; import org.apache.commons.io.IOUtils; +import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; @@ -1889,6 +1890,65 @@ private boolean testOneMol(TestMol testMol) throws IOException { return testMol.chiralAtomCount == totalChiralAtoms; } + @Test + public void testLargeMolsRings() { + List mols = Arrays.asList( + new TestMol("large_polymer1", "large_polymer1.mol", 21), + new TestMol("614e808b-234a-476b-ac60-98ea42d6c6c5", "614e808b-234a-476b-ac60-98ea42d6c6c5.mol", 15), + new TestMol("c2dd8ca2-9ff7-4144-bcc7-77684294e24b", "c2dd8ca2-9ff7-4144-bcc7-77684294e24b.mol", 0), + new TestMol("c09aefcd-e985-4b8e-aa94-23a8f616228a", "c09aefcd-e985-4b8e-aa94-23a8f616228a.mol", 0), + new TestMol("921c6da6-152f-4da9-b684-579442ff6ad5", "921c6da6-152f-4da9-b684-579442ff6ad5.mol", 0), + new TestMol("452b31d5-7993-4cdf-b11c-243e433d4e34", "452b31d5-7993-4cdf-b11c-243e433d4e34.mol", 0), + new TestMol("9V35WW05U3", "9V35WW05U3.mol", 6), + new TestMol("79d19ec1-d053-44c3-a6c3-a6f0d0cdeea6", "79d19ec1-d053-44c3-a6c3-a6f0d0cdeea6.mol", 2), + new TestMol("46091f88-fd25-4ca9-8e37-fced5329be5a", "46091f88-fd25-4ca9-8e37-fced5329be5a.mol", 6), + new TestMol("benzoic acid", "benzoic.acid.mol", 0), + new TestMol("R 1-Phenylethanol", "1-Phenylethanol-R.mol", 1), + new TestMol("S 1-Phenylethanol", "1-Phenylethanol-S.mol", 1), + new TestMol("racemic 1-Phenylethanol", "1-Phenylethanol-racemic.mol", 1), + new TestMol("anthracene", "anthracene.mol", 0), + new TestMol("perylene", "perylene.mol", 0), + new TestMol("coronene", "coronene.mol", 0), + new TestMol("dioxocoronene", "dioxocoronene.mol", 0), + new TestMol("tetraoxocoronene", "tetraoxocoronene.mol", 0), + new TestMol("octaoxocoronene", "octaoxocoronene.mol", 0), + new TestMol("ovalene", "ovalene.mol", 0), + new TestMol("double-ovalene", "double-ovalene.mol", 0), + new TestMol("biggish1", "biggish1.mol", 0), + new TestMol("biggish2", "biggish2.mol", 0), + new TestMol("biggish3", "biggish3.mol", 4), + new TestMol("biggish4", "biggish4.mol", 12), + new TestMol("biggish5", "biggish5.mol", 12), + new TestMol("biggish6", "biggish6.mol", 12), + new TestMol("biggish7", "biggish7.mol", 0), + new TestMol("biggish8", "biggish8.mol", 0), + new TestMol("biggish9", "biggish9.mol", 4), + new TestMol("biggish10", "biggish10.mol", 4), + new TestMol("small_symmetric","small_symmetric.mol", 4), + new TestMol("SANORG-123781", "SANORG-123781.mol", 12) + ); + mols.forEach(m->{ + try{ + System.out.printf("about to test %s\n", m.molName); + int totalRings = testOneMolLargestFrag(m); + System.out.printf(" total: %d\n" ,totalRings); + assertTrue(totalRings >=0); + }catch (IOException ex){ + System.err.printf("Error processing mol %s - %s\n",m.molName, ex.getMessage()); + fail("test fails!"); + }}); + } + + private int testOneMolLargestFrag(TestMol testMol) throws IOException { + String molfileText = IOUtils.toString( + this.getClass().getResourceAsStream("mols/" + testMol.molfileName), + "UTF-8" + ); + Chemical c1=Chemical.parse(molfileText ); + int size= CIPToolMod.getSizeOfLargestRingSystem( (CdkChemicalImpl) c1.getImpl()); + return size; + } + @Test public void testSlowChiralitySmall() throws Exception { String molfileText = IOUtils.toString( @@ -1947,4 +2007,13 @@ public void testRingSystem3() throws Exception { assertEquals(5, ringSystemCount); } + + @Test + public void testHypro1() throws Exception { + String molfileText = IOUtils.toString(this.getClass().getResourceAsStream("mols/hypromellose_deriv.mol")); + CdkChemicalImpl c1= (CdkChemicalImpl) Chemical.parse(molfileText).getImpl(); + CIPToolMod cipToolMod = new CIPToolMod(); + CIPToolMod.label(c1.getContainer()); + assertNotNull(c1); + } } diff --git a/src/test/resources/mols/SANORG-123781.mol b/src/test/resources/mols/SANORG-123781.mol new file mode 100644 index 0000000..6eb2871 --- /dev/null +++ b/src/test/resources/mols/SANORG-123781.mol @@ -0,0 +1,600 @@ + + ACCLDraw08262413502D + +297293 0 0 1 0 0 0 0 0999 V2000 + 17.2777 -14.6232 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.0200 -13.8792 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 15.8596 -13.6551 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 15.9937 -10.9009 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.2504 -11.6452 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 15.4761 -12.5380 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 12.7783 -7.8389 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.1609 -8.9563 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 14.3204 -9.1845 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 13.5546 -6.9462 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7133 -7.1751 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 15.0956 -8.2933 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 19.3611 -4.9519 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.5867 -5.8437 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 17.4264 -5.6196 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 17.4321 -2.4932 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.8172 -3.6098 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 17.0429 -4.5025 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 14.3322 0.1922 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7212 -0.9230 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 13.9500 -1.8185 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 13.1704 0.4149 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.4002 -0.4805 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 12.7901 -1.5961 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 6.2113 -1.3777 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 6.5971 -2.4938 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9848 -0.4853 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 7.3710 -1.6015 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 8.5314 -1.8250 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 9.3057 -0.9322 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 6.9846 2.6404 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 6.5975 1.6734 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8863 2.1191 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 7.3706 1.5242 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 7.7573 0.4075 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 8.9176 0.1833 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 9.2231 6.5403 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 10.2381 5.9368 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 8.5311 5.7619 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 9.2078 5.3593 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 9.1919 4.1777 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 8.1610 3.6000 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 5.1318 6.5958 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 6.1620 7.1730 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 5.1163 5.4149 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 6.1469 5.9919 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 7.1622 5.3874 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 7.1470 4.2057 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 1.0288 6.6427 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 2.0570 7.2234 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 1.0174 5.4618 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 2.0459 6.0424 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 3.0634 5.4413 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 3.0523 4.2596 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + -1.0528 3.1200 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + -1.0416 4.3008 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + -0.0359 2.5197 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + -0.0244 3.7007 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 1.0049 4.2813 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 2.0228 3.6808 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 0.9572 -0.4442 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 0.2829 0.3496 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 1.6465 0.3365 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 0.9685 0.7368 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 0.9803 1.9186 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 2.0093 2.4998 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 1.9640 -2.2288 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 1.2892 -1.4355 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 2.6528 -1.4476 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 1.9745 -1.0477 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 1.9856 0.1340 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 3.0142 0.7159 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3.0253 1.8975 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 4.0548 2.4764 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 4.0685 3.6575 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 5.0997 4.2345 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 6.1155 3.6305 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 4.1735 -1.3518 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 5.2040 -1.2007 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 4.1711 -0.3103 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 4.9447 -0.4572 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 5.7159 0.4382 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 5.3267 1.5541 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0979 2.4495 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 7.1119 1.8438 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 8.1434 2.4190 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 9.3036 2.1941 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 9.6896 1.0771 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 12.7873 4.6501 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 11.7563 4.5026 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 12.7860 3.6086 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 12.0130 3.7582 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 11.2387 2.8654 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 11.6241 1.7482 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.8497 0.8555 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 11.2378 -0.2600 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 10.4659 -1.1540 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 10.8564 -2.2693 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 12.0175 -2.4895 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 8.9309 -6.0720 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 8.9276 -5.0305 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 9.9613 -5.9199 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 9.7013 -5.1767 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 10.4725 -4.2813 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 11.6337 -4.5007 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.4048 -3.6052 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 13.5648 -3.8277 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 14.3375 -2.9343 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 15.4977 -3.1592 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 15.8837 -4.2761 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 12.3997 -5.6855 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.1729 -5.8349 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 13.9477 -4.9426 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.1080 -5.1668 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 15.4915 -6.2839 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 16.6507 -6.5104 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 17.0322 -7.6288 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 16.2548 -8.5190 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 18.9541 -11.1340 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.1815 -10.9820 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 17.7986 -9.8640 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.6391 -9.6358 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 15.8640 -10.5270 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7046 -10.3014 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 13.9309 -11.1947 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 14.3169 -12.3116 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 11.2211 -11.7121 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.9942 -11.8614 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 12.3809 -12.9781 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.5412 -13.2023 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 13.9248 -14.3194 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 15.0840 -14.5458 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 15.4655 -15.6644 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 14.6881 -16.5544 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 12.3750 -15.0532 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.1475 -15.2058 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 13.5296 -16.3240 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 11.0730 -17.5766 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.5914 -16.9839 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 12.7509 -17.2120 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 15.4444 -19.8281 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.6719 -19.6759 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 13.8939 -20.5655 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 15.8187 -23.0292 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.4368 -21.9115 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 14.2774 -21.6826 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 10.4063 -23.0045 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.5651 -23.2332 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 11.9473 -24.3515 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 9.2315 -25.9004 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.0090 -25.0114 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 11.1685 -25.2395 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 14.2484 -27.9315 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.0895 -27.7034 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 12.3115 -28.5930 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 14.2363 -31.0567 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.8544 -29.9390 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 12.6950 -29.7101 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 8.8240 -31.0320 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.9827 -31.2607 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 10.3649 -32.3790 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 7.6492 -33.9279 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.4267 -33.0388 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 9.5862 -33.2670 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 11.6273 -36.5770 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 10.9705 -34.9918 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 10.9516 -36.1727 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.9187 -36.7468 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 9.8970 -37.9277 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 12.9793 -37.4019 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 11.9693 -36.7900 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 12.9547 -38.5825 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 11.9443 -37.9709 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 10.9090 -38.5407 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 10.8841 -39.7221 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 14.9526 -40.9864 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 14.9774 -39.8057 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 13.9178 -41.5554 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 13.9423 -40.3746 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 12.9311 -39.7629 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 11.8955 -40.3321 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 14.9178 -42.5548 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 15.9174 -43.9496 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 14.9044 -43.3421 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.8715 -43.9161 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 13.8497 -45.0970 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 15.5516 -45.3304 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.8618 -45.7101 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 14.8367 -46.8916 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 18.9052 -48.1559 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 18.9300 -46.9753 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 17.8704 -48.7250 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 17.8949 -47.5441 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 16.8838 -46.9324 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 15.8481 -47.5015 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 16.8122 -50.4756 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.8364 -49.2947 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 15.8256 -48.6824 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 14.7917 -49.2533 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 9.6630 -49.7394 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 9.6873 -48.5588 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6733 -50.3509 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 10.6978 -49.1701 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 11.7335 -48.6009 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 12.7446 -49.2126 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.7803 -48.6434 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 13.8027 -47.4625 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 12.7920 -46.8502 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 12.8162 -45.6687 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 10.0951 -45.2221 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.7690 -45.6292 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 11.8044 -45.0594 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 9.7799 -43.8357 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.8149 -43.2668 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 11.8261 -43.8784 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 12.8596 -43.3068 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 12.8838 -42.1253 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 11.8730 -41.5129 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 10.8392 -42.0840 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7104 -42.5703 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7347 -41.3895 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 6.7208 -43.1817 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 6.7452 -42.0009 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 7.7809 -41.4316 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 8.7921 -42.0432 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.8277 -41.4740 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 9.8500 -40.2932 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 8.8393 -39.6808 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 8.8634 -38.4993 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 6.1423 -38.0529 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8163 -38.4599 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8516 -37.8901 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 6.8854 -34.9167 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8621 -36.0976 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8733 -36.7092 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 8.9068 -36.1374 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 8.9309 -34.9559 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 9.9658 -34.3854 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 11.1242 -34.6158 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 16.1587 -33.5233 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 15.7775 -32.4056 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 15.3815 -34.4125 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 15.0000 -33.2947 0.0000 S 0 0 3 0 0 0 0 0 0 0 0 0 + 13.8404 -33.0665 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 13.0625 -33.9561 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.9030 -33.7278 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 11.5234 -32.6094 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 12.3007 -31.7193 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 11.9193 -30.6008 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 10.7601 -30.3744 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 7.6763 -27.6814 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.8351 -27.9101 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 9.2173 -29.0284 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.3767 -29.2573 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 11.1522 -28.3665 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 10.7708 -27.2481 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 11.5482 -26.3579 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 12.7066 -26.5884 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 16.5817 -25.2671 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.4228 -25.0390 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 14.6448 -25.9286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.4854 -25.7003 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 13.1058 -24.5819 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 13.8831 -23.6918 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 13.5017 -22.5733 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 12.3425 -22.3469 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 9.6449 -19.7302 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.4174 -19.8826 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 10.7996 -21.0009 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.9590 -21.2298 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 12.7347 -20.3390 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 12.3532 -19.2206 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 13.1306 -18.3304 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 14.2889 -18.5609 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 15.0678 -17.6729 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0 + 16.2263 -17.9058 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.6046 -19.0254 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 17.7625 -19.2582 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 40.0141 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 41.9826 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 43.9511 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 45.9196 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 47.8881 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 49.8567 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 51.8252 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 53.7937 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 55.7622 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 57.7307 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 59.6992 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 61.6677 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 63.6362 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 65.6047 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 67.5732 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 69.5417 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 71.5102 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 73.4787 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 75.4472 25.6718 0.0000 Na 0 3 0 0 0 0 0 0 0 0 0 0 + 2 1 1 0 0 0 0 + 3 2 1 1 0 0 0 + 3132 1 0 0 0 0 + 6 3 1 0 0 0 0 + 5 4 1 0 0 0 0 + 6 5 1 6 0 0 0 +126 6 1 0 0 0 0 + 8 7 1 0 0 0 0 + 9 8 1 6 0 0 0 + 9124 1 0 0 0 0 + 12 9 1 0 0 0 0 + 11 10 1 0 0 0 0 + 12 11 1 1 0 0 0 +118 12 1 0 0 0 0 + 14 13 1 0 0 0 0 + 15 14 1 1 0 0 0 + 15116 1 0 0 0 0 + 18 15 1 0 0 0 0 + 17 16 1 0 0 0 0 + 18 17 1 6 0 0 0 +110 18 1 0 0 0 0 + 20 19 1 0 0 0 0 + 21 20 1 1 0 0 0 + 21108 1 0 0 0 0 + 24 21 1 0 0 0 0 + 23 22 1 0 0 0 0 + 24 23 1 6 0 0 0 + 99 24 1 0 0 0 0 + 28 25 2 0 0 0 0 + 28 26 2 0 0 0 0 + 28 27 1 0 0 0 0 + 29 28 1 0 0 0 0 + 30 29 1 6 0 0 0 + 30 97 1 0 0 0 0 + 36 30 1 0 0 0 0 + 34 31 2 0 0 0 0 + 34 32 2 0 0 0 0 + 34 33 1 0 0 0 0 + 35 34 1 0 0 0 0 + 36 35 1 1 0 0 0 + 88 36 1 0 0 0 0 + 40 37 2 0 0 0 0 + 40 38 2 0 0 0 0 + 40 39 1 0 0 0 0 + 41 40 1 0 0 0 0 + 42 41 1 1 0 0 0 + 42 86 1 0 0 0 0 + 48 42 1 0 0 0 0 + 46 43 2 0 0 0 0 + 46 44 2 0 0 0 0 + 46 45 1 0 0 0 0 + 47 46 1 0 0 0 0 + 48 47 1 6 0 0 0 + 77 48 1 0 0 0 0 + 52 49 2 0 0 0 0 + 52 50 2 0 0 0 0 + 52 51 1 0 0 0 0 + 53 52 1 0 0 0 0 + 54 53 1 1 0 0 0 + 54 75 1 0 0 0 0 + 60 54 1 0 0 0 0 + 58 55 2 0 0 0 0 + 58 56 2 0 0 0 0 + 58 57 1 0 0 0 0 + 59 58 1 0 0 0 0 + 60 59 1 6 0 0 0 + 66 60 1 0 0 0 0 + 64 61 2 0 0 0 0 + 64 62 2 0 0 0 0 + 64 63 1 0 0 0 0 + 65 64 1 0 0 0 0 + 66 65 1 1 0 0 0 + 73 66 1 0 0 0 0 + 70 67 2 0 0 0 0 + 70 68 2 0 0 0 0 + 70 69 1 0 0 0 0 + 71 70 1 0 0 0 0 + 72 71 1 0 0 0 0 + 73 72 1 6 0 0 0 + 74 73 1 0 0 0 0 + 75 74 1 0 0 0 0 + 75 76 1 1 0 0 0 + 77 76 1 1 0 0 0 + 84 77 1 0 0 0 0 + 81 78 2 0 0 0 0 + 81 79 2 0 0 0 0 + 81 80 1 0 0 0 0 + 82 81 1 0 0 0 0 + 83 82 1 0 0 0 0 + 84 83 1 6 0 0 0 + 85 84 1 0 0 0 0 + 86 85 1 0 0 0 0 + 86 87 1 1 0 0 0 + 88 87 1 6 0 0 0 + 95 88 1 0 0 0 0 + 92 89 2 0 0 0 0 + 92 90 2 0 0 0 0 + 92 91 1 0 0 0 0 + 93 92 1 0 0 0 0 + 94 93 1 0 0 0 0 + 95 94 1 1 0 0 0 + 96 95 1 0 0 0 0 + 97 96 1 0 0 0 0 + 97 98 1 1 0 0 0 + 99 98 1 1 0 0 0 +106 99 1 0 0 0 0 +103100 2 0 0 0 0 +103101 2 0 0 0 0 +103102 1 0 0 0 0 +104103 1 0 0 0 0 +105104 1 0 0 0 0 +106105 1 6 0 0 0 +107106 1 0 0 0 0 +108107 1 0 0 0 0 +108109 1 1 0 0 0 +110109 1 1 0 0 0 +114110 1 0 0 0 0 +112111 1 0 0 0 0 +113112 1 0 0 0 0 +114113 1 6 0 0 0 +115114 1 0 0 0 0 +116115 1 0 0 0 0 +116117 1 6 0 0 0 +118117 1 6 0 0 0 +122118 1 0 0 0 0 +120119 1 0 0 0 0 +121120 1 0 0 0 0 +122121 1 1 0 0 0 +123122 1 0 0 0 0 +124123 1 0 0 0 0 +124125 1 1 0 0 0 +126125 1 1 0 0 0 +130126 1 0 0 0 0 +128127 1 0 0 0 0 +129128 1 0 0 0 0 +130129 1 6 0 0 0 +131130 1 0 0 0 0 +132131 1 0 0 0 0 +132133 1 6 0 0 0 +134133 1 6 0 0 0 +134275 1 0 0 0 0 +137134 1 0 0 0 0 +136135 1 0 0 0 0 +137136 1 1 0 0 0 +140137 1 0 0 0 0 +139138 1 0 0 0 0 +140139 1 6 0 0 0 +273140 1 0 0 0 0 +142141 1 0 0 0 0 +143142 1 6 0 0 0 +143271 1 0 0 0 0 +146143 1 0 0 0 0 +145144 1 0 0 0 0 +146145 1 1 0 0 0 +265146 1 0 0 0 0 +148147 1 0 0 0 0 +149148 1 1 0 0 0 +149263 1 0 0 0 0 +152149 1 0 0 0 0 +151150 1 0 0 0 0 +152151 1 6 0 0 0 +257152 1 0 0 0 0 +154153 1 0 0 0 0 +155154 1 6 0 0 0 +155255 1 0 0 0 0 +158155 1 0 0 0 0 +157156 1 0 0 0 0 +158157 1 1 0 0 0 +249158 1 0 0 0 0 +160159 1 0 0 0 0 +161160 1 1 0 0 0 +161247 1 0 0 0 0 +164161 1 0 0 0 0 +163162 1 0 0 0 0 +164163 1 6 0 0 0 +238164 1 0 0 0 0 +167165 2 0 0 0 0 +167166 1 0 0 0 0 +168167 1 6 0 0 0 +168236 1 0 0 0 0 +169168 1 0 0 0 0 +229169 1 0 0 0 0 +173170 2 0 0 0 0 +173171 2 0 0 0 0 +173172 1 0 0 0 0 +174173 1 0 0 0 0 +175174 1 6 0 0 0 +175227 1 0 0 0 0 +181175 1 0 0 0 0 +179176 2 0 0 0 0 +179177 2 0 0 0 0 +179178 1 0 0 0 0 +180179 1 0 0 0 0 +181180 1 1 0 0 0 +218181 1 0 0 0 0 +184182 2 0 0 0 0 +184183 1 0 0 0 0 +185184 1 6 0 0 0 +185216 1 0 0 0 0 +186185 1 0 0 0 0 +209186 1 0 0 0 0 +188187 1 0 0 0 0 +189188 1 6 0 0 0 +189207 1 0 0 0 0 +195189 1 0 0 0 0 +193190 2 0 0 0 0 +193191 2 0 0 0 0 +193192 1 0 0 0 0 +194193 1 0 0 0 0 +195194 1 6 0 0 0 +198195 1 0 0 0 0 +197196 1 0 0 0 0 +198197 1 1 0 0 0 +199198 1 0 0 0 0 +206199 1 0 0 0 0 +203200 2 0 0 0 0 +203201 2 0 0 0 0 +203202 1 0 0 0 0 +204203 1 0 0 0 0 +205204 1 0 0 0 0 +206205 1 6 0 0 0 +207206 1 0 0 0 0 +207208 1 1 0 0 0 +209208 1 1 0 0 0 +212209 1 0 0 0 0 +211210 1 0 0 0 0 +212211 1 1 0 0 0 +215212 1 0 0 0 0 +214213 1 0 0 0 0 +215214 1 1 0 0 0 +216215 1 0 0 0 0 +216217 1 6 0 0 0 +218217 1 1 0 0 0 +219218 1 0 0 0 0 +226219 1 0 0 0 0 +223220 2 0 0 0 0 +223221 2 0 0 0 0 +223222 1 0 0 0 0 +224223 1 0 0 0 0 +225224 1 0 0 0 0 +226225 1 6 0 0 0 +227226 1 0 0 0 0 +227228 1 1 0 0 0 +229228 1 1 0 0 0 +232229 1 0 0 0 0 +231230 1 0 0 0 0 +232231 1 6 0 0 0 +235232 1 0 0 0 0 +234233 1 0 0 0 0 +235234 1 1 0 0 0 +236235 1 0 0 0 0 +236237 1 6 0 0 0 +238237 1 6 0 0 0 +239238 1 0 0 0 0 +246239 1 0 0 0 0 +243240 2 0 0 0 0 +243241 2 0 0 0 0 +243242 1 0 0 0 0 +244243 1 0 0 0 0 +245244 1 0 0 0 0 +246245 1 1 0 0 0 +247246 1 0 0 0 0 +247248 1 1 0 0 0 +249248 1 6 0 0 0 +250249 1 0 0 0 0 +254250 1 0 0 0 0 +252251 1 0 0 0 0 +253252 1 0 0 0 0 +254253 1 6 0 0 0 +255254 1 0 0 0 0 +255256 1 1 0 0 0 +257256 1 6 0 0 0 +258257 1 0 0 0 0 +262258 1 0 0 0 0 +260259 1 0 0 0 0 +261260 1 0 0 0 0 +262261 1 1 0 0 0 +263262 1 0 0 0 0 +263264 1 6 0 0 0 +265264 1 6 0 0 0 +266265 1 0 0 0 0 +270266 1 0 0 0 0 +268267 1 0 0 0 0 +269268 1 0 0 0 0 +270269 1 6 0 0 0 +271270 1 0 0 0 0 +271272 1 1 0 0 0 +273272 1 6 0 0 0 +274273 1 0 0 0 0 +275274 1 0 0 0 0 +275276 1 1 0 0 0 +277276 1 0 0 0 0 +278277 1 0 0 0 0 +M CHG 8 27 -1 33 -1 39 -1 45 -1 51 -1 57 -1 63 -1 69 -1 +M CHG 8 80 -1 91 -1 102 -1 166 -1 172 -1 178 -1 183 -1 192 -1 +M CHG 8 202 -1 222 -1 242 -1 279 1 280 1 281 1 282 1 283 1 +M CHG 8 284 1 285 1 286 1 287 1 288 1 289 1 290 1 291 1 +M CHG 6 292 1 293 1 294 1 295 1 296 1 297 1 +M END diff --git a/src/test/resources/mols/hypromellose_deriv.mol b/src/test/resources/mols/hypromellose_deriv.mol new file mode 100644 index 0000000..c07c002 --- /dev/null +++ b/src/test/resources/mols/hypromellose_deriv.mol @@ -0,0 +1,81 @@ + + JSDraw208262419252D + + 27 24 0 0 1 0 0 V2000 + 55.0305 -10.6734 0.0000 * 0 0 0 0 0 0 0 0 0 0 0 0 + 55.8248 -9.3307 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 55.0514 -7.9818 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 53.4827 -7.9818 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 52.6975 -9.3214 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 53.4643 -10.6654 0.0000 * 0 0 0 0 0 0 0 0 0 0 0 0 + 52.7092 -6.6210 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 53.4946 -5.2694 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 52.7181 -3.9098 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 53.4878 -2.5508 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 55.0463 -2.5508 0.0000 * 0 0 0 0 0 0 0 0 0 0 0 0 + 55.0535 -5.2694 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 55.8368 -6.6303 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 57.6751 -6.6303 0.0000 * 0 0 0 0 0 0 0 0 0 0 0 0 + 56.6047 -5.2899 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0 + 51.1476 -6.6210 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 48.9229 -6.6210 0.0000 * 0 0 0 0 0 0 0 0 0 0 0 0 + 51.6059 -24.3647 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 53.1644 -24.3647 0.0000 * 0 0 0 0 0 0 0 0 0 0 0 0 + 50.6871 -30.2403 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0 + 52.2456 -30.2403 0.0000 * 0 0 0 0 0 0 0 0 0 0 0 0 + 51.4039 -17.2094 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 54.0958 -18.7598 0.0000 * 0 0 0 0 0 0 0 0 0 0 0 0 + 52.7498 -19.5470 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 51.4039 -18.7677 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 50.0581 -19.5546 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 52.7496 -21.1070 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 2 1 1 0 0 0 0 + 3 2 1 6 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 1 0 0 0 + 5 6 1 0 0 0 0 + 4 7 1 0 0 0 0 + 7 8 1 0 0 0 0 + 8 9 1 1 0 0 0 + 9 10 1 0 0 0 0 + 10 11 1 0 0 0 0 + 8 12 1 0 0 0 0 + 13 3 1 0 0 0 0 + 12 13 1 0 0 0 0 + 13 14 1 0 0 0 0 + 13 15 1 6 0 0 0 + 7 16 1 6 0 0 0 + 16 17 1 0 0 0 0 + 18 19 1 0 0 0 0 + 20 21 1 0 0 0 0 + 24 23 1 0 0 0 0 + 25 22 1 0 0 0 0 + 25 24 1 0 0 0 0 + 26 25 1 0 0 0 0 + 24 27 1 0 0 0 0 +M STY 1 1 SRU +M SCN 1 1 HT +M SAL 1 8 1 2 3 4 5 6 7 8 +M SAL 1 7 9 10 11 12 13 15 16 +M SBL 1 2 14 17 +M SMT 1 n +M SPA 1 8 1 2 3 4 5 6 7 8 +M SPA 1 7 9 10 11 12 13 15 16 +M SDI 1 4 50.3517 -11.4692 50.3517 -1.7550 +M SDI 1 4 57.4005 -1.7550 57.4005 -11.4692 +M STY 1 2 GEN +M SAL 2 2 18 19 +M SPA 2 2 18 19 +M SDI 2 4 50.8101 -25.1605 50.8101 -23.5689 +M SDI 2 4 53.9602 -23.5689 53.9602 -25.1605 +M STY 1 3 GEN +M SAL 3 2 20 21 +M SPA 3 2 20 21 +M SDI 3 4 49.8913 -31.0361 49.8913 -29.4445 +M SDI 3 4 53.0414 -29.4445 53.0414 -31.0361 +M STY 1 4 GEN +M SAL 4 6 22 23 24 25 26 27 +M SPA 4 6 22 23 24 25 26 27 +M SDI 4 4 49.2622 -20.3504 49.2622 -16.4136 +M SDI 4 4 54.8917 -16.4136 54.8917 -20.3504 +M END From f879b8cd0abbb42dad5d0e31be35de8d89519afe Mon Sep 17 00:00:00 2001 From: Mitch Miller Date: Thu, 29 Aug 2024 13:03:04 -0400 Subject: [PATCH 2/3] added explanatory comment --- src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java b/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java index e6d0660..4fea33b 100644 --- a/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java +++ b/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java @@ -256,6 +256,8 @@ public static void setMaxUndefinedStereoCenters(int maxUndefinedStereoCenters) { } else { Logger.getLogger(this.getClass().getName()).fine("This molecule is considered NOT complex"); try { + //The call to label generates an Exception down in the bowels of CDK. + // trapping it in a try/catch allows the process to continue CIPToolMod.label(cimp.getContainer()); } catch (NoSuchAtomException ex) { Logger.getLogger(this.getClass().getName()).warning("Error in call to CIPToolMod.label. Processing will continue"); From 02a5c9d82bd6fcdb243ef5da95eb59b224d28340 Mon Sep 17 00:00:00 2001 From: Mitch Miller Date: Tue, 3 Sep 2024 15:33:56 -0400 Subject: [PATCH 3/3] bandaid to prevent exception from bubbling up during structure parsing adding some data files for unit tests, omitted earlier. --- .../ncats/molwitch/cdk/CdkChemicalImpl.java | 2 +- ...calcium benzoate monohydrate confusing.mol | 53 +++++++++++++++++++ .../mols/calcium benzoate monohydrate-18.mol | 53 +++++++++++++++++++ src/test/resources/mols/calcium benzoate.mol | 51 ++++++++++++++++++ 4 files changed, 158 insertions(+), 1 deletion(-) create mode 100644 src/test/resources/mols/calcium benzoate monohydrate confusing.mol create mode 100644 src/test/resources/mols/calcium benzoate monohydrate-18.mol create mode 100644 src/test/resources/mols/calcium benzoate.mol diff --git a/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java b/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java index 4fea33b..ec051ec 100644 --- a/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java +++ b/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java @@ -256,7 +256,7 @@ public static void setMaxUndefinedStereoCenters(int maxUndefinedStereoCenters) { } else { Logger.getLogger(this.getClass().getName()).fine("This molecule is considered NOT complex"); try { - //The call to label generates an Exception down in the bowels of CDK. + //The call to label generates an Exception down in the bowels of CDK for *some* structures. // trapping it in a try/catch allows the process to continue CIPToolMod.label(cimp.getContainer()); } catch (NoSuchAtomException ex) { diff --git a/src/test/resources/mols/calcium benzoate monohydrate confusing.mol b/src/test/resources/mols/calcium benzoate monohydrate confusing.mol new file mode 100644 index 0000000..74218c5 --- /dev/null +++ b/src/test/resources/mols/calcium benzoate monohydrate confusing.mol @@ -0,0 +1,53 @@ +Calcium benzoate monohydrate + + + 22 18 0 0 0 0 0 0 0 0999 V2000 + 7.5718 -14.9911 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.6141 -14.9905 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.5949 -14.4008 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.6141 -16.1720 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5718 -16.1773 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.5974 -16.7615 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6373 -14.3998 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.6604 -14.9905 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 10.6373 -13.2183 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 17.8440 -10.4260 0.0000 Ca 0 2 0 0 0 0 0 0 0 0 0 0 + 10.8128 -16.5197 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 11.6604 -14.9905 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 10.6373 -13.2183 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5718 -14.9911 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.6141 -14.9905 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.5949 -14.4008 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.6141 -16.1720 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5718 -16.1773 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.5974 -16.7615 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6373 -14.3998 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.6604 -14.9905 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 6 4 1 0 0 0 0 + 5 6 2 0 0 0 0 + 2 3 1 0 0 0 0 + 1 5 1 0 0 0 0 + 4 2 2 0 0 0 0 + 3 1 2 0 0 0 0 + 7 9 2 0 0 0 0 + 7 8 1 0 0 0 0 + 7 2 1 0 0 0 0 + 19 17 1 0 0 0 0 + 18 19 2 0 0 0 0 + 15 16 1 0 0 0 0 + 14 18 1 0 0 0 0 + 17 15 2 0 0 0 0 + 16 14 2 0 0 0 0 + 20 22 2 0 0 0 0 + 20 21 1 0 0 0 0 + 20 15 1 0 0 0 0 +M CHG 4 8 -1 10 2 12 -1 21 -1 +M STY 1 1 MUL +M SLB 1 1 1 +M SAL 1 15 1 2 3 4 5 6 7 8 9 14 15 16 17 18 19 +M SAL 1 2 20 21 +M SPA 1 9 1 2 3 4 5 6 7 8 9 +M SDI 1 4 6.8840 -17.4493 6.8840 -12.4871 +M SDI 1 4 12.3692 -12.4871 12.3692 -17.4493 +M SMT 1 2 +M END diff --git a/src/test/resources/mols/calcium benzoate monohydrate-18.mol b/src/test/resources/mols/calcium benzoate monohydrate-18.mol new file mode 100644 index 0000000..2a16f72 --- /dev/null +++ b/src/test/resources/mols/calcium benzoate monohydrate-18.mol @@ -0,0 +1,53 @@ + + ACCLDraw05242413082D + + 20 18 0 0 0 0 0 0 0 0999 V2000 + 7.0927 -14.9910 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.1350 -14.9905 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.1158 -14.4007 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.1350 -16.1719 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.0927 -16.1772 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.1184 -16.7615 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.1582 -14.3997 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.1814 -14.9905 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 10.1582 -13.2183 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 17.3650 -10.4259 0.0000 Ca 0 2 0 0 0 0 0 0 0 0 0 0 + 18.9587 -14.8009 0.0000 O 2 0 0 0 0 0 0 0 0 0 0 0 + 7.0927 -14.9910 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.1350 -14.9905 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.1158 -14.4007 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.1350 -16.1719 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.0927 -16.1772 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.1184 -16.7615 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.1582 -14.3997 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.1814 -14.9905 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 10.1582 -13.2183 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 6 4 1 0 0 0 0 + 5 6 2 0 0 0 0 + 2 3 1 0 0 0 0 + 1 5 1 0 0 0 0 + 4 2 2 0 0 0 0 + 3 1 2 0 0 0 0 + 7 9 2 0 0 0 0 + 7 8 1 0 0 0 0 + 7 2 1 0 0 0 0 + 17 15 1 0 0 0 0 + 16 17 2 0 0 0 0 + 13 14 1 0 0 0 0 + 12 16 1 0 0 0 0 + 15 13 2 0 0 0 0 + 14 12 2 0 0 0 0 + 18 20 2 0 0 0 0 + 18 19 1 0 0 0 0 + 18 13 1 0 0 0 0 +M CHG 3 8 -1 10 2 19 -1 +M ISO 1 11 18 +M STY 1 1 MUL +M SLB 1 1 1 +M SAL 1 15 1 2 3 4 5 6 7 8 9 12 13 14 15 16 17 +M SAL 1 3 18 19 20 +M SPA 1 9 1 2 3 4 5 6 7 8 9 +M SDI 1 4 6.4049 -17.4493 6.4049 -12.4871 +M SDI 1 4 11.8902 -12.4871 11.8902 -17.4493 +M SMT 1 2 +M END diff --git a/src/test/resources/mols/calcium benzoate.mol b/src/test/resources/mols/calcium benzoate.mol new file mode 100644 index 0000000..24d4905 --- /dev/null +++ b/src/test/resources/mols/calcium benzoate.mol @@ -0,0 +1,51 @@ + + ACCLDraw05242410442D + + 19 18 0 0 0 0 0 0 0 0999 V2000 + 5.3215 -8.2526 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.3638 -8.2521 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.3446 -7.6623 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.3638 -9.4335 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.3215 -9.4388 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.3472 -10.0231 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3870 -7.6613 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.4102 -8.2521 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 8.3870 -6.4799 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 15.5938 -3.6875 0.0000 Ca 0 2 0 0 0 0 0 0 0 0 0 0 + 5.3215 -8.2526 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.3638 -8.2521 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.3446 -7.6623 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.3638 -9.4335 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.3215 -9.4388 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.3472 -10.0231 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3870 -7.6613 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.4102 -8.2521 0.0000 O 0 5 0 0 0 0 0 0 0 0 0 0 + 8.3870 -6.4799 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 6 4 1 0 0 0 0 + 5 6 2 0 0 0 0 + 2 3 1 0 0 0 0 + 1 5 1 0 0 0 0 + 4 2 2 0 0 0 0 + 3 1 2 0 0 0 0 + 7 9 2 0 0 0 0 + 7 8 1 0 0 0 0 + 7 2 1 0 0 0 0 + 16 14 1 0 0 0 0 + 15 16 2 0 0 0 0 + 12 13 1 0 0 0 0 + 11 15 1 0 0 0 0 + 14 12 2 0 0 0 0 + 13 11 2 0 0 0 0 + 17 19 2 0 0 0 0 + 17 18 1 0 0 0 0 + 17 12 1 0 0 0 0 +M CHG 3 8 -1 10 2 18 -1 +M STY 1 1 MUL +M SLB 1 1 1 +M SAL 1 15 1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 +M SAL 1 3 17 18 19 +M SPA 1 9 1 2 3 4 5 6 7 8 9 +M SDI 1 4 4.6337 -10.7109 4.6337 -5.7487 +M SDI 1 4 10.1190 -5.7487 10.1190 -10.7109 +M SMT 1 2 +M END