Changeset ebc499 for src


Ignore:
Timestamp:
Apr 3, 2012, 7:55:55 AM (13 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
d9005c1
Parents:
61c364
git-author:
Frederik Heber <heber@…> (03/12/12 17:02:52)
git-committer:
Frederik Heber <heber@…> (04/03/12 07:55:55)
Message:

Added InvertMoleculesAction and InvertAtomsAction.

  • World has two new functions invertAtomSelection() and ..MoleculeSelection().
  • these actions are needed to get some of the boolean operations working that are possible inside the code but not outside. Concatenated selections are on the command-line always combined as OR and never as AND, via an invertion operation, we may combine these into an effective AND combination.
  • also added regression tests Selection/Atoms/InvertAtoms and Selection/ Molecules/InvertMolecules.
Location:
src
Files:
6 added
5 edited

Legend:

Unmodified
Added
Removed
  • src/Actions/GlobalListOfActions.hpp

    r61c364 rebc499  
    8989        (SelectionAllMolecules) \
    9090        (SelectionClearAllMolecules) \
     91  (SelectionInvertMolecules) \
    9192        (SelectionMoleculeByFormula) \
    9293        (SelectionNotMoleculeByFormula) \
     
    9798        (SelectionAllAtoms) \
    9899        (SelectionClearAllAtoms) \
     100  (SelectionInvertAtoms) \
    99101        (SelectionNotAllAtoms) \
    100102        (SelectionNotAtomByElement) \
  • src/Actions/Makefile.am

    r61c364 rebc499  
    292292  Actions/SelectionAction/Atoms/AtomByOrderAction.cpp \
    293293  Actions/SelectionAction/Atoms/ClearAllAtomsAction.cpp \
     294  Actions/SelectionAction/Atoms/InvertAtomsAction.cpp \
    294295  Actions/SelectionAction/Atoms/NotAllAtomsAction.cpp \
    295296  Actions/SelectionAction/Atoms/NotAllAtomsInsideCuboidAction.cpp \
     
    308309  Actions/SelectionAction/Atoms/AtomByOrderAction.hpp \
    309310  Actions/SelectionAction/Atoms/ClearAllAtomsAction.hpp \
     311  Actions/SelectionAction/Atoms/InvertAtomsAction.hpp \
    310312  Actions/SelectionAction/Atoms/NotAllAtomsAction.hpp \
    311313  Actions/SelectionAction/Atoms/NotAllAtomsInsideCuboidAction.hpp \
     
    324326  Actions/SelectionAction/Atoms/AtomByOrderAction.def \
    325327  Actions/SelectionAction/Atoms/ClearAllAtomsAction.def \
     328  Actions/SelectionAction/Atoms/InvertAtomsAction.def \
    326329  Actions/SelectionAction/Atoms/NotAllAtomsAction.def \
    327330  Actions/SelectionAction/Atoms/NotAllAtomsInsideCuboidAction.def \
     
    335338  Actions/SelectionAction/Molecules/AllMoleculesAction.cpp \
    336339  Actions/SelectionAction/Molecules/ClearAllMoleculesAction.cpp \
     340  Actions/SelectionAction/Molecules/InvertMoleculesAction.cpp \
    337341  Actions/SelectionAction/Molecules/MoleculeByFormulaAction.cpp \
    338342  Actions/SelectionAction/Molecules/MoleculeByIdAction.cpp \
     
    349353  Actions/SelectionAction/Molecules/AllMoleculesAction.hpp \
    350354  Actions/SelectionAction/Molecules/ClearAllMoleculesAction.hpp \
     355  Actions/SelectionAction/Molecules/InvertMoleculesAction.hpp \
    351356  Actions/SelectionAction/Molecules/MoleculeByFormulaAction.hpp \
    352357  Actions/SelectionAction/Molecules/MoleculeByIdAction.hpp \
     
    363368  Actions/SelectionAction/Molecules/AllMoleculesAction.def \
    364369  Actions/SelectionAction/Molecules/ClearAllMoleculesAction.def \
     370  Actions/SelectionAction/Molecules/InvertMoleculesAction.def \
    365371  Actions/SelectionAction/Molecules/MoleculeByFormulaAction.def \
    366372  Actions/SelectionAction/Molecules/MoleculeByIdAction.def \
  • src/Actions/MoleculeAction/SaveSelectedMoleculesAction.cpp

    r61c364 rebc499  
    4141  getParametersfromValueStorage();
    4242
    43   LOG(1, "Storing world to file " << params.filename << ".");
     43  LOG(1, "Storing selected molecules to file " << params.filename << ".");
    4444
    4545  // extract suffix
  • src/World.cpp

    r61c364 rebc499  
    3333#include "Descriptors/AtomDescriptor.hpp"
    3434#include "Descriptors/AtomDescriptor_impl.hpp"
     35#include "Descriptors/AtomSelectionDescriptor.hpp"
    3536#include "Descriptors/MoleculeDescriptor.hpp"
    3637#include "Descriptors/MoleculeDescriptor_impl.hpp"
     38#include "Descriptors/MoleculeSelectionDescriptor.hpp"
    3739#include "Descriptors/SelectiveIterator_impl.hpp"
    3840#include "Element/periodentafel.hpp"
     
    415417}
    416418
     419void World::invertAtomSelection(){
     420  // get all atoms not selected
     421  AtomComposite invertedSelection(getAllAtoms());
     422  bool (World::*predicate)(const atom*) const = &World::isSelected; // needed for type resolution of overloaded function
     423  AtomComposite::iterator iter =
     424      std::remove_if(invertedSelection.begin(), invertedSelection.end(),
     425          std::bind1st(std::mem_fun(predicate), this));
     426  invertedSelection.erase(iter, invertedSelection.end());
     427  // apply new selection
     428  selectedAtoms.clear();
     429  void (World::*selector)(const atom*) = &World::selectAtom; // needed for type resolution of overloaded function
     430  std::for_each(invertedSelection.begin(),invertedSelection.end(),
     431      std::bind1st(std::mem_fun(selector),this)); // func is select... see above
     432}
     433
    417434void World::selectAtom(const atom *_atom){
    418435  // atom * is unchanged in this function, but we do store entity as changeable
     
    505522void World::clearMoleculeSelection(){
    506523  selectedMolecules.clear();
     524}
     525
     526void World::invertMoleculeSelection(){
     527  // get all molecules not selected
     528  typedef std::vector<molecule *> MoleculeVector_t;
     529  MoleculeVector_t invertedSelection(getAllMolecules());
     530  bool (World::*predicate)(const molecule*) const = &World::isSelected; // needed for type resolution of overloaded function
     531  MoleculeVector_t::iterator iter =
     532      std::remove_if(invertedSelection.begin(), invertedSelection.end(),
     533          std::bind1st(std::mem_fun(predicate), this));
     534  invertedSelection.erase(iter, invertedSelection.end());
     535  // apply new selection
     536  selectedMolecules.clear();
     537  void (World::*selector)(const molecule*) = &World::selectMolecule; // needed for type resolution of overloaded function
     538  std::for_each(invertedSelection.begin(),invertedSelection.end(),
     539      std::bind1st(std::mem_fun(selector),this)); // func is select... see above
    507540}
    508541
  • src/World.hpp

    r61c364 rebc499  
    344344  /******** Selections of molecules and Atoms *************/
    345345  void clearAtomSelection();
     346  void invertAtomSelection();
    346347  void selectAtom(const atom*);
    347348  void selectAtom(const atomId_t);
     
    360361
    361362  void clearMoleculeSelection();
     363  void invertMoleculeSelection();
    362364  void selectMolecule(const molecule*);
    363365  void selectMolecule(const moleculeId_t);
Note: See TracChangeset for help on using the changeset viewer.