Skip to content

Commit

Permalink
Added a test case for bug 3315503 to ensure that Mol2Writer is not th…
Browse files Browse the repository at this point in the history
…rowing an NPE when faced with an unknown atom type. Also added test data file.

Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>
  • Loading branch information
rajarshi authored and egonw committed Jun 20, 2011
1 parent 63619c2 commit aa35eae
Show file tree
Hide file tree
Showing 2 changed files with 239 additions and 4 deletions.
204 changes: 204 additions & 0 deletions src/test/data/mdl/ligand-1a0i.sdf
@@ -0,0 +1,204 @@
1A0I_ATP_A_1
RCSB PDB04121112133D
Coordinates from PDB:1A0I:A:1 Model:1 without hydrogens
31 33 0 0 0 0 999 V2000
-1.4630 -18.5150 50.8220 P 0 0 0 0 0 0 0 0 0 0 0 0
-1.2090 -18.0430 49.4400 O 0 0 0 0 0 0 0 0 0 0 0 0
-1.5300 -17.2750 51.6340 O 0 0 0 0 0 0 0 0 0 0 0 0
-2.8510 -19.0240 50.8640 O 0 0 0 0 0 0 0 0 0 0 0 0
0.2750 -19.5630 52.8510 P 0 0 0 0 0 0 0 0 0 0 0 0
-0.6560 -20.1450 53.8680 O 0 0 0 0 0 0 0 0 0 0 0 0
1.5190 -20.4000 52.9670 O 0 0 0 0 0 0 0 0 0 0 0 0
-0.3050 -19.5070 51.3540 O 0 0 0 0 0 0 0 0 0 0 0 0
1.9300 -17.4650 53.3890 P 0 0 0 0 0 0 0 0 0 0 0 0
2.5380 -17.6780 52.0570 O 0 0 0 0 0 0 0 0 0 0 0 0
1.6500 -15.9920 53.4350 O 0 0 0 0 0 0 0 0 0 0 0 0
0.6260 -18.1970 53.3730 O 0 0 0 0 0 0 0 0 0 0 0 0
2.9180 -17.8830 54.5940 O 0 0 0 0 0 0 0 0 0 0 0 0
2.6240 -17.4710 55.9330 C 0 0 0 0 0 0 0 0 0 0 0 0
2.1670 -18.7010 56.7120 C 0 0 0 0 0 0 0 0 0 0 0 0
2.9630 -19.8680 56.4910 O 0 0 0 0 0 0 0 0 0 0 0 0
1.2670 -18.7570 57.9400 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.0300 -18.1290 57.9260 O 0 0 0 0 0 0 0 0 0 0 0 0
1.3200 -20.2340 58.3070 C 0 0 0 0 0 0 0 0 0 0 0 0
0.0620 -20.8690 58.1950 O 0 0 0 0 0 0 0 0 0 0 0 0
2.5980 -20.7080 57.6020 C 0 0 0 0 0 0 0 0 0 0 0 0
3.6340 -21.5680 58.2300 N 0 0 0 0 0 0 0 0 0 0 0 0
3.9520 -22.9070 58.0310 C 0 0 0 0 0 0 0 0 0 0 0 0
5.0160 -23.2570 58.8640 N 0 0 0 0 0 0 0 0 0 0 0 0
5.2750 -22.1220 59.5800 C 0 0 0 0 0 0 0 0 0 0 0 0
6.2540 -22.1790 60.5260 C 0 0 0 0 0 0 0 0 0 0 0 0
7.0510 -23.3780 60.8010 N 0 0 0 0 0 0 0 0 0 0 0 0
6.4270 -21.0100 61.2320 N 0 0 0 0 0 0 0 0 0 0 0 0
5.5890 -19.9570 60.8820 C 0 0 0 0 0 0 0 0 0 0 0 0
4.6040 -19.9410 59.9160 N 0 0 0 0 0 0 0 0 0 0 0 0
4.4610 -21.1210 59.2230 C 0 0 0 0 0 0 0 0 0 0 0 0
1 2 2 0 0 0 0
1 3 1 0 0 0 0
1 4 1 0 0 0 0
1 8 1 0 0 0 0
5 6 2 0 0 0 0
5 7 1 0 0 0 0
5 8 1 0 0 0 0
5 12 1 0 0 0 0
9 10 2 0 0 0 0
9 11 1 0 0 0 0
9 12 1 0 0 0 0
9 13 1 0 0 0 0
13 14 1 0 0 0 0
14 15 1 0 0 0 0
15 16 1 0 0 0 0
15 17 1 0 0 0 0
16 21 1 0 0 0 0
17 18 1 0 0 0 0
17 19 1 0 0 0 0
19 20 1 0 0 0 0
19 21 1 0 0 0 0
21 22 1 0 0 0 0
22 23 1 0 0 0 0
22 31 1 0 0 0 0
23 24 2 0 0 0 0
24 25 1 0 0 0 0
25 26 1 0 0 0 0
25 31 2 0 0 0 0
26 27 1 0 0 0 0
26 28 2 0 0 0 0
28 29 1 0 0 0 0
29 30 2 0 0 0 0
30 31 1 0 0 0 0
A 1
PG
A 2
O1G
A 3
O2G
A 4
O3G
A 5
PB
A 6
O1B
A 7
O2B
A 8
O3B
A 9
PA
A 10
O1A
A 11
O2A
A 12
O3A
A 13
O5'
A 14
C5'
A 15
C4'
A 16
O4'
A 17
C3'
A 18
O3'
A 19
C2'
A 20
O2'
A 21
C1'
A 22
N9
A 23
C8
A 24
N7
A 25
C5
A 26
C6
A 27
N6
A 28
N1
A 29
C2
A 30
N3
A 31
C4
M END
> <InstanceId>
1A0I_ATP_A_1

> <ChemCompId>
ATP

> <PdbId>
1A0I

> <ChainId>
A

> <ResidueNumber>
1

> <InsertionCode>


> <Model>
1

> <AltIds>


> <MissingHeavyAtoms>
0

> <ObservedFormula>
C10 N5 O13 P3

> <Name>
ADENOSINE-5'-TRIPHOSPHATE

> <SystematicName>
[[(2R,3S,4R,5R)-5-(6-aminopurin-9-yl)-3,4-dihydroxy-oxolan-2-yl]methoxy-hydroxy-phosphoryl] phosphono hydrogen phosphate

> <Synonyms>


> <Type>
NON-POLYMER

> <Formula>
C10 H16 N5 O13 P3

> <MolecularWeight>
507.181

> <ModifiedDate>
2008-10-14

> <Parent>


> <OneLetterCode>


> <SubcomponentList>


> <AmbiguousFlag>
N

> <InChI>
InChI=1/C10H16N5O13P3/c11-8-5-9(13-2-12-8)15(3-14-5)10-7(17)6(16)4(26-10)1-25-30(21,22)28-31(23,24)27-29(18,19)20/h2-4,6-7,10,16-17H,1H2,(H,21,22)(H,23,24)(H2,11,12,13)(H2,18,19,20)/t4-,6-,7-,10-/m1/s1/f/h18-19,21,23H,11H2

> <InChIKey>
ZKHQWZAMYRWXGA-FJYXAIENDD

> <SMILES>
c1nc(c2c(n1)n(cn2)[C@H]3[C@@H]([C@@H]([C@H](O3)CO[P@@](=O)(O)O[P@](=O)(O)OP(=O)(O)O)O)O)N

$$$$
39 changes: 35 additions & 4 deletions src/test/org/openscience/cdk/io/Mol2WriterTest.java
Expand Up @@ -24,22 +24,27 @@
*/
package org.openscience.cdk.io;

import java.io.IOException;
import java.io.StringWriter;

import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openscience.cdk.AtomContainerSet;
import org.openscience.cdk.ChemFile;
import org.openscience.cdk.ChemModel;
import org.openscience.cdk.MoleculeSet;
import org.openscience.cdk.DefaultChemObjectBuilder;
import org.openscience.cdk.MoleculeSet;
import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector;
import org.openscience.cdk.exception.CDKException;
import org.openscience.cdk.interfaces.IAtomContainer;
import org.openscience.cdk.interfaces.IChemFile;
import org.openscience.cdk.interfaces.IChemObjectBuilder;
import org.openscience.cdk.smiles.SmilesParser;
import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
import org.openscience.cdk.tools.manipulator.ChemFileManipulator;

import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.util.List;

/**
* TestCase for the writer MOL2 writer.
Expand Down Expand Up @@ -125,4 +130,30 @@ public void testWriterForAmide() throws Exception {
}


/**
* This test just ensures that Mol2Writer does not throw an NPE.
*
* It does not test whether the output is correct or not.
* @throws Exception
* @cdk.bug 3315503
*/
@Test
public void testMissingAtomType() throws Exception {
String filename = "data/mdl/ligand-1a0i.sdf";
InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename);
MDLV2000Reader reader = new MDLV2000Reader(ins);
IChemFile fileContents = (IChemFile) reader.read(new ChemFile());
List<IAtomContainer> molecules = ChemFileManipulator.getAllAtomContainers(fileContents);
IAtomContainer mol = molecules.get(0);
CDKHueckelAromaticityDetector.detectAromaticity(mol);
AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(mol);

StringWriter writer = new StringWriter();
Mol2Writer molwriter = new Mol2Writer(writer);
molwriter.write(mol);
molwriter.close();

String mol2file = writer.getBuffer().toString();
Assert.assertTrue(mol2file.indexOf("24 R24 -1.209 -18.043 49.44 X") > 0);
}
}

0 comments on commit aa35eae

Please sign in to comment.