The pyEPMap (Python Electrostatic Potential Map) is a Python library designed for the calculation and visualization of Electrostatic Potential Maps (EPM), which can be accelerated by GPU.
Figure 1: Electrostatic Potential Maps (EPM) of di-nucleosome (closed form) protein alone (20,416 atoms and 10,289,600 grid points) and complex DNA protein (36,273 atoms and 18,298,710 grid points) (PDB ID: 8Y3C). You can see the electrostatic complementarity between the positive charges of the protein (blue) and the negative charges of the RNA (red).
Ensure you have the following installed on your system:
- Python 3.8+
- Conda Package Manager (Miniconda or Anaconda)
- (Optional) Git - for cloning the repository
Use Git to clone the repository to your local machine:
git clone https://github.com/anchieta-oliveira/pyEPMapNavigate to the cloned Git folder:
cd pyEPMapCreate a new Conda environment using the provided requirements.yml file:
conda env create -f environment.ymlOptionally, install install the package
python -m pip install -e .conda activate pyEPMapDisplaying pyEPMap usage options:
python3.12 path/to/main.py --helpUso simples:
python3.12 path/to/main.py -pdb to_pdb.pdb -psf to_psf.psf -o map.cubeArguments:
-h,--helpShow this help message and exit-ff,--force_fieldFORCE_FIELD Force field file used for calculations (e.g., CHARMM).-mop,--mopac_fileMOPAC_FILE MOPAC output file.-orca,--orca_fileORCA_FILE ORCA output file.-xtb,--xtb_file_chargeXTB_FILE_CHARGE XTB output charge file for charge.-psf,--psf_filePSF_FILE System topology file (PSF), typically generated by software like VMD or CHARMM.-chg_file,--charge_fileCHARGE_FILE Path to the file containing charge information.-gpu,--gpuEnable GPU acceleration if available.-gpu_id,--gpu_idGPU_ID Specify the GPU ID to use (default: all gpus).-o,--outputOUTPUT Path to the output file or directory where results will be saved.-cutoff,--cutoffCUTOFF Path to the output file or directory where results will be saved.-gs,--grid_spacingGRID_SPACING Grid spacing value to be used in calculations (default: 1).-m,--marginMARGIN Margin value to be used in calculations (default: 0.3).-pdb,--pdb_filePDB_FILE PDB file.-xyz,--xyz_fileXYZ_FILE XYZ file.-u,--unitUNIT Unit output.
Figura 2: Benchmark using TRA-cage (PDB ID: 2LUF) varying grid space, resulting in a greater number of points on the grid. We used a computer with an Ryzen 9 3900X, 24 threads (3.8GHz - 4.6GHz) 64 GB RAM and NVIDIA GeForce GTX 1080 Ti.
Figure 1: Electrostatic Potential Maps (EPM) map of Bean Pod Mottle Virus (BPMV) (PDB ID: 1PGL). pyEPMap can handle large systems in a timely manner, using multiple GPUs; PDB 1PGL contains 525,600 atoms, a grid with 16,836,644 points.
Activate the pyEPMap dedicated environment:
conda activate pyEPMapcd to/pyEPMap/benchmarkUnzip data.zip and run the python script:
python3.12 run_benchmark.pypython3.12 run_benchmark_multi_gpu.py