Coverage for examples/calc_sq_from_h5.py: 86%
22 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 15:55 +0200
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 15:55 +0200
1""" Minimal example for calculing rdf from existing data """
3import os
5import gamdpy as gp
7file_to_read = "LJ_T0.70.h5"
9if not os.path.isfile(file_to_read):
10 print("This example needs a the file LJ_T0.70.h5 to be present")
11 print(f"{file_to_read} can be generated using minimal.py example")
12 exit()
14# Load existing data
15output = gp.tools.TrajectoryIO(file_to_read).get_h5()
16# Read number of particles N and dimensions from data
17nblocks, nconfs, N, D = output['trajectory_saver/positions'].shape
19# Set up the configuration object
20# Create configuration object
21configuration = gp.Configuration(D=D, N=N)
22configuration.simbox = gp.Orthorhombic(D, output['initial_configuration'].attrs['simbox_data'])
23configuration.ptype = output['initial_configuration/ptype']
24configuration.copy_to_device()
26# Call the rdf calculator
27calc_sq = gp.CalculatorStructureFactor(configuration)
28calc_sq.generate_q_vectors(q_max=18)
30# NOTE: the structure of the block is (outer_block, inner_steps, pos&img, npart, dimensions)
31# the zero is to select the position array and discard images
32positions = output['trajectory_saver/positions'][:,:,:,:]
33positions = positions.reshape(nblocks*nconfs,N,D)
35# Loop over saved configurations
36for pos in positions[nconfs-1::nconfs]:
37 configuration['r'] = pos
38 configuration.copy_to_device()
39 calc_sq.update()
41# Save sq
42calc_sq.save_average()