libcootapi
 
Loading...
Searching...
No Matches
/opt/conda/conda-bld/coot-headless_1775057007360/work/api/molecules-container.hh
1
2#ifndef MOLECULES_CONTAINER_HH
3#define MOLECULES_CONTAINER_HH
4
5#include <memory>
6#ifdef SWIG
7#include "Python.h"
8#endif
9
10#include <vector>
11
12#ifdef HAVE_SSMLIB
13#include <ssm/ssm_align.h>
14#endif
15
16#if NB_VERSION_MAJOR // for flychecking
17#include <nanobind/nanobind.h>
18#endif
19
20#include "compat/coot-sysdep.h"
21
22#include "coords/Cartesian.hh"
23#include "coords/ramachandran-container.hh"
24#include "coot-molecule.hh"
25#include "coot-utils/coot-rama.hh"
26#include "coot-utils/coot-coord-extras.hh" // the missing atoms type
27#include "coot-utils/coot-map-utils.hh"
28#include "utils/coot-utils.hh"
29#include "utils/setup-syminfo.hh"
30#include "ideal/simple-restraint.hh" // needed?
31#include "atom-pull.hh"
32#include "validation-information.hh"
33#include "superpose-results.hh"
34#include "lsq-results.hh"
35#include "coot-utils/simple-mesh.hh"
36#include "coot-utils/texture-as-floats.hh"
37#include "phi-psi-prob.hh"
38#include "instancing.hh"
39#include "coot-colour.hh" // put this in utils
40#include "saved-strand-info.hh"
41#include "svg-store-key.hh"
42#include "moorhen-h-bonds.hh"
43#include "header-info.hh"
44#include "positioned-atom-spec.hh"
45#include "user-defined-colour-table.hh"
46
49
50 std::vector<coot::molecule_t> molecules;
51 coot::protein_geometry geom;
52 coot::rotamer_probability_tables rot_prob_tables;
53 bool ospray_is_initialized;
54 ramachandrans_container_t ramachandrans_container;
55 static std::atomic<bool> on_going_updating_map_lock;
56 bool draw_missing_residue_loops_flag;
57
58 class rail_points_t {
59 public:
60 int model_rail_points_delta; // for the latest change, I mean
61 int map_rail_points_delta;
62 float rmsd_of_difference_map;
63 explicit rail_points_t(float rmsd) {
64 model_rail_points_delta = 0;
65 map_rail_points_delta = 0;
66 rmsd_of_difference_map = rmsd;
67 }
68 rail_points_t(float rmsd_diff_map_current, const rail_points_t &rail_points_prev) {
69 model_rail_points_delta = 0;
70 rmsd_of_difference_map = rmsd_diff_map_current;
71 map_rail_points_delta = rail_points_delta(rail_points_prev);
72 }
73 int rail_points_delta(const rail_points_t &prev) {
74 float fudge = 2.4; // 20230117-PE makes 1000 rail points equal ~1% in R-factor for the tutorial data
75 return int(100000.0 * fudge * (prev.rmsd_of_difference_map - rmsd_of_difference_map));
76 }
77 static int total(const std::vector<rail_points_t> &rail_point_history) {
78 int sum = 0;
79 for (const auto &item : rail_point_history) {
80 sum += item.map_rail_points_delta;
81 }
82 return sum;
83 }
84 };
85 std::vector<rail_points_t> rail_point_history; // map and model (model currently not used)
86
87 class updating_maps_info_f {
88 public:
89 bool maps_need_an_update;
90 int imol_model;
91 int imol_2fofc;
92 int imol_fofc;
93 int imol_with_data_info_attached;
94 updating_maps_info_f() {
95 maps_need_an_update = false;
96 imol_model = -1;
97 imol_2fofc = -1;
98 imol_fofc = -1;
99 imol_with_data_info_attached = -1;
100 }
101 };
102#ifdef SKIP_FOR_PYTHON_DOXYGEN
103#else
109 updating_maps_info_f updating_maps_info;
110 void set_updating_maps_need_an_update(int imol);
111 // Checks the above information before acting, of course.
112 // No action if imol is the the model for updating maps.
113
117 void update_updating_maps(int imol); // called from the get_map_contours_mesh() function
118
119 coot::util::sfcalc_genmap_stats_t latest_sfcalc_stats;
120#endif
121 // --------------------- superposition --------------------------
122
123 // --------------------- refinement --------------------------
124
125 // 201803004:
126 // refinement now uses references to Xmaps.
127 // A dummy_map is created and a reference to that is created. Then
128 // the reference is reset to a real xmap in a molecule (imol_for_map).
129 // But, for a reason I don't understand, the refinement crashes when I do that.
130 // When the initial dummy_xmap doesn't go out of scope, then the refinement is OK.
131 // So this static dummy map is the map that doesn't go out of scope.
132 // We only need one of it, so it goes here, rather than get created every
133 // time we do a refinement. It may need to be public in future.
134 //
135 // 20221018-PE:
136 // Now that we are in api, then I am now no longer sure that this should be static
137 // or what static means in WebAssembly.
138 static clipper::Xmap<float> *dummy_xmap;
139 float map_weight;
140 float geman_mcclure_alpha;
141
142 bool use_rama_plot_restraints;
143 float rama_plot_restraints_weight;
144
145 bool use_torsion_restraints;
146 float torsion_restraints_weight;
147
148 ctpl::thread_pool thread_pool;
149 bool show_timings;
150
151 coot::restraints_container_t *last_restraints;
152 bool continue_threaded_refinement_loop;
153 bool refinement_is_quiet;
154 int cif_dictionary_read_number;
155
159 std::string adjust_refinement_residue_name(const std::string &resname) const;
160#ifdef DOXYGEN_SHOULD_PARSE_THIS
161#else
162 bool make_last_restraints(const std::vector<std::pair<bool,mmdb::Residue *> > &local_residues,
163 const std::vector<mmdb::Link> &links,
164 const coot::protein_geometry &geom,
165 mmdb::Manager *mol_for_residue_selection,
166 const std::vector<coot::atom_spec_t> &fixed_atom_specs,
167 coot::restraint_usage_Flags flags,
168 bool use_map_flag,
169 const clipper::Xmap<float> *xmap_p);
170 coot::refinement_results_t refine_residues_vec(int imol,
171 const std::vector<mmdb::Residue *> &residues,
172 const std::string &alt_conf,
173 mmdb::Manager *mol);
174
175 atom_selection_container_t make_moving_atoms_asc(mmdb::Manager *residues_mol,
176 const std::vector<mmdb::Residue *> &residues) const;
177
178 int find_serial_number_for_insert(int seqnum_new,
179 const std::string &ins_code_for_new,
180 mmdb::Chain *chain_p) const;
181
182 // return 0 if any of the residues in selection don't have (at least) bond
183 // restraints. Try to auto-load the dictionary cifs and try again.
184 // The vector is a list of residues for which no restraints could be found.
185
186 std::pair<int, std::vector<std::string> >
187 check_dictionary_for_residue_restraints(int imol, mmdb::PResidue *SelResidues, int nSelResidues);
188
189 std::pair<int, std::vector<std::string> >
190 check_dictionary_for_residue_restraints(int imol, const std::vector<mmdb::Residue *> &residues);
191
192 std::pair<mmdb::Manager *, std::vector<mmdb::Residue *> >
193 create_mmdbmanager_from_res_vector(const std::vector<mmdb::Residue *> &residues,
194 int imol,
195 mmdb::Manager *mol_in,
196 std::string alt_conf);
197
198 // simple mmdb::Residue * interface to refinement. 20081216
199 coot::refinement_results_t
200 generate_molecule_and_refine(int imol, // needed for UDD Atom handle transfer
201 const std::vector<mmdb::Residue *> &residues,
202 const std::string &alt_conf,
203 mmdb::Manager *mol,
204 bool use_map_flag=true);
205
206 static void thread_for_refinement_loop_threaded();
207
208 static std::atomic<bool> restraints_lock;
209 static void get_restraints_lock(const std::string &calling_function_name);
210 static void release_restraints_lock(const std::string &calling_function_name);
211 static std::string restraints_locking_function_name; // static because it is set by above
212
213 bool particles_have_been_shown_already_for_this_round_flag;
214
215#ifdef DOXYGEN_SHOULD_PARSE_THIS
216#else
217 int servalcat_refine_xray_internal(int imol, int imol_map, const std::string &output_prefix,
218 const std::map<std::string, std::string> &key_value_pairs);
219#endif
220
221
222#ifdef SKIP_FOR_PYTHON_DOXYGEN
223#else
228 std::pair<short int, clipper::RTop_orth> get_lsq_matrix_internal(int imol_ref, int imol_mov, bool summary_to_screen) const;
229#endif
230
232 get_q_score_validation_information(mmdb::Manager *mol, int udd_q_score, bool do_per_atom) const;
233
234#endif
235
236
237 bool refinement_immediate_replacement_flag = true;
238 int imol_moving_atoms;
239 enum moving_atoms_asc_t {
240 NEW_COORDS_UNSET = 0, // moving_atoms_asc_type values
241 NEW_COORDS_ADD = 1, // not used?
242 NEW_COORDS_REPLACE = 2,
243 NEW_COORDS_REPLACE_CHANGE_ALTCONF = 3,
244 NEW_COORDS_INSERT = 4,
245 NEW_COORDS_INSERT_CHANGE_ALTCONF = 5};
246 short int moving_atoms_asc_type;
247
248#ifdef DOXYGEN_SHOULD_PARSE_THIS
249#else
250 static void all_atom_pulls_off();
251 static std::vector<atom_pull_info_t> atom_pulls;
252 // nanobinds doesn't have a atom_spec_t, does it?
253 static void atom_pull_off(const coot::atom_spec_t &spec);
254 static void atom_pulls_off(const std::vector<coot::atom_spec_t> &specs);
255#endif
256
257#ifdef DOXYGEN_SHOULD_PARSE_THIS
258#else
259 std::vector<std::pair<mmdb::Residue *, std::vector<coot::dict_torsion_restraint_t> > > make_rotamer_torsions(const std::vector<std::pair<bool, mmdb::Residue *> > &local_residues) const;
260#endif
261
270
271#ifdef DOXYGEN_SHOULD_PARSE_THIS
272#else
274 int refine_direct(int imol, std::vector<mmdb::Residue *> rv, const std::string &alt_loc, int n_cycles);
275
277 double phi_psi_probability(const coot::util::phi_psi_t &phi_psi, const ramachandrans_container_t &rc) const;
278#endif
279
280#ifdef SKIP_FOR_PYTHON_DOXYGEN
281#else
283 void read_standard_residues();
284
285 std::map<svg_store_key_t, std::string> ligand_svg_store;
286
287 atom_selection_container_t standard_residues_asc;
288#endif
289
290#ifdef DOXYGEN_SHOULD_PARSE_THIS
291#else
292
293 coot::graph_match_info_t overlap_ligands_internal(int imol_ligand, int imol_ref, const std::string &chain_id_ref,
294 int resno_ref, bool apply_rtop_flag);
295
296 int install_model(const coot::molecule_t &m);
297
299 superpose_with_atom_selection(atom_selection_container_t asc_ref,
300 atom_selection_container_t asc_mov,
301 int imol_mov,
302 std::string moving_mol_name,
303 std::string reference_mol_name,
304 bool move_copy_of_imol2_flag);
305#endif
306
307#ifdef HAVE_SSMLIB
308
309 void print_ssm_sequence_alignment(ssm::Align *SSMAlign,
310 atom_selection_container_t asc_ref,
311 atom_selection_container_t asc_mov,
312 mmdb::PAtom *atom_selection1,
313 mmdb::PAtom *atom_selection2,
314 int n_selected_atoms_1, int n_selected_atoms_2,
315 bool move_copy_of_imol2_flag);
316
318 make_ssm_sequence_alignment_as_validation_information(ssm::Align *SSMAlign,
319 atom_selection_container_t asc_ref,
320 atom_selection_container_t asc_mov,
321 mmdb::PAtom *atom_selection1, mmdb::PAtom *atom_selection2,
322 int n_selected_atoms_1, int n_selected_atoms_2,
323 bool move_copy_of_imol2_flag);
324
325 void make_and_print_horizontal_ssm_sequence_alignment(ssm::Align *SSMAlign,
326 atom_selection_container_t asc_ref,
327 atom_selection_container_t asc_mov,
328 mmdb::PAtom *atom_selection1,
329 mmdb::PAtom *atom_selection2,
330 int n_selected_atoms_1, int n_selected_atoms_2) const;
331
332 void map_secondary_structure_headers(ssm::Align *SSMAlign,
333 atom_selection_container_t asc_ref,
334 atom_selection_container_t asc_mov,
335 mmdb::PAtom *atom_selection1,
336 mmdb::PAtom *atom_selection2,
337 int n_selected_atoms_1, int n_selected_atoms_2) const;
338
339 std::pair<std::string, std::string>
340 get_horizontal_ssm_sequence_alignment(ssm::Align *SSMAlign,
341 atom_selection_container_t asc_ref,
342 atom_selection_container_t asc_mov,
343 mmdb::PAtom *atom_selection1, mmdb::PAtom *atom_selection2,
344 int n_selected_atoms_1, int n_selected_atoms_2) const;
345
346 // for gesampt this will be vector of vector
347 std::vector<std::pair<coot::residue_validation_information_t, coot::residue_validation_information_t> >
348 get_pairs(ssm::Align *SSMAlign,
349 atom_selection_container_t asc_ref,
350 atom_selection_container_t asc_mov,
351 mmdb::PAtom *atom_selection1, mmdb::PAtom *atom_selection2,
352 int n_selected_atoms_1, int n_selected_atoms_2) const;
353
354
355 void print_horizontal_ssm_sequence_alignment(std::pair<std::string, std::string> aligned_sequences) const;
356
357 std::string generate_horizontal_ssm_sequence_alignment_string(const std::pair<std::string, std::string> &aligned_sequences) const;
358
359#endif // HAVE_SSMLIB
360
361#ifdef SKIP_FOR_PYTHON_DOXYGEN
362#else
364 int valid_labels(const std::string &mtz_file_name, const std::string &f_col, const std::string &phi_col,
365 const std::string &weight_col, int use_weights) const;
366
367 // water fitting settings
368 float ligand_water_to_protein_distance_lim_max;
369 float ligand_water_to_protein_distance_lim_min;
370 float ligand_water_variance_limit;
371 float ligand_water_sigma_cut_off;
372#endif
373
374 unsigned int max_number_of_simple_mesh_vertices;
375
376 // --------------------- init --------------------------
377#ifdef SKIP_FOR_PYTHON_DOXYGEN
378#else
379 void init(); // private
380#endif
381
382#ifdef SKIP_FOR_PYTHON_DOXYGEN
383#else
385 void debug() const;
386
387 bool map_is_contoured_using_thread_pool_flag;
388 double contouring_time;
389#endif
390
391public:
392
394 explicit molecules_container_t(bool verbose=true);
395
397
401 int imol_refinement_map; // direct access
405 int imol_difference_map; // direct access
406
407 bool use_gemmi; // for mmcif and PDB parsing. 20240112-PE set to true by default in init()
408
409 // -------------------------------- Basic Utilities -----------------------------------
411
416 std::string package_version() const;
417
421 void set_use_gemmi(bool state) { use_gemmi = state; }
422
424 bool get_use_gemmi() { return use_gemmi; }
425
426
430 void set_make_backups(bool state) { make_backups_flag = state; }
431
435 bool get_make_backups() const { return make_backups_flag; }
436
439
445 std::string file_name_to_string(const std::string &file_name) const;
446
450 unsigned int get_number_of_molecules() const { return molecules.size(); }
451
458 void create_empty_molecules(unsigned int n_empty);
459
464
468 void set_map_weight(float w) { map_weight = w; }
469
473 float get_map_weight() const { return map_weight; }
474
479 void scale_map(int imol_map, float scale_factor);
480
487 coot::atom_spec_t atom_cid_to_atom_spec(int imol, const std::string &cid) const;
488
495 coot::residue_spec_t residue_cid_to_residue_spec(int imol, const std::string &cid) const;
496
503 void set_show_timings(bool s) { show_timings = s; }
504
505 // duplicate?
506 // coot::protein_geometry & get_geom() { return geom; }
507
515 moorhen::header_info_t get_header_info(int imol) const;
516
522 int get_imol_enc_any() const;
523
524 // -------------------------------- generic utils -----------------------------------
526
532 std::string get_molecule_name(int imol) const;
533
538 void set_molecule_name(int imol, const std::string &new_name);
539
542
550 bool is_valid_model_molecule(int imol) const;
551
559 bool is_valid_map_molecule(int imol_map) const;
560
566 bool is_a_difference_map(int imol_map) const;
567
571 int new_molecule(const std::string &name);
572
578 int close_molecule(int imol);
579
583
585 void pop_back();
586
588 void clear();
589
598 std::vector<double> get_eigenvalues(int imol, const std::string &chain_id, int res_no, const std::string &ins_code);
599
611 std::string get_eigenvectors_and_eigenvalues(int imol, const std::string &cid);
612
617
618#ifdef SWIG
619#else
620#ifdef DOXYGEN_SHOULD_PARSE_THIS
621#else
623 coot::molecule_t & operator[] (unsigned int imol);
624#endif
625#endif
626
627#ifdef DOXYGEN_SHOULD_PARSE_THIS
628#else
630 mmdb::Manager *get_mol(unsigned int imol) const;
631#endif
632
633// we don't want this in the nanobinds
634#ifdef NB_VERSION_MAJOR
635#else
636 // no protection, for testing only
637 clipper::Xmap<float> get_xmap(int imol) const;
638#endif
639
642
647 void accept_rotamer_probability_tables_compressed_data(const std::string &data_stream);
648
649 // -------------------------------- backup and saving -----------------------------------
651
658
661
662 // -------------------------------- geometry/dictionaries --------------------------------
664
667
673 std::vector<std::string> non_standard_residue_types_in_model(int imol) const;
674
675#ifdef MAKE_ENHANCED_LIGAND_TOOLS
682 // RDKit::RWMol get_rdkit_mol(const std::string &residue_name, int imol_enc);
683
684 // std::shared_ptr<RDKit::RWMol> get_rdkit_mol_shared(const std::string &residue_name, int imol_enc);
685
691 std::string get_rdkit_mol_pickle_base64(const std::string &residue_name, int imol_enc);
692#endif
693
694 // -------------------------------- coordinates utils -----------------------------------
696
702 int read_coordinates(const std::string &file_name);
703
711 int read_pdb(const std::string &file_name);
712
718 int read_small_molecule_cif(const std::string &file_name);
719
732 int read_amber_trajectory(int imol_coords,
733 const std::string &trajectory_file_name,
734 int start_frame,
735 int end_frame,
736 int stride);
737
741 void print_secondary_structure_info(int imol) const;
742
750 void replace_molecule_by_model_from_file(int imol, const std::string &pdb_file_name);
751
757 std::vector<int> split_multi_model_molecule(int imol);
758
764 int make_ensemble(const std::string &model_molecules_list);
765
771 std::string molecule_to_PDB_string(int imol) const;
772
778 std::string molecule_to_mmCIF_string(int imol) const;
779
789 std::pair<int, std::string> get_active_atom(float x, float y, float z, const std::string &displayed_model_molecules_list) const;
790
797 int import_cif_dictionary(const std::string &cif_file_name, int imol_enc);
798
805 std::string get_cif_file_name(const std::string &comp_id, int imol_enc) const;
806
813 std::string get_cif_restraints_as_string(const std::string &comp_id, int imol_enc) const;
814
820 bool copy_dictionary(const std::string &monomer_name, int imol_current, int imol_new);
821
827 int get_monomer(const std::string &monomer_name);
828
837 int get_monomer_from_dictionary(const std::string &comp_id, int imol, bool idealised_flag);
838
848 int get_monomer_and_position_at(const std::string &comp_id, int imol, float x, float y, float z);
849
858 std::map<std::string, std::string>
859 dictionary_atom_name_map(const std::string &comp_id_1, int imol_1, const std::string &comp_id_2, int imol_2);
860
862 std::vector<std::string> get_types_in_molecule(int imol) const;
863
864 // 20221030-PE nice to have one day:
865 // int get_monomer_molecule_by_network_and_dict_gen(const std::string &text);
866
874 std::vector<std::string> get_groups_for_monomers(const std::vector<std::string> &residue_names) const;
875
882 std::string get_group_for_monomer(const std::string &residue_name) const;
883
892 std::string get_hb_type(const std::string &compound_id, int imol_enc, const std::string &atom_name) const;
893
901 std::vector<std::pair<std::string, std::string> > get_gphl_chem_comp_info(const std::string &compound_id, int imol_enc);
902
910 std::vector<std::pair<std::string, std::string> > get_acedrg_atom_types(const std::string &compound_id, int imol_enc) const;
911
924 std::vector<std::pair<std::string, std::string> > get_computed_acedrg_atom_types(const std::string &compound_id, int imol_enc);
925
932 coot::acedrg_types_for_residue_t get_acedrg_atom_types_for_ligand(int imol, const std::string &residue_cid) const;
933
939 void set_occupancy(int imol, const std::string &cid, float occ_new);
940
954 std::string get_molecule_selection_as_json(int imol, const std::string &cid) const;
955
965 std::string get_torsions_for_residues_in_chain(int imol, const std::string &chain_id) const;
966
973 void write_png(const std::string &compound_id, int imol, const std::string &file_name) const;
974
981 int write_coordinates(int imol, const std::string &file_name) const;
982
991
1006 coot::simple_mesh_t get_bonds_mesh(int imol, const std::string &mode,
1007 bool against_a_dark_background,
1008 float bond_width, float atom_radius_to_bond_width_ratio,
1009 int smoothness_factor);
1010
1028 coot::instanced_mesh_t get_bonds_mesh_instanced(int imol, const std::string &mode,
1029 bool against_a_dark_background,
1030 float bond_width, float atom_radius_to_bond_width_ratio,
1031 bool show_atoms_as_aniso_flag,
1032 bool show_aniso_atoms_as_ortep_flag,
1033 bool show_aniso_atoms_as_empty,
1034 bool draw_hydrogen_atoms_flag,
1035 int smoothness_factor);
1036
1042 coot::instanced_mesh_t get_bonds_mesh_for_selection_instanced(int imol, const std::string &atom_selection_cid,
1043 const std::string &mode,
1044 bool against_a_dark_background,
1045 float bond_width, float atom_radius_to_bond_width_ratio,
1046 bool show_atoms_as_aniso_flag,
1047 bool show_aniso_atoms_as_ortep_flag,
1048 bool show_aniso_atoms_as_empty_flag,
1049 bool draw_hydrogen_atoms_flag,
1050 int smoothness_factor);
1051
1060 coot::instanced_mesh_t get_goodsell_style_mesh_instanced(int imol, float colour_wheel_rotation_step,
1061 float saturation, float goodselliness);
1062
1074 void export_map_molecule_as_gltf(int imol, float pos_x, float pos_y, float pos_z, float radius, float contour_level,
1075 const std::string &file_name);
1076
1085 const std::string &selection_cid,
1086 const std::string &mode,
1087 bool against_a_dark_background,
1088 float bonds_width, float atom_radius_to_bond_width_ratio, int smoothness_factor,
1089 bool draw_hydrogen_atoms_flag, bool draw_missing_residue_loops,
1090 const std::string &file_name);
1091
1102 void export_molecular_representation_as_gltf(int imol, const std::string &atom_selection_cid,
1103 const std::string &colour_scheme, const std::string &style,
1104 int secondary_structure_usage_flag,
1105 const std::string &file_name);
1106
1109 void export_chemical_features_as_gltf(int imol, const std::string &cid,
1110 const std::string &file_name) const;
1111
1116 void set_gltf_pbr_roughness_factor(int imol, float roughness_factor);
1117
1122 void set_gltf_pbr_metalicity_factor(int imol, float metalicity);
1123
1126
1129
1158 void ray_trace_image(const std::string &json_str);
1159
1166 std::vector<glm::vec4> get_colour_table(int imol, bool against_a_dark_background) const;
1167
1172 void set_colour_wheel_rotation_base(int imol, float r);
1173
1180 void set_base_colour_for_bonds(int imol, float r, float g, float b);
1181
1186 void add_to_non_drawn_bonds(int imol, const std::string &atom_selection_cid);
1187
1192
1196 void print_non_drawn_bonds(int imol) const;
1197
1199 void set_user_defined_bond_colours(int imol, const std::map<unsigned int, std::array<float, 4> > &colour_map);
1200
1204 void set_user_defined_atom_colour_by_selection(int imol, const std::vector<std::pair<std::string, unsigned int> > &indexed_residues_cids,
1205 bool colour_applies_to_non_carbon_atoms_also);
1206
1208 void add_colour_rule(int imol, const std::string &selection_cid, const std::string &colour);
1209
1215 void add_colour_rules_multi(int imol, const std::string &selections_and_colours_combo_string);
1216
1220 void delete_colour_rules(int imol);
1221
1225 std::vector<std::pair<std::string, std::string> > get_colour_rules(int imol) const;
1226
1230 void print_colour_rules(int imol) const;
1231
1235 void set_use_bespoke_carbon_atom_colour(int imol, bool state);
1236
1241
1243 void M2T_updateFloatParameter(int imol, const std::string &param_name, float value);
1244
1246 void M2T_updateIntParameter(int imol, const std::string &param_name, int value);
1247
1259 const std::string &colour_scheme,
1260 const std::string &style,
1261 int secondary_structure_usage_flag);
1262
1270 bool set_residue_properties(int imol, const std::string &json_string);
1271
1272 // \brief clear the reisidue properties
1276
1289 coot::simple_mesh_t get_gaussian_surface(int imol, float sigma, float contour_level,
1290 float box_radius, float grid_scale, float b_factor) const;
1291
1306 float sigma, float contour_level,
1307 float box_radius, float grid_scale,
1308 float b_factor) const;
1309
1310 // Make a map from a gaussian surface
1326 int gaussian_surface_to_map_molecule(int imol_map_ref, int imol_model,
1327 const std::string &cid,
1328 float sigma, float box_radius, float fft_b_factor);
1329
1330 // Make a map from a gaussian surface
1343 int gaussian_surface_to_map_molecule_v2(int imol, const std::string &cid,
1344 float sigma, float box_radius,
1345 float grid_scale, float fft_b_factor);
1346
1353 coot::simple_mesh_t get_chemical_features_mesh(int imol, const std::string &cid) const;
1354
1365 mmdb::Atom *get_atom_using_cid(int imol, const std::string &cid) const;
1366
1377 mmdb::Residue *get_residue_using_cid(int imol, const std::string &cid) const;
1378
1379#ifdef DOXYGEN_SHOULD_PARSE_THIS
1380#else
1384 mmdb::Atom *get_atom(int imol, const coot::atom_spec_t &atom_spec) const;
1388 mmdb::Residue *get_residue(int imol, const coot::residue_spec_t &residue_spec) const;
1390 std::pair<bool, coot::Cartesian> get_atom_position(int imol, coot::atom_spec_t &atom_spec);
1391#endif
1392
1401 bool residue_is_nucleic_acid(int imol, const std::string &cid) const;
1402
1409 std::vector<double> get_residue_CA_position(int imol, const std::string &cid) const;
1410
1417 std::vector<double> get_residue_average_position(int imol, const std::string &cid) const;
1418
1425 std::vector<double> get_residue_sidechain_average_position(int imol, const std::string &cid) const;
1426
1432 unsigned int get_number_of_atoms(int imol) const;
1433
1439 float get_molecule_diameter(int imol) const;
1440
1449 int get_number_of_hydrogen_atoms(int imol) const;
1450
1456 std::vector<std::string> get_chains_in_model(int imol) const;
1457
1463 std::vector<std::vector<std::string> > get_ncs_related_chains(int imol) const;
1464
1471 std::vector<std::pair<coot::residue_spec_t, std::string> > get_single_letter_codes_for_chain(int imol, const std::string &chain_id) const;
1472
1478 std::vector<std::string> get_residue_names_with_no_dictionary(int imol) const;
1479
1488 std::string get_residue_name(int imol, const std::string &chain_id, int res_no, const std::string &ins_code) const;
1489
1495 std::string get_residue_type(int imol, const std::string &cid) const;
1496
1504 std::string get_SMILES_for_residue_type(const std::string &residue_name, int imol_enc) const;
1505
1512 std::vector<coot::residue_spec_t> residues_with_missing_atoms(int imol);
1513
1514#ifdef DOXYGEN_SHOULD_PARSE_THIS
1515#else
1517 // (20230117-PE I should fix that)
1523 coot::util::missing_atom_info missing_atoms_info_raw(int imol);
1524#endif
1525
1530 std::vector<coot::residue_range_t> get_missing_residue_ranges(int imol) const;
1531
1539 std::vector<coot::residue_spec_t> get_residues_near_residue(int imol, const std::string &residue_cid, float dist) const;
1540
1547 std::vector<coot::atom_distance_t>
1548 get_distances_between_atoms_of_residues(int imol, const std::string &cid_res_1, const std::string &cid_res_2,
1549 float dist_max) const;
1550
1559 superpose_results_t SSM_superpose(int imol_ref, const std::string &chain_id_ref,
1560 int imol_mov, const std::string &chain_id_mov);
1561
1571 void add_lsq_superpose_match(const std::string &chain_id_ref, int res_no_ref_start, int res_no_ref_end,
1572 const std::string &chain_id_mov, int res_no_mov_start, int res_no_mov_end,
1573 int match_type);
1574
1583 void add_lsq_superpose_atom_match(const std::string &chain_id_ref, int res_no_ref, const std::string &atom_name_ref,
1584 const std::string &chain_id_mov, int res_no_mov, const std::string &atom_name_mov);
1585
1588
1589 std::vector<coot::lsq_range_match_info_t> lsq_matchers;
1590
1596 bool lsq_superpose(int imol_ref, int imol_mov);
1597
1608 int transform_map_using_lsq_matrix(int imol_map, lsq_results_t lsq_matrix, float x, float y, float z, float radius);
1618 lsq_results_t get_lsq_matrix(int imol_ref, int imol_mov, bool summary_to_screen) const;
1619
1623 coot::symmetry_info_t
1624 get_symmetry(int imol, float symmetry_search_radius, float centre_x, float centre_y, float centre_z) const;
1625
1633 ::api::cell_t get_cell(int imol) const;
1634
1641
1647 int undo(int imol);
1648
1654 int redo(int imol);
1655
1663 std::pair<int, double> get_torsion(int imol, const std::string &cid, const std::vector<std::string> &atom_names);
1664
1670 void set_temperature_factors_using_cid(int imol, const std::string &cid, float temp_fact);
1671
1672 // -------------------------------- map utils -------------------------------------------
1674
1675#ifdef DOXYGEN_SHOULD_PARSE_THIS
1676#else
1678 float map_sampling_rate;
1679#endif
1680
1684 float get_map_sampling_rate() { return map_sampling_rate; }
1685
1692 void set_map_sampling_rate(float msr) { map_sampling_rate = msr; }
1693
1704 int read_mtz(const std::string &file_name, const std::string &f, const std::string &phi, const std::string &weight,
1705 bool use_weight, bool is_a_difference_map);
1706
1714 int replace_map_by_mtz_from_file(int imol, const std::string &file_name, const std::string &f, const std::string &phi,
1715 const std::string &weight, bool use_weight);
1716
1718 class auto_read_mtz_info_t {
1719 public:
1721 int idx;
1723 std::string F;
1725 std::string phi;
1727 std::string w;
1731 std::string F_obs;
1733 std::string sigF_obs;
1735 std::string Rfree;
1736 // constructor
1737 auto_read_mtz_info_t() {idx = -1; weights_used = false; }
1738 // constructor
1739 auto_read_mtz_info_t(int index, const std::string &F_in, const std::string &phi_in) :
1740 idx(index), F(F_in), phi(phi_in), weights_used(false) {}
1741 // set Fobs sigFobs column labels
1742 void set_fobs_sigfobs(const std::string &f, const std::string &s) {
1743 F_obs = f;
1744 sigF_obs = s;
1745 }
1746 };
1747
1753 std::vector<auto_read_mtz_info_t> auto_read_mtz(const std::string &file_name);
1754
1763 int read_ccp4_map(const std::string &file_name, bool is_a_difference_map);
1764
1771 int write_map(int imol, const std::string &file_name) const;
1772
1778 float get_map_mean(int imol) const;
1779
1787 float get_map_rmsd_approx(int imol_map) const;
1788
1797 coot::molecule_t::histogram_info_t get_map_histogram(int imol, unsigned int n_bins, float zoom_factor) const;
1798
1799
1804
1810 bool is_EM_map(int imol) const;
1811
1819 int sharpen_blur_map(int imol_map, float b_factor, bool in_place_flag);
1820
1831 int sharpen_blur_map_with_resample(int imol_map, float b_factor, float resample_factor, bool in_place_flag);
1832
1846 int mask_map_by_atom_selection(int imol_coords, int imol_map, const std::string &cid, float atom_radius, bool invert_flag);
1847
1860 std::vector<int> partition_map_by_chain(int imol_map, int imol_model);
1861
1870 int make_mask(int imol_map_ref, int imol_model, const std::string &atom_selection_cid, float radius);
1871
1877 int flip_hand(int imol_map);
1878
1885 std::vector<int> make_masked_maps_split_by_chain(int imol, int imol_map);
1886
1892 int dedust_map(int imol);
1893
1904 void set_map_colour(int imol, float r, float g, float b);
1905
1910
1923 coot::simple_mesh_t get_map_contours_mesh(int imol, double position_x, double position_y, double position_z,
1924 float radius, float contour_level);
1925
1941 double position_x, double position_y, double position_z,
1942 float radius, float contour_level,
1943 float other_map_for_colouring_min_value,
1944 float other_map_for_colouring_max_value,
1945 bool invert_colour_ramp);
1950 void set_map_colour_saturation(int imol, float s);
1951 void set_colour_map_for_map_coloured_by_other_map(std::vector<std::pair<double, std::vector<double> > > colour_table );
1952
1953 user_defined_colour_table_t colour_map_by_other_map_user_defined_table;
1954
1964 double position_x, double position_y, double position_z,
1965 float radius, float contour_level,
1966 unsigned int n_bins);
1967
1968
1969
1973 coot::util::sfcalc_genmap_stats_t get_latest_sfcalc_stats() const { return latest_sfcalc_stats; }
1974
1976 public:
1977 float r_factor; // 0 to 1
1978 float free_r_factor;
1979 int rail_points_total;
1980 int rail_points_new;
1981 };
1982
1987
1993 std::string r_factor_stats_as_string(const r_factor_stats &rfs) const;
1994
2005 int average_map(const std::string &imol_maps, std::vector<float> &scales);
2006
2017 bool regen_map(int imol_map, const std::string &imol_maps, const std::vector<float> &scales);
2018
2019 // -------------------------------- coordinates modelling -------------------------------
2021
2032 int auto_fit_rotamer(int imol, const std::string &chain_id, int res_no, const std::string &ins_code, const std::string &alt_conf,
2033 int imol_map);
2034
2042 coot::molecule_t::rotamer_change_info_t change_to_next_rotamer(int imol, const std::string &residue_cid, const std::string &alt_conf);
2043
2051 coot::molecule_t::rotamer_change_info_t change_to_previous_rotamer(int imol, const std::string &residue_cid, const std::string &alt_conf);
2052
2060 coot::molecule_t::rotamer_change_info_t change_to_first_rotamer(int imol, const std::string &residue_cid, const std::string &alt_conf);
2061
2069 int set_residue_to_rotamer_number(int imol, const std::string &residue_cid, const std::string &alt_conf, int rotamer_number);
2070
2078 std::pair<int, unsigned int> delete_using_cid(int imol, const std::string &cid, const std::string &scope);
2079
2090 std::pair<int, unsigned int> delete_atom(int imol, const std::string &chain_id, int res_no, const std::string &ins_code,
2091 const std::string &atom_name, const std::string &alt_conf);
2092
2099 std::pair<int, unsigned int> delete_atom_using_cid(int imol, const std::string &cid);
2100
2110 std::pair<int, unsigned int> delete_residue(int imol, const std::string &chain_id, int res_no, const std::string &ins_code);
2111
2118 std::pair<int, unsigned int> delete_residue_using_cid(int imol, const std::string &cid);
2119
2129 std::pair<int, unsigned int> delete_residue_atoms_with_alt_conf(int imol, const std::string &chain_id, int res_no,
2130 const std::string &ins_code, const std::string &alt_conf);
2136 std::pair<int, unsigned int> delete_residue_atoms_using_cid(int imol, const std::string &cid);
2137
2146 std::pair<int, unsigned int> delete_side_chain(int imol, const std::string &chain_id, int res_no, const std::string &ins_code);
2147
2154 std::pair<int, unsigned int> delete_side_chain_using_cid(int imol, const std::string &cid);
2155
2162 std::pair<int, unsigned int> delete_chain_using_cid(int imol, const std::string &cid);
2163
2170 std::pair<int, unsigned int> delete_literal_using_cid(int imol, const std::string &cid);
2171
2178
2179 // (I should have) change(d) that stupid (alt) loc (I should have made you leave your key)
2180 //
2192 int change_alt_locs(int imol, const std::string &cid, const std::string &change_mode);
2193
2202 std::pair<int, std::string> add_terminal_residue_directly(int imol, const std::string &chain_id, int res_no, const std::string &ins_code);
2203
2204 // std::pair<int, std::string> add_terminal_residue_directly_using_cid(int imol, const std::string &cid);
2205 //
2211 int add_terminal_residue_directly_using_cid(int imol, const std::string &cid);
2212
2220
2226
2231 ligand_water_to_protein_distance_lim_min = d;
2232 }
2233
2238 ligand_water_to_protein_distance_lim_max = d;
2239 }
2240
2245 ligand_water_variance_limit = d;
2246 }
2247
2252 ligand_water_sigma_cut_off = d;
2253 }
2254
2261 int add_waters(int imol_model, int imol_map);
2262
2270 int flood(int imol_model, int imol_map, float n_rmsd);
2271
2277 int add_hydrogen_atoms(int imol_model);
2278
2284 int delete_hydrogen_atoms(int imol_model);
2285
2292 int add_alternative_conformation(int imol_model, const std::string &cid);
2293
2302 int fill_partial_residue(int imol, const std::string &chain_id, int res_no, const std::string &ins_code);
2303
2310 int fill_partial_residue_using_cid(int imol, const std::string &cid);
2311
2318
2327 void add_named_glyco_tree(int imol_model, int imol_map, const std::string &glycosylation_name,
2328 const std::string &asn_chain_id, int asn_res_no);
2329
2330#if NB_VERSION_MAJOR
2331#else
2339 int flip_peptide(int imol, const coot::atom_spec_t &atom_spec, const std::string &alt_conf);
2340#endif
2341
2349 int flip_peptide_using_cid(int imol, const std::string &atom_cid, const std::string &alt_conf);
2350
2357 void eigen_flip_ligand(int imol, const std::string &chain_id, int res_no, const std::string &ins_code);
2358
2363 void eigen_flip_ligand_using_cid(int imol, const std::string &residue_cid);
2364
2372 int mutate(int imol, const std::string &cid, const std::string &new_residue_type);
2373
2380 int side_chain_180(int imol, const std::string &atom_cid);
2381
2389 std::string jed_flip(int imol, const std::string &atom_cid, bool invert_selection);
2390
2399 int move_molecule_to_new_centre(int imol, float x, float y, float z);
2400
2406 void multiply_residue_temperature_factors(int imol, const std::string &cid, float factor);
2407
2413 coot::Cartesian get_molecule_centre(int imol) const;
2414
2421 double get_radius_of_gyration(int imol) const;
2422
2428 int copy_molecule(int imol);
2429
2436 int copy_fragment_using_cid(int imol, const std::string &multi_cid);
2437
2449 int copy_fragment_for_refinement_using_cid(int imol, const std::string &multi_cid);
2450
2459 int copy_fragment_using_residue_range(int imol, const std::string &chain_id, int res_no_start, int res_no_end);
2460
2464 int apply_transformation_to_atom_selection(int imol, const std::string &atoms_selection_cid,
2465 int n_atoms, // for validation of the atom selection, (int because mmdb atom type)
2466 float m00, float m01, float m02,
2467 float m10, float m11, float m12,
2468 float m20, float m21, float m22,
2469 float c0, float c1, float c2, // the centre of the rotation
2470 float t0, float t1, float t2); // translation
2471
2477 int new_positions_for_residue_atoms(int imol, const std::string &residue_cid, std::vector<coot::api::moved_atom_t> &moved_atoms);
2478
2483 int new_positions_for_atoms_in_residues(int imol, const std::vector<coot::api::moved_residue_t> &moved_residues);
2484
2494 std::pair<int, std::vector<merge_molecule_results_info_t> >
2495 merge_molecules(int imol, const std::string &list_of_other_molecules);
2496
2497 // this is called by the above function and is useful for other non-api functions (such as add_compound()).
2498
2499#ifdef SKIP_FOR_PYTHON_DOXYGEN
2500//#ifdef DOXYGEN_SHOULD_PARSE_THIS
2501#else
2502 std::pair<int, std::vector<merge_molecule_results_info_t> >
2503 merge_molecules(int imol, std::vector<mmdb::Manager *> mols);
2504#endif
2505
2512 int cis_trans_convert(int imol, const std::string &atom_cid);
2513
2528 void replace_residue(int imol, const std::string &residue_cid, const std::string &new_residue_type, int imol_enc);
2529
2537 int replace_fragment(int imol_base, int imol_reference, const std::string &atom_selection);
2538
2544 int rigid_body_fit(int imol, const std::string &multi_cid, int imol_map);
2545
2560 int rotate_around_bond(int imol, const std::string &residue_cid,
2561 const std::string &atom_name_1,
2562 const std::string &atom_name_2,
2563 const std::string &atom_name_3,
2564 const std::string &atom_name_4,
2565 double torsion_angle);
2566
2578 std::pair<int, std::string> change_chain_id(int imol, const std::string &from_chain_id,
2579 const std::string &to_chain_id,
2580 bool use_resno_range,
2581 int start_resno, int end_resno);
2582
2592 int split_residue_using_map(int imol, const std::string &residue_cid, int imol_diff_map);
2593
2599 void associate_sequence(int imol, const std::string &name_or_chain_id, const std::string &sequence);
2600
2609 void assign_sequence(int imol_model, int imol_map);
2610
2615 std::vector<std::pair<std::string, std::string> > get_sequence_info(int imol) const;
2616
2624 coot::chain_mutation_info_container_t get_mutation_info(int imol) const;
2625
2626 // -------------------------------- Coordinates Refinement ------------------------------
2628
2638 int refine_residues_using_atom_cid(int imol, const std::string &cid, const std::string &mode, int n_cycles);
2639
2652 int refine_residues(int imol, const std::string &chain_id, int res_no, const std::string &ins_code,
2653 const std::string &alt_conf, const std::string &mode, int n_cycles);
2654
2664 int refine_residue_range(int imol, const std::string &chain_id, int res_no_start, int res_no_end, int n_cycles);
2665
2681 std::pair<int, coot::instanced_mesh_t>
2682 minimize_energy(int imol, const std::string &atom_selection_cid,
2683 int n_cycles,
2684 bool do_rama_plot_restraints, float rama_plot_weight,
2685 bool do_torsion_restraints, float torsion_weight, bool refinement_is_quiet);
2686
2698 float
2699 minimize(int imol, const std::string &atom_selection_cid,
2700 int n_cycles,
2701 bool do_rama_plot_restraints, float rama_plot_weight,
2702 bool do_torsion_restraints, float torsion_weight, bool refinement_is_quiet);
2703
2710 void fix_atom_selection_during_refinement(int imol, const std::string &atom_selection_cid);
2711
2719 void add_target_position_restraint(int imol, const std::string &atom_cid, float pos_x, float pos_y, float pos_z);
2720
2725 void clear_target_position_restraint(int imol, const std::string &atom_cid);
2726
2731
2735 void set_logging_level(const std::string &level);
2736
2740 void set_logging_file(const std::string &file_name);
2741
2745 void set_use_rama_plot_restraints(bool state) { use_rama_plot_restraints = state; }
2746
2750 bool get_use_rama_plot_restraints() const { return use_rama_plot_restraints; }
2751
2755 void set_rama_plot_restraints_weight(float f) { rama_plot_restraints_weight = f; }
2756
2760 float get_rama_plot_restraints_weight() const { return rama_plot_restraints_weight; }
2761
2765 void set_use_torsion_restraints(bool state) { use_torsion_restraints = state; }
2766
2770 bool get_use_torsion_restraints() const { return use_torsion_restraints; }
2771
2775 void set_torsion_restraints_weight(float f) { torsion_restraints_weight = f; }
2776
2780 float get_torsion_restraints_weight() const { return torsion_restraints_weight; }
2781
2787 void init_refinement_of_molecule_as_fragment_based_on_reference(int imol_frag, int imol_ref, int imol_map);
2788
2799 std::pair<int, coot::instanced_mesh_t> refine(int imol, int n_cycles);
2800
2816 float pos_x, float pos_y, float pos_z,
2817 int n_cycles);
2822
2827 void clear_refinement(int imol);
2828
2834 void set_refinement_is_verbose(bool state) { refinement_is_quiet = !state; }
2835
2839 void set_refinement_geman_mcclure_alpha(float a) { geman_mcclure_alpha = a; }
2840
2844 float get_geman_mcclure_alpha() const { return geman_mcclure_alpha; }
2845
2850 int generate_self_restraints(int imol, float local_dist_max);
2851
2857 void generate_chain_self_restraints(int imol, float local_dist_max,
2858 const std::string &chain_id);
2859
2865 void generate_local_self_restraints(int imol, float local_dist_max,
2866 const std::string &residue_cids);
2867
2874 const std::string &residue_cid_1,
2875 const std::string &residue_cid_2);
2876
2882
2886 int read_extra_restraints(int imol, const std::string &file_name);
2887
2892
2900 int servalcat_refine_xray(int imol, int imol_map, const std::string &output_prefix);
2901
2902#if NB_VERSION_MAJOR
2911 int servalcat_refine_xray_with_keywords(int imol, int imol_map, const std::string &output_prefix,
2912 const nanobind::dict &key_value_pairs);
2913#endif
2914
2915 // -------------------------------- Coordinates validation ------------------------------
2917
2924
2931
2940
2946 std::vector<coot::phi_psi_prob_t> ramachandran_validation(int imol) const;
2947
2955 coot::instanced_mesh_t contact_dots_for_ligand(int imol, const std::string &cid, unsigned int smoothness_factor) const;
2956
2963 coot::instanced_mesh_t all_molecule_contact_dots(int imol, unsigned int smoothness_factor) const;
2964
2972 // Note this function is not const because we pass a pointer to the protein_geometry geom.
2973 coot::simple::molecule_t get_simple_molecule(int imol, const std::string &residue_cid, bool draw_hydrogen_atoms_flag);
2974
2982
2990 std::vector<moorhen::h_bond> get_h_bonds(int imol, const std::string &cid_str, bool mcdonald_and_thornton_mode) const;
2991
2999 // Function is not const because it might change the protein_geometry geom.
3001
3009 std::vector<coot::geometry_distortion_info_pod_container_t>
3010 get_ligand_validation_vs_dictionary(int imol, const std::string &ligand_cid, bool include_non_bonded_contacts);
3011
3019 std::vector<coot::geometry_distortion_info_pod_container_t>
3020 get_validation_vs_dictionary_for_selection(int imol, const std::string &selection_cid, bool include_non_bonded_contacts);
3021
3031 std::pair<int, double> get_ligand_distortion(int imol, const std::string &ligand_cid, bool include_non_bonded_contacts);
3032
3041 bool match_ligand_torsions(int imol_ligand, int imol_ref, const std::string &chain_id_ref, int resno_ref);
3042
3054 bool match_ligand_position(int imol_ligand, int imol_ref, const std::string &chain_id_ref, int resno_ref);
3055
3064 bool match_ligand_torsions_and_position(int imol_ligand, int imol_ref, const std::string &chain_id_ref, int resno_ref);
3065
3071 bool match_ligand_torsions_and_position_using_cid(int imol_ligand, int imol_ref, const std::string &cid);
3072
3073 // not const because it can dynamically add dictionaries
3075 coot::atom_overlaps_dots_container_t get_overlap_dots(int imol);
3076
3081 coot::atom_overlaps_dots_container_t get_overlap_dots_for_ligand(int imol, const std::string &cid_ligand);
3082
3084 // not const because it can dynamically add dictionaries
3089 std::vector<coot::plain_atom_overlap_t> get_atom_overlaps(int imol);
3090
3095 float get_atom_overlap_score(int imol);
3096
3098 // not const because it can dynamically add dictionaries
3102 std::vector<coot::plain_atom_overlap_t> get_overlaps_for_ligand(int imol, const std::string &cid_ligand);
3103
3111 std::vector <positioned_atom_spec_t>
3112 get_atom_differences(int imol1, int imol2);
3113
3118 std::string get_pucker_analysis_info(int imol) const;
3119
3120
3121 // -------------------------------- Coordinates and map validation ----------------------
3123
3132 coot::validation_information_t density_fit_analysis(int imol_model, int imol_map) const;
3133
3136 double get_sum_density_for_atoms_in_residue(int imol, const std::string &cid,
3137 const std::vector<std::string> &atom_names,
3138 int imol_map);
3139
3145 int get_number_of_atoms_in_residue(int imol, const std::string &residue_cid) const;
3146
3154
3161
3168
3177 coot::validation_information_t ramachandran_analysis_for_chain(int imol_model, const std::string &chain_id) const;
3178
3185
3191 float get_median_temperature_factor(int imol) const;
3192
3199 float get_temperature_factor_of_atom(int imol, const std::string &atom_cid) const;
3200
3206 std::vector<coot::molecule_t::interesting_place_t> get_interesting_places(int imol, const std::string &mode) const;
3207
3215 std::vector<coot::molecule_t::interesting_place_t> difference_map_peaks(int imol_map, int imol_protein, float n_rmsd) const;
3216
3224 std::vector<coot::molecule_t::interesting_place_t> pepflips_using_difference_map(int imol_coords, int imol_difference_map, float n_sigma) const;
3225
3234 std::vector<coot::molecule_t::interesting_place_t> unmodelled_blobs(int imol_model, int imol_map,
3235 float rmsd_cut_off) const;
3236
3249 // Use the string_user_data of the spec for the button label
3250 std::vector <coot::atom_spec_t>
3251 find_water_baddies(int imol_model, int imol_map,
3252 float b_factor_lim,
3253 float outlier_sigma_level,
3254 float min_dist, float max_dist,
3255 bool ignore_part_occ_contact_flag,
3256 bool ignore_zero_occ_flag);
3257
3264 float start_pos_x, float start_pos_y, float start_pos_z,
3265 float end_pos_x, float end_pos_y, float end_pos_z) const;
3266
3276#ifdef SWIG
3277#else
3278 std::pair<std::map<coot::residue_spec_t, coot::util::density_correlation_stats_info_t>,
3279 std::map<coot::residue_spec_t, coot::util::density_correlation_stats_info_t> >
3280 get_mmrrcc(int imol, const std::string &chain_id, unsigned int n_residue_per_residue_range, int imol_map) const;
3281
3289 std::pair<std::map<coot::residue_spec_t, coot::util::density_correlation_stats_info_t>,
3290 std::map<coot::residue_spec_t, coot::util::density_correlation_stats_info_t> >
3291 mmrrcc(int imol, const std::string &chain_id, int imol_map) const;
3292#endif
3293
3294 // calculate the MMRRCC for the residues in the chain
3295 // Multi Masked Residue Range Corellation Coefficient
3296#ifdef SWIG
3297#else
3298 std::pair<std::map<coot::residue_spec_t, coot::util::density_correlation_stats_info_t>,
3299 std::map<coot::residue_spec_t, coot::util::density_correlation_stats_info_t> >
3300 mmrrcc_internal(const atom_selection_container_t &asc,
3301 const std::string &chain_id,
3302 unsigned int n_residue_per_residue_range,
3303 const clipper::Xmap<float> &xmap) const;
3304#endif
3305
3314 std::vector<std::pair<double, double> > fourier_shell_correlation(int imol_map_1, int imol_map_2) const;
3315
3322 int make_power_scaled_map(int imol_ref, int imol_map_for_scaling);
3323
3330 coot::validation_information_t get_q_score(int imol_model, int imol_map) const;
3331
3339 coot::validation_information_t get_q_score_for_cid(int imol_model, const std::string &cid, int imol_map) const;
3340
3347 std::pair<float,float> get_mean_and_variance_of_density_for_non_water_atoms(int imol_coords, int imol_map) const;
3348
3355 float get_spherical_variance(int imol_map, int imol_model, const std::string &atom_cid, float mean_density_other_atoms) const;
3356
3357 // -------------------------------- Rail Points ------------------------------------------
3359
3364
3369
3370 // -------------------------------- Updating Maps ---------------------------------------
3372
3382 void associate_data_mtz_file_with_map(int imol, const std::string &data_mtz_file_name,
3383 const std::string &f_col, const std::string &sigf_col,
3384 const std::string &free_r_col);
3385
3397 int connect_updating_maps(int imol_model, int imol_with_data_info_attached, int imol_map_2fofc, int imol_map_fofc);
3398
3406 void sfcalc_genmap(int imol_model,
3407 int imol_map_with_data_attached,
3408 int imol_updating_difference_map);
3409
3426 int imol_2fofc_map,
3427 int imol_updating_difference_map,
3428 int imol_map_with_data_attached);
3429
3440 bool shift_field_b_factor_refinement(int imol, int imol_with_data_attached);
3441
3449 float get_density_at_position(int imol_map, float x, float y, float z) const;
3450
3458 // This is a light-weight fetch, the values have already been computed, here
3459 // were are merely copying them.
3460 std::vector<std::pair<clipper::Coord_orth, float> > get_diff_diff_map_peaks(int imol_diff_map,
3461 float screen_centre_x,
3462 float screen_centre_y,
3463 float screen_centre_z) const;
3464
3465
3469 std::string get_data_set_file_name(int imol) const;
3470
3471 // -------------------------------- Go To Blob ---------------------------------------
3473
3490 std::pair<bool, clipper::Coord_orth> go_to_blob(float x1, float y1, float z1, float x2, float y2, float z2,
3491 float contour_level);
3492
3493
3494 // -------------------------------- Ligand Functions ---------------------------------------
3496
3499 // I am not yet clear what extra cut-offs and flags need to be added here.
3515 std::vector<int> fit_ligand_right_here(int imol_protein, int imol_map, int imol_ligand, float x, float y, float z,
3516 float n_rmsd, bool use_conformers, unsigned int n_conformers);
3517
3521
3522 class fit_ligand_info_t {
3523 public:
3524 int imol; // the imol of the fitted ligand
3525 int cluster_idx; // the index of the cluster
3526 int ligand_idx; // the ligand idx for a given cluster
3527 float fitting_score;
3528 float cluster_volume;
3529 fit_ligand_info_t(int i, int c, int l) : imol(i), cluster_idx(c), ligand_idx(l) { fitting_score = -1.0; cluster_volume = -1.0;}
3530 fit_ligand_info_t() { imol = -1; cluster_idx = -1; ligand_idx = -1; fitting_score = 1.0; cluster_volume = -1.0; }
3532 float get_fitting_score() const { return fitting_score; }
3533 float get_cluster_volume() const { return cluster_volume; }
3534 };
3535
3546 std::vector<fit_ligand_info_t> fit_ligand(int imol_protein, int imol_map, int imol_ligand,
3547 float n_rmsd, bool use_conformers, unsigned int n_conformers);
3548
3559 std::vector<fit_ligand_info_t> fit_ligand_multi_ligand(int imol_protein, int imol_map, const std::string &multi_ligand_molecule_number_list,
3560 float n_rmsd, bool use_conformers, unsigned int n_conformers);
3561
3570 float fit_to_map_by_random_jiggle(int imol, const coot::residue_spec_t &res_spec, int n_trials, float translation_scale_factor);
3571
3580 float fit_to_map_by_random_jiggle_using_cid(int imol, const std::string &cid, int n_trials, float translation_scale_factor);
3581
3591 float fit_to_map_by_random_jiggle_with_blur_using_cid(int imol, int imol_map, const std::string &cid, float b_factor,
3592 int n_trials, float translation_scale_factor);
3593
3606
3607 int add_compound(int imol, const std::string &tlc, int imol_dict, int imol_map, float x, float y, float z);
3608 // This is a ligand function, not really a ligand-fitting function.
3632 std::string get_svg_for_residue_type(int imol, const std::string &comp_id,
3633 bool use_rdkit_svg,
3634 const std::string &background_type);
3635
3650 std::string get_svg_for_2d_ligand_environment_view(int imol, const std::string &residue_cid, bool add_key);
3651
3658 std::vector<coot::residue_spec_t> get_non_standard_residues_in_molecule(int imol) const;
3659
3666
3677 std::vector<int> get_dictionary_conformers(const std::string &comp_id, int imol_enc, bool remove_internal_clash_conformers);
3678
3689 texture_as_floats_t get_map_section_texture(int imol, int section_id, int axis,
3690 float data_value_for_bottom, float data_value_for_top) const;
3691
3696 int get_number_of_map_sections(int imol_map, int axis_id) const;
3697
3698 // -------------------------------- Others -------------------------------------
3700
3704 coot::simple_mesh_t make_mesh_from_gltf_file(const std::string &file_name);
3705
3711 coot::simple_mesh_t get_octahemisphere(unsigned int n_divisions) const;
3712
3713 unsigned int get_max_number_of_simple_mesh_vertices() const;
3714 void set_max_number_of_simple_mesh_vertices(unsigned int n);
3715
3718 std::string pae_png(const std::string &pae_file_name) const;
3719
3720 // -------------------------------- Testing -------------------------------------
3722
3723 class ltj_stats_t {
3724 public:
3725 unsigned int count;
3726 float function_value;
3727 std::chrono::time_point<std::chrono::high_resolution_clock> timer_start;
3728 std::chrono::time_point<std::chrono::high_resolution_clock> timer;
3729 ltj_stats_t() : timer(std::chrono::high_resolution_clock::now()) {
3730 count = 0;
3731 function_value = 0;
3732 timer_start = timer;
3733 }
3736 timer = std::chrono::high_resolution_clock::now();
3737 count += 1;
3738 }
3739
3744 timer = std::chrono::high_resolution_clock::now();
3745 auto d10 = std::chrono::duration_cast<std::chrono::microseconds>(timer - timer_start).count();
3746 return d10;
3747 }
3748 };
3749
3752
3753 // not for user-control
3754 bool interrupt_long_term_job;
3755
3761 void testing_start_long_term_job(unsigned int n_seconds);
3762
3767
3772
3776 double get_contouring_time() const { return contouring_time; }
3777
3783 void set_max_number_of_threads(unsigned int n_threads);
3784
3788 void set_max_number_of_threads_in_thread_pool(unsigned int n_threads);
3789
3795 double test_the_threading(int n_threads);
3796
3803 double test_launching_threads(unsigned int n_threads_per_batch, unsigned int n_batches) const;
3804
3810 double test_thread_pool_threads(unsigned int n_threads);
3811
3821 int mmcif_tests(bool last_test_only);
3822
3823 // I want this function in the C++ documentation, but not the Python API documentation.
3824 // Hmm.
3825#ifdef DOXYGEN_SHOULD_PARSE_THIS
3826#else
3828 coot::protein_geometry & get_geometry() {
3829 return geom;
3830 }
3831#endif
3832
3833 // -------------------------------- Blender Interface ---------------------------------------
3834
3836
3838 void make_mesh_for_map_contours_for_blender(int imol, float x, float y, float z, float level, float radius);
3840 void make_mesh_for_bonds_for_blender(int imol, const std::string &mode, bool against_a_dark_background,
3841 float bond_width, float atom_radius_to_bond_width_ratio,
3842 int smoothness_factor);
3855 const std::string &cid,
3856 const std::string &colour_scheme,
3857 const std::string &style,
3858 int secondary_structure_usage_flag);
3860 void make_mesh_for_gaussian_surface_for_blender(int imol, float sigma, float contour_level, float box_radius, float grid_scale, float b_factor);
3862
3864 void make_mesh_for_goodsell_style_for_blender(int imol, float colour_wheel_rotation_step,
3865 float saturation, float goodselliness);
3866
3868 std::vector<float> get_colour_table_for_blender(int imol);
3870 std::vector<float> get_vertices_for_blender(int imol);
3872 std::vector<int> get_triangles_for_blender(int imol);
3873
3874 // -------------------------------- Pyrogen ---------------------------------------
3875
3882 int pyrogen_from_SMILES(const std::string &smiles_string, const std::string &compound_id);
3883
3888 int pyrogen_from_ccd_file(const std::string &ccd_file_name);
3889
3897 int pyrogen_from_rdkit_mol_pickle_base64(const std::string &rdkit_mol_pickled_string, const std::string &compound_id);
3898
3899 // -------------------------------- Other ---------------------------------------
3900
3901 void test_function(const std::string &s);
3902
3903#if NB_VERSION_MAJOR
3904 // skip this (old) block for nanobinds
3905#else
3906#ifdef DOXYGEN_SHOULD_PARSE_THIS
3907
3909
3911 enum mesh_mode_t { UNKNOWN, SINGLE_COLOUR, MULTI_COLOUR };
3913 PyObject *simple_mesh_to_pythonic_mesh(const coot::simple_mesh_t &mesh, int mesh_mode);
3915 PyObject *get_pythonic_bonds_mesh(int imol, const std::string &mode, bool against_a_dark_background,
3916 float bond_width, float atom_radius_to_bond_width_ratio,
3917 int smoothness_factor);
3919 PyObject *get_pythonic_map_mesh(int imol, float x, float y, float z, float radius, float contour_level);
3921 PyObject *get_pythonic_molecular_representation_mesh(int imol, const std::string &atom_selection,
3922 const std::string &colour_sheme,
3923 const std::string &style,
3924 int secondary_structure_usage_flag);
3926 PyObject *get_pythonic_gaussian_surface_mesh(int imol, float sigma, float contour_level,
3927 float box_radius, float grid_scale, float fft_b_factor);
3944 PyObject *get_pythonic_simple_molecule(int imol, const std::string &cid, bool include_hydrogen_atoms_flag);
3945
3946#endif
3947#endif
3948
3949};
3950
3951#endif // MOLECULES_CONTAINER_HH
Definition api-cell.hh:35
Definition residue-and-atom-specs.hh:35
Definition coot-colour.hh:35
Definition instancing.hh:58
map histogram class
Definition coot-molecule.hh:1451
a container class for information about changing rotamers
Definition coot-molecule.hh:1230
Definition coot-molecule.hh:124
Definition residue-and-atom-specs.hh:216
The basic mesh for transfering mesh geometry and colours.
Definition simple-mesh.hh:38
map molecule centre
Definition coot-map-utils.hh:151
Definition sfcalc-genmap.hh:38
Definition validation-information.hh:39
Definition generic-3d-lines.hh:12
class for the information about columns extracted from auto-reading the given mtz file
Definition molecules-container.hh:1718
std::string Rfree
R-Free column. There were not available if the return value is empty.
Definition molecules-container.hh:1735
std::string sigF_obs
sigF_obs column
Definition molecules-container.hh:1733
std::string phi
phi column
Definition molecules-container.hh:1725
std::string w
weights column
Definition molecules-container.hh:1727
int idx
molecule index
Definition molecules-container.hh:1721
std::string F
F column.
Definition molecules-container.hh:1723
std::string F_obs
F_obs column. There were not available if the return value is empty.
Definition molecules-container.hh:1731
bool weights_used
flag for weights usage
Definition molecules-container.hh:1729
float get_fitting_score() const
Definition molecules-container.hh:3532
Definition molecules-container.hh:3723
void update_timer()
This function is called by the long-term job, udating the timer and count.
Definition molecules-container.hh:3735
double time_difference()
Definition molecules-container.hh:3743
Definition molecules-container.hh:1975
std::pair< int, unsigned int > delete_chain_using_cid(int imol, const std::string &cid)
void set_use_rama_plot_restraints(bool state)
Definition molecules-container.hh:2745
int imol_difference_map
Definition molecules-container.hh:405
std::pair< int, coot::instanced_mesh_t > minimize_energy(int imol, const std::string &atom_selection_cid, int n_cycles, bool do_rama_plot_restraints, float rama_plot_weight, bool do_torsion_restraints, float torsion_weight, bool refinement_is_quiet)
void set_max_number_of_threads(unsigned int n_threads)
std::vector< double > get_residue_sidechain_average_position(int imol, const std::string &cid) const
std::map< std::string, std::string > dictionary_atom_name_map(const std::string &comp_id_1, int imol_1, const std::string &comp_id_2, int imol_2)
std::string molecule_to_mmCIF_string(int imol) const
void set_imol_refinement_map(int i)
Definition molecules-container.hh:463
int fill_partial_residue_using_cid(int imol, const std::string &cid)
std::vector< std::pair< clipper::Coord_orth, float > > get_diff_diff_map_peaks(int imol_diff_map, float screen_centre_x, float screen_centre_y, float screen_centre_z) const
coot::instanced_mesh_t get_rotamer_dodecs_instanced(int imol)
coot::simple_mesh_t get_gaussian_surface(int imol, float sigma, float contour_level, float box_radius, float grid_scale, float b_factor) const
std::vector< coot::geometry_distortion_info_pod_container_t > get_validation_vs_dictionary_for_selection(int imol, const std::string &selection_cid, bool include_non_bonded_contacts)
void clear_extra_restraints(int imol)
std::vector< positioned_atom_spec_t > get_atom_differences(int imol1, int imol2)
float fit_to_map_by_random_jiggle_using_cid(int imol, const std::string &cid, int n_trials, float translation_scale_factor)
void print_non_drawn_bonds(int imol) const
float fit_to_map_by_random_jiggle(int imol, const coot::residue_spec_t &res_spec, int n_trials, float translation_scale_factor)
bool is_valid_model_molecule(int imol) const
ltj_stats_t testing_interrogate_long_term_job()
Definition molecules-container.hh:3771
int servalcat_refine_xray(int imol, int imol_map, const std::string &output_prefix)
::api::cell_t get_cell(int imol) const
void set_use_torsion_restraints(bool state)
Definition molecules-container.hh:2765
void set_refinement_is_verbose(bool state)
Definition molecules-container.hh:2834
void clear()
Delete all molecules.
int get_monomer_from_dictionary(const std::string &comp_id, int imol, bool idealised_flag)
int generate_self_restraints(int imol, float local_dist_max)
int apply_transformation_to_atom_selection(int imol, const std::string &atoms_selection_cid, int n_atoms, float m00, float m01, float m02, float m10, float m11, float m12, float m20, float m21, float m22, float c0, float c1, float c2, float t0, float t1, float t2)
coot::acedrg_types_for_residue_t get_acedrg_atom_types_for_ligand(int imol, const std::string &residue_cid) const
int delete_hydrogen_atoms(int imol_model)
int copy_molecule(int imol)
std::vector< int > make_masked_maps_split_by_chain(int imol, int imol_map)
std::pair< int, unsigned int > delete_residue(int imol, const std::string &chain_id, int res_no, const std::string &ins_code)
void set_map_sampling_rate(float msr)
Set the map sampling rate.
Definition molecules-container.hh:1692
bool is_valid_map_molecule(int imol_map) const
void add_lsq_superpose_match(const std::string &chain_id_ref, int res_no_ref_start, int res_no_ref_end, const std::string &chain_id_mov, int res_no_mov_start, int res_no_mov_end, int match_type)
void set_colour_wheel_rotation_base(int imol, float r)
int import_cif_dictionary(const std::string &cif_file_name, int imol_enc)
void eigen_flip_ligand(int imol, const std::string &chain_id, int res_no, const std::string &ins_code)
coot::util::sfcalc_genmap_stats_t sfcalc_genmaps_using_bulk_solvent(int imol_model, int imol_2fofc_map, int imol_updating_difference_map, int imol_map_with_data_attached)
void associate_sequence(int imol, const std::string &name_or_chain_id, const std::string &sequence)
std::pair< int, coot::instanced_mesh_t > refine(int imol, int n_cycles)
texture_as_floats_t get_map_section_texture(int imol, int section_id, int axis, float data_value_for_bottom, float data_value_for_top) const
std::string get_torsions_for_residues_in_chain(int imol, const std::string &chain_id) const
std::pair< int, std::vector< merge_molecule_results_info_t > > merge_molecules(int imol, const std::string &list_of_other_molecules)
std::vector< std::pair< std::string, std::string > > get_computed_acedrg_atom_types(const std::string &compound_id, int imol_enc)
bool set_residue_properties(int imol, const std::string &json_string)
set the residue properties
coot::simple_mesh_t test_origin_cube() const
coot::molecule_t::histogram_info_t get_map_vertices_histogram(int imol, int imol_map_for_sampling, double position_x, double position_y, double position_z, float radius, float contour_level, unsigned int n_bins)
int refine_residues(int imol, const std::string &chain_id, int res_no, const std::string &ins_code, const std::string &alt_conf, const std::string &mode, int n_cycles)
void set_map_colour_saturation(int imol, float s)
bool copy_dictionary(const std::string &monomer_name, int imol_current, int imol_new)
void ray_trace_image(const std::string &json_str)
void set_user_defined_atom_colour_by_selection(int imol, const std::vector< std::pair< std::string, unsigned int > > &indexed_residues_cids, bool colour_applies_to_non_carbon_atoms_also)
std::string get_cif_file_name(const std::string &comp_id, int imol_enc) const
void add_target_position_restraint(int imol, const std::string &atom_cid, float pos_x, float pos_y, float pos_z)
std::pair< int, unsigned int > delete_atom(int imol, const std::string &chain_id, int res_no, const std::string &ins_code, const std::string &atom_name, const std::string &alt_conf)
void make_mesh_for_goodsell_style_for_blender(int imol, float colour_wheel_rotation_step, float saturation, float goodselliness)
blender
std::vector< coot::geometry_distortion_info_pod_container_t > get_ligand_validation_vs_dictionary(int imol, const std::string &ligand_cid, bool include_non_bonded_contacts)
coot::simple_mesh_t get_mesh_for_ligand_validation_vs_dictionary(int imol, const std::string &ligand_cid)
void set_rama_plot_restraints_weight(float f)
Definition molecules-container.hh:2755
void export_molecular_representation_as_gltf(int imol, const std::string &atom_selection_cid, const std::string &colour_scheme, const std::string &style, int secondary_structure_usage_flag, const std::string &file_name)
coot::instanced_mesh_t get_bonds_mesh_for_selection_instanced(int imol, const std::string &atom_selection_cid, const std::string &mode, bool against_a_dark_background, float bond_width, float atom_radius_to_bond_width_ratio, bool show_atoms_as_aniso_flag, bool show_aniso_atoms_as_ortep_flag, bool show_aniso_atoms_as_empty_flag, bool draw_hydrogen_atoms_flag, int smoothness_factor)
std::vector< std::string > get_residue_names_with_no_dictionary(int imol) const
void print_secondary_structure_info(int imol) const
float get_torsion_restraints_weight() const
Definition molecules-container.hh:2780
bool match_ligand_torsions_and_position_using_cid(int imol_ligand, int imol_ref, const std::string &cid)
coot::validation_information_t get_q_score(int imol_model, int imol_map) const
void set_gltf_pbr_metalicity_factor(int imol, float metalicity)
coot::molecule_t::rotamer_change_info_t change_to_previous_rotamer(int imol, const std::string &residue_cid, const std::string &alt_conf)
coot::validation_information_t ramachandran_analysis(int imol_model) const
std::vector< coot::residue_spec_t > residues_with_missing_atoms(int imol)
int get_monomer(const std::string &monomer_name)
int make_mask(int imol_map_ref, int imol_model, const std::string &atom_selection_cid, float radius)
void add_to_non_drawn_bonds(int imol, const std::string &atom_selection_cid)
void replace_residue(int imol, const std::string &residue_cid, const std::string &new_residue_type, int imol_enc)
std::string package_version() const
void M2T_updateFloatParameter(int imol, const std::string &param_name, float value)
Update float parameter for MoleculesToTriangles molecular mesh.
void export_chemical_features_as_gltf(int imol, const std::string &cid, const std::string &file_name) const
std::pair< int, unsigned int > delete_literal_using_cid(int imol, const std::string &cid)
int get_monomer_and_position_at(const std::string &comp_id, int imol, float x, float y, float z)
std::vector< fit_ligand_info_t > fit_ligand_multi_ligand(int imol_protein, int imol_map, const std::string &multi_ligand_molecule_number_list, float n_rmsd, bool use_conformers, unsigned int n_conformers)
void clear_residue_properties(int imol)
bool get_use_gemmi()
Get the state of using GEMMI for coordinates parsing.
Definition molecules-container.hh:424
float get_geman_mcclure_alpha() const
Definition molecules-container.hh:2844
std::string get_group_for_monomer(const std::string &residue_name) const
void set_add_waters_water_to_protein_distance_lim_min(float d)
Definition molecules-container.hh:2230
void clear_non_drawn_bonds(int imol)
std::vector< coot::atom_distance_t > get_distances_between_atoms_of_residues(int imol, const std::string &cid_res_1, const std::string &cid_res_2, float dist_max) const
void set_logging_level(const std::string &level)
bool shift_field_b_factor_refinement(int imol, int imol_with_data_attached)
void set_draw_missing_residue_loops(bool state)
int transform_map_using_lsq_matrix(int imol_map, lsq_results_t lsq_matrix, float x, float y, float z, float radius)
moorhen::header_info_t get_header_info(int imol) const
std::pair< int, std::string > change_chain_id(int imol, const std::string &from_chain_id, const std::string &to_chain_id, bool use_resno_range, int start_resno, int end_resno)
coot::instanced_mesh_t add_target_position_restraint_and_refine(int imol, const std::string &atom_cid, float pos_x, float pos_y, float pos_z, int n_cycles)
int redo(int imol)
int rotate_around_bond(int imol, const std::string &residue_cid, const std::string &atom_name_1, const std::string &atom_name_2, const std::string &atom_name_3, const std::string &atom_name_4, double torsion_angle)
int replace_fragment(int imol_base, int imol_reference, const std::string &atom_selection)
bool make_backups_flag
the backup-enable state (raw public if needed/preferred)
Definition molecules-container.hh:438
ltj_stats_t long_term_job_stats
long term job
Definition molecules-container.hh:3751
std::string r_factor_stats_as_string(const r_factor_stats &rfs) const
void set_use_bespoke_carbon_atom_colour(int imol, bool state)
void testing_start_long_term_job(unsigned int n_seconds)
coot::validation_information_t peptide_omega_analysis(int imol_model) const
superpose_results_t SSM_superpose(int imol_ref, const std::string &chain_id_ref, int imol_mov, const std::string &chain_id_mov)
generic_3d_lines_bonds_box_t make_exportable_environment_bond_box(int imol, coot::residue_spec_t &spec, float max_dist)
float minimize(int imol, const std::string &atom_selection_cid, int n_cycles, bool do_rama_plot_restraints, float rama_plot_weight, bool do_torsion_restraints, float torsion_weight, bool refinement_is_quiet)
coot::simple_mesh_t get_bonds_mesh(int imol, const std::string &mode, bool against_a_dark_background, float bond_width, float atom_radius_to_bond_width_ratio, int smoothness_factor)
void fill_rotamer_probability_tables()
Fill the rotamer probability tables (currently not ARG and LYS)
std::pair< std::map< coot::residue_spec_t, coot::util::density_correlation_stats_info_t >, std::map< coot::residue_spec_t, coot::util::density_correlation_stats_info_t > > get_mmrrcc(int imol, const std::string &chain_id, unsigned int n_residue_per_residue_range, int imol_map) const
void set_base_colour_for_bonds(int imol, float r, float g, float b)
std::vector< float > get_vertices_for_blender(int imol)
Function for Blender interface.
std::pair< int, unsigned int > delete_residue_using_cid(int imol, const std::string &cid)
coot::instanced_mesh_t get_goodsell_style_mesh_instanced(int imol, float colour_wheel_rotation_step, float saturation, float goodselliness)
std::vector< std::pair< coot::residue_spec_t, std::string > > get_single_letter_codes_for_chain(int imol, const std::string &chain_id) const
float get_map_mean(int imol) const
coot::molecule_t::histogram_info_t get_map_histogram(int imol, unsigned int n_bins, float zoom_factor) const
coot::chain_mutation_info_container_t get_mutation_info(int imol) const
std::pair< std::map< coot::residue_spec_t, coot::util::density_correlation_stats_info_t >, std::map< coot::residue_spec_t, coot::util::density_correlation_stats_info_t > > mmrrcc(int imol, const std::string &chain_id, int imol_map) const
void set_user_defined_bond_colours(int imol, const std::map< unsigned int, std::array< float, 4 > > &colour_map)
User-defined colour-index to colour.
std::vector< coot::molecule_t::interesting_place_t > pepflips_using_difference_map(int imol_coords, int imol_difference_map, float n_sigma) const
int copy_fragment_using_residue_range(int imol, const std::string &chain_id, int res_no_start, int res_no_end)
std::string get_cif_restraints_as_string(const std::string &comp_id, int imol_enc) const
void fix_atom_selection_during_refinement(int imol, const std::string &atom_selection_cid)
std::vector< std::pair< std::string, std::string > > get_gphl_chem_comp_info(const std::string &compound_id, int imol_enc)
int add_compound(int imol, const std::string &tlc, int imol_dict, int imol_map, float x, float y, float z)
double get_sum_density_for_atoms_in_residue(int imol, const std::string &cid, const std::vector< std::string > &atom_names, int imol_map)
coot::instanced_mesh_t get_extra_restraints_mesh(int imol, int mode)
int mask_map_by_atom_selection(int imol_coords, int imol_map, const std::string &cid, float atom_radius, bool invert_flag)
coot::simple_mesh_t get_map_contours_mesh_using_other_map_for_colours(int imol_ref, int imol_map_for_colouring, double position_x, double position_y, double position_z, float radius, float contour_level, float other_map_for_colouring_min_value, float other_map_for_colouring_max_value, bool invert_colour_ramp)
float fit_to_map_by_random_jiggle_with_blur_using_cid(int imol, int imol_map, const std::string &cid, float b_factor, int n_trials, float translation_scale_factor)
coot::validation_information_t rotamer_analysis(int imol_model) const
void export_map_molecule_as_gltf(int imol, float pos_x, float pos_y, float pos_z, float radius, float contour_level, const std::string &file_name)
coot::atom_overlaps_dots_container_t get_overlap_dots_for_ligand(int imol, const std::string &cid_ligand)
void set_temperature_factors_using_cid(int imol, const std::string &cid, float temp_fact)
bool get_use_torsion_restraints() const
Definition molecules-container.hh:2770
int dedust_map(int imol)
std::vector< int > split_multi_model_molecule(int imol)
coot::validation_information_t ramachandran_analysis_for_chain(int imol_model, const std::string &chain_id) const
coot::simple_mesh_t get_rotamer_dodecs(int imol)
coot::util::sfcalc_genmap_stats_t get_latest_sfcalc_stats() const
Definition molecules-container.hh:1973
int undo(int imol)
void generate_chain_self_restraints(int imol, float local_dist_max, const std::string &chain_id)
coot::atom_spec_t atom_cid_to_atom_spec(int imol, const std::string &cid) const
void assign_sequence(int imol_model, int imol_map)
std::pair< int, double > get_torsion(int imol, const std::string &cid, const std::vector< std::string > &atom_names)
int gaussian_surface_to_map_molecule(int imol_map_ref, int imol_model, const std::string &cid, float sigma, float box_radius, float fft_b_factor)
void print_colour_rules(int imol) const
int pyrogen_from_SMILES(const std::string &smiles_string, const std::string &compound_id)
void set_logging_file(const std::string &file_name)
std::string get_molecule_selection_as_json(int imol, const std::string &cid) const
std::pair< int, double > get_ligand_distortion(int imol, const std::string &ligand_cid, bool include_non_bonded_contacts)
int mmcif_tests(bool last_test_only)
std::vector< std::pair< std::string, std::string > > get_sequence_info(int imol) const
std::vector< int > get_dictionary_conformers(const std::string &comp_id, int imol_enc, bool remove_internal_clash_conformers)
void geometry_init_standard()
Read the standard list of residues.
int rail_points_total() const
std::pair< int, unsigned int > delete_residue_atoms_using_cid(int imol, const std::string &cid)
void multiply_residue_temperature_factors(int imol, const std::string &cid, float factor)
std::vector< std::string > get_chains_in_model(int imol) const
std::vector< coot::molecule_t::interesting_place_t > difference_map_peaks(int imol_map, int imol_protein, float n_rmsd) const
int average_map(const std::string &imol_maps, std::vector< float > &scales)
void make_mesh_for_molecular_representation_for_blender(int imol, const std::string &cid, const std::string &colour_scheme, const std::string &style, int secondary_structure_usage_flag)
std::vector< moorhen::h_bond > get_h_bonds(int imol, const std::string &cid_str, bool mcdonald_and_thornton_mode) const
std::vector< coot::residue_spec_t > get_residues_near_residue(int imol, const std::string &residue_cid, float dist) const
float get_suggested_initial_contour_level(int imol) const
int imol_refinement_map
Definition molecules-container.hh:401
int get_number_of_map_sections(int imol_map, int axis_id) const
bool try_read_dictionaries_for_new_residue_types(int imol)
int new_positions_for_residue_atoms(int imol, const std::string &residue_cid, std::vector< coot::api::moved_atom_t > &moved_atoms)
void generate_local_self_restraints(int imol, float local_dist_max, const std::string &residue_cids)
void init_refinement_of_molecule_as_fragment_based_on_reference(int imol_frag, int imol_ref, int imol_map)
std::string molecule_to_PDB_string(int imol) const
int auto_fit_rotamer(int imol, const std::string &chain_id, int res_no, const std::string &ins_code, const std::string &alt_conf, int imol_map)
std::pair< int, unsigned int > delete_residue_atoms_with_alt_conf(int imol, const std::string &chain_id, int res_no, const std::string &ins_code, const std::string &alt_conf)
void set_torsion_restraints_weight(float f)
Definition molecules-container.hh:2775
void add_named_glyco_tree(int imol_model, int imol_map, const std::string &glycosylation_name, const std::string &asn_chain_id, int asn_res_no)
void export_model_molecule_as_gltf(int imol, const std::string &selection_cid, const std::string &mode, bool against_a_dark_background, float bonds_width, float atom_radius_to_bond_width_ratio, int smoothness_factor, bool draw_hydrogen_atoms_flag, bool draw_missing_residue_loops, const std::string &file_name)
std::string file_name_to_string(const std::string &file_name) const
coot::instanced_mesh_t get_bonds_mesh_instanced(int imol, const std::string &mode, bool against_a_dark_background, float bond_width, float atom_radius_to_bond_width_ratio, bool show_atoms_as_aniso_flag, bool show_aniso_atoms_as_ortep_flag, bool show_aniso_atoms_as_empty, bool draw_hydrogen_atoms_flag, int smoothness_factor)
bool match_ligand_torsions_and_position(int imol_ligand, int imol_ref, const std::string &chain_id_ref, int resno_ref)
void eigen_flip_ligand_using_cid(int imol, const std::string &residue_cid)
void ray_trace_shutdown()
Shut down the OSPRay ray-tracing engine.
std::pair< int, std::string > get_active_atom(float x, float y, float z, const std::string &displayed_model_molecules_list) const
int mutate(int imol, const std::string &cid, const std::string &new_residue_type)
void add_parallel_plane_restraint(int imol, const std::string &residue_cid_1, const std::string &residue_cid_2)
void set_show_timings(bool s)
Definition molecules-container.hh:503
void set_bespoke_carbon_atom_colour(int imol, const coot::colour_t &col)
int flood(int imol_model, int imol_map, float n_rmsd)
int make_power_scaled_map(int imol_ref, int imol_map_for_scaling)
void set_add_waters_variance_limit(float d)
Definition molecules-container.hh:2244
void delete_colour_rules(int imol)
coot::simple_mesh_t get_chemical_features_mesh(int imol, const std::string &cid) const
std::string jed_flip(int imol, const std::string &atom_cid, bool invert_selection)
std::vector< std::string > non_standard_residue_types_in_model(int imol) const
float get_density_at_position(int imol_map, float x, float y, float z) const
std::vector< coot::residue_spec_t > get_non_standard_residues_in_molecule(int imol) const
int read_coordinates(const std::string &file_name)
std::string pae_png(const std::string &pae_file_name) const
std::string get_hb_type(const std::string &compound_id, int imol_enc, const std::string &atom_name) const
std::string get_residue_type(int imol, const std::string &cid) const
int flip_hand(int imol_map)
coot::simple_mesh_t get_gaussian_surface_for_atom_selection(int imol, const std::string &cid, float sigma, float contour_level, float box_radius, float grid_scale, float b_factor) const
int refine_residues_using_atom_cid(int imol, const std::string &cid, const std::string &mode, int n_cycles)
std::vector< fit_ligand_info_t > fit_ligand(int imol_protein, int imol_map, int imol_ligand, float n_rmsd, bool use_conformers, unsigned int n_conformers)
void associate_data_mtz_file_with_map(int imol, const std::string &data_mtz_file_name, const std::string &f_col, const std::string &sigf_col, const std::string &free_r_col)
std::string get_residue_name(int imol, const std::string &chain_id, int res_no, const std::string &ins_code) const
void make_mesh_for_gaussian_surface_for_blender(int imol, float sigma, float contour_level, float box_radius, float grid_scale, float b_factor)
Function for Blender interface.
void set_max_number_of_threads_in_thread_pool(unsigned int n_threads)
std::string get_rdkit_mol_pickle_base64(const std::string &residue_name, int imol_enc)
bool match_ligand_torsions(int imol_ligand, int imol_ref, const std::string &chain_id_ref, int resno_ref)
coot::molecule_t::rotamer_change_info_t change_to_first_rotamer(int imol, const std::string &residue_cid, const std::string &alt_conf)
void set_refinement_geman_mcclure_alpha(float a)
Definition molecules-container.hh:2839
float get_map_sampling_rate()
Definition molecules-container.hh:1684
std::vector< coot::atom_spec_t > find_water_baddies(int imol_model, int imol_map, float b_factor_lim, float outlier_sigma_level, float min_dist, float max_dist, bool ignore_part_occ_contact_flag, bool ignore_zero_occ_flag)
void set_molecule_name(int imol, const std::string &new_name)
std::vector< auto_read_mtz_info_t > auto_read_mtz(const std::string &file_name)
std::vector< glm::vec4 > get_colour_table(int imol, bool against_a_dark_background) const
int replace_map_by_mtz_from_file(int imol, const std::string &file_name, const std::string &f, const std::string &phi, const std::string &weight, bool use_weight)
void set_map_is_contoured_with_thread_pool(bool state)
mmdb::Residue * get_residue_using_cid(int imol, const std::string &cid) const
double get_radius_of_gyration(int imol) const
int fill_partial_residues(int imol)
bool delete_all_carbohydrate(int imol)
int write_coordinates(int imol, const std::string &file_name) const
bool regen_map(int imol_map, const std::string &imol_maps, const std::vector< float > &scales)
int copy_fragment_using_cid(int imol, const std::string &multi_cid)
void make_mesh_for_bonds_for_blender(int imol, const std::string &mode, bool against_a_dark_background, float bond_width, float atom_radius_to_bond_width_ratio, int smoothness_factor)
Function for Blender interface.
void end_delete_closed_molecules()
int read_small_molecule_cif(const std::string &file_name)
int add_terminal_residue_directly_using_cid(int imol, const std::string &cid)
void display_molecule_names_table() const
Debugging function: display the table of molecule and names.
void add_lsq_superpose_atom_match(const std::string &chain_id_ref, int res_no_ref, const std::string &atom_name_ref, const std::string &chain_id_mov, int res_no_mov, const std::string &atom_name_mov)
float get_map_rmsd_approx(int imol_map) const
coot::simple_mesh_t make_mesh_from_gltf_file(const std::string &file_name)
int get_imol_enc_any() const
int sharpen_blur_map_with_resample(int imol_map, float b_factor, float resample_factor, bool in_place_flag)
std::pair< int, std::string > add_terminal_residue_directly(int imol, const std::string &chain_id, int res_no, const std::string &ins_code)
mmdb::Atom * get_atom_using_cid(int imol, const std::string &cid) const
unsigned int get_number_of_molecules() const
Definition molecules-container.hh:450
coot::validation_information_t get_q_score_for_cid(int imol_model, const std::string &cid, int imol_map) const
std::pair< float, float > get_mean_and_variance_of_density_for_non_water_atoms(int imol_coords, int imol_map) const
std::vector< coot::plain_atom_overlap_t > get_atom_overlaps(int imol)
Get Atom Overlaps.
std::vector< int > fit_ligand_right_here(int imol_protein, int imol_map, int imol_ligand, float x, float y, float z, float n_rmsd, bool use_conformers, unsigned int n_conformers)
bool get_make_backups() const
Definition molecules-container.hh:435
std::vector< int > partition_map_by_chain(int imol_map, int imol_model)
float get_spherical_variance(int imol_map, int imol_model, const std::string &atom_cid, float mean_density_other_atoms) const
int gaussian_surface_to_map_molecule_v2(int imol, const std::string &cid, float sigma, float box_radius, float grid_scale, float fft_b_factor)
int get_number_of_hydrogen_atoms(int imol) const
std::vector< double > get_residue_CA_position(int imol, const std::string &cid) const
int refine_residue_range(int imol, const std::string &chain_id, int res_no_start, int res_no_end, int n_cycles)
int new_molecule(const std::string &name)
coot::molecule_t::rotamer_change_info_t change_to_next_rotamer(int imol, const std::string &residue_cid, const std::string &alt_conf)
std::string get_pucker_analysis_info(int imol) const
double test_thread_pool_threads(unsigned int n_threads)
std::vector< float > get_colour_table_for_blender(int imol)
Function for Blender interface.
int copy_fragment_for_refinement_using_cid(int imol, const std::string &multi_cid)
float get_temperature_factor_of_atom(int imol, const std::string &atom_cid) const
coot::residue_spec_t residue_cid_to_residue_spec(int imol, const std::string &cid) const
r_factor_stats get_r_factor_stats()
coot::simple_mesh_t get_ramachandran_validation_markup_mesh(int imol) const
int read_extra_restraints(int imol, const std::string &file_name)
void set_use_gemmi(bool state)
Definition molecules-container.hh:421
coot::instanced_mesh_t contact_dots_for_ligand(int imol, const std::string &cid, unsigned int smoothness_factor) const
void set_map_colour(int imol, float r, float g, float b)
int cis_trans_convert(int imol, const std::string &atom_cid)
int read_mtz(const std::string &file_name, const std::string &f, const std::string &phi, const std::string &weight, bool use_weight, bool is_a_difference_map)
Read the given mtz file.
std::string get_SMILES_for_residue_type(const std::string &residue_name, int imol_enc) const
int get_number_of_atoms_in_residue(int imol, const std::string &residue_cid) const
coot::symmetry_info_t get_symmetry(int imol, float symmetry_search_radius, float centre_x, float centre_y, float centre_z) const
molecules_container_t(bool verbose=true)
the one and only constructor
int close_molecule(int imol)
bool match_ligand_position(int imol_ligand, int imol_ref, const std::string &chain_id_ref, int resno_ref)
void testing_stop_long_term_job()
void clear_target_position_restraints(int imol)
float get_rama_plot_restraints_weight() const
Definition molecules-container.hh:2760
std::vector< std::string > get_types_in_molecule(int imol) const
get types
std::pair< int, unsigned int > delete_atom_using_cid(int imol, const std::string &cid)
coot::validation_information_t density_fit_analysis(int imol_model, int imol_map) const
lsq_results_t get_lsq_matrix(int imol_ref, int imol_mov, bool summary_to_screen) const
int fill_partial_residue(int imol, const std::string &chain_id, int res_no, const std::string &ins_code)
std::string get_molecule_name(int imol) const
void scale_map(int imol_map, float scale_factor)
bool is_EM_map(int imol) const
int set_residue_to_rotamer_number(int imol, const std::string &residue_cid, const std::string &alt_conf, int rotamer_number)
std::string get_svg_for_2d_ligand_environment_view(int imol, const std::string &residue_cid, bool add_key)
void clear_target_position_restraint(int imol, const std::string &atom_cid)
coot::simple_mesh_t get_octahemisphere(unsigned int n_divisions) const
unsigned int get_number_of_atoms(int imol) const
int read_pdb(const std::string &file_name)
int add_hydrogen_atoms(int imol_model)
std::vector< double > get_residue_average_position(int imol, const std::string &cid) const
int pyrogen_from_ccd_file(const std::string &ccd_file_name)
float get_median_temperature_factor(int imol) const
bool contains_unsaved_models() const
bool lsq_superpose(int imol_ref, int imol_mov)
std::vector< coot::plain_atom_overlap_t > get_overlaps_for_ligand(int imol, const std::string &cid_ligand)
Gat Atom Overlaps for a ligand or residue.
std::vector< std::vector< std::string > > get_ncs_related_chains(int imol) const
float get_map_weight() const
Definition molecules-container.hh:473
void set_add_waters_water_to_protein_distance_lim_max(float d)
Definition molecules-container.hh:2237
double test_launching_threads(unsigned int n_threads_per_batch, unsigned int n_batches) const
void clear_lsq_matches()
Clear any existing lsq matchers.
int sharpen_blur_map(int imol_map, float b_factor, bool in_place_flag)
bool is_a_difference_map(int imol_map) const
void add_colour_rule(int imol, const std::string &selection_cid, const std::string &colour)
Add a colour rule for M2T representations.
std::pair< bool, clipper::Coord_orth > go_to_blob(float x1, float y1, float z1, float x2, float y2, float z2, float contour_level)
int move_molecule_to_new_centre(int imol, float x, float y, float z)
void turn_off_when_close_target_position_restraint(int imol)
int servalcat_refine_xray_with_keywords(int imol, int imol_map, const std::string &output_prefix, const nanobind::dict &key_value_pairs)
void set_make_backups(bool state)
Definition molecules-container.hh:430
int pyrogen_from_rdkit_mol_pickle_base64(const std::string &rdkit_mol_pickled_string, const std::string &compound_id)
double test_the_threading(int n_threads)
std::vector< coot::phi_psi_prob_t > ramachandran_validation(int imol) const
std::pair< int, unsigned int > delete_side_chain(int imol, const std::string &chain_id, int res_no, const std::string &ins_code)
int side_chain_180(int imol, const std::string &atom_cid)
coot::validation_information_t density_correlation_analysis(int imol_model, int imol_map) const
void write_png(const std::string &compound_id, int imol, const std::string &file_name) const
coot::util::map_molecule_centre_info_t get_map_molecule_centre(int imol) const
void sfcalc_genmap(int imol_model, int imol_map_with_data_attached, int imol_updating_difference_map)
std::pair< int, unsigned int > delete_side_chain_using_cid(int imol, const std::string &cid)
coot::simple::molecule_t get_simple_molecule(int imol, const std::string &residue_cid, bool draw_hydrogen_atoms_flag)
int read_ccp4_map(const std::string &file_name, bool is_a_difference_map)
coot::atom_overlaps_dots_container_t get_overlap_dots(int imol)
int change_alt_locs(int imol, const std::string &cid, const std::string &change_mode)
void set_map_weight(float w)
Definition molecules-container.hh:468
coot::simple_mesh_t get_map_contours_mesh(int imol, double position_x, double position_y, double position_z, float radius, float contour_level)
void ray_trace_init()
Initialise the OSPRay ray-tracing engine. Call this before ray_trace_image().
void set_gltf_pbr_roughness_factor(int imol, float roughness_factor)
std::vector< std::pair< double, double > > fourier_shell_correlation(int imol_map_1, int imol_map_2) const
std::string get_eigenvectors_and_eigenvalues(int imol, const std::string &cid)
int new_positions_for_atoms_in_residues(int imol, const std::vector< coot::api::moved_residue_t > &moved_residues)
float get_molecule_diameter(int imol) const
std::vector< std::pair< std::string, std::string > > get_acedrg_atom_types(const std::string &compound_id, int imol_enc) const
std::string get_svg_for_residue_type(int imol, const std::string &comp_id, bool use_rdkit_svg, const std::string &background_type)
void accept_rotamer_probability_tables_compressed_data(const std::string &data_stream)
std::vector< coot::molecule_t::interesting_place_t > get_interesting_places(int imol, const std::string &mode) const
std::vector< std::pair< std::string, std::string > > get_colour_rules(int imol) const
int connect_updating_maps(int imol_model, int imol_with_data_info_attached, int imol_map_2fofc, int imol_map_fofc)
std::string get_data_set_file_name(int imol) const
coot::instanced_mesh_t get_HOLE(int imol, float start_pos_x, float start_pos_y, float start_pos_z, float end_pos_x, float end_pos_y, float end_pos_z) const
coot::simple_mesh_t get_molecular_representation_mesh(int imol, const std::string &cid, const std::string &colour_scheme, const std::string &style, int secondary_structure_usage_flag)
double get_contouring_time() const
Definition molecules-container.hh:3776
coot::instanced_mesh_t all_molecule_contact_dots(int imol, unsigned int smoothness_factor) const
std::vector< double > get_eigenvalues(int imol, const std::string &chain_id, int res_no, const std::string &ins_code)
int flip_peptide_using_cid(int imol, const std::string &atom_cid, const std::string &alt_conf)
std::vector< coot::molecule_t::interesting_place_t > unmodelled_blobs(int imol_model, int imol_map, float rmsd_cut_off) const
int make_ensemble(const std::string &model_molecules_list)
void clear_refinement(int imol)
void pop_back()
Delete the most recent/last molecule in the molecule vector.
std::vector< coot::residue_range_t > get_missing_residue_ranges(int imol) const
void replace_molecule_by_model_from_file(int imol, const std::string &pdb_file_name)
void make_mesh_for_map_contours_for_blender(int imol, float x, float y, float z, float level, float radius)
Function for Blender interface.
void create_empty_molecules(unsigned int n_empty)
void M2T_updateIntParameter(int imol, const std::string &param_name, int value)
Update int parameter for MoleculesToTriangles molecular mesh.
int split_residue_using_map(int imol, const std::string &residue_cid, int imol_diff_map)
void set_add_waters_sigma_cutoff(float d)
Definition molecules-container.hh:2251
std::vector< std::string > get_groups_for_monomers(const std::vector< std::string > &residue_names) const
std::vector< int > get_triangles_for_blender(int imol)
Function for Blender interface.
bool residue_is_nucleic_acid(int imol, const std::string &cid) const
int write_map(int imol, const std::string &file_name) const
void set_occupancy(int imol, const std::string &cid, float occ_new)
int add_alternative_conformation(int imol_model, const std::string &cid)
bool get_use_rama_plot_restraints() const
Definition molecules-container.hh:2750
void save_unsaved_model_changes()
Save the unsaved model - this function has not yet been written!
float get_atom_overlap_score(int imol)
std::pair< int, unsigned int > delete_using_cid(int imol, const std::string &cid, const std::string &scope)
int read_amber_trajectory(int imol_coords, const std::string &trajectory_file_name, int start_frame, int end_frame, int stride)
int add_terminal_residue_directly_using_bucca_ml_growing_using_cid(int imol, const std::string &cid)
coot::Cartesian get_molecule_centre(int imol) const
int add_waters(int imol_model, int imol_map)
void add_colour_rules_multi(int imol, const std::string &selections_and_colours_combo_string)
int rigid_body_fit(int imol, const std::string &multi_cid, int imol_map)
int add_terminal_residue_directly_using_bucca_ml_growing(int imol, const coot::residue_spec_t &spec)
superposition results
Definition superpose-results.hh:6