diff --git a/.github/workflows/publish-to-pypi.yml b/.github/workflows/publish-to-pypi.yml
index dd5dd367..ad759638 100644
--- a/.github/workflows/publish-to-pypi.yml
+++ b/.github/workflows/publish-to-pypi.yml
@@ -1,13 +1,14 @@
name: Publish PathML distribution to PyPI and TestPyPI
on:
+ workflow_dispatch:
release:
types: [published]
jobs:
build-n-publish:
name: Build and publish PathML distribution to PyPI and TestPyPI
- runs-on: ubuntu-18.04
+ runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Set up Python 3.9
diff --git a/.github/workflows/tests-conda.yml b/.github/workflows/tests-conda.yml
index 05401f41..c93c4213 100644
--- a/.github/workflows/tests-conda.yml
+++ b/.github/workflows/tests-conda.yml
@@ -1,6 +1,7 @@
name: Tests
-on:
+on:
+ workflow_dispatch:
pull_request:
branches:
- dev
@@ -17,6 +18,7 @@ jobs:
max-parallel: 5
matrix:
python-version: [3.8, 3.9]
+ timeout-minutes: 60 # add a timeout
steps:
- uses: actions/checkout@v2
@@ -24,34 +26,49 @@ jobs:
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- # Test matrix by printing the current Python version
- name: Display Python version
run: python -c "import sys; print(sys.version)"
- name: Install dependencies
shell: bash -l {0}
run: |
sudo apt-get update
- # install openslide
sudo apt-get install openslide-tools
- # install pandoc for making documentation
sudo apt-get install pandoc
- name: Setup Miniconda
- # You may pin to the exact commit or the version.
- # uses: conda-incubator/setup-miniconda@f4c00b0ec69bdc87b1ab4972613558dd9f4f36f3
- uses: conda-incubator/setup-miniconda@v2.0.0
+ uses: conda-incubator/setup-miniconda@v2
with:
- add_pip_as_python_dependency: false
- environment-file: environment.yml
+ auto-activate-base: false
activate-environment: pathml
+ environment-file: environment.yml
+ # mamba-version: "*"
+ miniforge-version: latest
+ use-mamba: true
+ channels: conda-forge
python-version: ${{ matrix.python-version }}
+ - name: Debugging
+ run: |
+ echo "Printing the environment.yml file..."
+ cat environment.yml
+ echo "Checking the status of mamba..."
+ mamba --version
+ echo "Checking the available disk space..."
+ df -h
+ - name: Install dependencies with mamba
+ shell: bash -l {0}
+ run: mamba env update --file environment.yml --name pathml
- name: Conda info
shell: bash -l {0}
run: |
conda info
conda list
- - name: pip install pathml
- shell: bash -l {0}
+ - name: Install PathML
+ shell: bash -l {0}
run: pip install -e .
+
+ - name: Install python-spams
+ shell: bash -l {0}
+ run: pip install python-spams
+
- name: disk usage
shell: bash -l {0}
run: |
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 7320bf2f..e096e8b3 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -16,7 +16,7 @@ repos:
- id: black
- repo: https://github.com/timothycrosley/isort
- rev: 5.10.1
+ rev: 5.11.5
hooks:
- id: isort
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
index 86d61526..02377793 100644
--- a/.readthedocs.yaml
+++ b/.readthedocs.yaml
@@ -5,6 +5,11 @@
# Required
version: 2
+build:
+ os: ubuntu-22.04
+ tools:
+ python: "3.8"
+
# Build documentation with Sphinx
sphinx:
configuration: docs/source/conf.py
@@ -12,6 +17,5 @@ sphinx:
fail_on_warning: false
python:
- version: "3.8"
install:
- requirements: docs/readthedocs-requirements.txt
diff --git a/README.md b/README.md
index 745e0fc2..ade81e2d 100644
--- a/README.md
+++ b/README.md
@@ -1,19 +1,27 @@
-
-
-
+🤖🔬 **PathML: Tools for computational pathology**
+[![Downloads](https://static.pepy.tech/badge/pathml)](https://pepy.tech/project/pathml)
[![Documentation Status](https://readthedocs.org/projects/pathml/badge/?version=latest)](https://pathml.readthedocs.io/en/latest/?badge=latest)
+[![codecov](https://codecov.io/gh/Dana-Farber-AIOS/pathml/branch/master/graph/badge.svg?token=UHSQPTM28Y)](https://codecov.io/gh/Dana-Farber-AIOS/pathml)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![PyPI version](https://img.shields.io/pypi/v/pathml)](https://pypi.org/project/pathml/)
-[![Downloads](https://pepy.tech/badge/pathml)](https://pepy.tech/project/pathml)
-[![codecov](https://codecov.io/gh/Dana-Farber-AIOS/pathml/branch/master/graph/badge.svg?token=UHSQPTM28Y)](https://codecov.io/gh/Dana-Farber-AIOS/pathml)
+
+⭐ **PathML objective is to lower the barrier to entry to digital pathology**
+
+Imaging datasets in cancer research are growing exponentially in both quantity and information density. These massive datasets may enable derivation of insights for cancer research and clinical care, but only if researchers are equipped with the tools to leverage advanced computational analysis approaches such as machine learning and artificial intelligence. In this work, we highlight three themes to guide development of such computational tools: scalability, standardization, and ease of use. We then apply these principles to develop PathML, a general-purpose research toolkit for computational pathology. We describe the design of the PathML framework and demonstrate applications in diverse use cases.
+
+🚀 **The fastest way to get started?**
+
+ docker pull pathml/pathml && docker run -it -p 8888:8888 pathml/pathml
| Branch | Test status |
| ------ | ------------- |
| master | ![tests](https://github.com/Dana-Farber-AIOS/pathml/actions/workflows/tests-conda.yml/badge.svg?branch=master) |
| dev | ![tests](https://github.com/Dana-Farber-AIOS/pathml/actions/workflows/tests-conda.yml/badge.svg?branch=dev) |
-An open-source toolkit for computational pathology and machine learning.
+
+
+
**View [documentation](https://pathml.readthedocs.io/en/latest/)**
@@ -125,6 +133,23 @@ Note that these instructions assume that there are no other processes using port
Please refer to the `Docker run` [documentation](https://docs.docker.com/engine/reference/run/) for further instructions
on accessing the container, e.g. for mounting volumes to access files on a local machine from within the container.
+## Option 4: Google Colab
+
+To get PathML running in a Colab environment:
+
+````
+!pip install openslide-python
+!apt-get install openslide-tools
+!apt-get install openjdk-8-jdk-headless -qq > /dev/null
+os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64"
+!update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
+!java -version
+!pip install pathml
+````
+
+*Thanks to all of our open-source collaborators for helping maintain these installation instructions!*
+*Please open an issue for any bugs or other problems during installation process.*
+
## CUDA
To use GPU acceleration for model training or other tasks, you must install CUDA.
@@ -191,12 +216,36 @@ See [contributing](https://github.com/Dana-Farber-AIOS/pathml/blob/master/CONTRI
# Citing
-If you use `PathML` in your work, please cite our paper:
+If you use `PathML` please cite:
+
+- [**J. Rosenthal et al., "Building tools for machine learning and artificial intelligence in cancer research: best practices and a case study with the PathML toolkit for computational pathology." Molecular Cancer Research, 2022.**](https://doi.org/10.1158/1541-7786.MCR-21-0665)
+
+So far, PathML was used in the following manuscripts:
+
+- [J. Linares et al. **Molecular Cell** 2021](https://www.cell.com/molecular-cell/fulltext/S1097-2765(21)00729-2)
+- [A. Shmatko et al. **Nature Cancer** 2022](https://www.nature.com/articles/s43018-022-00436-4)
+- [J. Pocock et al. **Nature Communications Medicine** 2022](https://www.nature.com/articles/s43856-022-00186-5)
+- [S. Orsulic et al. **Frontiers in Oncology** 2022](https://www.frontiersin.org/articles/10.3389/fonc.2022.924945/full)
+- [D. Brundage et al. **arXiv** 2022](https://arxiv.org/abs/2203.13888)
+- [A. Marcolini et al. **SoftwareX** 2022](https://www.sciencedirect.com/science/article/pii/S2352711022001558)
+- [M. Rahman et al. **Bioengineering** 2022](https://www.mdpi.com/2306-5354/9/8/335)
+- [C. Lama et al. **bioRxiv** 2022](https://www.biorxiv.org/content/10.1101/2022.09.28.509751v1.full)
+- the list continues [**here 🔗 for 2023 and onwards**](https://scholar.google.com/scholar?oi=bibs&hl=en&cites=1157052756975292108)
+
+# Users
+
+
This is where in the world our most enthusiastic supporters are located:
+ + ![]() |
+and this is where they work:
+ + ![]() |
+