Changeset 1f1b23


Ignore:
Timestamp:
Feb 2, 2010, 9:43:52 AM (15 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:
164a33, 8ab0407, a25aae
Parents:
790807
Message:

Possibility to store all bonds to file added.

So far we only could store the adjacency (i.e. atom along with all bond partners per line) to file.
For plotting molecules with pgfplots (and maybe for other purposes too) we need to have single tupels of two per line.
Hence, the following additions were implemented:

Location:
src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • src/atom_bondedparticle.cpp

    r790807 r1f1b23  
    5656 * \param *AdjacencyFile output stream
    5757 */
    58 void BondedParticle::OutputAdjacency(ofstream *AdjacencyFile) const
     58void BondedParticle::OutputAdjacency(ofstream * const AdjacencyFile) const
    5959{
    6060  *AdjacencyFile << nr << "\t";
     
    6262    *AdjacencyFile << (*Runner)->GetOtherAtom(this)->nr << "\t";
    6363  *AdjacencyFile << endl;
     64};
     65
     66/** Output of atom::nr along each bond partner per line.
     67 * Only bonds are printed where atom::nr is smaller than the one of the bond partner.
     68 * \param *AdjacencyFile output stream
     69 */
     70void BondedParticle::OutputBonds(ofstream * const BondFile) const
     71{
     72  for (BondList::const_iterator Runner = ListOfBonds.begin(); Runner != ListOfBonds.end(); (++Runner))
     73    if (nr < (*Runner)->GetOtherAtom(this)->nr)
     74      *BondFile << nr << "\t" << (*Runner)->GetOtherAtom(this)->nr << "\n";
    6475};
    6576
  • src/atom_bondedparticle.hpp

    r790807 r1f1b23  
    4444  int CorrectBondDegree();
    4545  void OutputBondOfAtom() const;
    46   void OutputAdjacency(ofstream *AdjacencyFile) const;
     46  void OutputAdjacency(ofstream * const AdjacencyFile) const;
     47  void OutputBonds(ofstream * const BondFile) const;
    4748  void OutputOrder(ofstream *file) const;
    4849
  • src/builder.cpp

    r790807 r1f1b23  
    14221422            Log() << Verbose(0) << "\t-h/-H/-?\tGive this help screen." << endl;
    14231423            Log() << Verbose(0) << "\t-I\t Dissect current system of molecules into a set of disconnected (subgraphs of) molecules." << endl;
     1424            Log() << Verbose(0) << "\t-j\t<path> Store all bonds to file." << endl;
     1425            Log() << Verbose(0) << "\t-J\t<path> Store adjacency per atom to file." << endl;
    14241426            Log() << Verbose(0) << "\t-L <step0> <step1> <prefix>\tStore a linear interpolation between two configurations <step0> and <step1> into single config files with prefix <prefix> and as Trajectories into the current config file." << endl;
    14251427            Log() << Verbose(0) << "\t-m <0/1>\tCalculate (0)/ Align in(1) PAS with greatest EV along z axis." << endl;
     
    17091711                CorrelationToSurfaceMap *surfacemap = PeriodicCorrelationToSurface( molecules, elemental, TesselStruct, LCList, ranges );
    17101712                OutputCorrelationToSurface(&output, surfacemap);
    1711                 BinPairMap *binmap = BinData( surfacemap, 0.5, 0., 0. );
     1713                BinPairMap *binmap = BinData( surfacemap, 0.5, 0., 20. );
    17121714                OutputCorrelation ( &binoutput, binmap );
    17131715                output.close();
     
    17931795              }
    17941796              break;
     1797
     1798            case 'J':
     1799              if (ExitFlag == 0) ExitFlag = 1;
     1800              if ((argptr >= argc) || (argv[argptr][0] == '-')) {
     1801                ExitFlag =255;
     1802                eLog() << Verbose(0) << "Missing path of adjacency file: -j <path>" << endl;
     1803                performCriticalExit();
     1804              } else {
     1805                Log() << Verbose(0) << "Storing adjacency to path " << argv[argptr] << "." << endl;
     1806                configuration.BG->ConstructBondGraph(mol);
     1807                mol->StoreAdjacencyToFile(argv[argptr]);
     1808                argptr+=1;
     1809              }
     1810              break;
     1811
     1812            case 'j':
     1813              if (ExitFlag == 0) ExitFlag = 1;
     1814              if ((argptr >= argc) || (argv[argptr][0] == '-')) {
     1815                ExitFlag =255;
     1816                eLog() << Verbose(0) << "Missing path of bonds file: -j <path>" << endl;
     1817                performCriticalExit();
     1818              } else {
     1819                Log() << Verbose(0) << "Storing bonds to path " << argv[argptr] << "." << endl;
     1820                configuration.BG->ConstructBondGraph(mol);
     1821                mol->StoreBondsToFile(argv[argptr]);
     1822                argptr+=1;
     1823              }
     1824              break;
     1825
    17951826            case 'N':
    17961827              if (ExitFlag == 0) ExitFlag = 1;
  • src/molecule.hpp

    r790807 r1f1b23  
    269269  int FragmentMolecule(int Order, config *configuration);
    270270  bool CheckOrderAtSite(bool *AtomMask, Graph *GlobalKeySetList, int Order, int *MinimumRingSize, char *path = NULL);
     271  bool StoreBondsToFile(char *path);
    271272  bool StoreAdjacencyToFile(char *path);
    272273  bool CheckAdjacencyFileAgainstMolecule(char *path, atom **ListOfAtoms);
  • src/molecule_graph.cpp

    r790807 r1f1b23  
    992992  Log() << Verbose(1) << "Saving adjacency list ... ";
    993993  if (AdjacencyFile != NULL) {
     994    AdjacencyFile << "m\tn" << endl;
    994995    ActOnAllAtoms(&atom::OutputAdjacency, &AdjacencyFile);
    995996    AdjacencyFile.close();
     997    Log() << Verbose(1) << "done." << endl;
     998  } else {
     999    Log() << Verbose(1) << "failed to open file " << line.str() << "." << endl;
     1000    status = false;
     1001  }
     1002
     1003  return status;
     1004}
     1005;
     1006
     1007/** Storing the bond structure of a molecule to file.
     1008 * Simply stores Atom::nr and then the Atom::nr of all bond partners, one per line.
     1009 * \param *out output stream for debugging
     1010 * \param *path path to file
     1011 * \return true - file written successfully, false - writing failed
     1012 */
     1013bool molecule::StoreBondsToFile(char *path)
     1014{
     1015  ofstream BondFile;
     1016  stringstream line;
     1017  bool status = true;
     1018
     1019  line << path << "/" << FRAGMENTPREFIX << ADJACENCYFILE;
     1020  BondFile.open(line.str().c_str(), ios::out);
     1021  Log() << Verbose(1) << "Saving adjacency list ... ";
     1022  if (BondFile != NULL) {
     1023    BondFile << "m\tn" << endl;
     1024    ActOnAllAtoms(&atom::OutputBonds, &BondFile);
     1025    BondFile.close();
    9961026    Log() << Verbose(1) << "done." << endl;
    9971027  } else {
Note: See TracChangeset for help on using the changeset viewer.