Loading Data
The only data loading interface you need to be familiar with is arpes.io.load_data
.
This function has several usage patterns for loading data by associated workspace,
by “file number”, or by absolute or relative paths.
Additionally, you can opt to specify the ARPES setup used to collect the data, or it can be inferred in certain circumstances.
My files are numbered
You can just use the numeric fragment identifying your data. For
instance if you wanted to load the data data/my_data_005.pxt
, you
can use
from arpes.io import load_data
load_data(5, location="BL7") # loads as MAESTRO microARPES
My files are numbered, and I want to leave the location unspecified
You can leave the location= kwarg unspecified in the call to load_data. It’s best to provide the location kwarg if you know it, because otherwise PyARPES will have to sequentially try loaders (filtered by filetype) to find one that works.
from arpes.io import load_data
load_data(5) # we don't pass `location=` here, PyARPES will try to figure it out
My files are not numbered
Pass the path to the data, either as a string or a Path instance.
from arpes.io import load_data
from pathlib import Path
# these are equivalent
load_data('/path/to/my/data.fits', location='ALS-BL7')
load_data(Path('/path/to/my/data.fits'), location='ALS-BL7')
I want to use a specific plugin
If you define your own plugin but you haven’t registered it, you can provide it via the location kwarg. For example, we will manually load MAESTRO nano-ARPES data
from arpes.io import load_data
from arpes.endstations.plugins.MAESTRO import MAESTRONanoARPESEndstation
# equivalent in this case to passing `location="BL7-nano"`
load_data("path/to/my/data.fits", location=MAESTRONanoARPESEndstation)
This is helpful if you defined a loading plugin in local module and want to use it.
I want to perform post-loading steps for every piece of data in an analysis
In this case, just write a wrapper loading function for a given workspace or project and use it to apply some additional steps to process your data.
Let’s imagine we just want to add an attribute with the date of the analysis.
from datetime import datetime
from arpes.io import load_data
def load_with_date(file, location: str = None):
"""Attach the current datetime when loading."""
data = load_data(file, location)
data.attrs["analysis_date"] = datetime.now().isoformat()
return data
# now, we can use it just like `load_data`
load_with_date("path/to/my_data.h5", location="BL7-nano")
This example is artificial, but you can use this pattern to apply corrections or perform other cumbersome steps.
I’m still running into an issue, or my use case doesn’t fit nicely
Take a look at the frequently asked questions or get in contact on the GitLab Issues Page and we will be happy to help.