Did I Find It?
difi
is a simple package that takes pre-formatted linkage information from software such as MOPS, pytrax, or THOR and analyzes which objects have been found given a set of known labels (or truths). A key performance criteria is that difi
needs to be fast by avoiding Python for loops and instead uses clever pandas.DataFrame
manipulation.
difi
can be downloaded directly from anaconda:
conda install -c moeyensj difi
Or, if preferred, installed into its own environment via:
conda create -n difi_py310 -c moeyensj difi python=3.10
difi
is also available from the Python package index:
pip install difi
A Docker container with the latest version of the code can be pulled using:
docker pull moeyensj/difi:latest
To run the container:
docker run -it moeyensj/difi:latest
The difi code is installed the /projects directory, and is by default also installed in the container's Python installation.
Clone this repository using either ssh
or https
. Once cloned and downloaded, cd
into the repository.
To install difi in its own conda
environment please do the following:
conda create -n difi_py310 -c defaults -c conda-forge --file requirements.txt python=3.10
Or, to install difi in a pre-existing conda
environment called difi_py310
:
conda activate difi_py310
conda install -c defaults -c conda-forge --file requirements.txt
Or, to install difi
software using pip
:
pip install .
Or, if you would like to make an editable install then:
pip install -e .[tests]
You should now be able to start Python and import difi.
After cloning this repository, you can build a docker image that will allow you to develop the source code:
docker compose build difi
To run the docker container interatively with a terminal:
docker compose run -it difi
If you would like to contribute to difi
, please make sure to initialize pre-commit
. Pre-commit will automatically lint and format
the source code after any changes have been staged for a commit. To load the appropriate hooks please run:
pre-commit install
The example below can be found in greater detail in this Jupyter Notebook.