Package: occamtools
OccamTools
·Analysis and synthesis tools forOCCAMmolecular dynamics/hybrid particle-field simulations.Input toOCCAMconsists mainly of three file types;fort.1(simulation metadata),fort.3(particle and bond parameters), andfort.5(positions and bond structure). The output from the run is afort.8file, adhering to the.xyzfile format. Theoccamtoolspython package provides a reader for these file formats (both input and output) and generates a single object containing all the information about the simulation, making analysis of simulation runs and comparison between runs easier.InstallationInstall by (requirespython >= 3.6)>pipinstalloccamtoolsUsageLoading data·
Loading simulation data is done byimportnumpyasnpfromoccamtoolsimportOccamDatadata=OccamData('your/file/or/directory/here')where thedataobject now holds all information about the simulation run, e.g. print what kinds of particles a simulation consists ofprint('Simulation consists of...')fortype_nameindata.type_dict:num_type=sum(data.type==data.type_dict[type_name])print(f'  -{num_type}particles of type{type_name}')# Simulation consists of...#   - 400 particles of type H#   - 100 particles of type C#   - 250 particles of type Ar#   ...or make a simple plot of particles in a section of the simulation box diffusing (requirespip install asciichartpy)fromasciichartpyimportplotindices=(data.x[0,:]>20.0)&(data.x[0,:]<25.0)diffused=data.x[-1,indices]bins,hist=np.histogram(diffused)print(plot(bins.tolist(),hist.tolist()))# 9.00  ┤  ╭─╮# 8.00  ┤  │ ╰╮# 7.00  ┤  │  │# 6.00  ┤ ╭╯  ╰╮# 5.00  ┤ │    ╰╮# 4.00  ┤ │     │# 3.00  ┤╭╯     │# 2.00  ┤│      ╰╮# 1.00  ┼╯       ╰or plot the deviations of the total kinetic energy from the mean over the simulation run (again requirespip install asciichartpy)kinetic_energy_deviations=data.kinetic_energy-np.mean(data.kinetic_energy)print(plot(kinetic_energy_deviations.tolist()))#  60.53  ┤            ╭╮#  50.62  ┤            ││  ╭╮╭╮#  40.71  ┤            ││  ││││              ╭╮#  30.81  ┤            ││  ││││              ││     ╭╮    ╭─#  20.90  ┤ ╭╮         ││  ││││    ╭─╮       ││     ││    │#  10.99  ┤ ││ ╭─╮ ╭╮ ╭╯│  ││││╭╮  │ │ ╭╮    ││     ││    │#  10.09  ┤ ││ │ │ ││ │ │  │││││╰╮ │ ╰╮││    ││ ╭╮  ││╭╮╭╮│#   0.18  ┼╮││ │ │ ││ │ ╰╮ │││╰╯ │ │  ╰╯│╭╮  │╰╮││╭╮│││││││# -00.73  ┤│││ │ │ ││ │  ╰─╯││   │╭╯    ││╰──╯ ╰╯││││││││││# -10.64  ┤│││╭╯ │ ││╭╯     ││   ││     ╰╯       ││││││││╰╯# -20.54  ┤││╰╯  │ │╰╯      ╰╯   ╰╯              ││││││╰╯# -30.45  ┤╰╯    ╰─╯                             ││││╰╯# -40.36  ┤                                      ││││# -50.26  ┤                                      ││╰╯# -60.17  ┤                                      ╰╯File storage·
Behind the scenes,.npy(for numpy arrays) and.json(for anything else) files are used to represent the simulation data. By default, loading a simulation run causes the saving of small (relative to the originalfort.5/7/8) binary files containing the data. These are used to load from on subsequent calls. This means calls toOccamData.load('your/file/here')ofOccamData('your/file/here')will be significantly fasterafterthe first call. In this specific example, a 25x speedup is achieved (but your mileage may vary).Running testsInside theoccamtoolsdirectory, do>pip3installpytest
>pytest-vOCCAMOCCAM is a program for Molecular Dynamics Simulations able to perform Hybrid Particle-Field (PF) Theoretical Molecular Dynamics simulations. This recent PF technique combines molecular dynamics (MD) and self consistent field theory (SCF).Read more.Changelog0.3.4: Add bond energy and angular bond energy toFort7reader.0.3.3: Add option to not save.npyfiles when loadingOccamDataobjects. Fix a bug causing errors when reading very short.xyzfiles. Fix a bug causing the grid size to not correctly update when usingreplace_in_fort3.0.3.2: Add testing with python alpha version3.8-dev, stream line travis integration and coverage reporting.0.3.1: Move thebinskeyword argument tohistogramfrom an explicit argument to**kwargshandled bynp.histogram.0.3.0: Add histogram computation capabilities.0.2.7: Add thevelocity_trajflag tofort1file reader.0.2.6: Add proper testing for python3.6and3.7usingtox.0.2.5: Change python version required to>=3.6(from>=3.7).0.2.4: Add functionality for reading.xyzfiles with additional velocity information, as output by OCCAM when thevelocity_trajflag is set infort.1.0.2.3: Code clean-up.0.2.2: Extendrepace_in_fort3to allow for changing compressibility and non-bonded interactions. Fix a bug causing new particle types added to break the chi matrix when writingfort.3files.0.2.1: Update the__all__variable of__init__.pyto reflect newly added classes and methods.0.2.0: Add functionality for editingfort.3files (in-place or creating new ones).0.1.0: Add functionality for editingfort.1files (in-place or creating new ones).