mirror of
https://github.com/rdkit/rdkit.git
synced 2026-06-03 21:44:30 +08:00
Handle chiral atoms with 2 hydrogens in SCSR parser (#8939)
* added flag to allow chiral settings on Atoms with 2 hydrogens for SCSR treatment * added parameter to allow chiral 2Hs on template mols in SCSR parser * fixed testShapeHelpers for arm64 build * Remove checking for two Hs in chiral atom in atomChiralTypeFromBondDirPseudo3D * removal of flag for allow2Hs * remove setup.bat file
This commit is contained in:
committed by
greg landrum
parent
e985761118
commit
47db3a6df8
@@ -425,8 +425,7 @@ const Atom *findHighestCIPNeighbor(const Atom *atom, const Atom *skipAtom) {
|
||||
namespace Chirality {
|
||||
|
||||
std::optional<Atom::ChiralType> atomChiralTypeFromBondDirPseudo3D(
|
||||
const ROMol &mol, const Bond *bond, const Conformer *conf,
|
||||
double pseudo3DOffset = 0.1) {
|
||||
const ROMol &mol, const Bond *bond, const Conformer *conf) {
|
||||
PRECONDITION(bond, "no bond");
|
||||
PRECONDITION(conf, "no conformer");
|
||||
auto bondDir = bond->getBondDir();
|
||||
@@ -438,6 +437,9 @@ std::optional<Atom::ChiralType> atomChiralTypeFromBondDirPseudo3D(
|
||||
0.00031; // used to recognize T-shaped arrangements
|
||||
// corresponds to an angle between the two vectors of just under 178 degrees
|
||||
// degree
|
||||
|
||||
constexpr double pseudo3DOffset = 0.1; // z-displacement for wedged bonds
|
||||
|
||||
constexpr double volumeTolerance =
|
||||
0.00174; // used to recognize zero chiral volume
|
||||
// This is what we get for a T-shaped arrangement with just over 178 degrees
|
||||
@@ -477,12 +479,8 @@ std::optional<Atom::ChiralType> atomChiralTypeFromBondDirPseudo3D(
|
||||
// at the end of this process bond 0 is the input wedged bond
|
||||
//
|
||||
//----------------------------------------------------------
|
||||
bool hSeen = false;
|
||||
|
||||
INT_VECT neighborBondIndices;
|
||||
if (is_regular_h(*bondAtom)) {
|
||||
hSeen = true;
|
||||
}
|
||||
|
||||
unsigned int refIdx = mol.getNumBonds() + 1;
|
||||
std::vector<RDGeom::Point3D> bondVects;
|
||||
@@ -528,9 +526,6 @@ std::optional<Atom::ChiralType> atomChiralTypeFromBondDirPseudo3D(
|
||||
allSingle = false;
|
||||
}
|
||||
bondVects.push_back(centerLoc.directionVector(tmpPt));
|
||||
if (is_regular_h(*oAtom)) {
|
||||
hSeen = true;
|
||||
}
|
||||
neighborBondIndices.push_back(nbrBond->getIdx());
|
||||
}
|
||||
CHECK_INVARIANT(refIdx < mol.getNumBonds(),
|
||||
@@ -540,12 +535,11 @@ std::optional<Atom::ChiralType> atomChiralTypeFromBondDirPseudo3D(
|
||||
|
||||
//----------------------------------------------------------
|
||||
//
|
||||
// Return now if there aren't at least 3 non-H bonds to the atom.
|
||||
// (we can implicitly add a single H to 3 coordinate atoms, but
|
||||
// we're horked otherwise).
|
||||
// Return now if there aren't at least 3 bonds to the atom.
|
||||
// (we can implicitly add a single H to 3 coordinate atoms).
|
||||
//
|
||||
//----------------------------------------------------------
|
||||
if (nNbrs < 3 || nNbrs > 4 || (hSeen && nNbrs < 4)) {
|
||||
if (nNbrs < 3 || nNbrs > 4) {
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
@@ -1487,7 +1481,8 @@ bool atomIsCandidateForRingStereochem(
|
||||
ringNbrRanks.insert(atomRanks[nbr->getIdx()]);
|
||||
}
|
||||
}
|
||||
// std::cerr << "!!!! " << atom->getIdx() << " " << ringNbrRanks.size() << " "
|
||||
// std::cerr << "!!!! " << atom->getIdx() << " " << ringNbrRanks.size() <<
|
||||
// " "
|
||||
// << ringNbrs.size() << " " << nonRingNbrs.size() << std::endl;
|
||||
switch (nonRingNbrs.size()) {
|
||||
case 2:
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <GraphMol/FileParsers/FileParsers.h>
|
||||
#include <GraphMol/Atropisomers.h>
|
||||
#include <GraphMol/SmilesParse/SmilesWrite.h>
|
||||
#include <GraphMol/Atom.h>
|
||||
|
||||
#include <RDGeneral/BoostStartInclude.h>
|
||||
#include <boost/lexical_cast.hpp>
|
||||
@@ -48,15 +49,20 @@ class ScsiMolTest {
|
||||
unsigned int querySgroupCount;
|
||||
bool scsrExpandResult;
|
||||
SCSRBaseHbondOptions scsrBaseHbondOptions;
|
||||
std::vector<std::pair<unsigned int, Atom::ChiralType>> chiralChecks;
|
||||
std::vector<std::pair<unsigned int, Atom::ChiralType>> chiralChecksQuery;
|
||||
|
||||
ScsiTest(std::string fileNameInit, bool scsrExpandResult,
|
||||
SCSRBaseHbondOptions scsrBaseHbondOptions,
|
||||
unsigned int totalAtomCountInit, unsigned int totalBondCountInit,
|
||||
unsigned int sgroupCountInit, unsigned int totalQueryAtomCountInit,
|
||||
unsigned int totalQueryBondCountInit,
|
||||
unsigned int querySgroupCountInit = 0)
|
||||
unsigned int querySgroupCountInit,
|
||||
std::vector<std::pair<unsigned int, Atom::ChiralType>>
|
||||
chiralChecksInit = {},
|
||||
std::vector<std::pair<unsigned int, Atom::ChiralType>>
|
||||
chiralChecksQueryInit = {})
|
||||
: fileName(fileNameInit),
|
||||
|
||||
totalAtomCount(totalAtomCountInit),
|
||||
totalBondCount(totalBondCountInit),
|
||||
sgroupCount(sgroupCountInit),
|
||||
@@ -64,7 +70,9 @@ class ScsiMolTest {
|
||||
totalQueryBondCount(totalQueryBondCountInit),
|
||||
querySgroupCount(querySgroupCountInit),
|
||||
scsrExpandResult(scsrExpandResult),
|
||||
scsrBaseHbondOptions(scsrBaseHbondOptions) {};
|
||||
scsrBaseHbondOptions(scsrBaseHbondOptions),
|
||||
chiralChecks(chiralChecksInit),
|
||||
chiralChecksQuery(chiralChecksQueryInit) {};
|
||||
};
|
||||
|
||||
void testScsiFiles(const ScsiTest *scsiTest) {
|
||||
@@ -101,6 +109,11 @@ class ScsiMolTest {
|
||||
CHECK(mol->getNumBonds() == scsiTest->totalBondCount);
|
||||
CHECK(getSubstanceGroups(*mol).size() == scsiTest->sgroupCount);
|
||||
|
||||
for (auto chiralCheck : scsiTest->chiralChecks) {
|
||||
CHECK(mol->getAtomWithIdx(chiralCheck.first)->getChiralTag() ==
|
||||
chiralCheck.second);
|
||||
}
|
||||
|
||||
// now make the expanded mol in "query" mode - not including any leaving
|
||||
// groups
|
||||
|
||||
@@ -120,6 +133,11 @@ class ScsiMolTest {
|
||||
CHECK(molNoLeavingGroups->getNumBonds() == scsiTest->totalQueryBondCount);
|
||||
CHECK(getSubstanceGroups(*molNoLeavingGroups).size() ==
|
||||
scsiTest->querySgroupCount);
|
||||
|
||||
for (auto chiralCheck : scsiTest->chiralChecksQuery) {
|
||||
CHECK(mol->getAtomWithIdx(chiralCheck.first)->getChiralTag() ==
|
||||
chiralCheck.second);
|
||||
}
|
||||
}
|
||||
|
||||
void threeLetterCodeTest(const ScsiTest *scsiTest) {
|
||||
@@ -178,6 +196,28 @@ class ScsiMolTest {
|
||||
TEST_CASE("scsiTests", "scsiTests") {
|
||||
SECTION("basics") {
|
||||
std::list<ScsiMolTest::ScsiTest> scsiTests{
|
||||
ScsiMolTest::ScsiTest("DNASlurpErrorImport.mol", true,
|
||||
SCSRBaseHbondOptions::Auto, 81, 90, 13, 79, 88,
|
||||
11,
|
||||
{{0, Atom::ChiralType::CHI_TETRAHEDRAL_CW},
|
||||
{22, Atom::ChiralType::CHI_TETRAHEDRAL_CW},
|
||||
{41, Atom::ChiralType::CHI_TETRAHEDRAL_CW},
|
||||
{61, Atom::ChiralType::CHI_TETRAHEDRAL_CW}},
|
||||
{{0, Atom::ChiralType::CHI_TETRAHEDRAL_CW},
|
||||
{22, Atom::ChiralType::CHI_TETRAHEDRAL_CW},
|
||||
{41, Atom::ChiralType::CHI_TETRAHEDRAL_CW},
|
||||
{61, Atom::ChiralType::CHI_TETRAHEDRAL_CW}}),
|
||||
ScsiMolTest::ScsiTest("DNASlurpErrorSketch.mol", true,
|
||||
SCSRBaseHbondOptions::Auto, 84, 93, 14, 82, 91,
|
||||
12,
|
||||
{{51, Atom::ChiralType::CHI_TETRAHEDRAL_CCW},
|
||||
{60, Atom::ChiralType::CHI_TETRAHEDRAL_CCW},
|
||||
{68, Atom::ChiralType::CHI_TETRAHEDRAL_CCW},
|
||||
{76, Atom::ChiralType::CHI_TETRAHEDRAL_CCW}},
|
||||
{{51, Atom::ChiralType::CHI_TETRAHEDRAL_CCW},
|
||||
{60, Atom::ChiralType::CHI_TETRAHEDRAL_CCW},
|
||||
{68, Atom::ChiralType::CHI_TETRAHEDRAL_CCW},
|
||||
{76, Atom::ChiralType::CHI_TETRAHEDRAL_CCW}}),
|
||||
ScsiMolTest::ScsiTest("ValenceErrorScsr.mol", true,
|
||||
SCSRBaseHbondOptions::Auto, 38, 39, 6, 35, 36, 3),
|
||||
ScsiMolTest::ScsiTest("ValenceErrorScsr2.mol", true,
|
||||
|
||||
@@ -0,0 +1,227 @@
|
||||
|
||||
Generated by WebMolKit
|
||||
|
||||
0 0 0 0 0 999 V3000
|
||||
M V30 BEGIN CTAB
|
||||
M V30 COUNTS 11 10 0 0 1
|
||||
M V30 BEGIN ATOM
|
||||
M V30 1 dR 0.0000 0.0000 0.0000 0 CLASS=SUGAR SEQID=1 ATTCHORD=(4 2 Cx 3 Br)
|
||||
M V30 2 A 0.0000 -1.5000 0.0000 0 CLASS=BASE SEQID=1 ATTCHORD=(2 1 Al)
|
||||
M V30 3 P 1.5000 0.0000 0.0000 0 CLASS=PHOSPHATE SEQID=2 ATTCHORD=(4 1 Al 4 Br)
|
||||
M V30 4 dR 3.0000 0.0000 0.0000 0 CLASS=SUGAR SEQID=2 ATTCHORD=(6 3 Al 5 Cx 6 Br)
|
||||
M V30 5 C 3.0000 -1.5000 0.0000 0 CLASS=BASE SEQID=2 ATTCHORD=(2 4 Al)
|
||||
M V30 6 P 4.5000 0.0000 0.0000 0 CLASS=PHOSPHATE SEQID=3 ATTCHORD=(4 4 Al 7 Br)
|
||||
M V30 7 dR 6.0000 0.0000 0.0000 0 CLASS=SUGAR SEQID=3 ATTCHORD=(6 6 Al 8 Cx 9 Br)
|
||||
M V30 8 T 6.0000 -1.5000 0.0000 0 CLASS=BASE SEQID=3 ATTCHORD=(2 7 Al)
|
||||
M V30 9 P 7.5000 0.0000 0.0000 0 CLASS=PHOSPHATE SEQID=4 ATTCHORD=(4 7 Al 10 Br)
|
||||
M V30 10 dR 9.0000 0.0000 0.0000 0 CLASS=SUGAR SEQID=4 ATTCHORD=(4 9 Al 11 Cx)
|
||||
M V30 11 G 9.0000 -1.5000 0.0000 0 CLASS=BASE SEQID=4 ATTCHORD=(2 10 Al)
|
||||
M V30 END ATOM
|
||||
M V30 BEGIN BOND
|
||||
M V30 1 1 1 2
|
||||
M V30 2 1 1 3
|
||||
M V30 3 1 3 4
|
||||
M V30 4 1 4 5
|
||||
M V30 5 1 4 6
|
||||
M V30 6 1 6 7
|
||||
M V30 7 1 7 8
|
||||
M V30 8 1 7 9
|
||||
M V30 9 1 9 10
|
||||
M V30 10 1 10 11
|
||||
M V30 END BOND
|
||||
M V30 END CTAB
|
||||
M V30 BEGIN TEMPLATE
|
||||
M V30 TEMPLATE 1 SUGAR/dR/dR/ NATREPLACE=SUGAR/dR
|
||||
M V30 BEGIN CTAB
|
||||
M V30 COUNTS 11 11 4 0 1
|
||||
M V30 BEGIN ATOM
|
||||
M V30 1 C 14.8638 -7.5440 0.0000 0
|
||||
M V30 2 C 16.0773 -8.4257 0.0000 0
|
||||
M V30 3 C 15.6138 -9.8523 0.0000 0
|
||||
M V30 4 C 14.1138 -9.8523 0.0000 0
|
||||
M V30 5 O 13.6503 -8.4257 0.0000 0
|
||||
M V30 6 H 14.8638 -6.0440 0.0000 0
|
||||
M V30 7 C 13.2321 -11.0658 0.0000 0
|
||||
M V30 8 O 16.4955 -11.0658 0.0000 0
|
||||
M V30 9 H 17.9873 -10.9090 0.0000 0
|
||||
M V30 10 O 11.7403 -10.9090 0.0000 0
|
||||
M V30 11 H 10.8586 -12.1225 0.0000 0
|
||||
M V30 END ATOM
|
||||
M V30 BEGIN BOND
|
||||
M V30 1 1 1 2
|
||||
M V30 2 1 2 3
|
||||
M V30 3 1 3 4
|
||||
M V30 4 1 4 5
|
||||
M V30 5 1 5 1
|
||||
M V30 6 1 1 6 CFG=1
|
||||
M V30 7 1 4 7 CFG=1
|
||||
M V30 8 1 3 8 CFG=3
|
||||
M V30 9 1 8 9
|
||||
M V30 10 1 7 10
|
||||
M V30 11 1 10 11
|
||||
M V30 END BOND
|
||||
M V30 BEGIN SGROUP
|
||||
M V30 1 SUP 0 LABEL=dR ATOMS=(8 1 2 3 4 5 7 8 10) XBONDS=(2 11 9) CLASS=SUGAR NATREPLACE=SUGAR/dR SAP=(3 10 11 Al) SAP=(3 8 9 Br) SAP=(3 1 6 Cx)
|
||||
M V30 2 SUP 0 LABEL=H ATOMS=(1 11) XBONDS=(1 11) CLASS=LGRP
|
||||
M V30 3 SUP 0 LABEL=H ATOMS=(1 9) XBONDS=(1 9) CLASS=LGRP
|
||||
M V30 4 SUP 0 LABEL=H ATOMS=(1 6) XBONDS=(1 6) CLASS=LGRP
|
||||
M V30 END SGROUP
|
||||
M V30 END CTAB
|
||||
M V30 TEMPLATE 2 BASE/A/A/ NATREPLACE=BASE/A
|
||||
M V30 BEGIN CTAB
|
||||
M V30 COUNTS 11 12 2 0 1
|
||||
M V30 BEGIN ATOM
|
||||
M V30 1 C 0.0000 0.0000 0.0000 0
|
||||
M V30 2 C -1.2990 -0.7500 0.0000 0
|
||||
M V30 3 C -1.2990 -2.2500 0.0000 0
|
||||
M V30 4 N 0.0000 -3.0000 0.0000 0
|
||||
M V30 5 C 1.2990 -2.2500 0.0000 0
|
||||
M V30 6 N 1.2990 -0.7500 0.0000 0
|
||||
M V30 7 N -2.7256 -0.2865 0.0000 0
|
||||
M V30 8 C -3.6073 -1.5000 0.0000 0
|
||||
M V30 9 N -2.7256 -2.7135 0.0000 0
|
||||
M V30 10 H -3.1891 -4.1401 0.0000 0
|
||||
M V30 11 N 0.0000 1.5000 0.0000 0
|
||||
M V30 END ATOM
|
||||
M V30 BEGIN BOND
|
||||
M V30 1 1 1 2
|
||||
M V30 2 2 2 3
|
||||
M V30 3 1 3 4
|
||||
M V30 4 2 4 5
|
||||
M V30 5 1 5 6
|
||||
M V30 6 2 6 1
|
||||
M V30 7 1 2 7
|
||||
M V30 8 2 7 8
|
||||
M V30 9 1 8 9
|
||||
M V30 10 1 9 3
|
||||
M V30 11 1 9 10
|
||||
M V30 12 1 1 11
|
||||
M V30 END BOND
|
||||
M V30 BEGIN SGROUP
|
||||
M V30 1 SUP 0 LABEL=A ATOMS=(10 1 2 3 4 5 6 7 8 9 11) XBONDS=(1 11) CLASS=BASE NATREPLACE=BASE/A SAP=(3 9 10 Al)
|
||||
M V30 2 SUP 0 LABEL=H ATOMS=(1 10) XBONDS=(1 11) CLASS=LGRP
|
||||
M V30 END SGROUP
|
||||
M V30 END CTAB
|
||||
M V30 TEMPLATE 3 PHOSPHATE/P/P/ NATREPLACE=PHOSPHATE/P
|
||||
M V30 BEGIN CTAB
|
||||
M V30 COUNTS 5 4 3 0 1
|
||||
M V30 BEGIN ATOM
|
||||
M V30 1 P 0.0000 0.0000 0.0000 0
|
||||
M V30 2 O 1.5000 0.0000 0.0000 0
|
||||
M V30 3 O -1.5000 0.0000 0.0000 0
|
||||
M V30 4 O 0.0000 -1.5000 0.0000 0
|
||||
M V30 5 O 0.0000 1.5000 0.0000 0
|
||||
M V30 END ATOM
|
||||
M V30 BEGIN BOND
|
||||
M V30 1 1 1 2
|
||||
M V30 2 1 1 3
|
||||
M V30 3 1 1 4
|
||||
M V30 4 2 1 5
|
||||
M V30 END BOND
|
||||
M V30 BEGIN SGROUP
|
||||
M V30 1 SUP 0 LABEL=P ATOMS=(3 1 4 5) XBONDS=(2 2 1) CLASS=PHOSPHATE NATREPLACE=PHOSPHATE/P SAP=(3 1 3 Al) SAP=(3 1 2 Br)
|
||||
M V30 2 SUP 0 LABEL=O ATOMS=(1 3) XBONDS=(1 2) CLASS=LGRP
|
||||
M V30 3 SUP 0 LABEL=O ATOMS=(1 2) XBONDS=(1 1) CLASS=LGRP
|
||||
M V30 END SGROUP
|
||||
M V30 END CTAB
|
||||
M V30 TEMPLATE 4 BASE/C/C/ NATREPLACE=BASE/C
|
||||
M V30 BEGIN CTAB
|
||||
M V30 COUNTS 9 9 2 0 1
|
||||
M V30 BEGIN ATOM
|
||||
M V30 1 C 0.0000 0.0000 0.0000 0
|
||||
M V30 2 N -1.2990 -0.7500 0.0000 0
|
||||
M V30 3 C -1.2990 -2.2500 0.0000 0
|
||||
M V30 4 N 0.0000 -3.0000 0.0000 0
|
||||
M V30 5 C 1.2990 -2.2500 0.0000 0
|
||||
M V30 6 C 1.2990 -0.7500 0.0000 0
|
||||
M V30 7 H 0.0000 -4.5000 0.0000 0
|
||||
M V30 8 O -2.5981 -3.0000 0.0000 0
|
||||
M V30 9 N 0.0000 1.5000 0.0000 0
|
||||
M V30 END ATOM
|
||||
M V30 BEGIN BOND
|
||||
M V30 1 2 1 2
|
||||
M V30 2 1 2 3
|
||||
M V30 3 1 3 4
|
||||
M V30 4 1 4 5
|
||||
M V30 5 2 5 6
|
||||
M V30 6 1 6 1
|
||||
M V30 7 1 4 7
|
||||
M V30 8 2 3 8
|
||||
M V30 9 1 1 9
|
||||
M V30 END BOND
|
||||
M V30 BEGIN SGROUP
|
||||
M V30 1 SUP 0 LABEL=C ATOMS=(8 1 2 3 4 5 6 8 9) XBONDS=(1 7) CLASS=BASE NATREPLACE=BASE/C SAP=(3 4 7 Al)
|
||||
M V30 2 SUP 0 LABEL=H ATOMS=(1 7) XBONDS=(1 7) CLASS=LGRP
|
||||
M V30 END SGROUP
|
||||
M V30 END CTAB
|
||||
M V30 TEMPLATE 5 BASE/T/T/ NATREPLACE=BASE/T
|
||||
M V30 BEGIN CTAB
|
||||
M V30 COUNTS 10 10 2 0 1
|
||||
M V30 BEGIN ATOM
|
||||
M V30 1 C 0.0000 0.0000 0.0000 0
|
||||
M V30 2 N -1.2990 -0.7500 0.0000 0
|
||||
M V30 3 C -1.2990 -2.2500 0.0000 0
|
||||
M V30 4 N 0.0000 -3.0000 0.0000 0
|
||||
M V30 5 C 1.2990 -2.2500 0.0000 0
|
||||
M V30 6 C 1.2990 -0.7500 0.0000 0
|
||||
M V30 7 H 0.0000 -4.5000 0.0000 0
|
||||
M V30 8 O -2.5981 -3.0000 0.0000 0
|
||||
M V30 9 O 0.0000 1.5000 0.0000 0
|
||||
M V30 10 C 2.5980 0.0000 0.0000 0
|
||||
M V30 END ATOM
|
||||
M V30 BEGIN BOND
|
||||
M V30 1 1 1 2
|
||||
M V30 2 1 2 3
|
||||
M V30 3 1 3 4
|
||||
M V30 4 1 4 5
|
||||
M V30 5 2 5 6
|
||||
M V30 6 1 6 1
|
||||
M V30 7 1 4 7
|
||||
M V30 8 2 3 8
|
||||
M V30 9 2 1 9
|
||||
M V30 10 1 6 10
|
||||
M V30 END BOND
|
||||
M V30 BEGIN SGROUP
|
||||
M V30 1 SUP 0 LABEL=T ATOMS=(9 1 2 3 4 5 6 8 9 10) XBONDS=(1 7) CLASS=BASE NATREPLACE=BASE/T SAP=(3 4 7 Al)
|
||||
M V30 2 SUP 0 LABEL=H ATOMS=(1 7) XBONDS=(1 7) CLASS=LGRP
|
||||
M V30 END SGROUP
|
||||
M V30 END CTAB
|
||||
M V30 TEMPLATE 6 BASE/G/G/ NATREPLACE=BASE/G
|
||||
M V30 BEGIN CTAB
|
||||
M V30 COUNTS 12 13 2 0 1
|
||||
M V30 BEGIN ATOM
|
||||
M V30 1 C 0.0000 0.0000 0.0000 0
|
||||
M V30 2 C -1.2990 -0.7500 0.0000 0
|
||||
M V30 3 C -1.2990 -2.2500 0.0000 0
|
||||
M V30 4 N 0.0000 -3.0000 0.0000 0
|
||||
M V30 5 C 1.2990 -2.2500 0.0000 0
|
||||
M V30 6 N 1.2990 -0.7500 0.0000 0
|
||||
M V30 7 N -2.7256 -0.2865 0.0000 0
|
||||
M V30 8 C -3.6073 -1.5000 0.0000 0
|
||||
M V30 9 N -2.7256 -2.7135 0.0000 0
|
||||
M V30 10 H -3.1891 -4.1401 0.0000 0
|
||||
M V30 11 O 0.0000 1.5000 0.0000 0
|
||||
M V30 12 N 2.5980 -3.0000 0.0000 0
|
||||
M V30 END ATOM
|
||||
M V30 BEGIN BOND
|
||||
M V30 1 1 1 2
|
||||
M V30 2 2 2 3
|
||||
M V30 3 1 3 4
|
||||
M V30 4 2 4 5
|
||||
M V30 5 1 5 6
|
||||
M V30 6 1 6 1
|
||||
M V30 7 1 2 7
|
||||
M V30 8 2 7 8
|
||||
M V30 9 1 8 9
|
||||
M V30 10 1 9 3
|
||||
M V30 11 1 9 10
|
||||
M V30 12 2 1 11
|
||||
M V30 13 1 5 12
|
||||
M V30 END BOND
|
||||
M V30 BEGIN SGROUP
|
||||
M V30 1 SUP 0 LABEL=G ATOMS=(11 1 2 3 4 5 6 7 8 9 11 12) XBONDS=(1 11) CLASS=BASE NATREPLACE=BASE/G SAP=(3 9 10 Al)
|
||||
M V30 2 SUP 0 LABEL=H ATOMS=(1 10) XBONDS=(1 11) CLASS=LGRP
|
||||
M V30 END SGROUP
|
||||
M V30 END CTAB
|
||||
M V30 END TEMPLATE
|
||||
M END
|
||||
@@ -0,0 +1,265 @@
|
||||
|
||||
-INDIGO-11062509012D
|
||||
|
||||
0 0 0 0 0 0 0 0 0 0 0 V3000
|
||||
M V30 BEGIN CTAB
|
||||
M V30 COUNTS 12 11 0 0 0
|
||||
M V30 BEGIN ATOM
|
||||
M V30 1 A 1.25 -2.75 0.0 0 CLASS=BASE SEQID=1 ATTCHORD=(2 9 Al)
|
||||
M V30 2 P 2.75 -1.25 0.0 0 CLASS=PHOSPHATE SEQID=1 ATTCHORD=(4 9 Al 10 Br)
|
||||
M V30 3 C 4.25 -2.75 0.0 0 CLASS=BASE SEQID=2 ATTCHORD=(2 10 Al)
|
||||
M V30 4 P 5.75 -1.25 0.0 0 CLASS=PHOSPHATE SEQID=2 ATTCHORD=(4 10 Al 11 Br)
|
||||
M V30 5 G 7.25 -2.75 0.0 0 CLASS=BASE SEQID=3 ATTCHORD=(2 11 Al)
|
||||
M V30 6 P 8.75 -1.25 0.0 0 CLASS=PHOSPHATE SEQID=3 ATTCHORD=(4 11 Al 12 Br)
|
||||
M V30 7 T 10.25 -2.75 0.0 0 CLASS=BASE SEQID=4 ATTCHORD=(2 12 Al)
|
||||
M V30 8 P 11.75 -1.25 0.0 0 CLASS=PHOSPHATE SEQID=4 ATTCHORD=(2 12 Al)
|
||||
M V30 9 dR 1.25 -1.25 0.0 0 CLASS=SUGAR SEQID=1 ATTCHORD=(4 1 Cx 2 Br)
|
||||
M V30 10 dR 4.25 -1.25 0.0 0 CLASS=SUGAR SEQID=2 ATTCHORD=(6 3 Cx 2 Al 4 Br)
|
||||
M V30 11 dR 7.25 -1.25 0.0 0 CLASS=SUGAR SEQID=3 ATTCHORD=(6 5 Cx 4 Al 6 Br)
|
||||
M V30 12 dR 10.25 -1.25 0.0 0 CLASS=SUGAR SEQID=4 ATTCHORD=(6 7 Cx 6 Al 8 Br-
|
||||
M V30 )
|
||||
M V30 END ATOM
|
||||
M V30 BEGIN BOND
|
||||
M V30 1 1 1 9
|
||||
M V30 2 1 9 2
|
||||
M V30 3 1 3 10
|
||||
M V30 4 1 10 2
|
||||
M V30 5 1 10 4
|
||||
M V30 6 1 5 11
|
||||
M V30 7 1 11 4
|
||||
M V30 8 1 11 6
|
||||
M V30 9 1 7 12
|
||||
M V30 10 1 12 6
|
||||
M V30 11 1 8 12
|
||||
M V30 END BOND
|
||||
M V30 END CTAB
|
||||
M V30 BEGIN TEMPLATE
|
||||
M V30 TEMPLATE 1 BASE/Ade/A NATREPLACE=BASE/A
|
||||
M V30 BEGIN CTAB
|
||||
M V30 COUNTS 11 12 2 0 0
|
||||
M V30 BEGIN ATOM
|
||||
M V30 1 N -0.438 1.041 0.0 0
|
||||
M V30 2 C -0.438 0.041 0.0 0
|
||||
M V30 3 C 0.428 -0.459 0.0 0
|
||||
M V30 4 C 1.294 0.041 0.0 0
|
||||
M V30 5 N 1.294 1.041 0.0 0
|
||||
M V30 6 C 0.428 1.541 0.0 0
|
||||
M V30 7 N 0.22 -1.437 0.0 0
|
||||
M V30 8 C -0.775 -1.541 0.0 0
|
||||
M V30 9 N -1.182 -0.628 0.0 0
|
||||
M V30 10 N 2.16 -0.459 0.0 0
|
||||
M V30 11 H -2.16 -0.42 0.0 0
|
||||
M V30 END ATOM
|
||||
M V30 BEGIN BOND
|
||||
M V30 1 2 6 1
|
||||
M V30 2 1 1 2
|
||||
M V30 3 2 2 3
|
||||
M V30 4 1 3 4
|
||||
M V30 5 2 4 5
|
||||
M V30 6 1 5 6
|
||||
M V30 7 1 2 9
|
||||
M V30 8 1 9 8
|
||||
M V30 9 2 8 7
|
||||
M V30 10 1 7 3
|
||||
M V30 11 1 4 10
|
||||
M V30 12 1 9 11
|
||||
M V30 END BOND
|
||||
M V30 BEGIN SGROUP
|
||||
M V30 1 SUP 1 ATOMS=(1 11) XBONDS=(1 12) BRKXYZ=(9 0.489000 -0.104000 0.0000-
|
||||
M V30 00 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLAS-
|
||||
M V30 S=LGRP
|
||||
M V30 2 SUP 2 ATOMS=(10 1 2 3 4 5 6 7 8 9 10) XBONDS=(1 12) BRKXYZ=(9 -0.489-
|
||||
M V30 000 0.104000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.0-
|
||||
M V30 00000) LABEL=A CLASS=BASE SAP=(3 9 11 Al) NATREPLACE=BASE/A
|
||||
M V30 END SGROUP
|
||||
M V30 END CTAB
|
||||
M V30 TEMPLATE 2 PHOSPHATE/P/P NATREPLACE=PHOSPHATE/P
|
||||
M V30 BEGIN CTAB
|
||||
M V30 COUNTS 5 4 3 0 0
|
||||
M V30 BEGIN ATOM
|
||||
M V30 1 P 0.0 0.0 0.0 0
|
||||
M V30 2 O 0.5 -0.866 0.0 0
|
||||
M V30 3 O 0.5 0.866 0.0 0
|
||||
M V30 4 O -1.0 0.0 0.0 0
|
||||
M V30 5 O 1.0 0.0 0.0 0
|
||||
M V30 END ATOM
|
||||
M V30 BEGIN BOND
|
||||
M V30 1 2 1 2
|
||||
M V30 2 1 1 3
|
||||
M V30 3 1 1 4
|
||||
M V30 4 1 1 5
|
||||
M V30 END BOND
|
||||
M V30 BEGIN SGROUP
|
||||
M V30 1 SUP 1 ATOMS=(1 4) XBONDS=(1 3) BRKXYZ=(9 0.500000 0.000000 0.000000 -
|
||||
M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=OH CLASS=-
|
||||
M V30 LGRP
|
||||
M V30 2 SUP 2 ATOMS=(1 5) XBONDS=(1 4) BRKXYZ=(9 -0.500000 0.000000 0.000000-
|
||||
M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=OH CLASS-
|
||||
M V30 =LGRP
|
||||
M V30 3 SUP 3 ATOMS=(3 1 2 3) XBONDS=(2 3 4) BRKXYZ=(9 -0.500000 0.000000 0.-
|
||||
M V30 000000 0.500000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=P -
|
||||
M V30 CLASS=PHOSPHATE SAP=(3 1 4 Al) SAP=(3 1 5 Br) NATREPLACE=PHOSPHATE/P
|
||||
M V30 END SGROUP
|
||||
M V30 END CTAB
|
||||
M V30 TEMPLATE 3 BASE/Cyt/C NATREPLACE=BASE/C
|
||||
M V30 BEGIN CTAB
|
||||
M V30 COUNTS 9 9 2 0 0
|
||||
M V30 BEGIN ATOM
|
||||
M V30 1 C -0.5 -0.433 0.0 0
|
||||
M V30 2 N 0.5 -0.433 0.0 0
|
||||
M V30 3 C 1.0 0.433 0.0 0
|
||||
M V30 4 C 0.5 1.299 0.0 0
|
||||
M V30 5 C -0.5 1.299 0.0 0
|
||||
M V30 6 N -1.0 0.433 0.0 0
|
||||
M V30 7 N 2.0 0.433 0.0 0
|
||||
M V30 8 O -1.0 -1.299 0.0 0
|
||||
M V30 9 H -2.0 0.433 0.0 0
|
||||
M V30 END ATOM
|
||||
M V30 BEGIN BOND
|
||||
M V30 1 1 6 1
|
||||
M V30 2 1 1 2
|
||||
M V30 3 2 2 3
|
||||
M V30 4 1 3 4
|
||||
M V30 5 2 4 5
|
||||
M V30 6 1 5 6
|
||||
M V30 7 1 3 7
|
||||
M V30 8 2 1 8
|
||||
M V30 9 1 6 9
|
||||
M V30 END BOND
|
||||
M V30 BEGIN SGROUP
|
||||
M V30 1 SUP 1 ATOMS=(1 9) XBONDS=(1 9) BRKXYZ=(9 0.500000 0.000000 0.000000 -
|
||||
M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLASS=L-
|
||||
M V30 GRP
|
||||
M V30 2 SUP 2 ATOMS=(8 1 2 3 4 5 6 7 8) XBONDS=(1 9) BRKXYZ=(9 -0.500000 0.0-
|
||||
M V30 00000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) -
|
||||
M V30 LABEL=C CLASS=BASE SAP=(3 6 9 Al) NATREPLACE=BASE/C
|
||||
M V30 END SGROUP
|
||||
M V30 END CTAB
|
||||
M V30 TEMPLATE 4 BASE/Gua/G NATREPLACE=BASE/G
|
||||
M V30 BEGIN CTAB
|
||||
M V30 COUNTS 12 13 2 0 0
|
||||
M V30 BEGIN ATOM
|
||||
M V30 1 N -0.438 0.541 0.0 0
|
||||
M V30 2 C -0.438 -0.459 0.0 0
|
||||
M V30 3 C 0.428 -0.959 0.0 0
|
||||
M V30 4 C 1.294 -0.459 0.0 0
|
||||
M V30 5 N 1.294 0.541 0.0 0
|
||||
M V30 6 C 0.428 1.041 0.0 0
|
||||
M V30 7 N 0.22 -1.937 0.0 0
|
||||
M V30 8 C -0.775 -2.041 0.0 0
|
||||
M V30 9 N -1.182 -1.128 0.0 0
|
||||
M V30 10 O 2.16 -0.959 0.0 0
|
||||
M V30 11 H -2.16 -0.92 0.0 0
|
||||
M V30 12 N 0.428 2.041 0.0 0
|
||||
M V30 END ATOM
|
||||
M V30 BEGIN BOND
|
||||
M V30 1 2 6 1
|
||||
M V30 2 1 1 2
|
||||
M V30 3 2 2 3
|
||||
M V30 4 1 3 4
|
||||
M V30 5 1 4 5
|
||||
M V30 6 1 5 6
|
||||
M V30 7 1 2 9
|
||||
M V30 8 1 9 8
|
||||
M V30 9 2 8 7
|
||||
M V30 10 1 7 3
|
||||
M V30 11 2 4 10
|
||||
M V30 12 1 9 11
|
||||
M V30 13 1 6 12
|
||||
M V30 END BOND
|
||||
M V30 BEGIN SGROUP
|
||||
M V30 1 SUP 1 ATOMS=(1 11) XBONDS=(1 12) BRKXYZ=(9 0.489000 -0.104000 0.0000-
|
||||
M V30 00 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLAS-
|
||||
M V30 S=LGRP
|
||||
M V30 2 SUP 2 ATOMS=(11 1 2 3 4 5 6 7 8 9 10 12) XBONDS=(1 12) BRKXYZ=(9 -0.-
|
||||
M V30 489000 0.104000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -
|
||||
M V30 0.000000) LABEL=G CLASS=BASE SAP=(3 9 11 Al) NATREPLACE=BASE/G
|
||||
M V30 END SGROUP
|
||||
M V30 END CTAB
|
||||
M V30 TEMPLATE 5 BASE/Thy/T NATREPLACE=BASE/T
|
||||
M V30 BEGIN CTAB
|
||||
M V30 COUNTS 10 10 2 0 0
|
||||
M V30 BEGIN ATOM
|
||||
M V30 1 C -0.5 -0.866 0.0 0
|
||||
M V30 2 C 0.5 -0.866 0.0 0
|
||||
M V30 3 C 1.0 0.0 0.0 0
|
||||
M V30 4 N 0.5 0.866 0.0 0
|
||||
M V30 5 C -0.5 0.866 0.0 0
|
||||
M V30 6 N -1.0 0.0 0.0 0
|
||||
M V30 7 O 2.0 0.0 0.0 0
|
||||
M V30 8 H -2.0 0.0 0.0 0
|
||||
M V30 9 C 1.0 -1.732 0.0 0
|
||||
M V30 10 O -1.0 1.732 0.0 0
|
||||
M V30 END ATOM
|
||||
M V30 BEGIN BOND
|
||||
M V30 1 1 6 1
|
||||
M V30 2 2 1 2
|
||||
M V30 3 1 2 3
|
||||
M V30 4 1 3 4
|
||||
M V30 5 1 4 5
|
||||
M V30 6 1 5 6
|
||||
M V30 7 2 3 7
|
||||
M V30 8 1 6 8
|
||||
M V30 9 1 2 9
|
||||
M V30 10 2 5 10
|
||||
M V30 END BOND
|
||||
M V30 BEGIN SGROUP
|
||||
M V30 1 SUP 1 ATOMS=(1 8) XBONDS=(1 8) BRKXYZ=(9 0.500000 0.000000 0.000000 -
|
||||
M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLASS=L-
|
||||
M V30 GRP
|
||||
M V30 2 SUP 2 ATOMS=(9 1 2 3 4 5 6 7 9 10) XBONDS=(1 8) BRKXYZ=(9 -0.500000 -
|
||||
M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.00000-
|
||||
M V30 0) LABEL=T CLASS=BASE SAP=(3 6 8 Al) NATREPLACE=BASE/T
|
||||
M V30 END SGROUP
|
||||
M V30 END CTAB
|
||||
M V30 TEMPLATE 6 SUGAR/dRib/dR NATREPLACE=SUGAR/R-Ribose
|
||||
M V30 BEGIN CTAB
|
||||
M V30 COUNTS 11 11 4 0 0
|
||||
M V30 BEGIN ATOM
|
||||
M V30 1 C 0.294 -1.026 0.0 0 CFG=1
|
||||
M V30 2 C 1.103 -0.438 0.0 0
|
||||
M V30 3 C 0.794 0.513 0.0 0 CFG=1
|
||||
M V30 4 C -0.206 0.513 0.0 0 CFG=2
|
||||
M V30 5 O -0.515 -0.438 0.0 0
|
||||
M V30 6 O 0.294 -2.026 0.0 0
|
||||
M V30 7 O 1.382 1.322 0.0 0
|
||||
M V30 8 H 2.376 1.217 0.0 0
|
||||
M V30 9 C -0.794 1.322 0.0 0
|
||||
M V30 10 O -1.788 1.217 0.0 0
|
||||
M V30 11 H -2.376 2.026 0.0 0
|
||||
M V30 END ATOM
|
||||
M V30 BEGIN BOND
|
||||
M V30 1 1 1 5
|
||||
M V30 2 1 5 4
|
||||
M V30 3 1 4 3
|
||||
M V30 4 1 3 2
|
||||
M V30 5 1 2 1
|
||||
M V30 6 1 1 6 CFG=3
|
||||
M V30 7 1 3 7 CFG=1
|
||||
M V30 8 1 7 8
|
||||
M V30 9 1 4 9 CFG=3
|
||||
M V30 10 1 9 10
|
||||
M V30 11 1 10 11
|
||||
M V30 END BOND
|
||||
M V30 BEGIN COLLECTION
|
||||
M V30 MDLV30/STEABS ATOMS=(3 1 3 4)
|
||||
M V30 END COLLECTION
|
||||
M V30 BEGIN SGROUP
|
||||
M V30 1 SUP 1 ATOMS=(1 11) XBONDS=(1 11) BRKXYZ=(9 0.294000 -0.404500 0.0000-
|
||||
M V30 00 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLAS-
|
||||
M V30 S=LGRP
|
||||
M V30 2 SUP 2 ATOMS=(1 8) XBONDS=(1 8) BRKXYZ=(9 -0.497000 0.052500 0.000000-
|
||||
M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLASS=-
|
||||
M V30 LGRP
|
||||
M V30 3 SUP 3 ATOMS=(1 6) XBONDS=(1 6) BRKXYZ=(9 0.000000 0.500000 0.000000 -
|
||||
M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=OH CLASS=-
|
||||
M V30 LGRP
|
||||
M V30 4 SUP 4 ATOMS=(8 1 2 3 4 5 7 9 10) XBONDS=(3 6 8 11) BRKXYZ=(9 0.00000-
|
||||
M V30 0 -0.500000 0.000000 0.497000 -0.052500 0.000000 0.000000 0.000000 0.0-
|
||||
M V30 00000) BRKXYZ=(9 -0.294000 0.404500 0.000000 0.000000 0.000000 0.00000-
|
||||
M V30 0 0.000000 0.000000 0.000000) LABEL=dR CLASS=SUGAR SAP=(3 10 11 Al) SA-
|
||||
M V30 P=(3 7 8 Br) SAP=(3 1 6 Cx) NATREPLACE=SUGAR/R
|
||||
M V30 END SGROUP
|
||||
M V30 END CTAB
|
||||
M V30 END TEMPLATE
|
||||
M END
|
||||
Reference in New Issue
Block a user