1 /*
2  * Copyright (c) 2013. John May <jwmay@users.sf.net>
3  *
4  * Contact: cdk-devel@lists.sourceforge.net
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public License
8  * as published by the Free Software Foundation; either version 2.1
9  * of the License, or (at your option) any later version.
10  * All we ask is that proper credit is given for our work, which includes
11  * - but is not limited to - adding the above copyright notice to the beginning
12  * of your source code files, and to any copyright notice that you may distribute
13  * with programs based on this work.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 U
23  */
24 package org.openscience.cdk.templates;
25 
26 import javax.vecmath.Point2d;
27 
28 import org.openscience.cdk.Atom;
29 import org.openscience.cdk.AtomContainer;
30 import org.openscience.cdk.DefaultChemObjectBuilder;
31 import org.openscience.cdk.config.Isotopes;
32 import org.openscience.cdk.interfaces.IAtom;
33 import org.openscience.cdk.interfaces.IAtomContainer;
34 import org.openscience.cdk.interfaces.IBond;
35 import org.openscience.cdk.interfaces.IChemObjectBuilder;
36 import org.openscience.cdk.tools.ILoggingTool;
37 import org.openscience.cdk.tools.LoggingToolFactory;
38 
39 /**
40  * This class contains methods for generating simple organic molecules and is
41  * copy of {@link MoleculeFactory} for use in tests.
42  *
43  * @cdk.module test-data
44  */
45 public class TestMoleculeFactory {
46 
47     private static ILoggingTool logger = LoggingToolFactory.createLoggingTool(TestMoleculeFactory.class);
48 
newAtomContainer()49     private static IAtomContainer newAtomContainer() {
50         return DefaultChemObjectBuilder.getInstance().newAtomContainer();
51     }
52 
makeAlphaPinene()53     public static IAtomContainer makeAlphaPinene() {
54         IAtomContainer mol = newAtomContainer();
55         mol.addAtom(new Atom("C")); // 1
56         mol.addAtom(new Atom("C")); // 2
57         mol.addAtom(new Atom("C")); // 3
58         mol.addAtom(new Atom("C")); // 4
59         mol.addAtom(new Atom("C")); // 5
60         mol.addAtom(new Atom("C")); // 6
61         mol.addAtom(new Atom("C")); // 7
62         mol.addAtom(new Atom("C")); // 8
63         mol.addAtom(new Atom("C")); // 9
64         mol.addAtom(new Atom("C")); // 10
65 
66         mol.addBond(0, 1, IBond.Order.DOUBLE); // 1
67         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
68         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
69         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
70         mol.addBond(4, 5, IBond.Order.SINGLE); // 5
71         mol.addBond(5, 0, IBond.Order.SINGLE); // 6
72         mol.addBond(0, 6, IBond.Order.SINGLE); // 7
73         mol.addBond(3, 7, IBond.Order.SINGLE); // 8
74         mol.addBond(5, 7, IBond.Order.SINGLE); // 9
75         mol.addBond(7, 8, IBond.Order.SINGLE); // 10
76         mol.addBond(7, 9, IBond.Order.SINGLE); // 11
77         configureAtoms(mol);
78         return mol;
79     }
80 
81     /**
82      * Generate an Alkane (chain of carbons with no hydrogens) of a given length.
83      *
84      * <p>This method was written by Stephen Tomkinson.
85      *
86      * @param chainLength The number of carbon atoms to have in the chain.
87      * @return A molecule containing a bonded chain of carbons.
88      * @cdk.created 2003-08-15
89      */
makeAlkane(int chainLength)90     public static IAtomContainer makeAlkane(int chainLength) {
91         IAtomContainer currentChain = newAtomContainer();
92 
93         //Add the initial atom
94         currentChain.addAtom(new Atom("C"));
95 
96         //Add further atoms and bonds as needed, a pair at a time.
97         for (int atomCount = 1; atomCount < chainLength; atomCount++) {
98             currentChain.addAtom(new Atom("C"));
99             currentChain.addBond(atomCount, atomCount - 1, IBond.Order.SINGLE);
100         }
101 
102         return currentChain;
103     }
104 
makeEthylCyclohexane()105     public static IAtomContainer makeEthylCyclohexane() {
106         IAtomContainer mol = newAtomContainer();
107         mol.addAtom(new Atom("C")); // 1
108         mol.addAtom(new Atom("C")); // 2
109         mol.addAtom(new Atom("C")); // 3
110         mol.addAtom(new Atom("C")); // 4
111         mol.addAtom(new Atom("C")); // 5
112         mol.addAtom(new Atom("C")); // 6
113         mol.addAtom(new Atom("C")); // 7
114         mol.addAtom(new Atom("C")); // 8
115 
116         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
117         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
118         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
119         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
120         mol.addBond(4, 5, IBond.Order.SINGLE); // 5
121         mol.addBond(5, 0, IBond.Order.SINGLE); // 6
122         mol.addBond(0, 6, IBond.Order.SINGLE); // 7
123         mol.addBond(6, 7, IBond.Order.SINGLE); // 8
124         return mol;
125     }
126 
127     /**
128      * Returns cyclohexene without explicit hydrogens.
129      *
130      * @cdk.inchi InChI=1/C6H10/c1-2-4-6-5-3-1/h1-2H,3-6H2
131      */
makeCyclohexene()132     public static IAtomContainer makeCyclohexene() {
133         IAtomContainer mol = newAtomContainer();
134         mol.addAtom(new Atom("C")); // 1
135         mol.addAtom(new Atom("C")); // 2
136         mol.addAtom(new Atom("C")); // 3
137         mol.addAtom(new Atom("C")); // 4
138         mol.addAtom(new Atom("C")); // 5
139         mol.addAtom(new Atom("C")); // 6
140 
141         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
142         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
143         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
144         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
145         mol.addBond(4, 5, IBond.Order.SINGLE); // 5
146         mol.addBond(5, 0, IBond.Order.DOUBLE); // 6
147         return mol;
148     }
149 
150     /**
151      * Returns cyclohexane without explicit hydrogens.
152      *
153      * @cdk.inchi InChI=1/C6H12/c1-2-4-6-5-3-1/h1-6H2
154      */
makeCyclohexane()155     public static IAtomContainer makeCyclohexane() {
156         IAtomContainer mol = newAtomContainer();
157         mol.addAtom(new Atom("C")); // 1
158         mol.addAtom(new Atom("C")); // 2
159         mol.addAtom(new Atom("C")); // 3
160         mol.addAtom(new Atom("C")); // 4
161         mol.addAtom(new Atom("C")); // 5
162         mol.addAtom(new Atom("C")); // 6
163 
164         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
165         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
166         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
167         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
168         mol.addBond(4, 5, IBond.Order.SINGLE); // 5
169         mol.addBond(5, 0, IBond.Order.SINGLE); // 6
170         return mol;
171     }
172 
173     /**
174      * Returns cyclopentane without explicit hydrogens.
175      *
176      * @cdk.inchi InChI=1/C5H10/c1-2-4-5-3-1/h1-5H2
177      */
makeCyclopentane()178     public static IAtomContainer makeCyclopentane() {
179         IAtomContainer mol = newAtomContainer();
180         mol.addAtom(new Atom("C")); // 1
181         mol.addAtom(new Atom("C")); // 2
182         mol.addAtom(new Atom("C")); // 3
183         mol.addAtom(new Atom("C")); // 4
184         mol.addAtom(new Atom("C")); // 5
185 
186         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
187         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
188         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
189         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
190         mol.addBond(4, 0, IBond.Order.SINGLE); // 5
191         return mol;
192     }
193 
194     /**
195      * Returns cyclobutane without explicit hydrogens.
196      *
197      * @cdk.inchi InChI=1/C4H8/c1-2-4-3-1/h1-4H2
198      */
makeCyclobutane()199     public static IAtomContainer makeCyclobutane() {
200         IAtomContainer mol = newAtomContainer();
201         mol.addAtom(new Atom("C")); // 1
202         mol.addAtom(new Atom("C")); // 2
203         mol.addAtom(new Atom("C")); // 3
204         mol.addAtom(new Atom("C")); // 4
205 
206         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
207         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
208         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
209         mol.addBond(3, 0, IBond.Order.SINGLE); // 4
210         return mol;
211     }
212 
213     /**
214      * Returns cyclobutadiene without explicit hydrogens.
215      *
216      * @cdk.inchi InChI=1/C4H4/c1-2-4-3-1/h1-4H
217      */
makeCyclobutadiene()218     public static IAtomContainer makeCyclobutadiene() {
219         IAtomContainer mol = newAtomContainer();
220         mol.addAtom(new Atom("C")); // 1
221         mol.addAtom(new Atom("C")); // 2
222         mol.addAtom(new Atom("C")); // 3
223         mol.addAtom(new Atom("C")); // 4
224 
225         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
226         mol.addBond(1, 2, IBond.Order.DOUBLE); // 2
227         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
228         mol.addBond(3, 0, IBond.Order.DOUBLE); // 4
229         return mol;
230     }
231 
makePropylCycloPropane()232     public static IAtomContainer makePropylCycloPropane() {
233         IAtomContainer mol = newAtomContainer();
234         mol.addAtom(new Atom("C")); // 0
235         mol.addAtom(new Atom("C")); // 1
236         mol.addAtom(new Atom("C")); // 2
237         mol.addAtom(new Atom("C")); // 3
238         mol.addAtom(new Atom("C")); // 4
239         mol.addAtom(new Atom("C")); // 4
240         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
241         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
242         mol.addBond(2, 0, IBond.Order.SINGLE); // 3
243         mol.addBond(2, 3, IBond.Order.SINGLE); // 4
244         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
245         mol.addBond(4, 5, IBond.Order.SINGLE); // 4
246 
247         return mol;
248     }
249 
250     /**
251      * Returns biphenyl without explicit hydrogens.
252      *
253      * @cdk.inchi InChI=1/C12H10/c1-3-7-11(8-4-1)12-9-5-2-6-10-12/h1-10H
254      */
makeBiphenyl()255     public static IAtomContainer makeBiphenyl() {
256         IAtomContainer mol = newAtomContainer();
257         mol.addAtom(new Atom("C")); // 0
258         mol.addAtom(new Atom("C")); // 1
259         mol.addAtom(new Atom("C")); // 2
260         mol.addAtom(new Atom("C")); // 3
261         mol.addAtom(new Atom("C")); // 4
262         mol.addAtom(new Atom("C")); // 5
263         mol.addAtom(new Atom("C")); // 6
264         mol.addAtom(new Atom("C")); // 7
265         mol.addAtom(new Atom("C")); // 8
266         mol.addAtom(new Atom("C")); // 9
267         mol.addAtom(new Atom("C")); // 10
268         mol.addAtom(new Atom("C")); // 11
269 
270         mol.addBond(0, 1, IBond.Order.DOUBLE); // 1
271         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
272         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
273         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
274         mol.addBond(4, 5, IBond.Order.DOUBLE); // 5
275         mol.addBond(5, 0, IBond.Order.SINGLE); // 6
276 
277         mol.addBond(0, 6, IBond.Order.SINGLE); // 7
278         mol.addBond(6, 7, IBond.Order.SINGLE); // 8
279         mol.addBond(7, 8, IBond.Order.DOUBLE); // 5
280         mol.addBond(8, 9, IBond.Order.SINGLE); // 6
281         mol.addBond(9, 10, IBond.Order.DOUBLE); // 7
282         mol.addBond(10, 11, IBond.Order.SINGLE); // 8
283         mol.addBond(11, 6, IBond.Order.DOUBLE); // 5
284         return mol;
285     }
286 
makePhenylEthylBenzene()287     public static IAtomContainer makePhenylEthylBenzene() {
288         IAtomContainer mol = newAtomContainer();
289         mol.addAtom(new Atom("C")); // 0
290         mol.addAtom(new Atom("C")); // 1
291         mol.addAtom(new Atom("C")); // 2
292         mol.addAtom(new Atom("C")); // 3
293         mol.addAtom(new Atom("C")); // 4
294         mol.addAtom(new Atom("C")); // 5
295         mol.addAtom(new Atom("C")); // 6
296         mol.addAtom(new Atom("C")); // 7
297         mol.addAtom(new Atom("C")); // 8
298         mol.addAtom(new Atom("C")); // 9
299         mol.addAtom(new Atom("C")); // 10
300         mol.addAtom(new Atom("C")); // 11
301         mol.addAtom(new Atom("C")); // 12
302         mol.addAtom(new Atom("C")); // 13
303 
304         mol.addBond(0, 1, IBond.Order.DOUBLE); // 1
305         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
306         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
307         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
308         mol.addBond(4, 5, IBond.Order.DOUBLE); // 5
309         mol.addBond(5, 0, IBond.Order.SINGLE); // 6
310 
311         mol.addBond(0, 6, IBond.Order.SINGLE); // 7
312         mol.addBond(6, 7, IBond.Order.SINGLE); // 8
313         mol.addBond(7, 8, IBond.Order.SINGLE); // 5
314         mol.addBond(8, 9, IBond.Order.SINGLE); // 6
315         mol.addBond(9, 10, IBond.Order.DOUBLE); // 7
316         mol.addBond(10, 11, IBond.Order.SINGLE); // 8
317         mol.addBond(11, 12, IBond.Order.DOUBLE); // 5
318         mol.addBond(12, 13, IBond.Order.SINGLE);
319         mol.addBond(13, 8, IBond.Order.DOUBLE); // 5
320         return mol;
321     }
322 
makePhenylAmine()323     public static IAtomContainer makePhenylAmine() {
324         IAtomContainer mol = newAtomContainer();
325         mol.addAtom(new Atom("C")); // 0
326         mol.addAtom(new Atom("C")); // 1
327         mol.addAtom(new Atom("C")); // 2
328         mol.addAtom(new Atom("C")); // 3
329         mol.addAtom(new Atom("C")); // 4
330         mol.addAtom(new Atom("C")); // 5
331         mol.addAtom(new Atom("N")); // 6
332 
333         mol.addBond(0, 1, IBond.Order.DOUBLE); // 1
334         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
335         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
336         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
337         mol.addBond(4, 5, IBond.Order.DOUBLE); // 5
338         mol.addBond(5, 0, IBond.Order.SINGLE); // 6
339 
340         mol.addBond(0, 6, IBond.Order.SINGLE); // 7
341         return mol;
342     }
343 
344     /* build a molecule from 4 condensed triangles */
make4x3CondensedRings()345     public static IAtomContainer make4x3CondensedRings() {
346         IAtomContainer mol = newAtomContainer();
347         mol.addAtom(new Atom("C")); // 1
348         mol.addAtom(new Atom("C")); // 2
349         mol.addAtom(new Atom("C")); // 3
350         mol.addAtom(new Atom("C")); // 4
351         mol.addAtom(new Atom("C")); // 5
352         mol.addAtom(new Atom("C")); // 6
353 
354         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
355         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
356         mol.addBond(2, 0, IBond.Order.SINGLE); // 3
357         mol.addBond(2, 3, IBond.Order.SINGLE); // 4
358         mol.addBond(1, 3, IBond.Order.SINGLE); // 5
359         mol.addBond(3, 4, IBond.Order.SINGLE); // 6
360         mol.addBond(4, 2, IBond.Order.SINGLE); // 7
361         mol.addBond(4, 5, IBond.Order.SINGLE); // 8
362         mol.addBond(5, 3, IBond.Order.SINGLE); // 9
363 
364         return mol;
365     }
366 
makeSpiroRings()367     public static IAtomContainer makeSpiroRings() {
368         IAtomContainer mol = newAtomContainer();
369         mol.addAtom(new Atom("C")); // 0
370         mol.addAtom(new Atom("C")); // 1
371         mol.addAtom(new Atom("C")); // 2
372         mol.addAtom(new Atom("C")); // 3
373         mol.addAtom(new Atom("C")); // 4
374         mol.addAtom(new Atom("C")); // 5
375         mol.addAtom(new Atom("C")); // 6
376         mol.addAtom(new Atom("C")); // 7
377         mol.addAtom(new Atom("C")); // 8
378         mol.addAtom(new Atom("C")); // 9
379 
380         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
381         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
382         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
383         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
384         mol.addBond(4, 5, IBond.Order.SINGLE); // 5
385         mol.addBond(5, 6, IBond.Order.SINGLE); // 6
386         mol.addBond(6, 0, IBond.Order.SINGLE); // 7
387         mol.addBond(6, 7, IBond.Order.SINGLE); // 8
388         mol.addBond(7, 8, IBond.Order.SINGLE); // 9
389         mol.addBond(8, 9, IBond.Order.SINGLE); // 10
390         mol.addBond(9, 6, IBond.Order.SINGLE); // 11
391         return mol;
392     }
393 
makeBicycloRings()394     public static IAtomContainer makeBicycloRings() {
395         IAtomContainer mol = newAtomContainer();
396         mol.addAtom(new Atom("C")); // 0
397         mol.addAtom(new Atom("C")); // 1
398         mol.addAtom(new Atom("C")); // 2
399         mol.addAtom(new Atom("C")); // 3
400         mol.addAtom(new Atom("C")); // 4
401         mol.addAtom(new Atom("C")); // 5
402         mol.addAtom(new Atom("C")); // 6
403         mol.addAtom(new Atom("C")); // 7
404 
405         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
406         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
407         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
408         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
409         mol.addBond(4, 5, IBond.Order.SINGLE); // 5
410         mol.addBond(5, 0, IBond.Order.SINGLE); // 6
411         mol.addBond(6, 0, IBond.Order.SINGLE); // 7
412         mol.addBond(6, 7, IBond.Order.SINGLE); // 8
413         mol.addBond(7, 3, IBond.Order.SINGLE); // 9
414         return mol;
415     }
416 
makeFusedRings()417     public static IAtomContainer makeFusedRings() {
418         IAtomContainer mol = newAtomContainer();
419         mol.addAtom(new Atom("C")); // 0
420         mol.addAtom(new Atom("C")); // 1
421         mol.addAtom(new Atom("C")); // 2
422         mol.addAtom(new Atom("C")); // 3
423         mol.addAtom(new Atom("C")); // 4
424         mol.addAtom(new Atom("C")); // 5
425         mol.addAtom(new Atom("C")); // 6
426         mol.addAtom(new Atom("C")); // 7
427         mol.addAtom(new Atom("C")); // 8
428         mol.addAtom(new Atom("C")); // 9
429 
430         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
431         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
432         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
433         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
434         mol.addBond(4, 5, IBond.Order.SINGLE); // 5
435         mol.addBond(5, 0, IBond.Order.SINGLE); // 6
436         mol.addBond(5, 6, IBond.Order.SINGLE); // 7
437         mol.addBond(6, 7, IBond.Order.SINGLE); // 8
438         mol.addBond(7, 4, IBond.Order.SINGLE); // 9
439         mol.addBond(8, 0, IBond.Order.SINGLE); // 10
440         mol.addBond(9, 1, IBond.Order.SINGLE); // 11
441         mol.addBond(9, 8, IBond.Order.SINGLE); // 11
442         return mol;
443     }
444 
makeMethylDecaline()445     public static IAtomContainer makeMethylDecaline() {
446         IAtomContainer mol = newAtomContainer();
447         mol.addAtom(new Atom("C")); // 0
448         mol.addAtom(new Atom("C")); // 1
449         mol.addAtom(new Atom("C")); // 2
450         mol.addAtom(new Atom("C")); // 3
451         mol.addAtom(new Atom("C")); // 4
452         mol.addAtom(new Atom("C")); // 5
453         mol.addAtom(new Atom("C")); // 6
454         mol.addAtom(new Atom("C")); // 7
455         mol.addAtom(new Atom("C")); // 8
456         mol.addAtom(new Atom("C")); // 9
457         mol.addAtom(new Atom("C")); // 10
458 
459         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
460         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
461         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
462         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
463         mol.addBond(4, 5, IBond.Order.SINGLE); // 5
464         mol.addBond(5, 0, IBond.Order.SINGLE); // 6
465         mol.addBond(5, 6, IBond.Order.SINGLE); // 7
466         mol.addBond(6, 7, IBond.Order.SINGLE); // 8RingSet
467         mol.addBond(7, 8, IBond.Order.SINGLE); // 9
468         mol.addBond(8, 9, IBond.Order.SINGLE); // 10
469         mol.addBond(9, 0, IBond.Order.SINGLE); // 11
470         mol.addBond(5, 10, IBond.Order.SINGLE); // 12
471         return mol;
472 
473     }
474 
makeEthylPropylPhenantren()475     public static IAtomContainer makeEthylPropylPhenantren() {
476         IAtomContainer mol = newAtomContainer();
477         mol.addAtom(new Atom("C")); // 0
478         mol.addAtom(new Atom("C")); // 1
479         mol.addAtom(new Atom("C")); // 2
480         mol.addAtom(new Atom("C")); // 3
481         mol.addAtom(new Atom("C")); // 4
482         mol.addAtom(new Atom("C")); // 5
483         mol.addAtom(new Atom("C")); // 6
484         mol.addAtom(new Atom("C")); // 7
485         mol.addAtom(new Atom("C")); // 8
486         mol.addAtom(new Atom("C")); // 9
487         mol.addAtom(new Atom("C")); // 10
488         mol.addAtom(new Atom("C")); // 11
489         mol.addAtom(new Atom("C")); // 12
490         mol.addAtom(new Atom("C")); // 13
491         mol.addAtom(new Atom("C")); // 14
492         mol.addAtom(new Atom("C")); // 15
493         mol.addAtom(new Atom("C")); // 16
494         mol.addAtom(new Atom("C")); // 17
495         mol.addAtom(new Atom("C")); // 18
496 
497         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
498         mol.addBond(1, 2, IBond.Order.DOUBLE); // 2
499         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
500         mol.addBond(3, 4, IBond.Order.DOUBLE); // 4
501         mol.addBond(4, 5, IBond.Order.SINGLE); // 5
502         mol.addBond(5, 6, IBond.Order.DOUBLE); // 6
503         mol.addBond(6, 7, IBond.Order.SINGLE); // 8
504         mol.addBond(7, 8, IBond.Order.DOUBLE); // 9
505         mol.addBond(8, 9, IBond.Order.SINGLE); // 10
506         mol.addBond(9, 0, IBond.Order.DOUBLE); // 11
507         mol.addBond(9, 4, IBond.Order.SINGLE); // 12
508         mol.addBond(8, 10, IBond.Order.SINGLE); // 12
509         mol.addBond(10, 11, IBond.Order.DOUBLE); // 12
510         mol.addBond(11, 12, IBond.Order.SINGLE); // 12
511         mol.addBond(12, 13, IBond.Order.DOUBLE); // 12
512         mol.addBond(13, 7, IBond.Order.SINGLE); // 12
513         mol.addBond(3, 14, IBond.Order.SINGLE); // 12
514         mol.addBond(14, 15, IBond.Order.SINGLE); // 12
515         mol.addBond(12, 16, IBond.Order.SINGLE); // 12
516         mol.addBond(16, 17, IBond.Order.SINGLE); // 12
517         mol.addBond(17, 18, IBond.Order.SINGLE); // 12
518         configureAtoms(mol);
519         return mol;
520     }
521 
makeSteran()522     public static IAtomContainer makeSteran() {
523         IAtomContainer mol = newAtomContainer();
524         mol.addAtom(new Atom("C")); // 0
525         mol.addAtom(new Atom("C")); // 1
526         mol.addAtom(new Atom("C")); // 2
527         mol.addAtom(new Atom("C")); // 3
528         mol.addAtom(new Atom("C")); // 4
529         mol.addAtom(new Atom("C")); // 5
530         mol.addAtom(new Atom("C")); // 6
531         mol.addAtom(new Atom("C")); // 7
532         mol.addAtom(new Atom("C")); // 8
533         mol.addAtom(new Atom("C")); // 9
534         mol.addAtom(new Atom("C")); // 10
535         mol.addAtom(new Atom("C")); // 11
536         mol.addAtom(new Atom("C")); // 12
537         mol.addAtom(new Atom("C")); // 13
538         mol.addAtom(new Atom("C")); // 14
539         mol.addAtom(new Atom("C")); // 15
540         mol.addAtom(new Atom("C")); // 16
541 
542         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
543         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
544         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
545         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
546         mol.addBond(4, 5, IBond.Order.SINGLE); // 5
547         mol.addBond(5, 6, IBond.Order.SINGLE); // 6
548         mol.addBond(6, 7, IBond.Order.SINGLE); // 8
549         mol.addBond(7, 8, IBond.Order.SINGLE); // 9
550         mol.addBond(8, 9, IBond.Order.SINGLE); // 10
551         mol.addBond(9, 0, IBond.Order.SINGLE); // 11
552         mol.addBond(9, 4, IBond.Order.SINGLE); // 12
553         mol.addBond(8, 10, IBond.Order.SINGLE); // 13
554         mol.addBond(10, 11, IBond.Order.SINGLE); // 14
555         mol.addBond(11, 12, IBond.Order.SINGLE); // 15
556         mol.addBond(12, 13, IBond.Order.SINGLE); // 16
557         mol.addBond(13, 7, IBond.Order.SINGLE); // 17
558         mol.addBond(13, 14, IBond.Order.SINGLE); // 18
559         mol.addBond(14, 15, IBond.Order.SINGLE); // 19
560         mol.addBond(15, 16, IBond.Order.SINGLE); // 20
561         mol.addBond(16, 12, IBond.Order.SINGLE); // 21
562 
563         configureAtoms(mol);
564         return mol;
565     }
566 
567     /**
568      * Returns azulene without explicit hydrogens.
569      *
570      * @cdk.inchi InChI=1/C10H8/c1-2-5-9-7-4-8-10(9)6-3-1/h1-8H
571      */
makeAzulene()572     public static IAtomContainer makeAzulene() {
573         IAtomContainer mol = newAtomContainer();
574         mol.addAtom(new Atom("C")); // 0
575         mol.addAtom(new Atom("C")); // 1
576         mol.addAtom(new Atom("C")); // 2
577         mol.addAtom(new Atom("C")); // 3
578         mol.addAtom(new Atom("C")); // 4
579         mol.addAtom(new Atom("C")); // 5
580         mol.addAtom(new Atom("C")); // 6
581         mol.addAtom(new Atom("C")); // 7
582         mol.addAtom(new Atom("C")); // 8
583         mol.addAtom(new Atom("C")); // 9
584 
585         mol.addBond(0, 1, IBond.Order.DOUBLE); // 1
586         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
587         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
588         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
589         mol.addBond(4, 5, IBond.Order.DOUBLE); // 5
590         mol.addBond(5, 6, IBond.Order.SINGLE); // 6
591         mol.addBond(6, 7, IBond.Order.DOUBLE); // 8
592         mol.addBond(7, 8, IBond.Order.SINGLE); // 9
593         mol.addBond(8, 9, IBond.Order.DOUBLE); // 10
594         mol.addBond(9, 5, IBond.Order.SINGLE); // 11
595         mol.addBond(9, 0, IBond.Order.SINGLE); // 12
596 
597         return mol;
598     }
599 
600     /**
601      * Returns indole without explicit hydrogens.
602      *
603      * @cdk.inchi InChI=1/C8H7N/c1-2-4-8-7(3-1)5-6-9-8/h1-6,9H
604      */
makeIndole()605     public static IAtomContainer makeIndole() {
606         IAtomContainer mol = DefaultChemObjectBuilder.getInstance().newAtomContainer();
607         mol.addAtom(new Atom("C")); // 0
608         mol.addAtom(new Atom("C")); // 1
609         mol.addAtom(new Atom("C")); // 2
610         mol.addAtom(new Atom("C")); // 3
611         mol.addAtom(new Atom("C")); // 4
612         mol.addAtom(new Atom("C")); // 5
613         mol.addAtom(new Atom("C")); // 6
614         mol.addAtom(new Atom("C")); // 7
615         mol.addAtom(new Atom("N")); // 8
616 
617         mol.addBond(0, 1, IBond.Order.DOUBLE); // 1
618         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
619         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
620         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
621         mol.addBond(4, 5, IBond.Order.DOUBLE); // 5
622         mol.addBond(5, 6, IBond.Order.SINGLE); // 6
623         mol.addBond(6, 7, IBond.Order.DOUBLE); // 8
624         mol.addBond(7, 8, IBond.Order.SINGLE); // 9
625         mol.addBond(0, 5, IBond.Order.SINGLE); // 11
626         mol.addBond(8, 0, IBond.Order.SINGLE); // 12
627 
628         return mol;
629     }
630 
631     /**
632      * Returns pyrrole without explicit hydrogens.
633      *
634      * @cdk.inchi InChI=1/C4H5N/c1-2-4-5-3-1/h1-5H
635      */
makePyrrole()636     public static IAtomContainer makePyrrole() {
637         IAtomContainer mol = newAtomContainer();
638         mol.addAtom(new Atom("C")); // 0
639         mol.addAtom(new Atom("N")); // 1
640         mol.addAtom(new Atom("C")); // 2
641         mol.addAtom(new Atom("C")); // 3
642         mol.addAtom(new Atom("C")); // 4
643 
644         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
645         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
646         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
647         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
648         mol.addBond(4, 0, IBond.Order.DOUBLE); // 5
649 
650         return mol;
651     }
652 
653     /**
654      * Returns pyrrole anion without explicit hydrogens.
655      *
656      * @cdk.inchi InChI=1/C4H4N/c1-2-4-5-3-1/h1-4H/q-1
657      */
makePyrroleAnion()658     public static IAtomContainer makePyrroleAnion() {
659         IAtomContainer mol = newAtomContainer();
660         IAtom nitrogenAnion = new Atom("N");
661         nitrogenAnion.setFormalCharge(-1);
662         mol.addAtom(new Atom("C")); // 0
663         mol.addAtom(nitrogenAnion); // 1
664         mol.addAtom(new Atom("C")); // 2
665         mol.addAtom(new Atom("C")); // 3
666         mol.addAtom(new Atom("C")); // 4
667 
668         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
669         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
670         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
671         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
672         mol.addBond(4, 0, IBond.Order.DOUBLE); // 5
673 
674         return mol;
675     }
676 
677     /**
678      * Returns imidazole without explicit hydrogens.
679      *
680      * @cdk.inchi InChI=1/C3H4N2/c1-2-5-3-4-1/h1-3H,(H,4,5)/f/h4H
681      */
makeImidazole()682     public static IAtomContainer makeImidazole() {
683         IAtomContainer mol = newAtomContainer();
684         mol.addAtom(new Atom("C")); // 0
685         mol.addAtom(new Atom("N")); // 1
686         mol.addAtom(new Atom("C")); // 2
687         mol.addAtom(new Atom("N")); // 3
688         mol.addAtom(new Atom("C")); // 4
689 
690         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
691         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
692         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
693         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
694         mol.addBond(4, 0, IBond.Order.DOUBLE); // 5
695 
696         return mol;
697     }
698 
699     /**
700      * Returns pyrazole without explicit hydrogens.
701      *
702      * @cdk.inchi InChI=1/C3H4N2/c1-2-4-5-3-1/h1-3H,(H,4,5)/f/h4H
703      */
makePyrazole()704     public static IAtomContainer makePyrazole() {
705         IAtomContainer mol = newAtomContainer();
706         mol.addAtom(new Atom("C")); // 0
707         mol.addAtom(new Atom("N")); // 1
708         mol.addAtom(new Atom("N")); // 2
709         mol.addAtom(new Atom("C")); // 3
710         mol.addAtom(new Atom("C")); // 4
711 
712         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
713         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
714         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
715         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
716         mol.addBond(4, 0, IBond.Order.DOUBLE); // 5
717 
718         return mol;
719     }
720 
721     /**
722      * Returns 1,2,4-triazole without explicit hydrogens.
723      *
724      * @cdk.inchi InChI=1/C3H4N2/c1-2-4-5-3-1/h1-3H,(H,4,5)/f/h4H
725      */
make124Triazole()726     public static IAtomContainer make124Triazole() {
727         IAtomContainer mol = newAtomContainer();
728         mol.addAtom(new Atom("C")); // 0
729         mol.addAtom(new Atom("N")); // 1
730         mol.addAtom(new Atom("N")); // 2
731         mol.addAtom(new Atom("C")); // 3
732         mol.addAtom(new Atom("N")); // 4
733 
734         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
735         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
736         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
737         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
738         mol.addBond(4, 0, IBond.Order.DOUBLE); // 5
739 
740         return mol;
741     }
742 
743     /**
744      * Returns 1,2,3-triazole without explicit hydrogens.
745      *
746      * @cdk.inchi InChI=1/C2H3N3/c1-2-4-5-3-1/h1-2H,(H,3,4,5)/f/h5H
747      */
make123Triazole()748     public static IAtomContainer make123Triazole() {
749         IAtomContainer mol = newAtomContainer();
750         mol.addAtom(new Atom("C")); // 0
751         mol.addAtom(new Atom("N")); // 1
752         mol.addAtom(new Atom("N")); // 2
753         mol.addAtom(new Atom("N")); // 3
754         mol.addAtom(new Atom("C")); // 4
755 
756         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
757         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
758         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
759         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
760         mol.addBond(4, 0, IBond.Order.DOUBLE); // 5
761 
762         return mol;
763     }
764 
765     /**
766      * Returns tetrazole without explicit hydrogens.
767      *
768      * @cdk.inchi InChI=1/CH2N4/c1-2-4-5-3-1/h1H,(H,2,3,4,5)/f/h4H
769      */
makeTetrazole()770     public static IAtomContainer makeTetrazole() {
771         IAtomContainer mol = newAtomContainer();
772         mol.addAtom(new Atom("N")); // 0
773         mol.addAtom(new Atom("N")); // 1
774         mol.addAtom(new Atom("N")); // 2
775         mol.addAtom(new Atom("N")); // 3
776         mol.addAtom(new Atom("C")); // 4
777 
778         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
779         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
780         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
781         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
782         mol.addBond(4, 0, IBond.Order.DOUBLE); // 5
783 
784         return mol;
785     }
786 
787     /**
788      * Returns Oxazole without explicit hydrogens.
789      *
790      * @cdk.inchi InChI=1/C3H3NO/c1-2-5-3-4-1/h1-3H
791      */
makeOxazole()792     public static IAtomContainer makeOxazole() {
793         IAtomContainer mol = newAtomContainer();
794         mol.addAtom(new Atom("C")); // 0
795         mol.addAtom(new Atom("O")); // 1
796         mol.addAtom(new Atom("C")); // 2
797         mol.addAtom(new Atom("N")); // 3
798         mol.addAtom(new Atom("C")); // 4
799 
800         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
801         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
802         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
803         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
804         mol.addBond(4, 0, IBond.Order.DOUBLE); // 5
805 
806         return mol;
807     }
808 
809     /**
810      * Returns Isoxazole without explicit hydrogens.
811      *
812      * @cdk.inchi InChI=1/C3H3NO/c1-2-4-5-3-1/h1-3H
813      */
makeIsoxazole()814     public static IAtomContainer makeIsoxazole() {
815         IAtomContainer mol = newAtomContainer();
816         mol.addAtom(new Atom("C")); // 0
817         mol.addAtom(new Atom("O")); // 1
818         mol.addAtom(new Atom("N")); // 2
819         mol.addAtom(new Atom("C")); // 3
820         mol.addAtom(new Atom("C")); // 4
821 
822         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
823         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
824         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
825         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
826         mol.addBond(4, 0, IBond.Order.DOUBLE); // 5
827 
828         return mol;
829     }
830 
831     /**
832      * Returns isothiazole without explicit hydrogens.
833      *
834      * @cdk.inchi InChI=1/C3H3NS/c1-2-4-5-3-1/h1-3H
835      */
makeIsothiazole()836     public static IAtomContainer makeIsothiazole() {
837         IAtomContainer mol = newAtomContainer();
838         mol.addAtom(new Atom("C")); // 0
839         mol.addAtom(new Atom("S")); // 1
840         mol.addAtom(new Atom("N")); // 2
841         mol.addAtom(new Atom("C")); // 3
842         mol.addAtom(new Atom("C")); // 4
843 
844         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
845         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
846         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
847         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
848         mol.addBond(4, 0, IBond.Order.DOUBLE); // 5
849 
850         return mol;
851     }
852 
853     /**
854      * Returns thiadiazole without explicit hydrogens.
855      *
856      * @cdk.inchi InChI=1/C2H2N2S/c1-3-4-2-5-1/h1-2H
857      */
makeThiadiazole()858     public static IAtomContainer makeThiadiazole() {
859         IAtomContainer mol = newAtomContainer();
860         mol.addAtom(new Atom("C")); // 0
861         mol.addAtom(new Atom("S")); // 1
862         mol.addAtom(new Atom("C")); // 2
863         mol.addAtom(new Atom("N")); // 3
864         mol.addAtom(new Atom("N")); // 4
865 
866         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
867         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
868         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
869         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
870         mol.addBond(4, 0, IBond.Order.DOUBLE); // 5
871 
872         return mol;
873     }
874 
875     /**
876      * Returns oxadiazole without explicit hydrogens.
877      *
878      * @cdk.inchi InChI=1/C2H2N2O/c1-3-4-2-5-1/h1-2H
879      */
makeOxadiazole()880     public static IAtomContainer makeOxadiazole() {
881         IAtomContainer mol = newAtomContainer();
882         mol.addAtom(new Atom("C")); // 0
883         mol.addAtom(new Atom("O")); // 1
884         mol.addAtom(new Atom("C")); // 2
885         mol.addAtom(new Atom("N")); // 3
886         mol.addAtom(new Atom("N")); // 4
887 
888         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
889         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
890         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
891         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
892         mol.addBond(4, 0, IBond.Order.DOUBLE); // 5
893 
894         return mol;
895     }
896 
897     /**
898      * Returns pyridine without explicit hydrogens.
899      *
900      * @cdk.inchi InChI=1/C3H3NO/c1-2-4-5-3-1/h1-3H
901      */
makePyridine()902     public static IAtomContainer makePyridine() {
903         IAtomContainer mol = newAtomContainer();
904         mol.addAtom(new Atom("C")); // 0
905         mol.addAtom(new Atom("N")); // 1
906         mol.addAtom(new Atom("C")); // 2
907         mol.addAtom(new Atom("C")); // 3
908         mol.addAtom(new Atom("C")); // 4
909         mol.addAtom(new Atom("C")); // 5
910 
911         mol.addBond(0, 1, IBond.Order.DOUBLE); // 1
912         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
913         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
914         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
915         mol.addBond(4, 5, IBond.Order.DOUBLE); // 5
916         mol.addBond(5, 0, IBond.Order.SINGLE); // 6
917 
918         return mol;
919     }
920 
921     /**
922      * Returns pyridine oxide without explicit hydrogens.
923      *
924      * @cdk.inchi InChI=1/C5H5NO/c7-6-4-2-1-3-5-6/h1-5H
925      */
makePyridineOxide()926     public static IAtomContainer makePyridineOxide() {
927         IAtomContainer mol = newAtomContainer();
928         mol.addAtom(new Atom("C")); // 0
929         mol.addAtom(new Atom("N")); // 1
930         mol.getAtom(1).setFormalCharge(1);
931         mol.addAtom(new Atom("C")); // 2
932         mol.addAtom(new Atom("C")); // 3
933         mol.addAtom(new Atom("C")); // 4
934         mol.addAtom(new Atom("C")); // 5
935         mol.addAtom(new Atom("O")); // 6
936         mol.getAtom(6).setFormalCharge(-1);
937 
938         mol.addBond(0, 1, IBond.Order.DOUBLE); // 1
939         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
940         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
941         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
942         mol.addBond(4, 5, IBond.Order.DOUBLE); // 5
943         mol.addBond(5, 0, IBond.Order.SINGLE); // 6
944         mol.addBond(1, 6, IBond.Order.SINGLE); // 7
945 
946         return mol;
947     }
948 
949     /**
950      * Returns pyrimidine without explicit hydrogens.
951      *
952      * @cdk.inchi InChI=1/C4H4N2/c1-2-5-4-6-3-1/h1-4H
953      */
makePyrimidine()954     public static IAtomContainer makePyrimidine() {
955         IAtomContainer mol = newAtomContainer();
956         mol.addAtom(new Atom("C")); // 0
957         mol.addAtom(new Atom("N")); // 1
958         mol.addAtom(new Atom("C")); // 2
959         mol.addAtom(new Atom("N")); // 3
960         mol.addAtom(new Atom("C")); // 4
961         mol.addAtom(new Atom("C")); // 5
962 
963         mol.addBond(0, 1, IBond.Order.DOUBLE); // 1
964         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
965         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
966         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
967         mol.addBond(4, 5, IBond.Order.DOUBLE); // 5
968         mol.addBond(5, 0, IBond.Order.SINGLE); // 6
969 
970         return mol;
971     }
972 
973     /**
974      * Returns pyridazine without explicit hydrogens.
975      *
976      * @cdk.inchi InChI=1/C4H4N2/c1-2-4-6-5-3-1/h1-4H
977      */
makePyridazine()978     public static IAtomContainer makePyridazine() {
979         IAtomContainer mol = newAtomContainer();
980         mol.addAtom(new Atom("C")); // 0
981         mol.addAtom(new Atom("N")); // 1
982         mol.addAtom(new Atom("N")); // 2
983         mol.addAtom(new Atom("C")); // 3
984         mol.addAtom(new Atom("C")); // 4
985         mol.addAtom(new Atom("C")); // 5
986 
987         mol.addBond(0, 1, IBond.Order.DOUBLE); // 1
988         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
989         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
990         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
991         mol.addBond(4, 5, IBond.Order.DOUBLE); // 5
992         mol.addBond(5, 0, IBond.Order.SINGLE); // 6
993 
994         return mol;
995     }
996 
997     /**
998      * Returns triazine without explicit hydrogens.
999      *
1000      * @cdk.inchi InChI=1/C4H4N2/c1-2-4-6-5-3-1/h1-4H
1001      */
makeTriazine()1002     public static IAtomContainer makeTriazine() {
1003         IAtomContainer mol = newAtomContainer();
1004         mol.addAtom(new Atom("C")); // 0
1005         mol.addAtom(new Atom("N")); // 1
1006         mol.addAtom(new Atom("C")); // 2
1007         mol.addAtom(new Atom("N")); // 3
1008         mol.addAtom(new Atom("C")); // 4
1009         mol.addAtom(new Atom("N")); // 5
1010 
1011         mol.addBond(0, 1, IBond.Order.DOUBLE); // 1
1012         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
1013         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
1014         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
1015         mol.addBond(4, 5, IBond.Order.DOUBLE); // 5
1016         mol.addBond(5, 0, IBond.Order.SINGLE); // 6
1017 
1018         return mol;
1019     }
1020 
1021     /**
1022      * Returns thiazole without explicit hydrogens.
1023      *
1024      * @cdk.inchi InChI=1/C3H3NS/c1-2-5-3-4-1/h1-3H
1025      */
makeThiazole()1026     public static IAtomContainer makeThiazole() {
1027         IAtomContainer mol = newAtomContainer();
1028         mol.addAtom(new Atom("C")); // 0
1029         mol.addAtom(new Atom("N")); // 1
1030         mol.addAtom(new Atom("C")); // 2
1031         mol.addAtom(new Atom("S")); // 3
1032         mol.addAtom(new Atom("C")); // 4
1033 
1034         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
1035         mol.addBond(1, 2, IBond.Order.DOUBLE); // 2
1036         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
1037         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
1038         mol.addBond(4, 0, IBond.Order.DOUBLE); // 5
1039 
1040         return mol;
1041     }
1042 
makeSingleRing()1043     public static IAtomContainer makeSingleRing() {
1044         IAtomContainer mol = newAtomContainer();
1045         mol.addAtom(new Atom("C")); // 0
1046         mol.addAtom(new Atom("C")); // 1
1047         mol.addAtom(new Atom("C")); // 2
1048         mol.addAtom(new Atom("C")); // 3
1049         mol.addAtom(new Atom("C")); // 4
1050         mol.addAtom(new Atom("C")); // 5
1051         //		mol.addAtom(new Atom("C")); // 6
1052         //		mol.addAtom(new Atom("C")); // 7
1053         //		mol.addAtom(new Atom("C")); // 8
1054         //		mol.addAtom(new Atom("C")); // 9
1055 
1056         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
1057         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
1058         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
1059         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
1060         mol.addBond(4, 5, IBond.Order.SINGLE); // 5
1061         mol.addBond(5, 0, IBond.Order.SINGLE); // 6
1062         //		mol.addBond(5, 6, IBond.Order.SINGLE); // 7
1063         //		mol.addBond(6, 7, IBond.Order.SINGLE); // 8
1064         //		mol.addBond(7, 4, IBond.Order.SINGLE); // 9
1065         //		mol.addBond(8, 0, IBond.Order.SINGLE); // 10
1066         //		mol.addBond(9, 1, IBond.Order.SINGLE); // 11
1067 
1068         return mol;
1069     }
1070 
makeDiamantane()1071     public static IAtomContainer makeDiamantane() {
1072         IAtomContainer mol = newAtomContainer();
1073         mol.addAtom(new Atom("C")); // 0
1074         mol.addAtom(new Atom("C")); // 1
1075         mol.addAtom(new Atom("C")); // 2
1076         mol.addAtom(new Atom("C")); // 3
1077         mol.addAtom(new Atom("C")); // 4
1078         mol.addAtom(new Atom("C")); // 5
1079         mol.addAtom(new Atom("C")); // 6
1080         mol.addAtom(new Atom("C")); // 7
1081         mol.addAtom(new Atom("C")); // 8
1082         mol.addAtom(new Atom("C")); // 9
1083         mol.addAtom(new Atom("C")); // 10
1084         mol.addAtom(new Atom("C")); // 11
1085         mol.addAtom(new Atom("C")); // 12
1086         mol.addAtom(new Atom("C")); // 13
1087 
1088         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
1089         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
1090         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
1091         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
1092         mol.addBond(4, 5, IBond.Order.SINGLE); // 5
1093         mol.addBond(5, 0, IBond.Order.SINGLE); // 6
1094         mol.addBond(5, 6, IBond.Order.SINGLE); // 7
1095         mol.addBond(6, 9, IBond.Order.SINGLE); // 8
1096         mol.addBond(1, 7, IBond.Order.SINGLE); // 9
1097         mol.addBond(7, 9, IBond.Order.SINGLE); // 10
1098         mol.addBond(3, 8, IBond.Order.SINGLE); // 11
1099         mol.addBond(8, 9, IBond.Order.SINGLE); // 12
1100         mol.addBond(0, 10, IBond.Order.SINGLE); // 13
1101         mol.addBond(10, 13, IBond.Order.SINGLE); // 14
1102         mol.addBond(2, 11, IBond.Order.SINGLE); // 15
1103         mol.addBond(11, 13, IBond.Order.SINGLE); // 16
1104         mol.addBond(4, 12, IBond.Order.SINGLE); // 17
1105         mol.addBond(12, 13, IBond.Order.SINGLE); // 18
1106 
1107         return mol;
1108     }
1109 
makeBranchedAliphatic()1110     public static IAtomContainer makeBranchedAliphatic() {
1111         IAtomContainer mol = newAtomContainer();
1112         mol.addAtom(new Atom("C")); // 0
1113         mol.addAtom(new Atom("C")); // 1
1114         mol.addAtom(new Atom("C")); // 2
1115         mol.addAtom(new Atom("C")); // 3
1116         mol.addAtom(new Atom("C")); // 4
1117         mol.addAtom(new Atom("C")); // 5
1118         mol.addAtom(new Atom("C")); // 6
1119         mol.addAtom(new Atom("C")); // 7
1120         mol.addAtom(new Atom("C")); // 8
1121         mol.addAtom(new Atom("C")); // 9
1122         mol.addAtom(new Atom("C")); // 10
1123         mol.addAtom(new Atom("C")); // 11
1124         mol.addAtom(new Atom("C")); // 12
1125         mol.addAtom(new Atom("C")); // 13
1126         mol.addAtom(new Atom("C")); // 14
1127         mol.addAtom(new Atom("C")); // 15
1128         mol.addAtom(new Atom("C")); // 16
1129         mol.addAtom(new Atom("C")); // 17
1130         mol.addAtom(new Atom("C")); // 18
1131 
1132         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
1133         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
1134         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
1135         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
1136         mol.addBond(4, 5, IBond.Order.SINGLE); // 5
1137         mol.addBond(2, 6, IBond.Order.SINGLE); // 6
1138         mol.addBond(6, 7, IBond.Order.SINGLE); // 7
1139         mol.addBond(7, 8, IBond.Order.SINGLE); // 8
1140         mol.addBond(6, 9, IBond.Order.SINGLE); // 9
1141         mol.addBond(6, 10, IBond.Order.SINGLE); // 10
1142         mol.addBond(10, 11, IBond.Order.SINGLE); // 11
1143         mol.addBond(8, 12, IBond.Order.TRIPLE); // 12
1144         mol.addBond(12, 13, IBond.Order.SINGLE); // 13
1145         mol.addBond(11, 14, IBond.Order.SINGLE); // 14
1146         mol.addBond(9, 15, IBond.Order.SINGLE);
1147         mol.addBond(15, 16, IBond.Order.DOUBLE);
1148         mol.addBond(16, 17, IBond.Order.DOUBLE);
1149         mol.addBond(17, 18, IBond.Order.SINGLE);
1150 
1151         return mol;
1152     }
1153 
makeBenzene()1154     public static IAtomContainer makeBenzene() {
1155         IAtomContainer mol = DefaultChemObjectBuilder.getInstance().newAtomContainer();
1156         mol.addAtom(new Atom("C")); // 0
1157         mol.addAtom(new Atom("C")); // 1
1158         mol.addAtom(new Atom("C")); // 2
1159         mol.addAtom(new Atom("C")); // 3
1160         mol.addAtom(new Atom("C")); // 4
1161         mol.addAtom(new Atom("C")); // 5
1162 
1163         mol.addBond(0, 1, IBond.Order.SINGLE); // 1
1164         mol.addBond(1, 2, IBond.Order.DOUBLE); // 2
1165         mol.addBond(2, 3, IBond.Order.SINGLE); // 3
1166         mol.addBond(3, 4, IBond.Order.DOUBLE); // 4
1167         mol.addBond(4, 5, IBond.Order.SINGLE); // 5
1168         mol.addBond(5, 0, IBond.Order.DOUBLE); // 6
1169         return mol;
1170     }
1171 
makeQuinone()1172     public static IAtomContainer makeQuinone() {
1173         IAtomContainer mol = newAtomContainer();
1174         mol.addAtom(new Atom("O")); // 0
1175         mol.addAtom(new Atom("C")); // 1
1176         mol.addAtom(new Atom("C")); // 2
1177         mol.addAtom(new Atom("C")); // 3
1178         mol.addAtom(new Atom("C")); // 4
1179         mol.addAtom(new Atom("C")); // 5
1180         mol.addAtom(new Atom("C")); // 6
1181         mol.addAtom(new Atom("O")); // 7
1182 
1183         mol.addBond(0, 1, IBond.Order.DOUBLE); // 1
1184         mol.addBond(1, 2, IBond.Order.SINGLE); // 2
1185         mol.addBond(2, 3, IBond.Order.DOUBLE); // 3
1186         mol.addBond(3, 4, IBond.Order.SINGLE); // 4
1187         mol.addBond(4, 5, IBond.Order.SINGLE); // 5
1188         mol.addBond(5, 6, IBond.Order.DOUBLE); // 6
1189         mol.addBond(6, 1, IBond.Order.SINGLE); // 7
1190         mol.addBond(4, 7, IBond.Order.DOUBLE); // 8
1191         return mol;
1192     }
1193 
makePiperidine()1194     public static IAtomContainer makePiperidine() {
1195         IAtomContainer mol = newAtomContainer();
1196         mol.addAtom(new Atom("N"));
1197         mol.addAtom(new Atom("C"));
1198         mol.addAtom(new Atom("C"));
1199         mol.addAtom(new Atom("C"));
1200         mol.addAtom(new Atom("C"));
1201         mol.addAtom(new Atom("C"));
1202         mol.addAtom(new Atom("H"));
1203 
1204         mol.addBond(0, 1, IBond.Order.SINGLE);
1205         mol.addBond(1, 2, IBond.Order.SINGLE);
1206         mol.addBond(2, 3, IBond.Order.SINGLE);
1207         mol.addBond(3, 4, IBond.Order.SINGLE);
1208         mol.addBond(4, 5, IBond.Order.SINGLE);
1209         mol.addBond(5, 0, IBond.Order.SINGLE);
1210 
1211         mol.addBond(0, 6, IBond.Order.SINGLE);
1212 
1213         return mol;
1214 
1215     }
1216 
makeTetrahydropyran()1217     public static IAtomContainer makeTetrahydropyran() {
1218         IAtomContainer mol = newAtomContainer();
1219         mol.addAtom(new Atom("O"));
1220         mol.addAtom(new Atom("C"));
1221         mol.addAtom(new Atom("C"));
1222         mol.addAtom(new Atom("C"));
1223         mol.addAtom(new Atom("C"));
1224         mol.addAtom(new Atom("C"));
1225 
1226         mol.addBond(0, 1, IBond.Order.SINGLE);
1227         mol.addBond(1, 2, IBond.Order.SINGLE);
1228         mol.addBond(2, 3, IBond.Order.SINGLE);
1229         mol.addBond(3, 4, IBond.Order.SINGLE);
1230         mol.addBond(4, 5, IBond.Order.SINGLE);
1231         mol.addBond(5, 0, IBond.Order.SINGLE);
1232 
1233         return mol;
1234 
1235     }
1236 
1237     /**
1238      * @cdk.inchi InChI=1/C5H5N5/c6-4-3-5(9-1-7-3)10-2-8-4/h1-2H,(H3,6,7,8,9,10)/f/h7H,6H2
1239      */
makeAdenine()1240     public static IAtomContainer makeAdenine() {
1241         IAtomContainer mol = newAtomContainer(); // Adenine
1242         IAtom a1 = mol.getBuilder().newInstance(IAtom.class, "C");
1243         a1.setPoint2d(new Point2d(21.0223, -17.2946));
1244         mol.addAtom(a1);
1245         IAtom a2 = mol.getBuilder().newInstance(IAtom.class, "C");
1246         a2.setPoint2d(new Point2d(21.0223, -18.8093));
1247         mol.addAtom(a2);
1248         IAtom a3 = mol.getBuilder().newInstance(IAtom.class, "C");
1249         a3.setPoint2d(new Point2d(22.1861, -16.6103));
1250         mol.addAtom(a3);
1251         IAtom a4 = mol.getBuilder().newInstance(IAtom.class, "N");
1252         a4.setPoint2d(new Point2d(19.8294, -16.8677));
1253         mol.addAtom(a4);
1254         IAtom a5 = mol.getBuilder().newInstance(IAtom.class, "N");
1255         a5.setPoint2d(new Point2d(22.2212, -19.5285));
1256         mol.addAtom(a5);
1257         IAtom a6 = mol.getBuilder().newInstance(IAtom.class, "N");
1258         a6.setPoint2d(new Point2d(19.8177, -19.2187));
1259         mol.addAtom(a6);
1260         IAtom a7 = mol.getBuilder().newInstance(IAtom.class, "N");
1261         a7.setPoint2d(new Point2d(23.4669, -17.3531));
1262         mol.addAtom(a7);
1263         IAtom a8 = mol.getBuilder().newInstance(IAtom.class, "N");
1264         a8.setPoint2d(new Point2d(22.1861, -15.2769));
1265         mol.addAtom(a8);
1266         IAtom a9 = mol.getBuilder().newInstance(IAtom.class, "C");
1267         a9.setPoint2d(new Point2d(18.9871, -18.0139));
1268         mol.addAtom(a9);
1269         IAtom a10 = mol.getBuilder().newInstance(IAtom.class, "C");
1270         a10.setPoint2d(new Point2d(23.4609, -18.8267));
1271         mol.addAtom(a10);
1272         IBond b1 = mol.getBuilder().newInstance(IBond.class, a1, a2, IBond.Order.DOUBLE);
1273         mol.addBond(b1);
1274         IBond b2 = mol.getBuilder().newInstance(IBond.class, a1, a3, IBond.Order.SINGLE);
1275         mol.addBond(b2);
1276         IBond b3 = mol.getBuilder().newInstance(IBond.class, a1, a4, IBond.Order.SINGLE);
1277         mol.addBond(b3);
1278         IBond b4 = mol.getBuilder().newInstance(IBond.class, a2, a5, IBond.Order.SINGLE);
1279         mol.addBond(b4);
1280         IBond b5 = mol.getBuilder().newInstance(IBond.class, a2, a6, IBond.Order.SINGLE);
1281         mol.addBond(b5);
1282         IBond b6 = mol.getBuilder().newInstance(IBond.class, a3, a7, IBond.Order.DOUBLE);
1283         mol.addBond(b6);
1284         IBond b7 = mol.getBuilder().newInstance(IBond.class, a3, a8, IBond.Order.SINGLE);
1285         mol.addBond(b7);
1286         IBond b8 = mol.getBuilder().newInstance(IBond.class, a4, a9, IBond.Order.DOUBLE);
1287         mol.addBond(b8);
1288         IBond b9 = mol.getBuilder().newInstance(IBond.class, a5, a10, IBond.Order.DOUBLE);
1289         mol.addBond(b9);
1290         IBond b10 = mol.getBuilder().newInstance(IBond.class, a6, a9, IBond.Order.SINGLE);
1291         mol.addBond(b10);
1292         IBond b11 = mol.getBuilder().newInstance(IBond.class, a7, a10, IBond.Order.SINGLE);
1293         mol.addBond(b11);
1294 
1295         return mol;
1296     }
1297 
1298     /**
1299      * InChI=1/C10H8/c1-2-6-10-8-4-3-7-9(10)5-1/h1-8H
1300      */
makeNaphthalene()1301     public static IAtomContainer makeNaphthalene() {
1302         IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance();
1303         IAtomContainer mol = builder.newInstance(IAtomContainer.class);
1304         IAtom a1 = builder.newInstance(IAtom.class, "C");
1305         a1.setFormalCharge(0);
1306         mol.addAtom(a1);
1307         IAtom a2 = builder.newInstance(IAtom.class, "C");
1308         a2.setFormalCharge(0);
1309         mol.addAtom(a2);
1310         IAtom a3 = builder.newInstance(IAtom.class, "C");
1311         a3.setFormalCharge(0);
1312         mol.addAtom(a3);
1313         IAtom a4 = builder.newInstance(IAtom.class, "C");
1314         a4.setFormalCharge(0);
1315         mol.addAtom(a4);
1316         IAtom a5 = builder.newInstance(IAtom.class, "C");
1317         a5.setFormalCharge(0);
1318         mol.addAtom(a5);
1319         IAtom a6 = builder.newInstance(IAtom.class, "C");
1320         a6.setFormalCharge(0);
1321         mol.addAtom(a6);
1322         IAtom a7 = builder.newInstance(IAtom.class, "C");
1323         a7.setFormalCharge(0);
1324         mol.addAtom(a7);
1325         IAtom a8 = builder.newInstance(IAtom.class, "C");
1326         a8.setFormalCharge(0);
1327         mol.addAtom(a8);
1328         IAtom a9 = builder.newInstance(IAtom.class, "C");
1329         a9.setFormalCharge(0);
1330         mol.addAtom(a9);
1331         IAtom a10 = builder.newInstance(IAtom.class, "C");
1332         a10.setFormalCharge(0);
1333         mol.addAtom(a10);
1334         IBond b1 = builder.newInstance(IBond.class, a1, a2, IBond.Order.DOUBLE);
1335         mol.addBond(b1);
1336         IBond b2 = builder.newInstance(IBond.class, a2, a3, IBond.Order.SINGLE);
1337         mol.addBond(b2);
1338         IBond b3 = builder.newInstance(IBond.class, a3, a4, IBond.Order.DOUBLE);
1339         mol.addBond(b3);
1340         IBond b4 = builder.newInstance(IBond.class, a4, a5, IBond.Order.SINGLE);
1341         mol.addBond(b4);
1342         IBond b5 = builder.newInstance(IBond.class, a5, a6, IBond.Order.DOUBLE);
1343         mol.addBond(b5);
1344         IBond b6 = builder.newInstance(IBond.class, a6, a7, IBond.Order.SINGLE);
1345         mol.addBond(b6);
1346         IBond b7 = builder.newInstance(IBond.class, a7, a8, IBond.Order.DOUBLE);
1347         mol.addBond(b7);
1348         IBond b8 = builder.newInstance(IBond.class, a3, a8, IBond.Order.SINGLE);
1349         mol.addBond(b8);
1350         IBond b9 = builder.newInstance(IBond.class, a8, a9, IBond.Order.SINGLE);
1351         mol.addBond(b9);
1352         IBond b10 = builder.newInstance(IBond.class, a9, a10, IBond.Order.DOUBLE);
1353         mol.addBond(b10);
1354         IBond b11 = builder.newInstance(IBond.class, a1, a10, IBond.Order.SINGLE);
1355         mol.addBond(b11);
1356         return mol;
1357     }
1358 
1359     /**
1360      * @cdk.inchi InChI=1/C14H10/c1-2-6-12-10-14-8-4-3-7-13(14)9-11(12)5-1/h1-10H
1361      */
makeAnthracene()1362     public static IAtomContainer makeAnthracene() {
1363         IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance();
1364         IAtomContainer mol = builder.newInstance(IAtomContainer.class);
1365         IAtom a1 = builder.newInstance(IAtom.class, "C");
1366         a1.setFormalCharge(0);
1367         mol.addAtom(a1);
1368         IAtom a2 = builder.newInstance(IAtom.class, "C");
1369         a2.setFormalCharge(0);
1370         mol.addAtom(a2);
1371         IAtom a3 = builder.newInstance(IAtom.class, "C");
1372         a3.setFormalCharge(0);
1373         mol.addAtom(a3);
1374         IAtom a4 = builder.newInstance(IAtom.class, "C");
1375         a4.setFormalCharge(0);
1376         mol.addAtom(a4);
1377         IAtom a5 = builder.newInstance(IAtom.class, "C");
1378         a5.setFormalCharge(0);
1379         mol.addAtom(a5);
1380         IAtom a6 = builder.newInstance(IAtom.class, "C");
1381         a6.setFormalCharge(0);
1382         mol.addAtom(a6);
1383         IAtom a7 = builder.newInstance(IAtom.class, "C");
1384         a7.setFormalCharge(0);
1385         mol.addAtom(a7);
1386         IAtom a8 = builder.newInstance(IAtom.class, "C");
1387         a8.setFormalCharge(0);
1388         mol.addAtom(a8);
1389         IAtom a9 = builder.newInstance(IAtom.class, "C");
1390         a9.setFormalCharge(0);
1391         mol.addAtom(a9);
1392         IAtom a10 = builder.newInstance(IAtom.class, "C");
1393         a10.setFormalCharge(0);
1394         mol.addAtom(a10);
1395         IAtom a11 = builder.newInstance(IAtom.class, "C");
1396         a11.setFormalCharge(0);
1397         mol.addAtom(a11);
1398         IAtom a12 = builder.newInstance(IAtom.class, "C");
1399         a12.setFormalCharge(0);
1400         mol.addAtom(a12);
1401         IAtom a13 = builder.newInstance(IAtom.class, "C");
1402         a13.setFormalCharge(0);
1403         mol.addAtom(a13);
1404         IAtom a14 = builder.newInstance(IAtom.class, "C");
1405         a14.setFormalCharge(0);
1406         mol.addAtom(a14);
1407         IBond b1 = builder.newInstance(IBond.class, a1, a2, IBond.Order.DOUBLE);
1408         mol.addBond(b1);
1409         IBond b2 = builder.newInstance(IBond.class, a2, a3, IBond.Order.SINGLE);
1410         mol.addBond(b2);
1411         IBond b3 = builder.newInstance(IBond.class, a3, a4, IBond.Order.DOUBLE);
1412         mol.addBond(b3);
1413         IBond b4 = builder.newInstance(IBond.class, a4, a5, IBond.Order.SINGLE);
1414         mol.addBond(b4);
1415         IBond b5 = builder.newInstance(IBond.class, a5, a6, IBond.Order.DOUBLE);
1416         mol.addBond(b5);
1417         IBond b6 = builder.newInstance(IBond.class, a6, a7, IBond.Order.SINGLE);
1418         mol.addBond(b6);
1419         IBond b7 = builder.newInstance(IBond.class, a7, a8, IBond.Order.DOUBLE);
1420         mol.addBond(b7);
1421         IBond b8 = builder.newInstance(IBond.class, a8, a9, IBond.Order.SINGLE);
1422         mol.addBond(b8);
1423         IBond b9 = builder.newInstance(IBond.class, a9, a10, IBond.Order.DOUBLE);
1424         mol.addBond(b9);
1425         IBond b10 = builder.newInstance(IBond.class, a5, a10, IBond.Order.SINGLE);
1426         mol.addBond(b10);
1427         IBond b11 = builder.newInstance(IBond.class, a10, a11, IBond.Order.SINGLE);
1428         mol.addBond(b11);
1429         IBond b12 = builder.newInstance(IBond.class, a11, a12, IBond.Order.DOUBLE);
1430         mol.addBond(b12);
1431         IBond b13 = builder.newInstance(IBond.class, a3, a12, IBond.Order.SINGLE);
1432         mol.addBond(b13);
1433         IBond b14 = builder.newInstance(IBond.class, a12, a13, IBond.Order.SINGLE);
1434         mol.addBond(b14);
1435         IBond b15 = builder.newInstance(IBond.class, a13, a14, IBond.Order.DOUBLE);
1436         mol.addBond(b15);
1437         IBond b16 = builder.newInstance(IBond.class, a1, a14, IBond.Order.SINGLE);
1438         mol.addBond(b16);
1439         return mol;
1440     }
1441 
1442     /**
1443      * octacyclo[17.2.2.2¹,⁴.2⁴,⁷.2⁷,¹⁰.2¹⁰,¹³.2¹³,¹⁶.2¹⁶,¹⁹]pentatriacontane
1444      * @cdk.inchi InChI=1/C35H56/c1-2-30-6-3-29(1)4-7-31(8-5-29)13-15-33(16-14-31)21-23-35(24-22-33)27-25-34(26-28-35)19-17-32(11-9-30,12-10-30)18-20-34/h1-28H2
1445      */
makeCyclophaneLike()1446     public static IAtomContainer makeCyclophaneLike() {
1447         IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance();
1448         IAtomContainer mol = builder.newInstance(IAtomContainer.class);
1449         IAtom a1 = builder.newInstance(IAtom.class, "C");
1450         a1.setFormalCharge(0);
1451         mol.addAtom(a1);
1452         IAtom a2 = builder.newInstance(IAtom.class, "C");
1453         a2.setFormalCharge(0);
1454         mol.addAtom(a2);
1455         IAtom a3 = builder.newInstance(IAtom.class, "C");
1456         a3.setFormalCharge(0);
1457         mol.addAtom(a3);
1458         IAtom a4 = builder.newInstance(IAtom.class, "C");
1459         a4.setFormalCharge(0);
1460         mol.addAtom(a4);
1461         IAtom a5 = builder.newInstance(IAtom.class, "C");
1462         a5.setFormalCharge(0);
1463         mol.addAtom(a5);
1464         IAtom a6 = builder.newInstance(IAtom.class, "C");
1465         a6.setFormalCharge(0);
1466         mol.addAtom(a6);
1467         IAtom a7 = builder.newInstance(IAtom.class, "C");
1468         a7.setFormalCharge(0);
1469         mol.addAtom(a7);
1470         IAtom a8 = builder.newInstance(IAtom.class, "C");
1471         a8.setFormalCharge(0);
1472         mol.addAtom(a8);
1473         IAtom a9 = builder.newInstance(IAtom.class, "C");
1474         a9.setFormalCharge(0);
1475         mol.addAtom(a9);
1476         IAtom a10 = builder.newInstance(IAtom.class, "C");
1477         a10.setFormalCharge(0);
1478         mol.addAtom(a10);
1479         IAtom a11 = builder.newInstance(IAtom.class, "C");
1480         a11.setFormalCharge(0);
1481         mol.addAtom(a11);
1482         IAtom a12 = builder.newInstance(IAtom.class, "C");
1483         a12.setFormalCharge(0);
1484         mol.addAtom(a12);
1485         IAtom a13 = builder.newInstance(IAtom.class, "C");
1486         a13.setFormalCharge(0);
1487         mol.addAtom(a13);
1488         IAtom a14 = builder.newInstance(IAtom.class, "C");
1489         a14.setFormalCharge(0);
1490         mol.addAtom(a14);
1491         IAtom a15 = builder.newInstance(IAtom.class, "C");
1492         a15.setFormalCharge(0);
1493         mol.addAtom(a15);
1494         IAtom a16 = builder.newInstance(IAtom.class, "C");
1495         a16.setFormalCharge(0);
1496         mol.addAtom(a16);
1497         IAtom a17 = builder.newInstance(IAtom.class, "C");
1498         a17.setFormalCharge(0);
1499         mol.addAtom(a17);
1500         IAtom a18 = builder.newInstance(IAtom.class, "C");
1501         a18.setFormalCharge(0);
1502         mol.addAtom(a18);
1503         IAtom a19 = builder.newInstance(IAtom.class, "C");
1504         a19.setFormalCharge(0);
1505         mol.addAtom(a19);
1506         IAtom a20 = builder.newInstance(IAtom.class, "C");
1507         a20.setFormalCharge(0);
1508         mol.addAtom(a20);
1509         IAtom a21 = builder.newInstance(IAtom.class, "C");
1510         a21.setFormalCharge(0);
1511         mol.addAtom(a21);
1512         IAtom a22 = builder.newInstance(IAtom.class, "C");
1513         a22.setFormalCharge(0);
1514         mol.addAtom(a22);
1515         IAtom a23 = builder.newInstance(IAtom.class, "C");
1516         a23.setFormalCharge(0);
1517         mol.addAtom(a23);
1518         IAtom a24 = builder.newInstance(IAtom.class, "C");
1519         a24.setFormalCharge(0);
1520         mol.addAtom(a24);
1521         IAtom a25 = builder.newInstance(IAtom.class, "C");
1522         a25.setFormalCharge(0);
1523         mol.addAtom(a25);
1524         IAtom a26 = builder.newInstance(IAtom.class, "C");
1525         a26.setFormalCharge(0);
1526         mol.addAtom(a26);
1527         IAtom a27 = builder.newInstance(IAtom.class, "C");
1528         a27.setFormalCharge(0);
1529         mol.addAtom(a27);
1530         IAtom a28 = builder.newInstance(IAtom.class, "C");
1531         a28.setFormalCharge(0);
1532         mol.addAtom(a28);
1533         IAtom a29 = builder.newInstance(IAtom.class, "C");
1534         a29.setFormalCharge(0);
1535         mol.addAtom(a29);
1536         IAtom a30 = builder.newInstance(IAtom.class, "C");
1537         a30.setFormalCharge(0);
1538         mol.addAtom(a30);
1539         IAtom a31 = builder.newInstance(IAtom.class, "C");
1540         a31.setFormalCharge(0);
1541         mol.addAtom(a31);
1542         IAtom a32 = builder.newInstance(IAtom.class, "C");
1543         a32.setFormalCharge(0);
1544         mol.addAtom(a32);
1545         IAtom a33 = builder.newInstance(IAtom.class, "C");
1546         a33.setFormalCharge(0);
1547         mol.addAtom(a33);
1548         IAtom a34 = builder.newInstance(IAtom.class, "C");
1549         a34.setFormalCharge(0);
1550         mol.addAtom(a34);
1551         IAtom a35 = builder.newInstance(IAtom.class, "C");
1552         a35.setFormalCharge(0);
1553         mol.addAtom(a35);
1554         IBond b1 = builder.newInstance(IBond.class, a1, a2, IBond.Order.SINGLE);
1555         mol.addBond(b1);
1556         IBond b2 = builder.newInstance(IBond.class, a2, a3, IBond.Order.SINGLE);
1557         mol.addBond(b2);
1558         IBond b3 = builder.newInstance(IBond.class, a3, a4, IBond.Order.SINGLE);
1559         mol.addBond(b3);
1560         IBond b4 = builder.newInstance(IBond.class, a4, a5, IBond.Order.SINGLE);
1561         mol.addBond(b4);
1562         IBond b5 = builder.newInstance(IBond.class, a5, a6, IBond.Order.SINGLE);
1563         mol.addBond(b5);
1564         IBond b6 = builder.newInstance(IBond.class, a1, a6, IBond.Order.SINGLE);
1565         mol.addBond(b6);
1566         IBond b7 = builder.newInstance(IBond.class, a6, a7, IBond.Order.SINGLE);
1567         mol.addBond(b7);
1568         IBond b8 = builder.newInstance(IBond.class, a7, a8, IBond.Order.SINGLE);
1569         mol.addBond(b8);
1570         IBond b9 = builder.newInstance(IBond.class, a8, a9, IBond.Order.SINGLE);
1571         mol.addBond(b9);
1572         IBond b10 = builder.newInstance(IBond.class, a9, a10, IBond.Order.SINGLE);
1573         mol.addBond(b10);
1574         IBond b11 = builder.newInstance(IBond.class, a10, a11, IBond.Order.SINGLE);
1575         mol.addBond(b11);
1576         IBond b12 = builder.newInstance(IBond.class, a6, a11, IBond.Order.SINGLE);
1577         mol.addBond(b12);
1578         IBond b13 = builder.newInstance(IBond.class, a9, a12, IBond.Order.SINGLE);
1579         mol.addBond(b13);
1580         IBond b14 = builder.newInstance(IBond.class, a12, a13, IBond.Order.SINGLE);
1581         mol.addBond(b14);
1582         IBond b15 = builder.newInstance(IBond.class, a13, a14, IBond.Order.SINGLE);
1583         mol.addBond(b15);
1584         IBond b16 = builder.newInstance(IBond.class, a14, a15, IBond.Order.SINGLE);
1585         mol.addBond(b16);
1586         IBond b17 = builder.newInstance(IBond.class, a15, a16, IBond.Order.SINGLE);
1587         mol.addBond(b17);
1588         IBond b18 = builder.newInstance(IBond.class, a9, a16, IBond.Order.SINGLE);
1589         mol.addBond(b18);
1590         IBond b19 = builder.newInstance(IBond.class, a14, a17, IBond.Order.SINGLE);
1591         mol.addBond(b19);
1592         IBond b20 = builder.newInstance(IBond.class, a17, a18, IBond.Order.SINGLE);
1593         mol.addBond(b20);
1594         IBond b21 = builder.newInstance(IBond.class, a18, a19, IBond.Order.SINGLE);
1595         mol.addBond(b21);
1596         IBond b22 = builder.newInstance(IBond.class, a19, a20, IBond.Order.SINGLE);
1597         mol.addBond(b22);
1598         IBond b23 = builder.newInstance(IBond.class, a20, a21, IBond.Order.SINGLE);
1599         mol.addBond(b23);
1600         IBond b24 = builder.newInstance(IBond.class, a14, a21, IBond.Order.SINGLE);
1601         mol.addBond(b24);
1602         IBond b25 = builder.newInstance(IBond.class, a19, a22, IBond.Order.SINGLE);
1603         mol.addBond(b25);
1604         IBond b26 = builder.newInstance(IBond.class, a22, a23, IBond.Order.SINGLE);
1605         mol.addBond(b26);
1606         IBond b27 = builder.newInstance(IBond.class, a23, a24, IBond.Order.SINGLE);
1607         mol.addBond(b27);
1608         IBond b28 = builder.newInstance(IBond.class, a24, a25, IBond.Order.SINGLE);
1609         mol.addBond(b28);
1610         IBond b29 = builder.newInstance(IBond.class, a25, a26, IBond.Order.SINGLE);
1611         mol.addBond(b29);
1612         IBond b30 = builder.newInstance(IBond.class, a26, a27, IBond.Order.SINGLE);
1613         mol.addBond(b30);
1614         IBond b31 = builder.newInstance(IBond.class, a27, a28, IBond.Order.SINGLE);
1615         mol.addBond(b31);
1616         IBond b32 = builder.newInstance(IBond.class, a28, a29, IBond.Order.SINGLE);
1617         mol.addBond(b32);
1618         IBond b33 = builder.newInstance(IBond.class, a3, a29, IBond.Order.SINGLE);
1619         mol.addBond(b33);
1620         IBond b34 = builder.newInstance(IBond.class, a27, a30, IBond.Order.SINGLE);
1621         mol.addBond(b34);
1622         IBond b35 = builder.newInstance(IBond.class, a30, a31, IBond.Order.SINGLE);
1623         mol.addBond(b35);
1624         IBond b36 = builder.newInstance(IBond.class, a3, a31, IBond.Order.SINGLE);
1625         mol.addBond(b36);
1626         IBond b37 = builder.newInstance(IBond.class, a27, a32, IBond.Order.SINGLE);
1627         mol.addBond(b37);
1628         IBond b38 = builder.newInstance(IBond.class, a32, a33, IBond.Order.SINGLE);
1629         mol.addBond(b38);
1630         IBond b39 = builder.newInstance(IBond.class, a24, a33, IBond.Order.SINGLE);
1631         mol.addBond(b39);
1632         IBond b40 = builder.newInstance(IBond.class, a24, a34, IBond.Order.SINGLE);
1633         mol.addBond(b40);
1634         IBond b41 = builder.newInstance(IBond.class, a34, a35, IBond.Order.SINGLE);
1635         mol.addBond(b41);
1636         IBond b42 = builder.newInstance(IBond.class, a19, a35, IBond.Order.SINGLE);
1637         mol.addBond(b42);
1638         return mol;
1639     }
1640 
1641     /**
1642      * octacyclo[24.2.2.2²,⁵.2⁶,⁹.2¹⁰,¹³.2¹⁴,¹⁷.2¹⁸,²¹.2²²,²⁵]dotetracontane
1643      * @cdk.inchi InChI=1/C42H70/c1-2-30-4-3-29(1)31-5-7-33(8-6-31)35-13-15-37(16-14-35)39-21-23-41(24-22-39)42-27-25-40(26-28-42)38-19-17-36(18-20-38)34-11-9-32(30)10-12-34/h29-42H,1-28H2
1644      */
makeGappedCyclophaneLike()1645     public static IAtomContainer makeGappedCyclophaneLike() {
1646         IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance();
1647         IAtomContainer mol = builder.newInstance(IAtomContainer.class);
1648         IAtom a1 = builder.newInstance(IAtom.class, "C");
1649         a1.setFormalCharge(0);
1650         mol.addAtom(a1);
1651         IAtom a2 = builder.newInstance(IAtom.class, "C");
1652         a2.setFormalCharge(0);
1653         mol.addAtom(a2);
1654         IAtom a3 = builder.newInstance(IAtom.class, "C");
1655         a3.setFormalCharge(0);
1656         mol.addAtom(a3);
1657         IAtom a4 = builder.newInstance(IAtom.class, "C");
1658         a4.setFormalCharge(0);
1659         mol.addAtom(a4);
1660         IAtom a5 = builder.newInstance(IAtom.class, "C");
1661         a5.setFormalCharge(0);
1662         mol.addAtom(a5);
1663         IAtom a6 = builder.newInstance(IAtom.class, "C");
1664         a6.setFormalCharge(0);
1665         mol.addAtom(a6);
1666         IAtom a7 = builder.newInstance(IAtom.class, "C");
1667         a7.setFormalCharge(0);
1668         mol.addAtom(a7);
1669         IAtom a8 = builder.newInstance(IAtom.class, "C");
1670         a8.setFormalCharge(0);
1671         mol.addAtom(a8);
1672         IAtom a9 = builder.newInstance(IAtom.class, "C");
1673         a9.setFormalCharge(0);
1674         mol.addAtom(a9);
1675         IAtom a10 = builder.newInstance(IAtom.class, "C");
1676         a10.setFormalCharge(0);
1677         mol.addAtom(a10);
1678         IAtom a11 = builder.newInstance(IAtom.class, "C");
1679         a11.setFormalCharge(0);
1680         mol.addAtom(a11);
1681         IAtom a12 = builder.newInstance(IAtom.class, "C");
1682         a12.setFormalCharge(0);
1683         mol.addAtom(a12);
1684         IAtom a13 = builder.newInstance(IAtom.class, "C");
1685         a13.setFormalCharge(0);
1686         mol.addAtom(a13);
1687         IAtom a14 = builder.newInstance(IAtom.class, "C");
1688         a14.setFormalCharge(0);
1689         mol.addAtom(a14);
1690         IAtom a15 = builder.newInstance(IAtom.class, "C");
1691         a15.setFormalCharge(0);
1692         mol.addAtom(a15);
1693         IAtom a16 = builder.newInstance(IAtom.class, "C");
1694         a16.setFormalCharge(0);
1695         mol.addAtom(a16);
1696         IAtom a17 = builder.newInstance(IAtom.class, "C");
1697         a17.setFormalCharge(0);
1698         mol.addAtom(a17);
1699         IAtom a18 = builder.newInstance(IAtom.class, "C");
1700         a18.setFormalCharge(0);
1701         mol.addAtom(a18);
1702         IAtom a19 = builder.newInstance(IAtom.class, "C");
1703         a19.setFormalCharge(0);
1704         mol.addAtom(a19);
1705         IAtom a20 = builder.newInstance(IAtom.class, "C");
1706         a20.setFormalCharge(0);
1707         mol.addAtom(a20);
1708         IAtom a21 = builder.newInstance(IAtom.class, "C");
1709         a21.setFormalCharge(0);
1710         mol.addAtom(a21);
1711         IAtom a22 = builder.newInstance(IAtom.class, "C");
1712         a22.setFormalCharge(0);
1713         mol.addAtom(a22);
1714         IAtom a23 = builder.newInstance(IAtom.class, "C");
1715         a23.setFormalCharge(0);
1716         mol.addAtom(a23);
1717         IAtom a24 = builder.newInstance(IAtom.class, "C");
1718         a24.setFormalCharge(0);
1719         mol.addAtom(a24);
1720         IAtom a25 = builder.newInstance(IAtom.class, "C");
1721         a25.setFormalCharge(0);
1722         mol.addAtom(a25);
1723         IAtom a26 = builder.newInstance(IAtom.class, "C");
1724         a26.setFormalCharge(0);
1725         mol.addAtom(a26);
1726         IAtom a27 = builder.newInstance(IAtom.class, "C");
1727         a27.setFormalCharge(0);
1728         mol.addAtom(a27);
1729         IAtom a28 = builder.newInstance(IAtom.class, "C");
1730         a28.setFormalCharge(0);
1731         mol.addAtom(a28);
1732         IAtom a29 = builder.newInstance(IAtom.class, "C");
1733         a29.setFormalCharge(0);
1734         mol.addAtom(a29);
1735         IAtom a30 = builder.newInstance(IAtom.class, "C");
1736         a30.setFormalCharge(0);
1737         mol.addAtom(a30);
1738         IAtom a31 = builder.newInstance(IAtom.class, "C");
1739         a31.setFormalCharge(0);
1740         mol.addAtom(a31);
1741         IAtom a32 = builder.newInstance(IAtom.class, "C");
1742         a32.setFormalCharge(0);
1743         mol.addAtom(a32);
1744         IAtom a33 = builder.newInstance(IAtom.class, "C");
1745         a33.setFormalCharge(0);
1746         mol.addAtom(a33);
1747         IAtom a34 = builder.newInstance(IAtom.class, "C");
1748         a34.setFormalCharge(0);
1749         mol.addAtom(a34);
1750         IAtom a35 = builder.newInstance(IAtom.class, "C");
1751         a35.setFormalCharge(0);
1752         mol.addAtom(a35);
1753         IAtom a36 = builder.newInstance(IAtom.class, "C");
1754         a36.setFormalCharge(0);
1755         mol.addAtom(a36);
1756         IAtom a37 = builder.newInstance(IAtom.class, "C");
1757         a37.setFormalCharge(0);
1758         mol.addAtom(a37);
1759         IAtom a38 = builder.newInstance(IAtom.class, "C");
1760         a38.setFormalCharge(0);
1761         mol.addAtom(a38);
1762         IAtom a39 = builder.newInstance(IAtom.class, "C");
1763         a39.setFormalCharge(0);
1764         mol.addAtom(a39);
1765         IAtom a40 = builder.newInstance(IAtom.class, "C");
1766         a40.setFormalCharge(0);
1767         mol.addAtom(a40);
1768         IAtom a41 = builder.newInstance(IAtom.class, "C");
1769         a41.setFormalCharge(0);
1770         mol.addAtom(a41);
1771         IAtom a42 = builder.newInstance(IAtom.class, "C");
1772         a42.setFormalCharge(0);
1773         mol.addAtom(a42);
1774         IBond b1 = builder.newInstance(IBond.class, a1, a2, IBond.Order.SINGLE);
1775         mol.addBond(b1);
1776         IBond b2 = builder.newInstance(IBond.class, a2, a3, IBond.Order.SINGLE);
1777         mol.addBond(b2);
1778         IBond b3 = builder.newInstance(IBond.class, a3, a4, IBond.Order.SINGLE);
1779         mol.addBond(b3);
1780         IBond b4 = builder.newInstance(IBond.class, a4, a5, IBond.Order.SINGLE);
1781         mol.addBond(b4);
1782         IBond b5 = builder.newInstance(IBond.class, a5, a6, IBond.Order.SINGLE);
1783         mol.addBond(b5);
1784         IBond b6 = builder.newInstance(IBond.class, a1, a6, IBond.Order.SINGLE);
1785         mol.addBond(b6);
1786         IBond b7 = builder.newInstance(IBond.class, a6, a7, IBond.Order.SINGLE);
1787         mol.addBond(b7);
1788         IBond b8 = builder.newInstance(IBond.class, a7, a8, IBond.Order.SINGLE);
1789         mol.addBond(b8);
1790         IBond b9 = builder.newInstance(IBond.class, a8, a9, IBond.Order.SINGLE);
1791         mol.addBond(b9);
1792         IBond b10 = builder.newInstance(IBond.class, a9, a10, IBond.Order.SINGLE);
1793         mol.addBond(b10);
1794         IBond b11 = builder.newInstance(IBond.class, a10, a11, IBond.Order.SINGLE);
1795         mol.addBond(b11);
1796         IBond b12 = builder.newInstance(IBond.class, a11, a12, IBond.Order.SINGLE);
1797         mol.addBond(b12);
1798         IBond b13 = builder.newInstance(IBond.class, a7, a12, IBond.Order.SINGLE);
1799         mol.addBond(b13);
1800         IBond b14 = builder.newInstance(IBond.class, a10, a13, IBond.Order.SINGLE);
1801         mol.addBond(b14);
1802         IBond b15 = builder.newInstance(IBond.class, a13, a14, IBond.Order.SINGLE);
1803         mol.addBond(b15);
1804         IBond b16 = builder.newInstance(IBond.class, a14, a15, IBond.Order.SINGLE);
1805         mol.addBond(b16);
1806         IBond b17 = builder.newInstance(IBond.class, a15, a16, IBond.Order.SINGLE);
1807         mol.addBond(b17);
1808         IBond b18 = builder.newInstance(IBond.class, a16, a17, IBond.Order.SINGLE);
1809         mol.addBond(b18);
1810         IBond b19 = builder.newInstance(IBond.class, a17, a18, IBond.Order.SINGLE);
1811         mol.addBond(b19);
1812         IBond b20 = builder.newInstance(IBond.class, a13, a18, IBond.Order.SINGLE);
1813         mol.addBond(b20);
1814         IBond b21 = builder.newInstance(IBond.class, a16, a19, IBond.Order.SINGLE);
1815         mol.addBond(b21);
1816         IBond b22 = builder.newInstance(IBond.class, a19, a20, IBond.Order.SINGLE);
1817         mol.addBond(b22);
1818         IBond b23 = builder.newInstance(IBond.class, a20, a21, IBond.Order.SINGLE);
1819         mol.addBond(b23);
1820         IBond b24 = builder.newInstance(IBond.class, a21, a22, IBond.Order.SINGLE);
1821         mol.addBond(b24);
1822         IBond b25 = builder.newInstance(IBond.class, a22, a23, IBond.Order.SINGLE);
1823         mol.addBond(b25);
1824         IBond b26 = builder.newInstance(IBond.class, a23, a24, IBond.Order.SINGLE);
1825         mol.addBond(b26);
1826         IBond b27 = builder.newInstance(IBond.class, a19, a24, IBond.Order.SINGLE);
1827         mol.addBond(b27);
1828         IBond b28 = builder.newInstance(IBond.class, a22, a25, IBond.Order.SINGLE);
1829         mol.addBond(b28);
1830         IBond b29 = builder.newInstance(IBond.class, a25, a26, IBond.Order.SINGLE);
1831         mol.addBond(b29);
1832         IBond b30 = builder.newInstance(IBond.class, a26, a27, IBond.Order.SINGLE);
1833         mol.addBond(b30);
1834         IBond b31 = builder.newInstance(IBond.class, a27, a28, IBond.Order.SINGLE);
1835         mol.addBond(b31);
1836         IBond b32 = builder.newInstance(IBond.class, a28, a29, IBond.Order.SINGLE);
1837         mol.addBond(b32);
1838         IBond b33 = builder.newInstance(IBond.class, a29, a30, IBond.Order.SINGLE);
1839         mol.addBond(b33);
1840         IBond b34 = builder.newInstance(IBond.class, a25, a30, IBond.Order.SINGLE);
1841         mol.addBond(b34);
1842         IBond b35 = builder.newInstance(IBond.class, a28, a31, IBond.Order.SINGLE);
1843         mol.addBond(b35);
1844         IBond b36 = builder.newInstance(IBond.class, a31, a32, IBond.Order.SINGLE);
1845         mol.addBond(b36);
1846         IBond b37 = builder.newInstance(IBond.class, a32, a33, IBond.Order.SINGLE);
1847         mol.addBond(b37);
1848         IBond b38 = builder.newInstance(IBond.class, a33, a34, IBond.Order.SINGLE);
1849         mol.addBond(b38);
1850         IBond b39 = builder.newInstance(IBond.class, a34, a35, IBond.Order.SINGLE);
1851         mol.addBond(b39);
1852         IBond b40 = builder.newInstance(IBond.class, a35, a36, IBond.Order.SINGLE);
1853         mol.addBond(b40);
1854         IBond b41 = builder.newInstance(IBond.class, a31, a36, IBond.Order.SINGLE);
1855         mol.addBond(b41);
1856         IBond b42 = builder.newInstance(IBond.class, a34, a37, IBond.Order.SINGLE);
1857         mol.addBond(b42);
1858         IBond b43 = builder.newInstance(IBond.class, a37, a38, IBond.Order.SINGLE);
1859         mol.addBond(b43);
1860         IBond b44 = builder.newInstance(IBond.class, a38, a39, IBond.Order.SINGLE);
1861         mol.addBond(b44);
1862         IBond b45 = builder.newInstance(IBond.class, a39, a40, IBond.Order.SINGLE);
1863         mol.addBond(b45);
1864         IBond b46 = builder.newInstance(IBond.class, a3, a40, IBond.Order.SINGLE);
1865         mol.addBond(b46);
1866         IBond b47 = builder.newInstance(IBond.class, a40, a41, IBond.Order.SINGLE);
1867         mol.addBond(b47);
1868         IBond b48 = builder.newInstance(IBond.class, a41, a42, IBond.Order.SINGLE);
1869         mol.addBond(b48);
1870         IBond b49 = builder.newInstance(IBond.class, a37, a42, IBond.Order.SINGLE);
1871         mol.addBond(b49);
1872         return mol;
1873     }
1874 
configureAtoms(IAtomContainer mol)1875     private static void configureAtoms(IAtomContainer mol) {
1876         try {
1877             for (IAtom atom : mol.atoms())
1878                 atom.setImplicitHydrogenCount(null);
1879             Isotopes.getInstance().configureAtoms(mol);
1880         } catch (Exception exc) {
1881             logger.error("Could not configure molecule!");
1882             logger.debug(exc);
1883         }
1884     }
1885 
1886 }
1887