# ap_superimpose_pdb_by_ligand¶

Superimposes protein structures by matching ligand molecules.

All the given protein structures must contain the same ligand molecule, every time in the same conformation. The program calculates a transformation (rotation-translation) that superimposes that ligand from input structures on the same ligand molecule found in the native PDB. The transformation is then used to rototranslate whole protein structures. Results is written to “out.pdb” file

USAGE:
./ap_superimpose_pdb_by_ligand native_pdb ligand_name pdb_file_1 [pdb_file_2 ...]

EXAMPLE:
./ap_superipose_pdb_by_ligand 4rm4A.pdb HEM 5ofqA.pd


## Categories:¶

• core/calc/structural/transformations/PairwiseCrmsd

## Program source:¶

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 #include #include #include #include #include #include #include using namespace core::data::structural; std::string program_info = R"( Superimposes protein structures by matching ligand molecules. All the given protein structures must contain the same ligand molecule, every time in the same conformation. The program calculates a transformation (rotation-translation) that superimposes that ligand from input structures on the same ligand molecule found in the native PDB. The transformation is then used to rototranslate whole protein structures. Results is written to "out.pdb" file USAGE: ./ap_superimpose_pdb_by_ligand native_pdb ligand_name pdb_file_1 [pdb_file_2 ...] EXAMPLE: ./ap_superipose_pdb_by_ligand 4rm4A.pdb HEM 5ofqA.pdb )"; /** @brief Superimposes protein structures by matching ligand molecules. * * * CATEGORIES: core/calc/structural/transformations/PairwiseCrmsd * KEYWORDS: PDB input; rototranslation; superimposition; crmsd; docking */ int main(const int argc, const char *argv[]) { if(argc < 4) utils::exit_OK_with_message(program_info); // --- complain about missing program parameter utils::LogManager::get().FINE(); AtomSelector_SP selector = std::make_shared(argv[2]); // --- select a ligand residue by its 3-letter code core::data::io::Pdb read_native(argv[1], core::data::io::keep_all); // --- Read the native (reference) structure, keep all atoms Structure_SP native = read_native.create_structure(0); std::vector models; // --- Container for targets to be superimposed for (int i = 3; i < argc; ++i) { core::data::io::Pdb reader(argv[i], core::data::io::keep_all); for (int j = 0; j < reader.count_models(); ++j) // --- Read all models from each target PDB file models.push_back(reader.create_structure(j)); } AtomSelector_SP select_all = std::make_shared(); core::protocols::PairwiseCrmsd rms_calc(models, selector); std::shared_ptr out = std::make_shared("out.pdb"); rms_calc.calculate(native, out); }