Implementations of halving and aliquoting distance algorithms (https://drops.dagstuhl.de/opus/volltexte/2021/14371/) in Python 3. The minimum dependencies required are numpy
, pandas
, matplotlib
, and seaborn
.
generate_data.ipynb
: Jupyter notebook that generates simulated profiles and evaluates the halving and aliquoting algorithmsanalysis.ipynb
: Jupyter notebook that generates figures used in our paperoutputs.pkl
: pickled pandas dataframe containing our results of experiments as shown in our paper (generated withgenerate_data.ipynb
)aliquoting.py
: implementation of halving and aliquoting algorithmsdistance.py
: implementation of copy number distanceCopyNumberDistanceFunctions.py
: other copy number distance-related functions, not used in our implementation or analysis; these functions require Gurobi and other dependencies
To find the halving and aliquoting distances of a profile T
:
from aliquoting import cnd_halving, cnd_aliquoting_I
T = [1,2,3,4,5]
p = 3
halving_distance, halving_predup_profile = cnd_halving(T)[:2]
aliquoting_distance, aliquoting_predup_profile = cnd_aliquoting_I(T, p)[:2]