Package: pcdl
Abstract:physicelldataloader (pcdl) provides a platform independent, python3 based,pipinstallable interface
to load output, generated with thePhysiCellagent based modeling framework,
intopython3.pcdl was forked from the originalPhysiCell-Toolspython-loaderimplementation.The pcdl python3 library maintains three branches branches:Branch version 1is the original PhysiCell-Tools/python-loader code.Branch version 2will be strictly compatible with the original PhysiCell-Tools/python-loader code, although pip installable.Branch version 3might 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 python world.Header:Language: python>= 3.8Library dependencies: anndata, matplotlib, numpy, pandas, scipyDate of origin original PhysiCell-Tools python-loader: 2019-09-02Date of origin pcdl fork: 2022-08-30Doi:https://doi.org/10.5281/ZENODO.8176399License:BSD-3-ClauseUser manual: this README.md fileSource code:https://github.com/elmbeech/physicelldataloaderHowTo Guide:Check out:man/HOWTO.md!Tutorial:Check out:man/TUTORIAL.md!Check out:man/jupyter/pcdl_repl_programming.ipynbCheck out:man/lectureReference Manual:Check out:man/REFERENCE.md!Discussion:To be developed.About Documentation:Within the pcdl library, we tried to stick to the documentation policy lined out by Daniele Procida in his "what nobody tells you about documentation" talk at PyCon 2017 in Portland, Oregon.Contributions:original PhysiCell-Tools python-loader implementation: Patrick Wall, Randy Heiland, Paul Macklinfork pcdl implementation: Elmar Bucherfork pcdl co-programmer and tester: Heber Rocha, Marshal GressCite:@Misc{bucher2023,author={Bucher, Elmar and Wall, Patrick and Gress, Marshal and Rocha, Heber 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:vtk file formatoutput, maybestlandwavefront objoutput.GML(networkxandigraphcompatible) output.Release Notes:version 3.2.13 (2023-09-18): elmbeech/physicelldatalodaderrename pyMCDSts make_imgsubs tomake_imgconcfor consistency.addman/lecture/20230917_pcdl_repl_programming_analysis_plots.pdfslide deck.version 3.2.12 (2023-08-12): elmbeech/physicelldatalodaderaddman/jupyter/pcdl_repl_programming.ipynb: Jupyter notebook to give an idea about how to work with pcdl in a Python3 REPL.addman/lecture/20230808_pcws2023_session07_pcdl.pdfslide deck.add githubcontinuous integration, all supported python versions, all supported operating systems.version 3.2.11 (2023-08-08): elmbeech/physicelldatalodaderpip 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 anndata object.pip install pcdl[all]: will always install all dependencies.new TimeSeriesget_annmcds_listfunction, which, points to the self.l_annmcds object.new pyMCDSget_scatterfunction split off from pyMCDSts make_imgcell.pyMCDStsmake_imgcellandmake_imgsubsbug fixes.TimeStep and TimeSeriesget_anndataevolution.version 3.2.10 (2023-07-24): elmbeech/physicelldataloaderrename pyMCDSts get_cell_df_columns_states toget_cell_df_statesfor conciseness.rename pyMCDSts get_conc_df_columns_states toget_conc_df_statesfor conciseness.version 3.2.9 (2023-07-23): elmbeech/physicelldataloadernew classTimeStepcan do everything pyMCDS can do and more.new classTimeSeriescan do everything pyMCDSts can do and more.new TimeStepget_anndatafunction to transform physicell output intoAnnDataobjects.new TimeSeriesget_anndatafunction to transform physicell output intoAnnDataobjects.internal pyAnnDatascalerfunction.internal pyAnnData_anndextractfunction.pyMCDS__init__seetingxml parameter changed from boolean to string to accept other PhysiCell_settings.xml filenames than the default.pyMCDSget_cell_dfdrop and keep parameters to declare a set of columns to be dropped or kept.pyMCDSget_concentration_dfdrop and keep parameters to declare a set of columns to be dropped or kept.new pyMCDSget_conc_dfshorthand for get_concentration_df.pyMCDSts get_cell_minstate_col reimplementation asget_cell_df_columns_statesfunction.pyMCDSts get_concentartion_minstate_col reimplementation asget_conc_df_columns_statesfunction.new pyMCDStsget_mcds_listfunction which, points to the self.l_mcds object.version 3.2.8 (2023-06-21): elmbeech/physicelldataloaderpyMCDSget_concentration_dfstates parameter to filter out non-informative variables.pyMCDSget_cell_dfstates 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 pyMCDStsget_cell_minstate_colfunction to scan the whole time series for informative features.new pyMCDStsget_concentartion_minstate_colfunction to scan the whole time series for informative features.version 3.2.7 (2023-06-20): elmbeech/physicelldataloaderpyMCDS 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/physicelldataloaderpyMCDS resolve incompatibility with earlier PhysiCell and MultiCellDS versions.version 3.2.4 (2023-06-17): elmbeech/physicelldataloaderpyMCDS__init__seetingxml parameter for cases where in the output folder no PhysiCell_settings.xml can be found.pyMCDStsmcdsts.make_imgcellextrema parameter replaced by z_axis parameter to account for numerical and categorical variable types.version 3.2.2 (2023-06-16): elmbeech/physicelldataloaderpyMCDSmcds.get_cell_dfsets 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 pyMCDSmcds.get_celltype_dictfunction.new pyMCDSmcds.get_substrate_dictfunction.pyMCDStsmcdsts.make_imgcellandmcdsts.make_imgsubsfunctions improved.version 3.2.1 (2023-06-12): elmbeech/physicelldataloaderpypa 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 thepcdl.install_data()andpcdl.uninstall_data()functions now.version 3.0.7 (2023-06-08): elmbeech/physicelldataloaderpyMCDSts: replaces the svg dependentmcdsts.make_jpeg,mcdsts.make_png, andmcdsts.make_tiffwithmcdsts.make_imgcellandmcdsts.make_imgsubswhich generate images straight out of the loaded data. themcdsts.make_gifandmcdsts.make_moviefunctions were adjusted accordingly.pyMCDSts:mcdsts.read_mcdsloads now automatically all mcds snapshots, if no xmlfile_list is provided (default).version 3.0.6 (2023-04-29): elmbeech/physicelldataloaderpyMCDS_read_xmlis now able to load time steps with zero cells.pyMCDSmcds.get_contourcan handle more input parameters.version 3.0.5 (2023-02-26): elmbeech/physicelldataloader pyMCDSmcds.get_contourplots span now the whole domain and not only to the border voxel centers.version 3.0.4 (2023-02-21): elmbeech/physicelldataloader pyMCDSmcds.get_contourfunction, 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/physicelldataloaderpyMCDSparameterxml_filecan now handle path/file.xml (unix) or path\file.xml (dos) input, as long output_path is the default.pyMCDShas a new additional booleanmicroenvparameter, to specify if the microenvironment (substrates) should be read (for completeness) or not (for speed increase and less memory usage).pyMCDShas a new additional booleangraphparameter, to specify if the attached and neighbor graph should be read.pyMCDShas a new additional booleanverboseparameter, to specify if there should be text output while processing.pyMCDSmcds.get_2D_meshwas renamed tomcds.get_mesh_2Dfor consistency.pyMCDSmcds.get_linear_voxelswas renamed tomcds.get_mesh_coordinatefor consistency.pyMCDSmcds.get_containing_voxel_ijkwas renamed tomcds.get_voxel_ijkfor briefness.pyMCDSmcds.get_voxel_spacingreturns now 3 specific values, one for x, y, and z, instead of 1 general value.pyMCDSmcds.get_concentrationswas renamed tomcds.get_concentrationfor consistencypyMCDSmcds.get_concentrations_atwas renamed tomcds.get_concentration_atfor consistencypyMCDSmcds.get_concentration_atif z_slice is not a mesh center value, the function will by default adjust to nearest and no longer break.pyMCDSmcds.get_cell_variablesandmcds.get_substrate_namesreturn now a strictly alphabetically ordered list.pyMCDSmcds.get_cell_dfreturns 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 pyMCDSmcds.get_concentration_dffunction.new pyMCDSmcds.get_substrate_dffunction.new pyMCDSmcds.get_unit_sefunction.new pyMCDSmcds.get_multicellds_versionfunction.new pyMCDSmcds.get_physicell_versionfunction.new pyMCDSmcds.get_runtimefunction.new pyMCDSmcds.get_timestampfunction.new pyMCDSmcds.get_voxel_ijk_rangefunction.new pyMCDSmcds.get_voxel_ijk_axisfunction.new pyMCDSmcds.get_voxel_spacingfunction.new pyMCDSmcds.get_voxel_volumefunction.new pyMCDSmcds.get_mesh_mnp_rangefunction.new pyMCDSmcds.get_mesh_mnp_axisfunction.new pyMCDSmcds.get_xyz_rangefunction.new pyMCDSmcds.is_in_meshfunction.new pyMCDSmcds.get_attached_graph_dictfunction.new pyMCDSmcds.get_neigbor_graph_dictfunction.classpyMCDS_timeserieswas renamed topyMCDStsand completely rewritten.new pyMCDStsget_xmlfile_listfunction.new pyMCDStsread_mcdsfunction.new pyMCDStsmake_jpegfunction.new pyMCDStsmake_pngfunction.new pyMCDStsmake_tifffunction.new pyMCDStsmake_giffunction.new pyMCDStsmake_moviefunction.allplottingfunctions were removed because pcdl only focus on making the raw data in python easy accessible for in-depth analysis.cell position coordinates are now constantly labeled asx,y,z, mesh center coordinates asm,n,p, and voxel coordinates asi,j,k.the underlingmcds object data dictionary structurehas changed.pytestunit 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!