Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/apple.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ jobs:
strategy:
fail-fast: false
matrix:
#python-version: ["3.14"]
python-version: ["3.11", "3.12", "3.13"]
#python-version: ["3.15"]
python-version: ["3.12", "3.13", "3.14"]

env:
MPLBACKEND: Agg # https://github.com/orgs/community/discussions/26434
Expand All @@ -34,7 +34,7 @@ jobs:
run: |
brew install ffmpeg imagemagick
python -m pip install --upgrade pip
python -m pip install flake8 pytest anndata bioio bioio-ome-tiff matplotlib networkx neuroglancer numpy pandas requests scikit-image scipy vtk "ome-zarr<0.14.0"
python -m pip install flake8 pytest anndata bioio bioio-ome-tiff geopandas matplotlib networkx neuroglancer numpy pandas requests scikit-image scipy shapely spatialdata vtk
python -m pip install /Users/runner/work/physicelldataloader/physicelldataloader -v
#if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: lint with flake8
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ jobs:
strategy:
fail-fast: false
matrix:
#python-version: ["3.14"]
python-version: ["3.11", "3.12", "3.13"]
#python-version: ["3.15"]
python-version: ["3.12", "3.13","3.14"]

env:
MPLBACKEND: Agg # https://github.com/orgs/community/discussions/26434
Expand All @@ -35,7 +35,7 @@ jobs:
sudo apt update
sudo apt install ffmpeg imagemagick
python -m pip install --upgrade pip
python -m pip install flake8 pytest anndata bioio bioio-ome-tiff matplotlib networkx neuroglancer numpy pandas requests scikit-image scipy vtk "ome-zarr<0.14.0"
python -m pip install flake8 pytest anndata bioio bioio-ome-tiff geopandas matplotlib networkx neuroglancer numpy pandas requests scikit-image scipy shapely spatialdata vtk
python -m pip install /home/runner/work/physicelldataloader/physicelldataloader -v
#if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: lint with flake8
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ jobs:
strategy:
fail-fast: false
matrix:
#python-version: ["3.14"]
python-version: ["3.11", "3.12", "3.13"]
#python-version: ["3.15"]
python-version: ["3.12", "3.13", "3.14"]

env:
MPLBACKEND: Agg # https://github.com/orgs/community/discussions/26434
Expand All @@ -34,7 +34,7 @@ jobs:
run: |
choco install ffmpeg imagemagick
python -m pip install --upgrade pip
python -m pip install flake8 pytest anndata bioio bioio-ome-tiff matplotlib networkx neuroglancer numpy pandas requests scikit-image scipy vtk "ome-zarr<0.14.0"
python -m pip install flake8 pytest anndata bioio bioio-ome-tiff geopandas matplotlib networkx neuroglancer numpy pandas requests scikit-image scipy shapely spatialdata vtk
python -m pip install D:\a\physicelldataloader\physicelldataloader -v
#echo 'set PYTHONPATH=D:\a\physicelldataloader\physicelldataloader' >> $GITHUB_ENV
#if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,6 @@ pcdl.egg-info/

# jupyter
**/.ipynb_checkpoints/

# galaxy
tool_test_output*
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,12 @@ Developers, please make pull requests to the https://github.com/elmbeech/physice

## Release Notes:

+ version 4.1.8 (2026-08-26): elmbeech/physicelldataloader
+ branch v4 compatible with bioconda and galaxy.

+ version 4.1.7 (2026-08-21): elmbeech/physicelldataloader
+ compatible with pandas v3.0.0.

+ version 4.1.6 (2026-08-20): elmbeech/physicelldataloader
+ pcdl installs now by default lightweight with only the core dependencies; users are prompted to install optional libraries if necessary. special thanks to Heber Rocha!

Expand Down
91 changes: 91 additions & 0 deletions jakku/biocondarecipes_recipes/pcdl/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
{% set name = "pcdl" %}
{% set version = "4.1.8" %}

package:
name: {{ name }}
version: {{ version }}

source:
url: https://pypi.org/packages/source/{{ name[0] }}/{{ name }}/pcdl-{{ version }}.tar.gz
sha256: e1bc3f1c6a645037eb5dead5aa013e9d62cd51a069daf85090976f52ddf4d829

build:
number: 0
noarch: python
entry_points:
- pcdl_get_version = pcdl.commandline:get_version
- pcdl_get_unit_dict = pcdl.commandline:get_unit_dict
- pcdl_get_substrate_list = pcdl.commandline:get_substrate_list
- pcdl_get_conc_attribute = pcdl.commandline:get_conc_attribute
- pcdl_get_conc_df = pcdl.commandline:get_conc_df
- pcdl_plot_contour = pcdl.commandline:plot_contour
- pcdl_make_conc_vtk = pcdl.commandline:make_conc_vtk
- pcdl_get_celltype_list = pcdl.commandline:get_celltype_list
- pcdl_get_cell_attribute_list = pcdl.commandline:get_cell_attribute_list
- pcdl_get_cell_attribute = pcdl.commandline:get_cell_attribute
- pcdl_get_cell_df = pcdl.commandline:get_cell_df
- pcdl_get_anndata = pcdl.commandline:get_anndata
- pcdl_make_graph_gml = pcdl.commandline:make_graph_gml
- pcdl_plot_scatter = pcdl.commandline:plot_scatter
- pcdl_make_cell_vtk = pcdl.commandline:make_cell_vtk
- pcdl_plot_timeseries = pcdl.commandline:plot_timeseries
- pcdl_make_gif = pcdl.commandline:make_gif
- pcdl_make_movie = pcdl.commandline:make_movie
script: {{ PYTHON }} -m pip install . -vvv --no-deps --no-build-isolation --no-cache-dir
run_exports:
- {{ pin_subpackage(name, max_pin="x") }}

requirements:
host:
- python >=3.11,<4.0
- hatchling
- pip
run:
- python >=3.11,<4.0
- matplotlib-base
- numpy
- pandas >=2.2.2
- scipy >=1.13.0
- anndata >=0.10.8
- requests
- vtk
- imagemagick
- ffmpeg

test:
imports:
- pcdl
commands:
- pcdl_get_version --help
- pcdl_get_unit_dict --help
- pcdl_get_substrate_list --help
- pcdl_get_conc_attribute --help
- pcdl_get_conc_df --help
- pcdl_plot_contour --help
- pcdl_make_conc_vtk --help
- pcdl_get_celltype_list --help
- pcdl_get_cell_attribute_list --help
- pcdl_get_cell_attribute --help
- pcdl_get_cell_df --help
- pcdl_get_anndata --help
- pcdl_make_graph_gml --help
- pcdl_plot_scatter --help
- pcdl_make_cell_vtk --help
- pcdl_plot_timeseries --help
- pcdl_make_gif --help
- pcdl_make_movie --help

about:
summary: "physicell data loader (pcdl) provides a platform independent, python3 based, pip installable interface to transform output, generated with the PhysiCell agent based modeling framework, into standard formats."
home: "https://github.com/elmbeech/physicelldataloader"
dev_url: "https://github.com/elmbeech/physicelldataloader"
license: "BSD-3-Clause"
license_family: BSD
license_file: LICENSE
doc_url: "https://github.com/elmbeech/physicelldataloader/blob/v{{ version }}/README.md"

extra:
recipe-maintainers:
- elmbeech
autobump:
enable: False # see https://github.com/bioconda/bioconda-recipes/pull/57971
17 changes: 17 additions & 0 deletions jakku/toolsiuc_tools/pcdl/.shed.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: pcdl
owner: iuc
description: pcdl PhysiCell Data Loader.
long_description: Galaxy wrapper for the pcdl PhysiCell Data Loader command line commands for downstream analysis from PhysiCell output.
homepage_url: https://github.com/elmbeech/physicelldataloader
remote_repository_url: https://github.com/galaxyproject/tools-iuc/tree/main/tools/pcdl
type: unrestricted
categories: [Systems Biology, Data Export, Graphics]

auto_tool_repositories:
name_template: "{{ tool_id }}"
description_template: "Galaxy wrapper for physicell dataloader function: {{ tool_name }}."

suite:
name: suite_pcdl
description: Galaxy wrapper suite for the pcdl PhysiCell Data Loader command line commands.
long_description: Galaxy wrapper suite for the pcdl PhysiCell Data Loader command line commands. Pcdl is paramount for downstream analysis from PhysiCell output. As such, the pcdl Galaxy tools are useful if you work with the interactive PhysiCell Studio Galaxy tool.
23 changes: 23 additions & 0 deletions jakku/toolsiuc_tools/pcdl/README.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
pcdl
====

Galaxy wrapper for the pcdl PhysiCell Data Loader command line commands.
Pcdl is paramount for downstream analysis from PhysiCell output.
As such, the pcdl Galaxy tools are useful if you work with the interactive
PhysiCell Studio Galaxy tool.
+ https://usegalaxy.eu/?tool_id=interactive_tool_pcstudio&version=latest

You will have to unzip the PhysiCell output folder before you can run
pcdl Galaxy tools on it.
+ https://usegalaxy.eu/?tool_id=toolshed.g2.bx.psu.edu%2Frepos%2Fimgteam%2Funzip%2Funzip%2F6.0%2Bgalaxy0&version=latest
+ https://usegalaxy.org/?tool_id=toolshed.g2.bx.psu.edu%2Frepos%2Frheiland%2Fphysicell_studio%2Finteractive_tool_pcstudio%2F0.3&version=latest

More information about PhysiCell, PhysiCell Studio, and PhysiCell Data Loader
can be found here:
+ https://physicell.org/index.html
+ https://physicell-studio.readthedocs.io/en/latest/index.html
+ https://github.com/elmbeech/physicelldataloader

Date: 2025-06-06
License: BSD-3-Clause
Author: Elmar Bucher
128 changes: 128 additions & 0 deletions jakku/toolsiuc_tools/pcdl/pcdl_get_anndata.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
<tool id="pcdl_get_anndata" name="pcdl_get_anndata" version="3.0.1+galaxy0" profile="21.05">
<macros>
<import>pcdl_macros.xml</import>
</macros>
<requirements>
<expand macro="requirement"/>
</requirements>
<command><![CDATA[
#import re
mkdir output_pc &&
#for $file in $path:
#set $filename = re.sub('[^\w\-\.\s]', '_', str($file.element_identifier))
ln -s '$file' output_pc/$filename &&
#end for

pcdl_get_anndata 'output_pc' $entropy
--custom_data_type $custom_data_type
--microenv $microenv
--graph $graph
--physiboss $physiboss
--settingxml 'none'
--verbose $verbose
--drop $drop
--keep $keep
--scale maxabs
--collapse $collapse
]]></command>
<inputs>
<section name="essential" title="essential:" expanded="true">
<expand macro="path"/>
<expand macro="entropy"/>
<expand macro="custom_data_type"/>
<expand macro="drop"/>
<expand macro="keep"/>
<expand macro="scale"/>
<expand macro="collapse"/>
</section>
<section name="advanced" title="advanced:" expanded="false">
<expand macro="microenv"/>
<expand macro="graph"/>
<expand macro="physiboss"/>
<expand macro="verbose"/>
</section>
</inputs>
<outputs>
<collection name="anndata_h5ad" type="list">
<discover_datasets pattern="(?P&lt;designation&gt;.+)\.h5ad" format="h5ad" directory="output_pc" visible="false"/>
</collection>
</outputs>
<tests>
<test expect_num_outputs="1">
<section name="essential">
<param name="path">
<expand macro="output"/>
</param>
<param name="collapse" value="true"/>
</section>
<section name="advanced">
<param name="verbose" value="true"/>
</section>
<output_collection name="anndata_h5ad" count="1">
<element name="timeseries_cell_maxabs">
<assert_contents>
<has_h5_keys keys="X"/>
<has_h5_keys keys="layers"/>
<has_h5_keys keys="obs/z_layer, obs/time, obs/ID, obs/cell_type, obs/chemotaxis_index, obs/current_death_model, obs/current_phase, obs/cycle_model"/>
<has_h5_keys keys="obsm/spatial"/>
<has_h5_keys keys="uns"/>
<has_h5_keys keys="var/_index"/>
<has_h5_keys keys="varm"/>
<has_h5_keys keys="varp"/>
</assert_contents>
</element>
</output_collection>
</test>
<test expect_num_outputs="1">
<section name="essential">
<param name="path">
<expand macro="output"/>
</param>
<param name="collapse" value="false"/>
</section>
<section name="advanced">
<param name="verbose" value="false"/>
</section>
<output_collection name="anndata_h5ad" count="2">
<element name="output00000000_cell_maxabs">
<assert_contents>
<has_h5_keys keys="X"/>
<has_h5_keys keys="layers"/>
<has_h5_keys keys="obs/z_layer, obs/time, obs/ID, obs/cell_type, obs/chemotaxis_index, obs/current_death_model, obs/current_phase, obs/cycle_model"/>
<has_h5_keys keys="obsm/spatial"/>
<has_h5_keys keys="uns"/>
<has_h5_keys keys="var/_index"/>
<has_h5_keys keys="varm"/>
<has_h5_keys keys="varp"/>
</assert_contents>
</element>
<element name="output00000001_cell_maxabs">
<assert_contents>
<has_h5_keys keys="X"/>
<has_h5_keys keys="layers"/>
<has_h5_keys keys="obs/z_layer, obs/time, obs/ID, obs/cell_type, obs/chemotaxis_index, obs/current_death_model, obs/current_phase, obs/cycle_model"/>
<has_h5_keys keys="obsm/spatial"/>
<has_h5_keys keys="uns"/>
<has_h5_keys keys="var/_index"/>
<has_h5_keys keys="varm"/>
<has_h5_keys keys="varp"/>
</assert_contents>
</element>
</output_collection>
</test>
</tests>
<help><![CDATA[
Function to transform mcds time steps into one or many anndata objects for downstream analysis.

Scale parameter details: Possible values are None, maxabs, minmax, std.
None: no scaling. Set scale to None if you would like to have raw data or entirely scale, transform, and normalize the data later.
Maxabs: maximum absolute value distance scaler will linearly map all values into a [-1, 1] interval. If the original data has no negative values, the result will be the same as with the minmax scaler (except with attributes with only one value). If the attribute has only zeros, the value will be set to 0.
Minmax: minimum maximum distance scaler will map all values linearly into a [0, 1] interval. If the attribute has only one value, the value will be set to 0.
Std: standard deviation scaler will result in sigmas. Each attribute will be mean centered around 0. Ddof delta degree of freedom is set to 1 because it is assumed that the values are samples out of the population and not the entire population. It is incomprehensible to me that the equivalent sklearn method has ddof set to 0. If the attribute has only one value, the value will be set to 0.

Homepage: https://github.com/elmbeech/physicelldataloader
]]></help>
<citations>
<expand macro="citation"/>
</citations>
</tool>
Loading
Loading