mirror of
https://github.com/rdkit/rdkit.git
synced 2026-06-07 22:44:25 +08:00
54 lines
1.9 KiB
C++
54 lines
1.9 KiB
C++
//
|
|
// Copyright (c) 2018 Greg Landrum
|
|
//
|
|
// @@ All Rights Reserved @@
|
|
// This file is part of the RDKit.
|
|
// The contents are covered by the terms of the BSD license
|
|
// which is included in the file license.txt, found at the root
|
|
// of the RDKit source tree.
|
|
///
|
|
#define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do
|
|
// this in one cpp file
|
|
#include "catch.hpp"
|
|
|
|
#include <GraphMol/RDKitBase.h>
|
|
#include <GraphMol/MonomerInfo.h>
|
|
#include <GraphMol/SmilesParse/SmilesParse.h>
|
|
#include <GraphMol/SmilesParse/SmilesWrite.h>
|
|
#include <GraphMol/FileParsers/SequenceParsers.h>
|
|
#include <GraphMol/ChemReactions/Reaction.h>
|
|
#include <GraphMol/ChemReactions/ReactionParser.h>
|
|
#include <GraphMol/ChemReactions/ReactionRunner.h>
|
|
#include <GraphMol/ChemReactions/ReactionUtils.h>
|
|
|
|
using namespace RDKit;
|
|
|
|
TEST_CASE("Github #1632", "[Reaction,PDB,bug]") {
|
|
SECTION("basics") {
|
|
bool sanitize = true;
|
|
int flavor = 0;
|
|
std::unique_ptr<RWMol> mol(SequenceToMol("K", sanitize, flavor));
|
|
REQUIRE(mol);
|
|
REQUIRE(mol->getAtomWithIdx(0)->getMonomerInfo());
|
|
auto res = static_cast<AtomPDBResidueInfo *>(
|
|
mol->getAtomWithIdx(0)->getMonomerInfo());
|
|
CHECK(res->getResidueNumber() == 1);
|
|
std::unique_ptr<ChemicalReaction> rxn(RxnSmartsToChemicalReaction(
|
|
"[O:1]=[CX3:2]-[CX4:3]-[NX3:4]>>[O:1]=[CX3:2]-[CX4:3]-[NX3:4]-[C]"));
|
|
REQUIRE(rxn);
|
|
rxn->initReactantMatchers();
|
|
MOL_SPTR_VECT reacts;
|
|
reacts.push_back(ROMOL_SPTR(new ROMol(*mol)));
|
|
auto prods = rxn->runReactants(reacts);
|
|
CHECK(prods.size() == 1);
|
|
CHECK(prods[0].size() == 1);
|
|
auto p = prods[0][0];
|
|
CHECK(p->getNumAtoms() == mol->getNumAtoms() + 1);
|
|
REQUIRE(p->getAtomWithIdx(0)->getMonomerInfo());
|
|
auto pres = static_cast<AtomPDBResidueInfo *>(
|
|
p->getAtomWithIdx(0)->getMonomerInfo());
|
|
CHECK(pres->getResidueNumber() == 1);
|
|
REQUIRE(!p->getAtomWithIdx(4)->getMonomerInfo());
|
|
}
|
|
}
|