Skip to content

Remove extraneous str casts #210

Remove extraneous str casts

Remove extraneous str casts #210

Workflow file for this run

name: UniFrac CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: flake8
uses: actions/setup-python@v3
with:
python-version: 3.9
- name: install dependencies
run: python -m pip install --upgrade pip
- name: lint
run: |
pip install -q flake8
flake8 unifrac setup.py
build-and-test:
needs: lint
strategy:
matrix:
python-version: ['3.8', '3.9', '3.10', '3.11']
os: [ubuntu-latest, macos-latest, linux-gpu-cuda]
exclude:
- os: macos-latest
python-version: '3.9'
- os: macos-latest
python-version: '3.10'
- os: linux-gpu-cuda
python-version: '3.8'
- os: linux-gpu-cuda
python-version: '3.9'
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: conda-incubator/setup-miniconda@v2
with:
miniconda-version: "latest"
auto-update-conda: true
python-version: ${{ matrix.python-version }}
- name: Install
shell: bash -l {0}
run: |
conda create --yes -n unifrac -c conda-forge -c bioconda python=${{ matrix.python-version }}
conda activate unifrac
conda config --add channels conda-forge
conda config --add channels bioconda
if [[ "$(uname -s)" == "Linux" ]];
then
conda install --yes -c conda-forge -c bioconda gxx_linux-64
else
conda install --yes -c conda-forge -c bioconda clangxx_osx-64
fi
conda install --yes -c conda-forge -c bioconda "unifrac-binaries>=1.2"
conda install --yes -c conda-forge -c bioconda cython biom-format numpy "h5py>3.3.0" "scikit-bio>=0.5.8" nose
echo "$(uname -s)"
if [[ "$(uname -s)" == "Linux" ]];
then
which x86_64-conda-linux-gnu-gcc
x86_64-conda-linux-gnu-gcc -v
x86_64-conda-linux-gnu-g++ -v
else
which clang
clang -v
fi
which h5c++
pip install iow
pip install -e .
- name: Tests
shell: bash -l {0}
run: |
conda activate unifrac
# keep it low for runs in containers
# and a weird number to potentially catch potential bugs
export OMP_NUM_THREADS=3
# diagnostic messages for debugging, if needed
export UNIFRAC_GPU_INFO=Y
ls -lrt $CONDA_PREFIX/lib/libhdf5_cpp*
nosetests
- name: Sanity checks
shell: bash -l {0}
run: |
conda activate unifrac
# keep it low for runs in containers
# and a weird number to potentially catch potential bugs
export OMP_NUM_THREADS=3
# diagnostic messages for debugging, if needed
export UNIFRAC_GPU_INFO=Y
set -e
ssu -i unifrac/tests/data/crawford.biom -t unifrac/tests/data/crawford.tre -o ci/test.dm -m unweighted
python -c "import skbio; dm = skbio.DistanceMatrix.read('ci/test.dm')"
pushd unifrac/tests
export UNIFRAC_TIMING_INFO=Y
python -c "import unifrac; unifrac.unweighted_to_file('data/crawford.biom','data/crawford.tre','../../ci/test.dm.h5')"
python -c "import unifrac,skbio; dm_u=unifrac.unweighted('data/crawford.biom','data/crawford.tre'); dm = skbio.DistanceMatrix.read('../../ci/test.dm'); t=abs(dm_u.data-dm.data).max(); print(t); assert t < 0.1"
python -c "import unifrac; unifrac.unweighted_to_file('data/crawford.biom','data/crawford.tre','../../ci/test2.dm.h5',permanova_perms=99,grouping_filename='data/crawford.group.tsv',grouping_columns='Treatment')"
python -c "import unifrac; unifrac.weighted_normalized_to_file('data/crawford.biom','data/crawford.tre','../../ci/test3.dm.h5',subsample_depth=2,pcoa_dims=2)"
export UNIFRAC_TIMING_INFO=N
popd
python -c "import h5py,skbio; f_u=h5py.File('ci/test.dm.h5','r'); dm_u=skbio.stats.distance.DistanceMatrix(f_u['matrix'][:,:],f_u['order'][:])"
python -c "import h5py,skbio; dm = skbio.DistanceMatrix.read('ci/test.dm'); f_u=h5py.File('ci/test.dm.h5','r'); dm_u=skbio.stats.distance.DistanceMatrix(f_u['matrix'][:,:],f_u['order'][:]); t=abs(dm_u.data-dm.data).max(); print(t); assert t < 0.1"
python -c "import h5py,skbio; dm = skbio.DistanceMatrix.read('ci/test.dm'); f_u=h5py.File('ci/test2.dm.h5','r'); dm_u=skbio.stats.distance.DistanceMatrix(f_u['matrix'][:,:],f_u['order'][:]); t=abs(dm_u.data-dm.data).max(); print(t); assert t < 0.1"
python -c "import h5py; f_u=h5py.File('ci/test2.dm.h5','r'); print(f_u.keys()); assert len(f_u['stat_methods'][:]) == 1"
python -c "import h5py; f_u=h5py.File('ci/test3.dm.h5','r'); print(f_u.keys()); assert len(f_u['pcoa_eigvals'][:]) == 2"
# repeat using unifrac's h5 interfaces
python -c "import unifrac; dm_u=unifrac.h5unifrac('ci/test.dm.h5'); dm_l=unifrac.h5unifrac_all('ci/test.dm.h5')"
python -c "import unifrac,skbio; dm = skbio.DistanceMatrix.read('ci/test.dm'); dm_u=unifrac.h5unifrac('ci/test.dm.h5'); t=abs(dm_u.data-dm.data).max(); print(t); assert t < 0.1"
python -c "import unifrac,skbio; dm = skbio.DistanceMatrix.read('ci/test.dm'); dm_u=unifrac.h5unifrac_all('ci/test.dm.h5')[0]; t=abs(dm_u.data-dm.data).max(); print(t); assert t < 0.1"
python -c "import unifrac,skbio; dm = skbio.DistanceMatrix.read('ci/test.dm'); dm_u=unifrac.h5unifrac('ci/test2.dm.h5'); t=abs(dm_u.data-dm.data).max(); print(t); assert t < 0.1"
python -c "import unifrac; st_l=unifrac.h5permanova_dict('ci/test2.dm.h5'); assert len(st_l) == 1"
python -c "import unifrac; pc=unifrac.h5pcoa('ci/test3.dm.h5'); print(pc); assert len(pc.eigvals) == 2"
ssu -i unifrac/tests/data/crawford.biom -t unifrac/tests/data/crawford.tre --pcoa 3 --mode multi --subsample-depth 2 --n-subsamples 10 -r hdf5 -o ci/test4.dm.h5 -m unweighted
python -c "import unifrac; dm_u=unifrac.h5unifrac_all('ci/test4.dm.h5'); assert len(dm_u) == 10; print(dm_u[0]); print(dm_u[4]); print(dm_u[9]); dm_u.close(); assert len(dm_u) == 0"
if [[ "$(uname -s)" == "Linux" ]];
then
MD5=md5sum
else
MD5='md5 -r'
fi
ssu -i unifrac/tests/data/crawford.biom -t unifrac/tests/data/crawford.tre -o ci/test.dm.start0.stop3 -m unweighted --mode partial --start 0 --stop 3
ssu -i unifrac/tests/data/crawford.biom -t unifrac/tests/data/crawford.tre -o ci/test.dm.start3.stop5 -m unweighted --mode partial --start 3 --stop 5
ssu -i unifrac/tests/data/crawford.biom -t unifrac/tests/data/crawford.tre -o ci/test.dm.partial --mode merge-partial --partial-pattern "ci/test.dm.start*"
exp=$($MD5 ci/test.dm | awk '{ print $1 }')
obs=$($MD5 ci/test.dm.partial | awk '{ print $1 }')
python -c "assert '${obs}' == '${exp}'"
faithpd -i unifrac/tests/data/crawford.biom -t unifrac/tests/data/crawford.tre -o ci/test.faith.obs
tail -n +2 ci/test.faith.obs > ci/test.faith.header-removed.obs
exp1=$($MD5 unifrac/tests/data/test.faith.exp | awk '{ print $1 }')
obs1=$($MD5 ci/test.faith.header-removed.obs | awk '{ print $1 }')
python -c "assert '${obs1}' == '${exp1}'"