/usr/include/BALL/VIEW/WIDGETS/molecularStructure.h is in libballview1.4-dev 1.4.3~beta1-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 | // -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
#ifndef BALL_VIEW_WIDGETS_MOLECULARSTRUCTURE_H
#define BALL_VIEW_WIDGETS_MOLECULARSTRUCTURE_H
#ifndef BALL_VIEW_KERNEL_MODULARWIDGET_H
# include <BALL/VIEW/KERNEL/modularWidget.h>
#endif
#ifndef BALL_MATHS_VECTOR3_H
#include <BALL/MATHS/vector3.h>
#endif
#ifndef BALL_VIEW_DIALOGS_AMBERCONFIGURATIONDIALOG_H
#include <BALL/VIEW/DIALOGS/amberConfigurationDialog.h>
#endif
#ifndef BALL_VIEW_DIALOGS_MINIMIZATIONDIALOG_H
# include <BALL/VIEW/DIALOGS/minimizationDialog.h>
#endif
#ifndef BALL_VIEW_DIALOGS_MOLECULARDYNAMICSDIALOG_H
# include <BALL/VIEW/DIALOGS/molecularDynamicsDialog.h>
#endif
#ifndef BALL_VIEW_DIALOGS_CHARMMCONFIGURATIONDIALOG_H
# include <BALL/VIEW/DIALOGS/charmmConfigurationDialog.h>
#endif
#ifndef BALL_VIEW_DIALOGS_MMFF94CONFIGURATIONDIALOG_H
# include <BALL/VIEW/DIALOGS/MMFF94ConfigurationDialog.h>
#endif
#ifndef BALL_VIEW_DIALOGS_ASSIGNBONDORDERCONFIGURATIONDIALOG_H
# include <BALL/VIEW/DIALOGS/assignBondOrderConfigurationDialog.h>
#endif
#ifndef BALL_VIEW_DIALOGS_ASSIGNBONDORDERRESULTSDIALOG_H
# include <BALL/VIEW/DIALOGS/assignBondOrderResultsDialog.h>
#endif
#ifndef BALL_VIEW_DIALOGS_GENERaTECRYSTALDIALOG_H
# include <BALL/VIEW/DIALOGS/generateCrystalDialog.h>
#endif
#ifndef BALL_MOLMEC_AMBER_AMBER_H
# include <BALL/MOLMEC/AMBER/amber.h>
#endif
#ifndef BALL_MOLMEC_CHARMM_CHARMM_H
# include <BALL/MOLMEC/CHARMM/charmm.h>
#endif
#ifndef BALL_MOLMEC_MMFF94_MMFF94
# include <BALL/MOLMEC/MMFF94/MMFF94.h>
#endif
#include <QtGui/QWidget>
namespace BALL
{
class Composite;
namespace VIEW
{
class FDPBDialog;
/** MolecularStructure provides means to modify molecular structures and do
several calculations. To do so, it contains the MMFF94, AMBER and CHARMM forcefields and
dialogs to do the setup.
The widget itself is invisible, but it has several menu entries, e.g.:
- checkResidue
- centerCamera
- buildBonds
- assignBondOrders
- addHydrogens
- createGridFromDistance
- calculateSecondaryStructure
This class is also necessary to add certain properties to new Composite objects,
which were opened with the MolecularFileDialog.
So it reacts to Messages itself and converts some to other Message objects.
Further it converts the geometric selection sent by Scene to a molecular selection
whose objects can be given a new graphical representation by the DisplayProperties dialog.
See onNotify for information concerning the conversion mechanism. \par
\ingroup ViewWidgets
*/
class BALL_VIEW_EXPORT MolecularStructure
: public QWidget,
public ModularWidget
{
Q_OBJECT
public:
BALL_EMBEDDABLE(MolecularStructure, ModularWidget)
///
enum
{
///
AMBER_FF = 0,
///
CHARMM_FF,
///
MMFF94_FF
};
/** @name Constructors
*/
//@{
/** Default Constructor.
Calls registerWidget.
\see ModularWidget
*/
MolecularStructure(QWidget* parent = 0, const char* name = 0);
/// only needed for Python Interface, dont call it!
MolecularStructure(const MolecularStructure& m);
//@}
/** @name Destructors
*/
//@{
/** Destructor.
*/
virtual ~MolecularStructure();
//@}
/** @name Accessors: inspectors and mutators
*/
//@{
/** Handles messages sent by other registered ConnectionObject objects.
Converts CompositeMessage if the
retrieved Composite object is kind of AtomContainer and
applies molecular properties to it (like normalize_names and
build_bonds).\par
\param message the pointer to the message that should be processed
\see CompositeMessage
\see GeometricObjectSelectionMessage
\see MolecularTaskMessage
*/
virtual void onNotify(Message *message);
/** Check the menu entries.
The menus <b>Select</b>, <b>Deselect</b>, <b>Add Hydrogens</b> and <b>Build Bonds</b>
will be enabled if the selection of molecular objects is not empty.
The menu <b>Focus camera</b> will be enabled only if only one molecular object
is in the selection list.
*/
virtual void checkMenu(MainControl& main_control);
/** Initialize the popup menus for this Widget.
This method is called automatically immediately before the main application is started
by MainControl::show().
\param main_control the MainControl object to be initialized
\see finalizeWidget
*/
virtual void initializeWidget(MainControl& main_control);
/** Get the currently selected force field instance.
This returns either a reference to the amber_ff_ member or to the charmm_ff_ member,
depending on the value of use_amber_.
*/
ForceField& getForceField();
/** Get the force_field_id of the currently selected ForceField
*/
Position getForceFieldID();
/** Get the instance of the AMBER forcefield.
The forcefield will be created, when this function is called the first time.
*/
AmberFF& getAmberFF();
/** Get the instance of the CHARMM forcefield.
The forcefield will be created, when this function is called the first time.
*/
CharmmFF& getCharmmFF();
///
MMFF94& getMMFF94();
/// Get an instance of an dialog to setup the AMBER forcefield
AmberConfigurationDialog& getAmberConfigurationDialog();
/// Get an instance of an dialog to setup the CHARMM forcefield
CharmmConfigurationDialog& getCharmmConfigurationDialog();
///
MMFF94ConfigurationDialog& getMMFF94ConfigurationDialog();
/** Fetch the widgets preferences from the INIfile.
\param inifile the INIFile that contains the required values
*/
virtual void fetchPreferences(INIFile &inifile);
/** Writes the widgets preferences to the INIFile.
\param inifile the INIFile that contains the needed values
*/
virtual void writePreferences(INIFile &inifile);
///
MolecularDynamicsDialog& getMDSimulationDialog() { return md_dialog_;}
///
MinimizationDialog& getMinimizationDialog() { return minimization_dialog_;}
///
FDPBDialog* getFDPBDialog() { return fdpb_dialog_;}
///
AssignBondOrderConfigurationDialog& getBondOrderDialog() { return bond_order_dialog_;}
///
const AssignBondOrderConfigurationDialog& getBondOrderDialog() const { return bond_order_dialog_;}
///
AssignBondOrderResultsDialog& getBondOrderResultsDialog() { return bond_order_results_dialog_;}
///
const AssignBondOrderResultsDialog& getBondOrderResultsDialog() const { return bond_order_results_dialog_;}
public slots:
/** Centers the camera of Scene to the geometric center of the molecular objects
in the selection list.
A SceneMessage will be sent to inform the Scene.
*/
void centerCamera(Composite* composite = 0);
/** Creates bonds.
If selected molecular objects are available Bond objects will be created
for each object in the selection list using the build_bonds processor of the FragmentDB.
A CompositeMessage will be sent for each object in the
selection list.
The number of bonds created will be written into the Log object.
*/
void buildBonds();
/** Adds neutral end caps to a protein chain.
* This function runs our PeptideCapProcessor to replace the terminals by neutral
* end caps.
*/
void buildEndcaps();
/** Assigns bond orders.
If a single selected molecular object is available Bond Orders will be set
for each bond object of the selected AtomContainer using the assign_bond_order processor.
A CompositeMessage will be sent for the object in the selection list.
The number of bond orders changed will be written into the Log object.
*/
void runBondOrderAssignment(bool show_dialog = true);
/** Shows the results of the given BondOrderAssigner.
All bond order assignment sets found by the given BondOrderAssigner will be presented
as structural sketch, additional scoring information is provided by click on the entry.
A single assignment can either be applied to the selected AtomContainer, or a copy of the
original system with the bond order assignment of the current result is added to the
Structure list.
*/
void showBondOrderAssignmentResults(AssignBondOrderProcessor& bop);
/** Adds hydrogens.
If selected molecular objects are available hydrogens will be created
for each object in the selection list
using the add_hydrogens processor of the FragmentDB.
A CompositeMessage will be sent for each object in the selection list.
The number of hydrogens created will be written into the Log object.
*/
void addHydrogens();
/** Check the residues
*/
virtual bool checkResidue();
/// Create a RegularData3D instance with the distance from the geometric center
virtual void createGridFromDistance();
///
virtual void createGridFromCameraDistance();
/// Calculate the secondary structure for a protein
virtual void calculateSecondaryStructure();
/// Map two Proteins and apply the resulting transformation matrix
virtual void mapProteins();
/// Calculate the RMSD between two Molecules
virtual void calculateRMSD();
/// Build a Peptide from a amino acid sequence
void buildPeptide();
/// Build a crystal packing for a loaded system
bool generateCrystal(bool show = true);
/// Calculate the H-Bonds for a Protein
void calculateHBonds();
/// Calculate a Ramachandran Plot
void calculateRamachandranPlot();
// Calculate the charges for a Molecule
// void assignCharges();
/// Calculate the energy for the currently selected force field
void calculateForceFieldEnergy();
/// Run a energy minization with the currently selected force field
void runMinimization(bool show_dialog_ = true);
/// Perfomr a molecular dynamics simulation with the currently selected force field
void MDSimulation(bool show_dialog_ = true);
/// Show the dialog to setup the AMBER force field
void showAmberForceFieldOptions();
/// Show the dialog to setup the CHARMM force field
void showCharmmForceFieldOptions();
///
void showMMFF94ForceFieldOptions();
/// Slot for a menu entry to select the AMBER force field
void chooseAmberFF();
/// Slot for a menu entry to select the CHARMM force field
void chooseCharmmFF();
/// Slot for a menu entry to select the MMFF94 force field
void chooseMMFF94();
///
void chooseForceField(Position nr);
/// Show a dialog to setup the currently selected force field
void setupForceField();
///
bool calculateFDPB(bool show = true);
//@}
private:
virtual void addComposite_(Composite& composite, const String& name, bool normalize = true);
void applyForceFieldSettings_();
void selectUnassignedForceFieldAtoms_();
bool setupForceField_(System* system, bool disable_selection = false);
QAction* center_camera_id_;
QAction* build_bonds_id_;
QAction* build_endcaps_id_;
QAction* assign_bond_orders_id_;
QAction* add_hydrogens_id_;
QAction* check_structure_id_;
QAction* create_distance_grid_id_, *create_distance_grid_id2_;
QAction* calculate_ss_id_;
QAction* map_proteins_id_;
QAction* calculate_RMSD_id_;
QAction* assign_charges_id_;
QAction* energy_id_;
QAction* minimization_id_;
QAction* mdsimulation_id_;
QAction* build_peptide_id_;
QAction* calculate_hbonds_id_;
QAction* amber_ff_id_;
QAction* charmm_ff_id_;
QAction* mmff94_id_;
QAction* setup_ff_;
QAction* calculate_ramachandran_;
QAction* menu_FPDB_;
QAction* generate_crystal_;
AmberFF amber_;
CharmmFF charmm_;
MMFF94 mmff_;
AmberConfigurationDialog amber_dialog_;
CharmmConfigurationDialog charmm_dialog_;
MMFF94ConfigurationDialog mmff94_dialog_;
MinimizationDialog minimization_dialog_;
MolecularDynamicsDialog md_dialog_;
FDPBDialog* fdpb_dialog_;
AssignBondOrderConfigurationDialog bond_order_dialog_;
AssignBondOrderResultsDialog bond_order_results_dialog_;
Position force_field_id_;
GenerateCrystalDialog* crystal_dialog_;
};
} // namespace VIEW
} // namespace BALL
#endif // BALL_VIEW_WIDGETS_MOLECULARSTRUCTURE_H
|