Our HPC product, EPIC is very user-friendly, and now it is even easier to integrate this tool with existing simulation workflows. The Zenotech team is pleased to release a new version of PyEpic to make this possible.
From feedback from our users, we know that this will be a useful update. Such integrations are often scripted or automated to remove the amount of “hand-cranking” necessary. As well as saving the users time, it also improves the repeatability of processes and ensures a consistent approach to simulation.
PyEpic is an easy-to-use Python library that can be drawn upon to interact with EPIC programmatically and used in Python code or scripts. PyEpic allows you to manage your data, submit and monitor jobs in just a few lines of code. Being pure Python, this new release runs on a variety of platforms including Windows, Linux and Mac.
How to get started
Getting started with PyEpic is very straightforward; all you need is an API authentication token that you can retrieve by logging into EPIC and viewing your profile.
PyEpic makes handling data simple too. For example, the following lines synchronise the contents of a local folder to your epic datastore:
from pyepic import EPICClient client = EPICClient("your_api_token_goes_here") # Copy everything in my local dir ./data/ to a path on EPIC call new_data. # If the files already exist in epic://new_data/ then still copy them if the local ones are newer. client.data.sync("./data/", "epic://new_data/", overwrite_existing=True)
As well as data management, you can also create and submit jobs using PyEpic:
from pyepic import EPICClient from pyepic.applications.openfoam import OpenFoamJob client = EPICClient("your_api_token_goes_here") # Create the job using application version ID 12 openfoam_job = OpenFoamJob(12, "job_name", "epic://new_data/foam/") # Configure the solver to run on 24 partitions for a maximum of 12 hours openfoam_job.solver.partitions = 24 openfoam_job.solver.runtime = 12 # Create the specification for submission to queue ID 3 job_spec = openfoam_job.get_job_create_spec(3) # Submit the job job = client.job.submit(job_spec)
You can discover further examples and the latest documentation here:
https://pyepic.readthedocs.io/en/latest/
Interested in using PyEPIC?
PyEPIC is open source and available on Github via this link: