Skip to content

Read and write lattice QCD data in Python with NumPy.

License

Notifications You must be signed in to change notification settings

CLQCD/PyLatticeIO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyLatticeIO

Read and write lattice QCD data in Python with NumPy.

This project was originally the I/O part of PyQUDA, and I simplified the code to create this repository. This might be helpful to analysis lattice QCD data in Python.

This repository contains Python implementations to read and write different lattice QCD data such as gauge configurations and propagators generated by Chroma software.

Just loading data into NumPy format is useless, and you should use these I/O samples along with your analysis script.

The propagator will be rotated to DeGrand-Rossi basis.

Returned NDArray

Type shape dtype Comment
Gauge (Nd, Lt, Lz, Ly, Lx, Nc, Nc) complex128 row-colum order
Propagator (Lt, Lz, Ly, Lx, Ns, Ns, Nc, Nc) complex128 sink-source order
Staggered propagator (Lt, Lz, Ly, Lx, Nc, Nc) complex128 sink-source order
Fermion (Lt, Lz, Ly, Lx, Ns, Nc) complex128
Staggered fermion (Lt, Lz, Ly, Lx, Nc) complex128

Supported format

Software Gauge Propagator Other
Chroma Read Read
MILC Read Read
KYU Read/Write Read/Write
IO General Read

MPI I/O with mpi4py

The repository requires mpi4py to read lattice QCD data in parallel. You could setup the grid by calling setGrid(grid_size). If you do not call this function, each process will read the entire field.

test.mpi.py:

import pylatticeio as io

io.setGrid([1, 1, 2, 2])
gauge = io.readChromaQIOGauge("./data/weak_field.lime")
print(gauge.shape)

And then run the script by

mpiexec -n 4 python test.mpi.py

You should get the shape of gauge to be (Nd, Lt/2, Lz/2, Ly, Lx, Nc, Nc), since the gauge is divided in z and t directions.

The rank of a process varies fastest in the t direction. For example, with grid_size=[1, 1, 2, 2], the grid coordinate and the corresponding rank of a process is

item
rank 0 1 2 3
grid coordinate 0,0,0,0 0,0,0,1 0,0,1,0 0,0,1,1

You can also check this by calling io.getCoordFromRank and io.getRankFromCoord.

About

Read and write lattice QCD data in Python with NumPy.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages