pcdl


Namepcdl JSON
Version 3.3.2 PyPI version JSON
download
home_pageNone
Summaryphysicell data loader (pcdl) provides a platform independent, python3 based, pip installable interface to load output, generated with the PhysiCell agent based modeling framework, into python3.
upload_time2024-11-24 23:58:00
maintainerNone
docs_urlNone
authorNone
requires_python<4,>=3.8
licenseBSD-3-Clause
keywords analysis data physicell python3
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ![physicellcdataloader logo & title](man/img/physicelldataloader_title_v3.0.0.png)


## Abstract:

physicelldataloader (pcdl) provides a platform independent, python3 based, [pip](https://en.wikipedia.org/wiki/Pip_(package_manager)) installable interface
to load output, generated with the [PhysiCell](https://github.com/MathCancer/PhysiCell) agent-based modeling and diffusion solver framework,
into [python3](https://en.wikipedia.org/wiki/Python_(programming_language)).

pcdl was forked from the original [PhysiCell-Tools](https://github.com/PhysiCell-Tools) [python-loader](https://github.com/PhysiCell-Tools/python-loader) implementation.

The pcdl python3 library maintains three branches:

+ **Branch version 1** is the original PhysiCell-Tools/python-loader code.
+ **Branch version 2** will be strictly compatible with the original PhysiCell-Tools/python-loader code, although pip installable.
+ **Branch version 3** might break with old habits, although tries to be as much downward compatible as possible.
  The aim of the v3 branch is to get a very lean and agile python3 physicell output interface for the ones coming from the python3 world.


## Header:

+ Language: python [>= 3.9](https://devguide.python.org/versions/)
+ Library dependencies: aicsimageio, anndata, matplotlib, numpy, pandas, (requests), scipy, vtk
+ Date of origin original PhysiCell-Tools python-loader: 2019-09-02
+ Date of origin pcdl fork: 2022-08-30
+ Doi: https://doi.org/10.5281/ZENODO.8176399
+ License: [BSD-3-Clause](https://en.wikipedia.org/wiki/BSD_licenses)
+ User manual: this README.md file
+ Source code: [https://github.com/elmbeech/physicelldataloader](https://github.com/elmbeech/physicelldataloader)


## HowTo Guide:

+ [installation and troubleshooting](https://github.com/elmbeech/physicelldataloader/tree/master/man/HOWTO.md)


## Tutorial:

Basics Tutorials:

1. [pcdl background](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_introduction.md)
1. [pcdl processing mcds time steps in python3](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_timestep.md)
1. [pcdl processing mcds time series in python3](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_timeseries.md)
1. [pcdl from the command line](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_commandline.md)

Extras tutorials python3 language:
+ [pcdl and python3 and json](https://github.com/elmbeech/physicelldataloader/blob/master/man/TUTORIAL_python3_json.md)
+ [pcdl and python3 and pandas](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_pandas.md)
+ [pcdl and python3 and scipy and scanpy](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_scverse.md)
+ [pcdl and python3 and graphs](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_graph.md)
+ [pcdl and python3 and matplotlib](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_matplotlib.md)
+ [pcdl and python3 and vtk](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_vtk.md)
+ [pcdl and python3 and ome.tiff, tiff, png, and jpeg](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_ometiff.md)
+ [pcdl and python3 and napari](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_napari.md)

Extras tutorials for other languages than python3:

+ [pcdl and julia](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_julia.md)
<!--
+ [pcdl and matlab or octave](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_matlab_octave.md)
-->
+ [pcdl and R](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_r.md)

Extras tutorials for GUI software:

+ [pcdl and paraview](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_paraview.md)
+ [pcdl and blender](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_blender.md)
+ [pcdl and napari](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_napari.md)
+ [pcdl and fiji imagej](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_fijiimagej.md)
<!--
+ [pcdl and neuroglancer](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_(python3)_neuroglancer.md)
-->

Slides:

+ [presentations given](https://github.com/elmbeech/physicelldataloader/tree/master/man/lecture)


## Reference Manual:

+ [API application interface](https://github.com/elmbeech/physicelldataloader/tree/master/man/REFERENCE.md)


## Discussion:

To be developed.


## About Documentation:

Within the pcdl library, we tried to stick to the documentation policy laid out by Daniele Procida in his "[what nobody tells you about documentation](https://www.youtube.com/watch?v=azf6yzuJt54)" talk at PyCon 2017 in Portland, Oregon.


## Contributions:

+ original PhysiCell-Tools python-loader implementation: Patrick Wall, Randy Heiland, Paul Macklin
+ fork pcdl implementation: Elmar Bucher
+ fork pcdl co-programmer: Furkan Kurtoglu, Jennifer Eng, Heber Rocha
+ fork pcdl continuous testing and feedbacks: Aneequa Sundus, John Metzcar
+ student prj on pcdl:
  Benjamin Jacobs (make\_gml),
  Katie Pletz (beta testing),
  Marshal Gress (plot\_scatter),
  Nick Oldfather (unit test model),
  Thierry-Pascal Fleurant (plot\_timeseries)


## Cite:

```bibtex
@Misc{bucher2023,
  author    = {Bucher, Elmar and Wall, Patrick and Rocha, Heber and Kurtoglu, Furkan and Eng, Jennifer and Sundus, Aneequa, and Metzcar, John and Heiland, Randy and Macklin, Paul},
  title     = {elmbeech/physicelldataloader: pcdl platform-independent, pip-installable interface to load PhysiCell agent-based modeling framework output into python3.},
  year      = {2023},
  copyright = {Open Access},
  doi       = {10.5281/ZENODO.8176399},
  publisher = {Zenodo},
}
```


## Road Map:

+ add make\_conc\_vtk visualization parameter.
+ new next generation unit test dataset.
+ evt add neuroglancer ome.tiff support.

## Release Notes:

+ version 3.3.2 (2024-11-24): elmbeech/physicelldataloader
    + **Warnings** will no longer be piped to standard output if verbose is set to False.
    + pyMCDS **make_ome_tiff** function rewriten to be less RAM hungry and more versatile.

+ version 3.3.1 (2024-09-22): elmbeech/physicelldataloader
    + bugfix pyMCDS custom vectors loading.

+ version 3.3.0 (2024-08-22): elmbeech/physicelldataloader
    + **pip install pcdl**: will again install all library dependencies. The fine-tuned version was too confssing.
    + pyMCDS handels now intracellular **physinboss** data too; data is stored in cell\_df.
    + rename pyMCDS get\_cell\_variables to **get_celltype_list** for conciseness and order list by ID.
    + rename pyMCDS get\_substrate\_names to **get_substrate_list** for conciseness and order list by ID.
    + rename pyMCDS get\_scatter to **plot_scatter** for conciseness.
    + rename pyMCDS get\_contour to **plot_contour** for conciseness.
    + rename pyMCDSts make\_imgcell to **plot_scatter** for conciseness.
    + rename pyMCDSts make\_imgconc to **plot_contour** for conciseness.
    + rename pyMCDSts get\_cell\_df\_states to **get_cell_attribute** for conciseness.
    + rename pyMCDSts get\_conc\_df\_states to **get_conc_attribute** for conciseness.
    + rewrite pyMCDS mcds.get\_unit\_se into **mcds.get_unit_dict**.
    + new pyCLI **pcdl_get_anndata** command line interface function.
    + new pyCLI **pcdl_get_celltype_list** command line interface function.
    + new pyCLI **pcdl_get_cell_attribute** command line interface function.
    + new pyCLI **pcdl_get_cell_df** command line interface function.
    + new pyCLI **pcdl_get_substrate_list** command line interface function.
    + new pyCLI **pcdl_get_conc_attribute** command line interface function.
    + new pyCLI **pcdl_get_conc_df** command line interface function.
    + new pyCLI **pcdl_get_graph_gml** command line interface function.
    + new pyCLI **pcdl_get_unit_dict** command line interface function.
    + new pyCLI **pcdl_get_version** command line interface function.
    + new pyCLI **pcdl_make_cell_vtk** command line interface function.
    + new pyCLI **pcdl_make_conc_vtk** command line interface function.
    + new pyCLI **pcdl_make_gif** command line interface function.
    + new pyCLI **pcdl_make_movie** command line interface function.
    + new pyCLI **pcdl_make_ome_tiff** command line interface function.
    + new pyCLI **pcdl_plot_contour** command line interface function.
    + new pyCLI **pcdl_plot_scatter** command line interface function.
    + new pyCLI **pcdl_plot_timeseries** command line interface function.
    + new pyMCDS **mcds.get_mesh_mnp** function, the mesh version from mcds.get\_voxel\_ijk.
    + new pyMCDS **make_conc_vtk** function, to save substrate data as rectilinear grid vtk file.
    + new pyMCDS **make_cell_vtk** function, to save cell data as glyph vtk file.
    + new pyMCDS **make_graph_gml** function, to save graphs in a networkx and igraph compatible file format.
    + new pyMCDS **make_ome_tiff** function, to save the output data in ome tiff file format.
    + new pyMCDS **set_verbosity_true** function, to complete pcdl.TimeStep(verbosity=True/False) experience.
    + new pyMCDS **set_verbosity_false** function, to complete pcdl.TimeStep(verbosity=True/False) experience.
    + new pyMCDSts **get_cell_df** function, to extract one big dataframe or a list of dataframes from the whole time series.
    + new pyMCDSts **get_conc_df** function, to extract one big dataframe or a list of dataframes from the whole time series.
    + new pyMCDSts **make_cell_vtk** function, to save substrate data as rectilinear grid vtk files.
    + new pyMCDSts **make_conc_vtk** function, to save cell data as glyph vtk files.
    + new pyMCDSts **make_graph_gml** function, to save graphs in a networkx and igraph compatible files format.
    + new pyMCDSts **make_ome_tiff** function, to save the output data in ome tiff file format.
    + new pyMCDSts **plot_timeseries** function, to plot time series.
    + new pyMCDSts **set_verbosity_true** function, to complete the pcdl.TimeSeries(verbosity=True/False) experience.
    + new pyMCDSts **set_verbosity_false** function to complete the pcdl.TimeSeries(verbosity=True/False) experience.

+ version 3.2.13 (2023-09-18): elmbeech/physicelldataloader
    + rename pyMCDSts make\_imgsubs to **make_imgconc** for consistency.
    + add **man/lecture/20230917_pcdl_repl_programming_analysis_plots.pdf** slide deck.

+ version 3.2.12 (2023-08-12): elmbeech/physicelldataloader
    + add **man/jupyter/pcdl_repl_programming.ipynb** : Jupyter notebook to give an idea about how to work with pcdl in a python3 REPL.
    + add **man/lecture/20230808_pcws2023_session07_pcdl.pdf** slide deck.
    + add github **continuous integration** for all supported python3 versions, all supported operating systems.

+ version 3.2.11 (2023-08-08): elmbeech/physicelldataloader
    + **pip install pcdl**: will only install the bare minimum library dependencies.
    + **pip install pcdl[data]**: will install the minimum dependencies plus the dependencies to download the test dataset.
    + **pip install pcdl[scverse]**: will install the minimum dependencies plus the dependencies needed to generate an anndata object.
    + **pip install pcdl[all]**: will always install all dependencies.
    + new TimeSeries **get_annmcds_list** function, which points to the self.l\_annmcds object.
    + new pyMCDS **get_scatter** function is split off from pyMCDSts make\_imgcell.
    + pyMCDSts **make_imgcell** and **make_imgsubs** bug fixes.
    + TimeStep and TimeSeries **get_anndata** evolution.

+ version 3.2.10 (2023-07-24): elmbeech/physicelldataloader
    + rename pyMCDSts get\_cell\_df\_columns\_states to **get_cell_df_states** for conciseness.
    + rename pyMCDSts get\_conc\_df\_columns\_states to **get_conc_df_states** for conciseness.

+ version 3.2.9 (2023-07-23): elmbeech/physicelldataloader
    + new class **TimeStep** can do everything pyMCDS can do and more.
    + new class **TimeSeries** can do everything pyMCDSts can do and more.
    + new TimeStep **get_anndata** function to transform physicell output into [AnnData](https://anndata.readthedocs.io/en/latest/) objects.
    + new TimeSeries **get_anndata** function to transform physicell output into [AnnData](https://anndata.readthedocs.io/en/latest/) objects.
    + internal pyAnnData **scaler** function.
    + internal pyAnnData **\_anndextract** function.
    + pyMCDS **_\_init__** seetingxml parameter changed from boolean to string to accept other PhysiCell\_settings.xml filenames than the default.
    + pyMCDS **get_cell_df** drop and keep parameters to declare a set of columns to be dropped or kept.
    + pyMCDS **get_conc_df** drop and keep parameters to declare a set of columns to be dropped or kept.
    + new pyMCDS **get_conc_df** shorthand for get\_concentration\_df.
    + pyMCDSts get\_cell\_minstate\_col reimplementation as **get_cell_df_columns_states** function.
    + pyMCDSts get\_concentartion\_minstate\_col reimplementation as **get_conc_df_columns_states** function.
    + new pyMCDSts **get_mcds_list** function which points to the self.l\_mcds object.

+ version 3.2.8 (2023-06-21): elmbeech/physicelldataloader
    + pyMCDS **get_concentration_df** states parameter to filter out non-informative variables.
    + pyMCDS **get_cell_df** states parameter to filter out non-informative variables.
    + pyMCDSts **_\_init__** load parameter to specify if the whole time series data straight at object initialization should be loaded.
    + new pyMCDSts **get_cell_minstate_col** function to scan the whole time series for informative attributes.
    + new pyMCDSts **get_concentartion_minstate_col** function to scan the whole time series for informative attributes.

+ version 3.2.7 (2023-06-20): elmbeech/physicelldataloader
    + pyMCDS and pyMCDSts **_\_init__** custom\_type parameter to specify other custom\_data variable types (int, bool, str) then the generic float.

+ version 3.2.5 (2023-06-19): elmbeech/physicelldataloader
    + pyMCDS resolves incompatibility with earlier PhysiCell and MultiCellDS versions.

+ version 3.2.4 (2023-06-17): elmbeech/physicelldataloader
    + pyMCDS **_\_init__** seetingxml parameter for cases where in the output folder no PhysiCell\_settings.xml can be found.
    + pyMCDSts **mcdsts.make_imgcell** extrema parameter is replaced by the z\_axis parameter to account for numerical and categorical variable types.

+ version 3.2.2 (2023-06-16): elmbeech/physicelldataloader
    + pyMCDS **mcds.get_cell_df** sets distinct boolean, categorical, integer number, and real number variable types. categorical number codes are translated. for all spatial variables, the vector length value is calculated and added automatically.
    + new pyMCDS **mcds.get_celltype_dict** function.
    + new pyMCDS **mcds.get_substrate_dict** function.
    + pyMCDSts **mcdsts.make_imgcell** and **mcdsts.make_imgsubs** functions improved.

+ version 3.2.1 (2023-06-12): elmbeech/physicelldataloader
    + pypa odyssey is coming to an end.
    + change build system from setuptools to hatching.
    + change the library name from pcDataLoader to pcdl.
    + to make the library installation more lightweight, test data was excluded from the basic installation.
      given the computer is connected to the internet, test data can easily be installed and removed with the **pcdl.install_data()** and **pcdl.uninstall_data()** functions now.

+ version 3.0.7 (2023-06-08): elmbeech/physicelldataloader
    + pyMCDSts: replaces the svg dependent **mcdsts.make_jpeg**, **mcdsts.make_png**, and **mcdsts.make_tiff** with **mcdsts.make_imgcell** and **mcdsts.make_imgsubs** which generate images straight out of the loaded data. the **mcdsts.make_gif** and **mcdsts.make_movie** functions were adjusted accordingly.
    + pyMCDSts: **mcdsts.read_mcds** loads now automatically all mcds snapshots if no xmlfile\_list is provided (default).

+ version 3.0.6 (2023-04-29): elmbeech/physicelldataloader
    + pyMCDS **\_read_xml** is now able to load time steps with zero cells.
    + pyMCDS **mcds.get_contour** can handle more input parameters.

+ version 3.0.5 (2023-02-26): elmbeech/physicelldataloader pyMCDS **mcds.get_contour**  plots span now the whole domain and not only to the border voxel centers.
+ version 3.0.4 (2023-02-21): elmbeech/physicelldataloader pyMCDS **mcds.get_contour** function, to easily generate for substrates matplotlib contourf and contour plots because they do not exist as pandas plots.
+ version 3.0.3 (2023-02-19): elmbeech/physicelldataloader branch 3 has no longer anndata and, as such, hdf5 dependency.
+ version 3.0.2 (2023-01-06): elmbeech/physicelldataloader bugfix installing package data.
+ version 3.0.0 (2023-01-06): elmbeech/physicelldataloader
    + **pyMCDS** parameter **xml_file** can now handle path/file.xml (unix) or path\file.xml (dos) input, as long output_path is the default.
    + **pyMCDS** has a new additional boolean **microenv** parameter, to specify if the microenvironment (substrates) should be read (for completeness) or not (for speed increase and less memory usage).
    + **pyMCDS** has a new additional boolean **graph** parameter, to specify if the attached and neighbor graph should be read.
    + **pyMCDS** has a new additional boolean **verbose** parameter, to specify if there should be text output while processing.
    + pyMCDS **mcds.get_2D_mesh** was renamed to **mcds.get_mesh_2D** for consistency.
    + pyMCDS **mcds.get_linear_voxels** was renamed to **mcds.get_mesh_coordinate** for consistency.
    + pyMCDS **mcds.get_containing_voxel_ijk** was renamed to **mcds.get_voxel_ijk** for briefness.
    + pyMCDS **mcds.get_voxel_spacing** returns now 3 specific values, one for x, y, and z, instead of 1 general value.
    + pyMCDS **mcds.get_concentrations** was renamed to **mcds.get_concentration** for consistency
    + pyMCDS **mcds.get_concentrations_at** was renamed to **mcds.get_concentration_at** for consistency
    + pyMCDS **mcds.get_concentration_at** if z_slice is not a mesh center value, the function will by default adjust to the nearest and no longer break.
    + pyMCDS **mcds.get_cell_variables** and **mcds.get_substrate_names** return now a strictly alphabetically ordered list.
    + pyMCDS **mcds.get_cell_df** returns now a pandas dataframe with the cell IDs as the index and not as a column.
      additionally, this dataframe contains now voxel, mesh_center, substrate parameter, substrate concentration, and cell density information too.
    + new pyMCDS **mcds.get_concentration_df** function.
    + new pyMCDS **mcds.get_substrate_df** function.
    + new pyMCDS **mcds.get_unit_se** function.
    + new pyMCDS **mcds.get_multicellds_version** function.
    + new pyMCDS **mcds.get_physicell_version** function.
    + new pyMCDS **mcds.get_runtime** function.
    + new pyMCDS **mcds.get_timestamp** function.
    + new pyMCDS **mcds.get_voxel_ijk_range** function.
    + new pyMCDS **mcds.get_voxel_ijk_axis** function.
    + new pyMCDS **mcds.get_voxel_spacing** function.
    + new pyMCDS **mcds.get_voxel_volume** function.
    + new pyMCDS **mcds.get_mesh_mnp_range** function.
    + new pyMCDS **mcds.get_mesh_mnp_axis** function.
    + new pyMCDS **mcds.get_xyz_range** function.
    + new pyMCDS **mcds.is_in_mesh** function.
    + new pyMCDS **mcds.get_attached_graph_dict** function.
    + new pyMCDS **mcds.get_neigbor_graph_dict** function.
    + class **pyMCDS_timeseries** was renamed to **pyMCDSts** and completely rewritten.
    + new pyMCDSts **get_xmlfile_list** function.
    + new pyMCDSts **read_mcds** function.
    + new pyMCDSts **make_jpeg** function.
    + new pyMCDSts **make_png** function.
    + new pyMCDSts **make_tiff** function.
    + new pyMCDSts **make_gif** function.
    + new pyMCDSts **make_movie** function.
    + all **plotting** functions were removed because pcdl only focuses on making the raw data in python3 easy to access for in-depth analysis.
    + cell position coordinates are now constantly labeled as **x,y,z**, mesh center coordinates as **m,n,p**, and voxel coordinates as **i,j,k**.
    + the underling [mcds object data dictionary structure](https://github.com/elmbeech/physicelldataloader/tree/master/man/img/physicelldataloader_data_dictionary_v3.0.0.png) has changed.
    + [pytest](https://en.wikipedia.org/wiki/Pytest) unit tests exist now for all pyMCDS and pyMCDSts functions.

+ version 2.0.3 (2023-06-16): elmbeech/physicelldataloader pypa odyssey is coming to an end.
+ version 2.0.2 (2023-01-06): elmbeech/physicelldataloader reset patch voxel spacing bugfix, so that branch2 is full compatible with branch1 again. use branch3 for a bugfixed version!
+ version 2.0.1 (2022-11-08): elmbeech/physicelldataloader beta release patch voxel spacing bugfix.
+ version 2.0.0 (2022-08-30): elmbeech/physicelldataloader pip installable release, derived from and compatible with PhysiCell-Tools/python-loader release 1.1.0 (2022-07-20).

+ version 1.1.1 (2022-07-01): elmbeech/physicelldataloader deprecated np.float replaced with np.float64.
+ version 1.1.0 (2022-05-09): Physicell-Tools/python-loader release compatible with pre-v1.10.x of PhysiCell.
+ version 1.0.1 (2020-01-25): Physicell-Tools/python-loader time-series related bug fix.
+ version 1.0.0 (2019-09-28): Physicell-Tools/python-loader first public release!

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pcdl",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4,>=3.8",
    "maintainer_email": "Elmar Bucher <epbucher@iu.edu>",
    "keywords": "analysis, data, physicell, python3",
    "author": null,
    "author_email": "Elmar Bucher <epbucher@iu.edu>",
    "download_url": "https://files.pythonhosted.org/packages/39/dd/4c8d7b5ef45a91b33f56268c49172dd0c74577486af5c2618b3b50bb6e5e/pcdl-3.3.2.tar.gz",
    "platform": null,
    "description": "![physicellcdataloader logo & title](man/img/physicelldataloader_title_v3.0.0.png)\n\n\n## Abstract:\n\nphysicelldataloader (pcdl) provides a platform independent, python3 based, [pip](https://en.wikipedia.org/wiki/Pip_(package_manager)) installable interface\nto load output, generated with the [PhysiCell](https://github.com/MathCancer/PhysiCell) agent-based modeling and diffusion solver framework,\ninto [python3](https://en.wikipedia.org/wiki/Python_(programming_language)).\n\npcdl was forked from the original [PhysiCell-Tools](https://github.com/PhysiCell-Tools) [python-loader](https://github.com/PhysiCell-Tools/python-loader) implementation.\n\nThe pcdl python3 library maintains three branches:\n\n+ **Branch version 1** is the original PhysiCell-Tools/python-loader code.\n+ **Branch version 2** will be strictly compatible with the original PhysiCell-Tools/python-loader code, although pip installable.\n+ **Branch version 3** might break with old habits, although tries to be as much downward compatible as possible.\n  The aim of the v3 branch is to get a very lean and agile python3 physicell output interface for the ones coming from the python3 world.\n\n\n## Header:\n\n+ Language: python [>= 3.9](https://devguide.python.org/versions/)\n+ Library dependencies: aicsimageio, anndata, matplotlib, numpy, pandas, (requests), scipy, vtk\n+ Date of origin original PhysiCell-Tools python-loader: 2019-09-02\n+ Date of origin pcdl fork: 2022-08-30\n+ Doi: https://doi.org/10.5281/ZENODO.8176399\n+ License: [BSD-3-Clause](https://en.wikipedia.org/wiki/BSD_licenses)\n+ User manual: this README.md file\n+ Source code: [https://github.com/elmbeech/physicelldataloader](https://github.com/elmbeech/physicelldataloader)\n\n\n## HowTo Guide:\n\n+ [installation and troubleshooting](https://github.com/elmbeech/physicelldataloader/tree/master/man/HOWTO.md)\n\n\n## Tutorial:\n\nBasics Tutorials:\n\n1. [pcdl background](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_introduction.md)\n1. [pcdl processing mcds time steps in python3](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_timestep.md)\n1. [pcdl processing mcds time series in python3](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_timeseries.md)\n1. [pcdl from the command line](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_commandline.md)\n\nExtras tutorials python3 language:\n+ [pcdl and python3 and json](https://github.com/elmbeech/physicelldataloader/blob/master/man/TUTORIAL_python3_json.md)\n+ [pcdl and python3 and pandas](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_pandas.md)\n+ [pcdl and python3 and scipy and scanpy](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_scverse.md)\n+ [pcdl and python3 and graphs](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_graph.md)\n+ [pcdl and python3 and matplotlib](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_matplotlib.md)\n+ [pcdl and python3 and vtk](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_vtk.md)\n+ [pcdl and python3 and ome.tiff, tiff, png, and jpeg](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_ometiff.md)\n+ [pcdl and python3 and napari](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_napari.md)\n\nExtras tutorials for other languages than python3:\n\n+ [pcdl and julia](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_julia.md)\n<!--\n+ [pcdl and matlab or octave](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_matlab_octave.md)\n-->\n+ [pcdl and R](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_r.md)\n\nExtras tutorials for GUI software:\n\n+ [pcdl and paraview](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_paraview.md)\n+ [pcdl and blender](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_blender.md)\n+ [pcdl and napari](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_python3_napari.md)\n+ [pcdl and fiji imagej](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_fijiimagej.md)\n<!--\n+ [pcdl and neuroglancer](https://github.com/elmbeech/physicelldataloader/tree/master/man/TUTORIAL_(python3)_neuroglancer.md)\n-->\n\nSlides:\n\n+ [presentations given](https://github.com/elmbeech/physicelldataloader/tree/master/man/lecture)\n\n\n## Reference Manual:\n\n+ [API application interface](https://github.com/elmbeech/physicelldataloader/tree/master/man/REFERENCE.md)\n\n\n## Discussion:\n\nTo be developed.\n\n\n## About Documentation:\n\nWithin the pcdl library, we tried to stick to the documentation policy laid out by Daniele Procida in his \"[what nobody tells you about documentation](https://www.youtube.com/watch?v=azf6yzuJt54)\" talk at PyCon 2017 in Portland, Oregon.\n\n\n## Contributions:\n\n+ original PhysiCell-Tools python-loader implementation: Patrick Wall, Randy Heiland, Paul Macklin\n+ fork pcdl implementation: Elmar Bucher\n+ fork pcdl co-programmer: Furkan Kurtoglu, Jennifer Eng, Heber Rocha\n+ fork pcdl continuous testing and feedbacks: Aneequa Sundus, John Metzcar\n+ student prj on pcdl:\n  Benjamin Jacobs (make\\_gml),\n  Katie Pletz (beta testing),\n  Marshal Gress (plot\\_scatter),\n  Nick Oldfather (unit test model),\n  Thierry-Pascal Fleurant (plot\\_timeseries)\n\n\n## Cite:\n\n```bibtex\n@Misc{bucher2023,\n  author    = {Bucher, Elmar and Wall, Patrick and Rocha, Heber and Kurtoglu, Furkan and Eng, Jennifer and Sundus, Aneequa, and Metzcar, John and Heiland, Randy and Macklin, Paul},\n  title     = {elmbeech/physicelldataloader: pcdl platform-independent, pip-installable interface to load PhysiCell agent-based modeling framework output into python3.},\n  year      = {2023},\n  copyright = {Open Access},\n  doi       = {10.5281/ZENODO.8176399},\n  publisher = {Zenodo},\n}\n```\n\n\n## Road Map:\n\n+ add make\\_conc\\_vtk visualization parameter.\n+ new next generation unit test dataset.\n+ evt add neuroglancer ome.tiff support.\n\n## Release Notes:\n\n+ version 3.3.2 (2024-11-24): elmbeech/physicelldataloader\n    + **Warnings** will no longer be piped to standard output if verbose is set to False.\n    + pyMCDS **make_ome_tiff** function rewriten to be less RAM hungry and more versatile.\n\n+ version 3.3.1 (2024-09-22): elmbeech/physicelldataloader\n    + bugfix pyMCDS custom vectors loading.\n\n+ version 3.3.0 (2024-08-22): elmbeech/physicelldataloader\n    + **pip install pcdl**: will again install all library dependencies. The fine-tuned version was too confssing.\n    + pyMCDS handels now intracellular **physinboss** data too; data is stored in cell\\_df.\n    + rename pyMCDS get\\_cell\\_variables to **get_celltype_list** for conciseness and order list by ID.\n    + rename pyMCDS get\\_substrate\\_names to **get_substrate_list** for conciseness and order list by ID.\n    + rename pyMCDS get\\_scatter to **plot_scatter** for conciseness.\n    + rename pyMCDS get\\_contour to **plot_contour** for conciseness.\n    + rename pyMCDSts make\\_imgcell to **plot_scatter** for conciseness.\n    + rename pyMCDSts make\\_imgconc to **plot_contour** for conciseness.\n    + rename pyMCDSts get\\_cell\\_df\\_states to **get_cell_attribute** for conciseness.\n    + rename pyMCDSts get\\_conc\\_df\\_states to **get_conc_attribute** for conciseness.\n    + rewrite pyMCDS mcds.get\\_unit\\_se into **mcds.get_unit_dict**.\n    + new pyCLI **pcdl_get_anndata** command line interface function.\n    + new pyCLI **pcdl_get_celltype_list** command line interface function.\n    + new pyCLI **pcdl_get_cell_attribute** command line interface function.\n    + new pyCLI **pcdl_get_cell_df** command line interface function.\n    + new pyCLI **pcdl_get_substrate_list** command line interface function.\n    + new pyCLI **pcdl_get_conc_attribute** command line interface function.\n    + new pyCLI **pcdl_get_conc_df** command line interface function.\n    + new pyCLI **pcdl_get_graph_gml** command line interface function.\n    + new pyCLI **pcdl_get_unit_dict** command line interface function.\n    + new pyCLI **pcdl_get_version** command line interface function.\n    + new pyCLI **pcdl_make_cell_vtk** command line interface function.\n    + new pyCLI **pcdl_make_conc_vtk** command line interface function.\n    + new pyCLI **pcdl_make_gif** command line interface function.\n    + new pyCLI **pcdl_make_movie** command line interface function.\n    + new pyCLI **pcdl_make_ome_tiff** command line interface function.\n    + new pyCLI **pcdl_plot_contour** command line interface function.\n    + new pyCLI **pcdl_plot_scatter** command line interface function.\n    + new pyCLI **pcdl_plot_timeseries** command line interface function.\n    + new pyMCDS **mcds.get_mesh_mnp** function, the mesh version from mcds.get\\_voxel\\_ijk.\n    + new pyMCDS **make_conc_vtk** function, to save substrate data as rectilinear grid vtk file.\n    + new pyMCDS **make_cell_vtk** function, to save cell data as glyph vtk file.\n    + new pyMCDS **make_graph_gml** function, to save graphs in a networkx and igraph compatible file format.\n    + new pyMCDS **make_ome_tiff** function, to save the output data in ome tiff file format.\n    + new pyMCDS **set_verbosity_true** function, to complete pcdl.TimeStep(verbosity=True/False) experience.\n    + new pyMCDS **set_verbosity_false** function, to complete pcdl.TimeStep(verbosity=True/False) experience.\n    + new pyMCDSts **get_cell_df** function, to extract one big dataframe or a list of dataframes from the whole time series.\n    + new pyMCDSts **get_conc_df** function, to extract one big dataframe or a list of dataframes from the whole time series.\n    + new pyMCDSts **make_cell_vtk** function, to save substrate data as rectilinear grid vtk files.\n    + new pyMCDSts **make_conc_vtk** function, to save cell data as glyph vtk files.\n    + new pyMCDSts **make_graph_gml** function, to save graphs in a networkx and igraph compatible files format.\n    + new pyMCDSts **make_ome_tiff** function, to save the output data in ome tiff file format.\n    + new pyMCDSts **plot_timeseries** function, to plot time series.\n    + new pyMCDSts **set_verbosity_true** function, to complete the pcdl.TimeSeries(verbosity=True/False) experience.\n    + new pyMCDSts **set_verbosity_false** function to complete the pcdl.TimeSeries(verbosity=True/False) experience.\n\n+ version 3.2.13 (2023-09-18): elmbeech/physicelldataloader\n    + rename pyMCDSts make\\_imgsubs to **make_imgconc** for consistency.\n    + add **man/lecture/20230917_pcdl_repl_programming_analysis_plots.pdf** slide deck.\n\n+ version 3.2.12 (2023-08-12): elmbeech/physicelldataloader\n    + add **man/jupyter/pcdl_repl_programming.ipynb** : Jupyter notebook to give an idea about how to work with pcdl in a python3 REPL.\n    + add **man/lecture/20230808_pcws2023_session07_pcdl.pdf** slide deck.\n    + add github **continuous integration** for all supported python3 versions, all supported operating systems.\n\n+ version 3.2.11 (2023-08-08): elmbeech/physicelldataloader\n    + **pip install pcdl**: will only install the bare minimum library dependencies.\n    + **pip install pcdl[data]**: will install the minimum dependencies plus the dependencies to download the test dataset.\n    + **pip install pcdl[scverse]**: will install the minimum dependencies plus the dependencies needed to generate an anndata object.\n    + **pip install pcdl[all]**: will always install all dependencies.\n    + new TimeSeries **get_annmcds_list** function, which points to the self.l\\_annmcds object.\n    + new pyMCDS **get_scatter** function is split off from pyMCDSts make\\_imgcell.\n    + pyMCDSts **make_imgcell** and **make_imgsubs** bug fixes.\n    + TimeStep and TimeSeries **get_anndata** evolution.\n\n+ version 3.2.10 (2023-07-24): elmbeech/physicelldataloader\n    + rename pyMCDSts get\\_cell\\_df\\_columns\\_states to **get_cell_df_states** for conciseness.\n    + rename pyMCDSts get\\_conc\\_df\\_columns\\_states to **get_conc_df_states** for conciseness.\n\n+ version 3.2.9 (2023-07-23): elmbeech/physicelldataloader\n    + new class **TimeStep** can do everything pyMCDS can do and more.\n    + new class **TimeSeries** can do everything pyMCDSts can do and more.\n    + new TimeStep **get_anndata** function to transform physicell output into [AnnData](https://anndata.readthedocs.io/en/latest/) objects.\n    + new TimeSeries **get_anndata** function to transform physicell output into [AnnData](https://anndata.readthedocs.io/en/latest/) objects.\n    + internal pyAnnData **scaler** function.\n    + internal pyAnnData **\\_anndextract** function.\n    + pyMCDS **_\\_init__** seetingxml parameter changed from boolean to string to accept other PhysiCell\\_settings.xml filenames than the default.\n    + pyMCDS **get_cell_df** drop and keep parameters to declare a set of columns to be dropped or kept.\n    + pyMCDS **get_conc_df** drop and keep parameters to declare a set of columns to be dropped or kept.\n    + new pyMCDS **get_conc_df** shorthand for get\\_concentration\\_df.\n    + pyMCDSts get\\_cell\\_minstate\\_col reimplementation as **get_cell_df_columns_states** function.\n    + pyMCDSts get\\_concentartion\\_minstate\\_col reimplementation as **get_conc_df_columns_states** function.\n    + new pyMCDSts **get_mcds_list** function which points to the self.l\\_mcds object.\n\n+ version 3.2.8 (2023-06-21): elmbeech/physicelldataloader\n    + pyMCDS **get_concentration_df** states parameter to filter out non-informative variables.\n    + pyMCDS **get_cell_df** states parameter to filter out non-informative variables.\n    + pyMCDSts **_\\_init__** load parameter to specify if the whole time series data straight at object initialization should be loaded.\n    + new pyMCDSts **get_cell_minstate_col** function to scan the whole time series for informative attributes.\n    + new pyMCDSts **get_concentartion_minstate_col** function to scan the whole time series for informative attributes.\n\n+ version 3.2.7 (2023-06-20): elmbeech/physicelldataloader\n    + pyMCDS and pyMCDSts **_\\_init__** custom\\_type parameter to specify other custom\\_data variable types (int, bool, str) then the generic float.\n\n+ version 3.2.5 (2023-06-19): elmbeech/physicelldataloader\n    + pyMCDS resolves incompatibility with earlier PhysiCell and MultiCellDS versions.\n\n+ version 3.2.4 (2023-06-17): elmbeech/physicelldataloader\n    + pyMCDS **_\\_init__** seetingxml parameter for cases where in the output folder no PhysiCell\\_settings.xml can be found.\n    + pyMCDSts **mcdsts.make_imgcell** extrema parameter is replaced by the z\\_axis parameter to account for numerical and categorical variable types.\n\n+ version 3.2.2 (2023-06-16): elmbeech/physicelldataloader\n    + pyMCDS **mcds.get_cell_df** sets distinct boolean, categorical, integer number, and real number variable types. categorical number codes are translated. for all spatial variables, the vector length value is calculated and added automatically.\n    + new pyMCDS **mcds.get_celltype_dict** function.\n    + new pyMCDS **mcds.get_substrate_dict** function.\n    + pyMCDSts **mcdsts.make_imgcell** and **mcdsts.make_imgsubs** functions improved.\n\n+ version 3.2.1 (2023-06-12): elmbeech/physicelldataloader\n    + pypa odyssey is coming to an end.\n    + change build system from setuptools to hatching.\n    + change the library name from pcDataLoader to pcdl.\n    + to make the library installation more lightweight, test data was excluded from the basic installation.\n      given the computer is connected to the internet, test data can easily be installed and removed with the **pcdl.install_data()** and **pcdl.uninstall_data()** functions now.\n\n+ version 3.0.7 (2023-06-08): elmbeech/physicelldataloader\n    + pyMCDSts: replaces the svg dependent **mcdsts.make_jpeg**, **mcdsts.make_png**, and **mcdsts.make_tiff** with **mcdsts.make_imgcell** and **mcdsts.make_imgsubs** which generate images straight out of the loaded data. the **mcdsts.make_gif** and **mcdsts.make_movie** functions were adjusted accordingly.\n    + pyMCDSts: **mcdsts.read_mcds** loads now automatically all mcds snapshots if no xmlfile\\_list is provided (default).\n\n+ version 3.0.6 (2023-04-29): elmbeech/physicelldataloader\n    + pyMCDS **\\_read_xml** is now able to load time steps with zero cells.\n    + pyMCDS **mcds.get_contour** can handle more input parameters.\n\n+ version 3.0.5 (2023-02-26): elmbeech/physicelldataloader pyMCDS **mcds.get_contour**  plots span now the whole domain and not only to the border voxel centers.\n+ version 3.0.4 (2023-02-21): elmbeech/physicelldataloader pyMCDS **mcds.get_contour** function, to easily generate for substrates matplotlib contourf and contour plots because they do not exist as pandas plots.\n+ version 3.0.3 (2023-02-19): elmbeech/physicelldataloader branch 3 has no longer anndata and, as such, hdf5 dependency.\n+ version 3.0.2 (2023-01-06): elmbeech/physicelldataloader bugfix installing package data.\n+ version 3.0.0 (2023-01-06): elmbeech/physicelldataloader\n    + **pyMCDS** parameter **xml_file** can now handle path/file.xml (unix) or path\\file.xml (dos) input, as long output_path is the default.\n    + **pyMCDS** has a new additional boolean **microenv** parameter, to specify if the microenvironment (substrates) should be read (for completeness) or not (for speed increase and less memory usage).\n    + **pyMCDS** has a new additional boolean **graph** parameter, to specify if the attached and neighbor graph should be read.\n    + **pyMCDS** has a new additional boolean **verbose** parameter, to specify if there should be text output while processing.\n    + pyMCDS **mcds.get_2D_mesh** was renamed to **mcds.get_mesh_2D** for consistency.\n    + pyMCDS **mcds.get_linear_voxels** was renamed to **mcds.get_mesh_coordinate** for consistency.\n    + pyMCDS **mcds.get_containing_voxel_ijk** was renamed to **mcds.get_voxel_ijk** for briefness.\n    + pyMCDS **mcds.get_voxel_spacing** returns now 3 specific values, one for x, y, and z, instead of 1 general value.\n    + pyMCDS **mcds.get_concentrations** was renamed to **mcds.get_concentration** for consistency\n    + pyMCDS **mcds.get_concentrations_at** was renamed to **mcds.get_concentration_at** for consistency\n    + pyMCDS **mcds.get_concentration_at** if z_slice is not a mesh center value, the function will by default adjust to the nearest and no longer break.\n    + pyMCDS **mcds.get_cell_variables** and **mcds.get_substrate_names** return now a strictly alphabetically ordered list.\n    + pyMCDS **mcds.get_cell_df** returns now a pandas dataframe with the cell IDs as the index and not as a column.\n      additionally, this dataframe contains now voxel, mesh_center, substrate parameter, substrate concentration, and cell density information too.\n    + new pyMCDS **mcds.get_concentration_df** function.\n    + new pyMCDS **mcds.get_substrate_df** function.\n    + new pyMCDS **mcds.get_unit_se** function.\n    + new pyMCDS **mcds.get_multicellds_version** function.\n    + new pyMCDS **mcds.get_physicell_version** function.\n    + new pyMCDS **mcds.get_runtime** function.\n    + new pyMCDS **mcds.get_timestamp** function.\n    + new pyMCDS **mcds.get_voxel_ijk_range** function.\n    + new pyMCDS **mcds.get_voxel_ijk_axis** function.\n    + new pyMCDS **mcds.get_voxel_spacing** function.\n    + new pyMCDS **mcds.get_voxel_volume** function.\n    + new pyMCDS **mcds.get_mesh_mnp_range** function.\n    + new pyMCDS **mcds.get_mesh_mnp_axis** function.\n    + new pyMCDS **mcds.get_xyz_range** function.\n    + new pyMCDS **mcds.is_in_mesh** function.\n    + new pyMCDS **mcds.get_attached_graph_dict** function.\n    + new pyMCDS **mcds.get_neigbor_graph_dict** function.\n    + class **pyMCDS_timeseries** was renamed to **pyMCDSts** and completely rewritten.\n    + new pyMCDSts **get_xmlfile_list** function.\n    + new pyMCDSts **read_mcds** function.\n    + new pyMCDSts **make_jpeg** function.\n    + new pyMCDSts **make_png** function.\n    + new pyMCDSts **make_tiff** function.\n    + new pyMCDSts **make_gif** function.\n    + new pyMCDSts **make_movie** function.\n    + all **plotting** functions were removed because pcdl only focuses on making the raw data in python3 easy to access for in-depth analysis.\n    + cell position coordinates are now constantly labeled as **x,y,z**, mesh center coordinates as **m,n,p**, and voxel coordinates as **i,j,k**.\n    + the underling [mcds object data dictionary structure](https://github.com/elmbeech/physicelldataloader/tree/master/man/img/physicelldataloader_data_dictionary_v3.0.0.png) has changed.\n    + [pytest](https://en.wikipedia.org/wiki/Pytest) unit tests exist now for all pyMCDS and pyMCDSts functions.\n\n+ version 2.0.3 (2023-06-16): elmbeech/physicelldataloader pypa odyssey is coming to an end.\n+ version 2.0.2 (2023-01-06): elmbeech/physicelldataloader reset patch voxel spacing bugfix, so that branch2 is full compatible with branch1 again. use branch3 for a bugfixed version!\n+ version 2.0.1 (2022-11-08): elmbeech/physicelldataloader beta release patch voxel spacing bugfix.\n+ version 2.0.0 (2022-08-30): elmbeech/physicelldataloader pip installable release, derived from and compatible with PhysiCell-Tools/python-loader release 1.1.0 (2022-07-20).\n\n+ version 1.1.1 (2022-07-01): elmbeech/physicelldataloader deprecated np.float replaced with np.float64.\n+ version 1.1.0 (2022-05-09): Physicell-Tools/python-loader release compatible with pre-v1.10.x of PhysiCell.\n+ version 1.0.1 (2020-01-25): Physicell-Tools/python-loader time-series related bug fix.\n+ version 1.0.0 (2019-09-28): Physicell-Tools/python-loader first public release!\n",
    "bugtrack_url": null,
    "license": "BSD-3-Clause",
    "summary": "physicell data loader (pcdl) provides a platform independent, python3 based, pip installable interface to load output, generated with the PhysiCell agent based modeling framework, into python3.",
    "version": "3.3.2",
    "project_urls": {
        "Documentation": "https://github.com/elmbeech/physicelldataloader/tree/master/man",
        "Homepage lab": "http://www.mathcancer.org/",
        "Homepage project": "http://physicell.org/",
        "Hompage": "https://github.com/elmbeech/physicelldataloader",
        "Issues": "https://github.com/elmbeech/physicelldataloader/issues",
        "Source": "https://github.com/elmbeech/physicelldataloader"
    },
    "split_keywords": [
        "analysis",
        " data",
        " physicell",
        " python3"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a1f8fc3d0e124eea1d86a0ea5bcb550381466e5c55f8be9fa2587b4e22cc8a68",
                "md5": "fa6b7e74d7d4491a4e8a52373b3e84d6",
                "sha256": "42255ea94b18b84a067038e299374ab997a9b0320dd45d119b1054408c682b58"
            },
            "downloads": -1,
            "filename": "pcdl-3.3.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fa6b7e74d7d4491a4e8a52373b3e84d6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4,>=3.8",
            "size": 69688,
            "upload_time": "2024-11-24T23:57:53",
            "upload_time_iso_8601": "2024-11-24T23:57:53.637969Z",
            "url": "https://files.pythonhosted.org/packages/a1/f8/fc3d0e124eea1d86a0ea5bcb550381466e5c55f8be9fa2587b4e22cc8a68/pcdl-3.3.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "39dd4c8d7b5ef45a91b33f56268c49172dd0c74577486af5c2618b3b50bb6e5e",
                "md5": "f1b0c90d9e1de22758a582819784f2fd",
                "sha256": "6707f33eadb5ecb656423940ceb847c2d494d52e5bc1875e4447b760e0414e45"
            },
            "downloads": -1,
            "filename": "pcdl-3.3.2.tar.gz",
            "has_sig": false,
            "md5_digest": "f1b0c90d9e1de22758a582819784f2fd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4,>=3.8",
            "size": 24163077,
            "upload_time": "2024-11-24T23:58:00",
            "upload_time_iso_8601": "2024-11-24T23:58:00.773126Z",
            "url": "https://files.pythonhosted.org/packages/39/dd/4c8d7b5ef45a91b33f56268c49172dd0c74577486af5c2618b3b50bb6e5e/pcdl-3.3.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-24 23:58:00",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "elmbeech",
    "github_project": "physicelldataloader",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pcdl"
}
        
Elapsed time: 0.37203s