00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: molecularStructure.h,v 1.28.16.2 2007/05/13 21:18:57 amoll Exp $ 00005 // 00006 00007 #ifndef BALL_VIEW_WIDGETS_MOLECULARSTRUCTURE_H 00008 #define BALL_VIEW_WIDGETS_MOLECULARSTRUCTURE_H 00009 00010 #ifndef BALL_VIEW_KERNEL_MODULARWIDGET_H 00011 # include <BALL/VIEW/KERNEL/modularWidget.h> 00012 #endif 00013 00014 #ifndef BALL_MATHS_VECTOR3_H 00015 #include <BALL/MATHS/vector3.h> 00016 #endif 00017 00018 #ifndef BALL_VIEW_DIALOGS_AMBERCONFIGURATIONDIALOG_H 00019 #include <BALL/VIEW/DIALOGS/amberConfigurationDialog.h> 00020 #endif 00021 00022 #ifndef BALL_VIEW_DIALOGS_MINIMIZATIONDIALOG_H 00023 # include <BALL/VIEW/DIALOGS/minimizationDialog.h> 00024 #endif 00025 00026 #ifndef BALL_VIEW_DIALOGS_MOLECULARDYNAMICSDIALOG_H 00027 # include <BALL/VIEW/DIALOGS/molecularDynamicsDialog.h> 00028 #endif 00029 00030 #ifndef BALL_VIEW_DIALOGS_CHARMMCONFIGURATIONDIALOG_H 00031 # include <BALL/VIEW/DIALOGS/charmmConfigurationDialog.h> 00032 #endif 00033 00034 #ifndef BALL_VIEW_DIALOGS_MMFF94CONFIGURATIONDIALOG_H 00035 # include <BALL/VIEW/DIALOGS/MMFF94ConfigurationDialog.h> 00036 #endif 00037 00038 #ifndef BALL_VIEW_DIALOGS_ASSIGNBONDORDERCONFIGURATIONDIALOG_H 00039 # include <BALL/VIEW/DIALOGS/assignBondOrderConfigurationDialog.h> 00040 #endif 00041 00042 #ifndef BALL_VIEW_DIALOGS_ASSIGNBONDORDERRESULTSDIALOG_H 00043 # include <BALL/VIEW/DIALOGS/assignBondOrderResultsDialog.h> 00044 #endif 00045 00046 #ifndef BALL_MOLMEC_AMBER_AMBER_H 00047 # include <BALL/MOLMEC/AMBER/amber.h> 00048 #endif 00049 00050 #ifndef BALL_MOLMEC_CHARMM_CHARMM_H 00051 # include <BALL/MOLMEC/CHARMM/charmm.h> 00052 #endif 00053 00054 #ifndef BALL_MOLMEC_MMFF94_MMFF94 00055 # include <BALL/MOLMEC/MMFF94/MMFF94.h> 00056 #endif 00057 00058 00059 #include <QtGui/qwidget.h> 00060 00061 namespace BALL 00062 { 00063 class Composite; 00064 00065 namespace VIEW 00066 { 00067 class FDPBDialog; 00068 00088 class BALL_VIEW_EXPORT MolecularStructure 00089 : public QWidget, 00090 public ModularWidget 00091 { 00092 Q_OBJECT 00093 00094 public: 00095 00096 BALL_EMBEDDABLE(MolecularStructure, ModularWidget) 00097 00098 00099 enum 00100 { 00102 AMBER_FF = 0, 00103 00105 CHARMM_FF, 00106 00108 MMFF94_FF 00109 }; 00110 00114 00119 MolecularStructure(QWidget* parent = 0, const char* name = 0); 00120 00122 MolecularStructure(const MolecularStructure& m); 00123 00125 00128 00131 virtual ~MolecularStructure(); 00132 00134 00137 00148 virtual void onNotify(Message *message); 00149 00156 virtual void checkMenu(MainControl& main_control); 00157 00164 virtual void initializeWidget(MainControl& main_control); 00165 00170 ForceField& getForceField(); 00171 00175 AmberFF& getAmberFF(); 00176 00180 CharmmFF& getCharmmFF(); 00181 00183 MMFF94& getMMFF94(); 00184 00186 AmberConfigurationDialog& getAmberConfigurationDialog(); 00187 00189 CharmmConfigurationDialog& getCharmmConfigurationDialog(); 00190 00192 MMFF94ConfigurationDialog& getMMFF94ConfigurationDialog(); 00193 00197 virtual void fetchPreferences(INIFile &inifile); 00198 00202 virtual void writePreferences(INIFile &inifile); 00203 00205 MolecularDynamicsDialog& getMDSimulationDialog() { return md_dialog_;} 00206 00208 MinimizationDialog& getMinimizationDialog() { return minimization_dialog_;} 00209 00211 FDPBDialog* getFDPBDialog() { return fdpb_dialog_;} 00212 00214 AssignBondOrderConfigurationDialog& getBondOrderDialog() { return bond_order_dialog_;} 00215 00217 const AssignBondOrderConfigurationDialog& getBondOrderDialog() const { return bond_order_dialog_;} 00218 00220 AssignBondOrderResultsDialog& getBondOrderResultsDialog() { return bond_order_results_dialog_;} 00221 00223 const AssignBondOrderResultsDialog& getBondOrderResultsDialog() const { return bond_order_results_dialog_;} 00224 00225 00226 public slots: 00227 00232 void centerCamera(Composite* composite = 0); 00233 00241 void buildBonds(); 00242 00249 void runBondOrderAssignment(bool show_dialog = true); 00250 00251 00259 void showBondOrderAssignmentResults(AssignBondOrderProcessor& bop); 00260 00268 void addHydrogens(); 00269 00272 virtual bool checkResidue(); 00273 00275 virtual void createGridFromDistance(); 00276 00278 virtual void createGridFromCameraDistance(); 00279 00281 virtual void calculateSecondaryStructure(); 00282 00284 virtual void mapProteins(); 00285 00287 virtual void calculateRMSD(); 00288 00290 void buildPeptide(); 00291 00293 void calculateHBonds(); 00294 00296 void calculateRamachandranPlot(); 00297 00298 // Calculate the charges for a Molecule 00299 // void assignCharges(); 00300 00302 void calculateForceFieldEnergy(); 00303 00305 void runMinimization(bool show_dialog_ = true); 00306 00308 void MDSimulation(bool show_dialog_ = true); 00309 00311 void showAmberForceFieldOptions(); 00312 00314 void showCharmmForceFieldOptions(); 00315 00317 void showMMFF94ForceFieldOptions(); 00318 00320 void chooseAmberFF(); 00321 00323 void chooseCharmmFF(); 00324 00326 void chooseMMFF94(); 00327 00329 void chooseForceField(Position nr); 00330 00332 void setupForceField(); 00333 00335 bool calculateFDPB(bool show = true); 00336 00338 00339 private: 00340 00341 virtual void addComposite_(Composite& composite, const String& name); 00342 00343 void applyForceFieldSettings_(); 00344 00345 void selectUnassignedForceFieldAtoms_(); 00346 00347 bool setupForceField_(System* system, bool disable_selection = false); 00348 00349 QAction* center_camera_id_; 00350 QAction* build_bonds_id_; 00351 QAction* assign_bond_orders_id_; 00352 QAction* add_hydrogens_id_; 00353 QAction* check_structure_id_; 00354 QAction* create_distance_grid_id_, *create_distance_grid_id2_; 00355 QAction* calculate_ss_id_; 00356 QAction* map_proteins_id_; 00357 QAction* calculate_RMSD_id_; 00358 QAction* assign_charges_id_; 00359 QAction* energy_id_; 00360 QAction* minimization_id_; 00361 QAction* mdsimulation_id_; 00362 QAction* build_peptide_id_; 00363 QAction* calculate_hbonds_id_; 00364 QAction* amber_ff_id_; 00365 QAction* charmm_ff_id_; 00366 QAction* mmff94_id_; 00367 QAction* setup_ff_; 00368 QAction* calculate_ramachandran_; 00369 QAction* menu_FPDB_; 00370 00371 AmberFF amber_; 00372 CharmmFF charmm_; 00373 MMFF94 mmff_; 00374 AmberConfigurationDialog amber_dialog_; 00375 CharmmConfigurationDialog charmm_dialog_; 00376 MMFF94ConfigurationDialog mmff94_dialog_; 00377 MinimizationDialog minimization_dialog_; 00378 MolecularDynamicsDialog md_dialog_; 00379 FDPBDialog* fdpb_dialog_; 00380 AssignBondOrderConfigurationDialog bond_order_dialog_; 00381 AssignBondOrderResultsDialog bond_order_results_dialog_; 00382 Position force_field_id_; 00383 }; 00384 00385 } // namespace VIEW 00386 } // namespace BALL 00387 00388 #endif // BALL_VIEW_WIDGETS_MOLECULARSTRUCTURE_H