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

1""" Minimal example for calculing rdf from existing data """ 

2 

3import os 

4 

5import gamdpy as gp 

6 

7file_to_read = "LJ_T0.70.h5" 

8 

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() 

13 

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 

18 

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() 

25 

26# Call the rdf calculator 

27calc_sq = gp.CalculatorStructureFactor(configuration) 

28calc_sq.generate_q_vectors(q_max=18) 

29 

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) 

34 

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() 

40 

41# Save sq 

42calc_sq.save_average() 

43