Ignore:
Timestamp:
Feb 24, 2011, 7:55:15 PM (14 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:
873037
Parents:
fcac72
git-author:
Frederik Heber <heber@…> (02/10/11 22:01:26)
git-committer:
Frederik Heber <heber@…> (02/24/11 19:55:15)
Message:

PdbParser can now load and save multiple time steps.

  • WARNING: Molecules are not yet updated, it only works on simple test.
  • TEST: Parser/Pdb regression test on loading/storing multiple steps added.
  • PdbAtomInfoContainer:
    • private static knownDataKeys map from enum to strings, filled in cstor when empty by fillknownDataKeys() and cleared by befriended PdbParser's dstor.
    • operator << to easily print container.
    • getter function getDataKey.
  • PdbKey:
  • Pdbparser:
    • extended load() and added verbosity.
    • readAtomDataLine() can parse trajectories into present atoms.
    • extended save() and added verbosity.
    • new helper functions getAtomToParse() and readPdbAtomInfoContainer().
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/PdbAtomInfoContainer.cpp

    rfcac72 r9dba5f  
    2020#include "CodePatterns/MemDebug.hpp"
    2121
    22 //#include "CodePatterns/Assert.hpp"
     22#include "CodePatterns/Assert.hpp"
    2323//#include "CodePatterns/Log.hpp"
    2424#include "CodePatterns/toString.hpp"
     
    2727#include "PdbAtomInfoContainer.hpp"
    2828
     29PdbAtomInfoContainer::knownDataKeysMap PdbAtomInfoContainer::knownDataKeys;
    2930
    3031PdbAtomInfoContainer::PdbAtomInfoContainer() :
     
    4041  tempFactor(0.),
    4142  element(""),
    42   charge(0)
    43 {}
     43  charge(0),
     44  timestep(0)
     45{
     46  if (knownDataKeys.empty())
     47    fillknownDataKeys();
     48}
    4449
    4550PdbAtomInfoContainer::~PdbAtomInfoContainer()
    4651{}
    4752
     53void PdbAtomInfoContainer::fillknownDataKeys()
     54{
     55  knownDataKeys[PdbKey::token] = "token";
     56  knownDataKeys[PdbKey::serial] = "serial";
     57  knownDataKeys[PdbKey::name] = "name";
     58  knownDataKeys[PdbKey::altLoc] = "altLoc";
     59  knownDataKeys[PdbKey::resName] = "resName";
     60  knownDataKeys[PdbKey::chainID] = "chainID";
     61  knownDataKeys[PdbKey::resSeq] = "resSeq";
     62  knownDataKeys[PdbKey::iCode] = "iCode";
     63  knownDataKeys[PdbKey::X] = "X";
     64  knownDataKeys[PdbKey::Y] = "Y";
     65  knownDataKeys[PdbKey::Z] = "Z";
     66  knownDataKeys[PdbKey::occupancy] = "occupancy";
     67  knownDataKeys[PdbKey::tempFactor] = "tempFactor";
     68  knownDataKeys[PdbKey::element] = "element";
     69  knownDataKeys[PdbKey::charge] = "charge";
     70  knownDataKeys[PdbKey::timestep] = "timestep";
     71}
     72
    4873void PdbAtomInfoContainer::set(const PdbKey::PdbDataKey key, std::string value)
    4974{
     
    93118    case PdbKey::charge :
    94119      ScanKey(charge, value);
     120      break;
     121    case PdbKey::timestep :
     122      ScanKey(timestep, value);
    95123      break;
    96124    default :
     
    134162    case PdbKey::charge :
    135163      return toString(charge);
     164    case PdbKey::timestep :
     165      return toString(timestep);
    136166    default :
    137167      std::cout << "Unknown key: " << key << std::endl;
     
    150180    case PdbKey::charge :
    151181      return charge;
     182    case PdbKey::timestep :
     183      return timestep;
    152184    default :
    153185      std::cout << "Unknown key or not presentable as int: " << key << std::endl;
     
    175207  }
    176208}
     209
     210const std::string& PdbAtomInfoContainer::getDataKey(PdbKey::PdbDataKey key) const
     211{
     212  knownDataKeysMap::const_iterator iter;
     213  iter = knownDataKeys.find(key);
     214  ASSERT(iter != knownDataKeys.end(),
     215      "PdbAtomInfoContainer::getDataKey() - unknown key "
     216      +toString(key)+" request, did someone add a key to PdbKey?");
     217  return iter->second;
     218}
     219
     220std::ostream& operator<<(std::ostream &ost, const PdbAtomInfoContainer& m)
     221{
     222  ost << m.getDataKey(PdbKey::token) << "(" << m.get<std::string>(PdbKey::token) <<") ";
     223  ost << m.getDataKey(PdbKey::serial) << "(" << m.get<std::string>(PdbKey::serial) <<") ";
     224  ost << m.getDataKey(PdbKey::name) << "(" << m.get<std::string>(PdbKey::name) <<") ";
     225  ost << m.getDataKey(PdbKey::altLoc) << "(" << m.get<std::string>(PdbKey::altLoc) <<") ";
     226  ost << m.getDataKey(PdbKey::resName) << "(" << m.get<std::string>(PdbKey::resName) <<") ";
     227  ost << m.getDataKey(PdbKey::chainID) << "(" << m.get<std::string>(PdbKey::chainID) <<") ";
     228  ost << m.getDataKey(PdbKey::resSeq) << "(" << m.get<std::string>(PdbKey::resSeq) <<") ";
     229  ost << m.getDataKey(PdbKey::iCode) << "(" << m.get<std::string>(PdbKey::iCode) <<") ";
     230  ost << m.getDataKey(PdbKey::X) << "(" << m.get<std::string>(PdbKey::X) <<") ";
     231  ost << m.getDataKey(PdbKey::Y) << "(" << m.get<std::string>(PdbKey::Y) <<") ";
     232  ost << m.getDataKey(PdbKey::Z) << "(" << m.get<std::string>(PdbKey::Z) <<") ";
     233  ost << m.getDataKey(PdbKey::occupancy) << "(" << m.get<std::string>(PdbKey::occupancy) <<") ";
     234  ost << m.getDataKey(PdbKey::tempFactor) << "(" << m.get<std::string>(PdbKey::tempFactor) <<") ";
     235  ost << m.getDataKey(PdbKey::element) << "(" << m.get<std::string>(PdbKey::element) <<") ";
     236  ost << m.getDataKey(PdbKey::charge) << "(" << m.get<std::string>(PdbKey::charge) <<") ";
     237  ost << m.getDataKey(PdbKey::timestep) << "(" << m.get<std::string>(PdbKey::timestep) <<") ";
     238  return ost;
     239}
Note: See TracChangeset for help on using the changeset viewer.