diff --git a/cipher_parse/cipher_input.py b/cipher_parse/cipher_input.py index cd424d6..ef79a61 100644 --- a/cipher_parse/cipher_input.py +++ b/cipher_parse/cipher_input.py @@ -129,7 +129,14 @@ def from_JSON(cls, data, quiet=True): return cls(**data, quiet=quiet) @classmethod - def get_input_maps_from_files(cls, inp_file_str, directory): + def get_input_maps_from_files( + cls, + inp_file_str, + directory, + get_voxel_phase=True, + get_phase_material=True, + get_interface=True, + ): directory = Path(directory) voxel_phase_file = Path(directory / "voxel_phase_mapping.txt") phase_material_file = Path(directory / "phase_material_mapping.txt") @@ -146,18 +153,18 @@ def get_input_maps_from_files(cls, inp_file_str, directory): file_str=inp_file_str, parse_interface_map=False, ) - if voxel_phase_file.exists(): + if get_voxel_phase and voxel_phase_file.exists(): with voxel_phase_file.open("rt") as fp: voxel_phase_str = "".join(fp.readlines()) voxel_phase = decompress_1D_array_string(voxel_phase_str) voxel_phase = voxel_phase.reshape(inp_dat["grid_size"], order="F") - 1 - if phase_material_file.exists(): + if get_phase_material and phase_material_file.exists(): with phase_material_file.open("rt") as fp: phase_material_str = "".join(fp.readlines()) phase_material = decompress_1D_array_string(phase_material_str) - 1 - if interface_file.exists(): + if get_interface and interface_file.exists(): num_phases = inp_dat["num_phases"] with interface_file.open("rt") as fp: interface_str = "".join(fp.readlines()) diff --git a/cipher_parse/cipher_output.py b/cipher_parse/cipher_output.py index 13594df..9e8a479 100644 --- a/cipher_parse/cipher_output.py +++ b/cipher_parse/cipher_output.py @@ -1,3 +1,4 @@ +import copy import json import shutil from subprocess import run, PIPE @@ -10,6 +11,7 @@ import pyvista as pv import pandas as pd import plotly.express as px +import zarr from cipher_parse.cipher_input import CIPHERInput, decompress_1D_array_string from cipher_parse.geometry import CIPHERGeometry @@ -221,6 +223,9 @@ def parse( options=None, input_YAML_file_name="cipher_input.yaml", stdout_file_name="stdout.log", + get_voxel_phase=True, + get_phase_material=True, + get_interface=True, ): directory = Path(directory) @@ -239,6 +244,9 @@ def parse( ) = CIPHERInput.get_input_maps_from_files( inp_file_str=input_YAML_file_str, directory=directory, + get_voxel_phase=get_voxel_phase, + get_phase_material=get_phase_material, + get_interface=get_interface, ) obj = cls( @@ -271,18 +279,19 @@ def get_incremental_data(self): """Generate temporary VTI files to parse requested cipher outputs on a uniform grid.""" - cipher_input = self.cipher_input + inp_dat = self.get_input_YAML_data() + grid_size = inp_dat["grid_size"] if not self.options["use_existing_VTIs"]: generate_VTI_files_from_VTU_files( - sampling_dimensions=cipher_input.geometry.grid_size.tolist(), + sampling_dimensions=grid_size, paraview_exe=self.options["paraview_exe"], ) - outfile_base = cipher_input.solution_parameters["outfile"] + outfile_base = inp_dat["solution_parameters"]["outfile"] output_lookup = { i: f"{outfile_base} output.{idx}" - for idx, i in enumerate(self.cipher_input.outputs) + for idx, i in enumerate(inp_dat["header"]["outputs"]) } vtu_file_list = sorted( list(self.directory.glob(f"{outfile_base}_*.vtu")), @@ -375,7 +384,7 @@ def get_incremental_data(self): for derive_out_i in self.options["derive_outputs"]: name_i = derive_out_i["name"] func = DERIVED_OUTPUTS_FUNCS[name_i] - func_args = {"cipher_input": cipher_input} + func_args = {"input_data": inp_dat} func_args.update( {i: standard_outputs[i] for i in DERIVED_OUTPUTS_REQUIREMENTS[name_i]} ) @@ -464,19 +473,25 @@ def to_JSON(self, keep_arrays=False): for inc_idx, inc_i in enumerate(data["incremental_data"] or []): for key in inc_i: if key not in INC_DATA_NON_ARRAYS: - as_list_val = data["incremental_data"][inc_idx][key].tolist() + as_list_val = np.copy( + data["incremental_data"][inc_idx][key] + ).tolist() data["incremental_data"][inc_idx][key] = as_list_val if data["input_map_voxel_phase"] is not None: - data["input_map_voxel_phase"] = data["input_map_voxel_phase"].tolist() + data["input_map_voxel_phase"] = np.copy( + data["input_map_voxel_phase"] + ).tolist() if data["input_map_phase_material"] is not None: - data["input_map_phase_material"] = data[ - "input_map_phase_material" - ].tolist() + data["input_map_phase_material"] = np.copy( + data["input_map_phase_material"] + ).tolist() if data["input_map_interface"] is not None: - data["input_map_interface"] = data["input_map_interface"].tolist() + data["input_map_interface"] = np.copy( + data["input_map_interface"] + ).tolist() return data @@ -533,6 +548,74 @@ def from_JSON_file(cls, path): data = json.load(fp) return cls.from_JSON(data) + def to_zarr(self, path): + """Save to a persistent zarr store. + + This does not yet save `geometries`. + + """ + out_group = zarr.open_group(store=path) + out_group.attrs.put( + { + "directory": str(self.directory), + "options": self.options, + "input_YAML_file_name": self.input_YAML_file_name, + "input_map_voxel_phase": self.input_map_voxel_phase, + "input_map_phase_material": self.input_map_phase_material, + "input_map_interface": self.input_map_interface, + "stdout_file_name": self.stdout_file_name, + } + ) + out_group.create_dataset( + name="stdout_file_str", + data=self.stdout_file_str.splitlines(), + ) + out_group.create_dataset( + name="input_YAML_file_str", + data=self.input_YAML_file_str.splitlines(), + ) + inc_dat_group = out_group.create_group("incremental_data", overwrite=True) + for idx, inc_dat_i in enumerate(self.incremental_data): + inc_dat_i_group = inc_dat_group.create_group(f"{idx}") + inc_dat_i_group.attrs.put({k: inc_dat_i[k] for k in INC_DATA_NON_ARRAYS}) + for k in inc_dat_i: + if k not in INC_DATA_NON_ARRAYS: + inc_dat_i_group.create_dataset(name=k, data=inc_dat_i[k]) + + return out_group + + @classmethod + def from_zarr(cls, path, cipher_input=None, quiet=True): + """Load from a persistent zarr store. + + This does not yet load `geometries`. + + """ + group = zarr.open_group(store=path) + attrs = group.attrs.asdict() + kwargs = { + "directory": attrs["directory"], + "options": attrs["options"], + "input_YAML_file_name": attrs["input_YAML_file_name"], + "input_map_voxel_phase": attrs["input_map_voxel_phase"], + "input_map_phase_material": attrs["input_map_phase_material"], + "input_map_interface": attrs["input_map_interface"], + "stdout_file_name": attrs["stdout_file_name"], + "stdout_file_str": "\n".join(group.get("stdout_file_str")[:]), + "input_YAML_file_str": "\n".join(group.get("input_YAML_file_str")[:]), + } + inc_data = [] + for inc_dat_i_group in group.get("incremental_data").values(): + inc_dat_i_group_attrs = inc_dat_i_group.attrs.asdict() + inc_data_i = {k: inc_dat_i_group_attrs[k] for k in INC_DATA_NON_ARRAYS} + for name, dataset in inc_dat_i_group.items(): + inc_data_i[name] = dataset[:] + inc_data.append(inc_data_i) + kwargs["incremental_data"] = inc_data + + obj = cls(**kwargs, cipher_input=cipher_input, quiet=quiet) + return obj + @classmethod def compare_phase_size_dist_evolution( cls, @@ -1081,21 +1164,28 @@ def show_slice_evolution( def get_average_radius_evolution(self, exclude=None): """Get an evolution proportional to the average radius across all phases.""" + + inp_dat = self.get_input_YAML_data() + num_phases = inp_dat["num_phases"] + dimension = len(inp_dat["grid_size"]) exclude = exclude or [] - all_phases_num_voxels = [[] for _ in range(self.geometries[0].num_phases)] + + num_voxel_inc_idx = [] times = [] - for dat_i in self.incremental_data: - if "num_voxels_per_phase" in dat_i: - for idx, i in enumerate(dat_i["num_voxels_per_phase"]): - if idx in exclude: - i = 0 - all_phases_num_voxels[idx].append(i) - times.append(dat_i["time"]) - - power = 1 / self.geometries[0].dimension - all_phases_prop_radius = np.array( - [np.power(i, power) for i in all_phases_num_voxels] - ) + for idx, i in enumerate(self.incremental_data): + if "num_voxels_per_phase" in i: + num_voxel_inc_idx.append(idx) + times.append(i["time"]) + + all_phases_num_voxels = np.ones((num_phases, len(num_voxel_inc_idx))) * np.nan + for idx, inc_i_idx in enumerate(num_voxel_inc_idx): + num_voxels = np.copy(self.incremental_data[inc_i_idx]["num_voxels_per_phase"]) + if exclude: + num_voxels[exclude] = 0 + all_phases_num_voxels[:, idx] = num_voxels + + power = 1 / dimension + all_phases_prop_radius = np.power(all_phases_num_voxels, power) all_phases_prop_radius[np.isclose(all_phases_prop_radius, 0)] = np.nan prop_avg_radius = np.nanmean(all_phases_prop_radius, axis=0) diff --git a/cipher_parse/derived_outputs.py b/cipher_parse/derived_outputs.py index f6a4e29..c60a176 100644 --- a/cipher_parse/derived_outputs.py +++ b/cipher_parse/derived_outputs.py @@ -1,9 +1,8 @@ import numpy as np -def num_voxels_per_phase(cipher_input, phaseid): - voxel_phase = cipher_input.geometry.voxel_phase - num_initial_phases = len(np.unique(voxel_phase)) +def num_voxels_per_phase(input_data, phaseid): + num_initial_phases = input_data["num_phases"] num_voxels_per_phase = np.zeros(num_initial_phases, dtype=int) uniq, counts = np.unique(phaseid.astype(int), return_counts=True) num_voxels_per_phase[uniq] = counts diff --git a/poetry.lock b/poetry.lock index d30305f..38ac7c4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "aiohttp" version = "3.8.4" description = "Async http client/server framework (asyncio)" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -113,7 +112,6 @@ speedups = ["Brotli", "aiodns", "cchardet"] name = "aiosignal" version = "1.3.1" description = "aiosignal: a list of registered asynchronous callbacks" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -128,7 +126,6 @@ frozenlist = ">=1.1.0" name = "alabaster" version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -140,7 +137,6 @@ files = [ name = "anyio" version = "3.6.2" description = "High level compatibility layer for multiple asynchronous event loop implementations" -category = "main" optional = false python-versions = ">=3.6.2" files = [ @@ -161,7 +157,6 @@ trio = ["trio (>=0.16,<0.22)"] name = "appnope" version = "0.1.3" description = "Disable App Nap on macOS >= 10.9" -category = "main" optional = false python-versions = "*" files = [ @@ -173,7 +168,6 @@ files = [ name = "argcomplete" version = "2.0.6" description = "Bash tab completion for argparse" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -189,7 +183,6 @@ test = ["coverage", "flake8", "mypy", "pexpect", "wheel"] name = "argon2-cffi" version = "21.3.0" description = "The secure Argon2 password hashing algorithm." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -209,7 +202,6 @@ tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"] name = "argon2-cffi-bindings" version = "21.2.0" description = "Low-level CFFI bindings for Argon2" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -247,7 +239,6 @@ tests = ["pytest"] name = "arrow" version = "1.2.3" description = "Better dates & times for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -258,11 +249,20 @@ files = [ [package.dependencies] python-dateutil = ">=2.7.0" +[[package]] +name = "asciitree" +version = "0.3.3" +description = "Draws ASCII trees." +optional = false +python-versions = "*" +files = [ + {file = "asciitree-0.3.3.tar.gz", hash = "sha256:4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e"}, +] + [[package]] name = "astroid" version = "2.15.5" description = "An abstract syntax tree for Python with inference support." -category = "dev" optional = false python-versions = ">=3.7.2" files = [ @@ -279,7 +279,6 @@ wrapt = {version = ">=1.11,<2", markers = "python_version < \"3.11\""} name = "asttokens" version = "2.2.1" description = "Annotate AST trees with source code positions" -category = "main" optional = false python-versions = "*" files = [ @@ -297,7 +296,6 @@ test = ["astroid", "pytest"] name = "async-timeout" version = "4.0.2" description = "Timeout context manager for asyncio programs" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -309,7 +307,6 @@ files = [ name = "atomicwrites" version = "1.4.1" description = "Atomic file writes." -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -320,7 +317,6 @@ files = [ name = "attrs" version = "23.1.0" description = "Classes Without Boilerplate" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -339,7 +335,6 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte name = "autopep8" version = "2.0.2" description = "A tool that automatically formats Python code to conform to the PEP 8 style guide" -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -355,7 +350,6 @@ tomli = {version = "*", markers = "python_version < \"3.11\""} name = "babel" version = "2.12.1" description = "Internationalization utilities" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -370,7 +364,6 @@ pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} name = "backcall" version = "0.2.0" description = "Specifications for callback functions passed in to an API" -category = "main" optional = false python-versions = "*" files = [ @@ -382,7 +375,6 @@ files = [ name = "beautifulsoup4" version = "4.12.2" description = "Screen-scraping library" -category = "main" optional = false python-versions = ">=3.6.0" files = [ @@ -401,7 +393,6 @@ lxml = ["lxml"] name = "beautifultable" version = "1.1.0" description = "Print text tables for terminals" -category = "main" optional = true python-versions = "*" files = [ @@ -420,7 +411,6 @@ dev = ["pandas"] name = "black" version = "22.12.0" description = "The uncompromising code formatter." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -456,7 +446,6 @@ uvloop = ["uvloop (>=0.15.2)"] name = "bleach" version = "6.0.0" description = "An easy safelist-based HTML-sanitizing tool." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -475,7 +464,6 @@ css = ["tinycss2 (>=1.1.0,<1.2)"] name = "certifi" version = "2023.5.7" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -487,7 +475,6 @@ files = [ name = "cffi" version = "1.15.1" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false python-versions = "*" files = [ @@ -564,7 +551,6 @@ pycparser = "*" name = "cfgv" version = "3.3.1" description = "Validate configuration and produce human readable error messages." -category = "dev" optional = false python-versions = ">=3.6.1" files = [ @@ -576,7 +562,6 @@ files = [ name = "charset-normalizer" version = "2.1.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.6.0" files = [ @@ -591,7 +576,6 @@ unicode-backport = ["unicodedata2"] name = "click" version = "8.1.3" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -606,7 +590,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -618,7 +601,6 @@ files = [ name = "colorcet" version = "3.0.1" description = "Collection of perceptually uniform colormaps" -category = "main" optional = false python-versions = ">=2.7" files = [ @@ -641,7 +623,6 @@ tests-extra = ["flake8", "nbsmoke (>=0.2.6)", "pytest (>=2.8.5)", "pytest-cov", name = "comm" version = "0.1.3" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -661,7 +642,6 @@ typing = ["mypy (>=0.990)"] name = "commitizen" version = "2.42.1" description = "Python commitizen client tool" -category = "dev" optional = false python-versions = ">=3.6.2,<4.0.0" files = [ @@ -686,7 +666,6 @@ typing-extensions = ">=4.0.1,<5.0.0" name = "contourpy" version = "1.0.7" description = "Python library for calculating contours of 2D quadrilateral grids" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -761,7 +740,6 @@ test-no-images = ["pytest"] name = "cycler" version = "0.11.0" description = "Composable style cycles" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -773,7 +751,6 @@ files = [ name = "damask" version = "3.0.0a7.post0" description = "DAMASK processing tools" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -794,7 +771,6 @@ vtk = ">=8.1" name = "debugpy" version = "1.6.7" description = "An implementation of the Debug Adapter Protocol for Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -822,7 +798,6 @@ files = [ name = "decli" version = "0.5.2" description = "Minimal, easy-to-use, declarative cli tool" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -834,7 +809,6 @@ files = [ name = "decorator" version = "5.1.1" description = "Decorators for Humans" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -846,7 +820,6 @@ files = [ name = "defdap" version = "0.93.5" description = "A python library for correlating EBSD and HRDIC data." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -872,7 +845,6 @@ testing = ["coverage", "pytest", "pytest-cases", "pytest-cov"] name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -884,7 +856,6 @@ files = [ name = "dill" version = "0.3.6" description = "serialize all of python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -899,7 +870,6 @@ graph = ["objgraph (>=1.7.2)"] name = "distlib" version = "0.3.6" description = "Distribution utilities" -category = "dev" optional = false python-versions = "*" files = [ @@ -911,7 +881,6 @@ files = [ name = "docutils" version = "0.17.1" description = "Docutils -- Python Documentation Utilities" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -923,7 +892,6 @@ files = [ name = "dropbox" version = "10.1.2" description = "Official Dropbox API Client" -category = "main" optional = true python-versions = "*" files = [ @@ -940,7 +908,6 @@ six = ">=1.12.0" name = "executing" version = "1.2.0" description = "Get the currently executing AST node of a frame, and other information" -category = "main" optional = false python-versions = "*" files = [ @@ -951,11 +918,21 @@ files = [ [package.extras] tests = ["asttokens", "littleutils", "pytest", "rich"] +[[package]] +name = "fasteners" +version = "0.19" +description = "A python package that provides useful locks" +optional = false +python-versions = ">=3.6" +files = [ + {file = "fasteners-0.19-py3-none-any.whl", hash = "sha256:758819cb5d94cdedf4e836988b74de396ceacb8e2794d21f82d131fd9ee77237"}, + {file = "fasteners-0.19.tar.gz", hash = "sha256:b4f37c3ac52d8a445af3a66bce57b33b5e90b97c696b7b984f530cf8f0ded09c"}, +] + [[package]] name = "fastjsonschema" version = "2.16.3" description = "Fastest Python implementation of JSON schema" -category = "main" optional = false python-versions = "*" files = [ @@ -970,7 +947,6 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc name = "filelock" version = "3.12.0" description = "A platform independent file lock." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -986,7 +962,6 @@ testing = ["covdefaults (>=2.3)", "coverage (>=7.2.3)", "diff-cover (>=7.5)", "p name = "fonttools" version = "4.39.4" description = "Tools to manipulate font files" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1012,7 +987,6 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] name = "fqdn" version = "1.5.1" description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" -category = "main" optional = false python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" files = [ @@ -1024,7 +998,6 @@ files = [ name = "frozenlist" version = "1.3.3" description = "A list-like structure which implements collections.abc.MutableSequence" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1108,7 +1081,6 @@ files = [ name = "greenlet" version = "2.0.2" description = "Lightweight in-process concurrent programming" -category = "main" optional = true python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" files = [ @@ -1182,7 +1154,6 @@ test = ["objgraph", "psutil"] name = "h5py" version = "2.10.0" description = "Read and write HDF5 files from Python" -category = "main" optional = false python-versions = "*" files = [ @@ -1225,7 +1196,6 @@ six = "*" name = "hickle" version = "4.0.4" description = "Hickle - an HDF5 based version of pickle" -category = "main" optional = true python-versions = ">=3.5" files = [ @@ -1243,7 +1213,6 @@ six = ">=1.11.0" name = "hpcflow" version = "0.1.16" description = "Generate and submit jobscripts for an automated simulate, process, archive workflow on high performance computing (HPC) systems." -category = "main" optional = true python-versions = "*" files = [ @@ -1263,7 +1232,6 @@ sqlalchemy = ">=1.4.0" name = "identify" version = "2.5.24" description = "File identification library for Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1278,7 +1246,6 @@ license = ["ukkonen"] name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1290,7 +1257,6 @@ files = [ name = "imageio" version = "2.31.1" description = "Library for reading and writing a wide range of image, video, scientific, and volumetric data formats." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1322,7 +1288,6 @@ tifffile = ["tifffile"] name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1334,7 +1299,6 @@ files = [ name = "importlib-metadata" version = "6.6.0" description = "Read metadata from Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1354,7 +1318,6 @@ testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packag name = "importlib-resources" version = "5.12.0" description = "Read resources from Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1373,7 +1336,6 @@ testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-chec name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1385,7 +1347,6 @@ files = [ name = "ipydatawidgets" version = "4.3.3" description = "A set of widgets to help facilitate reuse of large datasets across widgets" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1406,7 +1367,6 @@ test = ["nbval (>=0.9.2)", "pytest (>=4)", "pytest-cov"] name = "ipykernel" version = "6.23.0" description = "IPython Kernel for Jupyter" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1420,7 +1380,7 @@ comm = ">=0.1.1" debugpy = ">=1.6.5" ipython = ">=7.23.1" jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" matplotlib-inline = ">=0.1" nest-asyncio = "*" packaging = "*" @@ -1440,7 +1400,6 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio" name = "ipympl" version = "0.9.3" description = "Matplotlib Jupyter Extension" -category = "main" optional = false python-versions = "*" files = [ @@ -1464,7 +1423,6 @@ docs = ["Sphinx (>=1.5)", "myst-nb", "sphinx-book-theme", "sphinx-copybutton", " name = "ipython" version = "8.12.2" description = "IPython: Productive Interactive Computing" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1504,7 +1462,6 @@ test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pa name = "ipython-genutils" version = "0.2.0" description = "Vestigial utilities from IPython" -category = "main" optional = false python-versions = "*" files = [ @@ -1516,7 +1473,6 @@ files = [ name = "ipywidgets" version = "7.7.5" description = "IPython HTML widgets for Jupyter" -category = "main" optional = false python-versions = "*" files = [ @@ -1539,7 +1495,6 @@ test = ["ipykernel", "mock", "pytest (>=3.6.0)", "pytest-cov"] name = "isoduration" version = "20.11.0" description = "Operations with ISO 8601 durations" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1554,7 +1509,6 @@ arrow = ">=0.15.0" name = "isort" version = "5.12.0" description = "A Python utility / library to sort Python imports." -category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -1572,7 +1526,6 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] name = "itk-core" version = "5.3.0" description = "ITK is an open-source toolkit for multidimensional image analysis" -category = "main" optional = false python-versions = "*" files = [ @@ -1613,7 +1566,6 @@ numpy = "*" name = "itk-filtering" version = "5.3.0" description = "ITK is an open-source toolkit for multidimensional image analysis" -category = "main" optional = false python-versions = "*" files = [ @@ -1654,7 +1606,6 @@ itk-numerics = "5.3.0" name = "itk-meshtopolydata" version = "0.10.0" description = "Convert an ITK Mesh to a simple data structure compatible with vtkPolyData." -category = "main" optional = false python-versions = "*" files = [ @@ -1691,7 +1642,6 @@ numpy = "*" name = "itk-numerics" version = "5.3.0" description = "ITK is an open-source toolkit for multidimensional image analysis" -category = "main" optional = false python-versions = "*" files = [ @@ -1732,7 +1682,6 @@ itk-core = "5.3.0" name = "itkwidgets" version = "0.32.4" description = "Interactive Jupyter widgets to visualize images, point sets, and meshes in 2D and 3D" -category = "main" optional = false python-versions = "*" files = [ @@ -1758,7 +1707,6 @@ zstandard = "*" name = "jedi" version = "0.18.2" description = "An autocompletion tool for Python that can be used for text editors." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1778,7 +1726,6 @@ testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1796,7 +1743,6 @@ i18n = ["Babel (>=2.7)"] name = "jsonpointer" version = "2.3" description = "Identify specific nodes in a JSON document (RFC 6901)" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1808,7 +1754,6 @@ files = [ name = "jsonschema" version = "4.17.3" description = "An implementation of JSON Schema validation for Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1838,7 +1783,6 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- name = "jupyter-client" version = "8.2.0" description = "Jupyter protocol implementation and client libraries" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1848,7 +1792,7 @@ files = [ [package.dependencies] importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" python-dateutil = ">=2.8.2" pyzmq = ">=23.0" tornado = ">=6.2" @@ -1862,7 +1806,6 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt name = "jupyter-core" version = "5.3.0" description = "Jupyter core package. A base package on which Jupyter projects rely." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1883,7 +1826,6 @@ test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] name = "jupyter-events" version = "0.6.3" description = "Jupyter Event System library" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1908,7 +1850,6 @@ test = ["click", "coverage", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>= name = "jupyter-server" version = "2.5.0" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1921,7 +1862,7 @@ anyio = ">=3.1.0" argon2-cffi = "*" jinja2 = "*" jupyter-client = ">=7.4.4" -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" jupyter-events = ">=0.4.0" jupyter-server-terminals = "*" nbconvert = ">=6.4.4" @@ -1944,7 +1885,6 @@ test = ["ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-scripts", " name = "jupyter-server-terminals" version = "0.4.4" description = "A Jupyter Server Extension Providing Terminals." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1964,7 +1904,6 @@ test = ["coverage", "jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-cov", name = "jupyterlab-pygments" version = "0.2.2" description = "Pygments theme using JupyterLab CSS variables" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1976,7 +1915,6 @@ files = [ name = "jupyterlab-widgets" version = "1.1.4" description = "A JupyterLab extension." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1988,7 +1926,6 @@ files = [ name = "kiwisolver" version = "1.4.4" description = "A fast implementation of the Cassowary constraint solver" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2066,7 +2003,6 @@ files = [ name = "lazy-object-proxy" version = "1.9.0" description = "A fast and thorough lazy object proxy." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2112,7 +2048,6 @@ files = [ name = "markupsafe" version = "2.1.2" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2172,7 +2107,6 @@ files = [ name = "matflow" version = "0.2.26" description = "Computational workflow management for materials science." -category = "main" optional = true python-versions = "*" files = [ @@ -2195,7 +2129,6 @@ pyperclip = "*" name = "matflow-demo-extension" version = "0.1.3" description = "Demonstration extension for Matflow." -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -2210,7 +2143,6 @@ matflow = "*" name = "matplotlib" version = "3.7.1" description = "Python plotting package" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2273,7 +2205,6 @@ python-dateutil = ">=2.7" name = "matplotlib-inline" version = "0.1.6" description = "Inline Matplotlib backend for Jupyter" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -2288,7 +2219,6 @@ traitlets = "*" name = "matplotlib-scalebar" version = "0.8.1" description = "Artist for matplotlib to display a scale bar" -category = "main" optional = false python-versions = "~=3.7" files = [ @@ -2303,7 +2233,6 @@ matplotlib = "*" name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2315,7 +2244,6 @@ files = [ name = "mistune" version = "2.0.5" description = "A sane Markdown parser with useful plugins and renderers" -category = "main" optional = false python-versions = "*" files = [ @@ -2327,7 +2255,6 @@ files = [ name = "multidict" version = "6.0.4" description = "multidict implementation" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2411,7 +2338,6 @@ files = [ name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -2423,7 +2349,6 @@ files = [ name = "nbclassic" version = "1.0.0" description = "Jupyter Notebook as a Jupyter Server extension." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2459,7 +2384,6 @@ test = ["coverage", "nbval", "pytest", "pytest-cov", "pytest-jupyter", "pytest-p name = "nbclient" version = "0.7.4" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -2469,7 +2393,7 @@ files = [ [package.dependencies] jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" nbformat = ">=5.1" traitlets = ">=5.3" @@ -2482,7 +2406,6 @@ test = ["flaky", "ipykernel", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "p name = "nbconvert" version = "7.4.0" description = "Converting Jupyter Notebooks" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2521,7 +2444,6 @@ webpdf = ["pyppeteer (>=1,<1.1)"] name = "nbformat" version = "5.8.0" description = "The Jupyter Notebook format" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2543,7 +2465,6 @@ test = ["pep440", "pre-commit", "pytest", "testpath"] name = "nest-asyncio" version = "1.5.6" description = "Patch asyncio to allow nested event loops" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -2555,7 +2476,6 @@ files = [ name = "networkx" version = "3.1" description = "Python package for creating and manipulating graphs and networks" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2574,7 +2494,6 @@ test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] name = "nodeenv" version = "1.8.0" description = "Node.js virtual environment builder" -category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" files = [ @@ -2589,7 +2508,6 @@ setuptools = "*" name = "notebook" version = "6.5.4" description = "A web-based notebook environment for interactive computing" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2624,7 +2542,6 @@ test = ["coverage", "nbval", "pytest", "pytest-cov", "requests", "requests-unixs name = "notebook-shim" version = "0.2.3" description = "A shim layer for notebook traits and config" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2638,11 +2555,50 @@ jupyter-server = ">=1.8,<3" [package.extras] test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"] +[[package]] +name = "numcodecs" +version = "0.12.1" +description = "A Python package providing buffer compression and transformation codecs for use in data storage and communication applications." +optional = false +python-versions = ">=3.8" +files = [ + {file = "numcodecs-0.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d37f628fe92b3699e65831d5733feca74d2e33b50ef29118ffd41c13c677210e"}, + {file = "numcodecs-0.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:941b7446b68cf79f089bcfe92edaa3b154533dcbcd82474f994b28f2eedb1c60"}, + {file = "numcodecs-0.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e79bf9d1d37199ac00a60ff3adb64757523291d19d03116832e600cac391c51"}, + {file = "numcodecs-0.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:82d7107f80f9307235cb7e74719292d101c7ea1e393fe628817f0d635b7384f5"}, + {file = "numcodecs-0.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eeaf42768910f1c6eebf6c1bb00160728e62c9343df9e2e315dc9fe12e3f6071"}, + {file = "numcodecs-0.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:135b2d47563f7b9dc5ee6ce3d1b81b0f1397f69309e909f1a35bb0f7c553d45e"}, + {file = "numcodecs-0.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a191a8e347ecd016e5c357f2bf41fbcb026f6ffe78fff50c77ab12e96701d155"}, + {file = "numcodecs-0.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:21d8267bd4313f4d16f5b6287731d4c8ebdab236038f29ad1b0e93c9b2ca64ee"}, + {file = "numcodecs-0.12.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:2f84df6b8693206365a5b37c005bfa9d1be486122bde683a7b6446af4b75d862"}, + {file = "numcodecs-0.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:760627780a8b6afdb7f942f2a0ddaf4e31d3d7eea1d8498cf0fd3204a33c4618"}, + {file = "numcodecs-0.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c258bd1d3dfa75a9b708540d23b2da43d63607f9df76dfa0309a7597d1de3b73"}, + {file = "numcodecs-0.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:e04649ea504aff858dbe294631f098fbfd671baf58bfc04fc48d746554c05d67"}, + {file = "numcodecs-0.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:caf1a1e6678aab9c1e29d2109b299f7a467bd4d4c34235b1f0e082167846b88f"}, + {file = "numcodecs-0.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c17687b1fd1fef68af616bc83f896035d24e40e04e91e7e6dae56379eb59fe33"}, + {file = "numcodecs-0.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29dfb195f835a55c4d490fb097aac8c1bcb96c54cf1b037d9218492c95e9d8c5"}, + {file = "numcodecs-0.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:2f1ba2f4af3fd3ba65b1bcffb717fe65efe101a50a91c368f79f3101dbb1e243"}, + {file = "numcodecs-0.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2fbb12a6a1abe95926f25c65e283762d63a9bf9e43c0de2c6a1a798347dfcb40"}, + {file = "numcodecs-0.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f2207871868b2464dc11c513965fd99b958a9d7cde2629be7b2dc84fdaab013b"}, + {file = "numcodecs-0.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abff3554a6892a89aacf7b642a044e4535499edf07aeae2f2e6e8fc08c9ba07f"}, + {file = "numcodecs-0.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:ef964d4860d3e6b38df0633caf3e51dc850a6293fd8e93240473642681d95136"}, + {file = "numcodecs-0.12.1.tar.gz", hash = "sha256:05d91a433733e7eef268d7e80ec226a0232da244289614a8f3826901aec1098e"}, +] + +[package.dependencies] +numpy = ">=1.7" + +[package.extras] +docs = ["mock", "numpydoc", "sphinx (<7.0.0)", "sphinx-issues"] +msgpack = ["msgpack"] +test = ["coverage", "flake8", "pytest", "pytest-cov"] +test-extras = ["importlib-metadata"] +zfpy = ["zfpy (>=1.0.0)"] + [[package]] name = "numpy" version = "1.21.0" description = "NumPy is the fundamental package for array computing with Python." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2680,7 +2636,6 @@ files = [ name = "packaging" version = "23.1" description = "Core utilities for Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2692,7 +2647,6 @@ files = [ name = "pandas" version = "1.5.3" description = "Powerful data structures for data analysis, time series, and statistics" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2740,7 +2694,6 @@ test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] name = "pandocfilters" version = "1.5.0" description = "Utilities for writing pandoc filters in python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2752,7 +2705,6 @@ files = [ name = "param" version = "1.13.0" description = "Make your Python code clearer and more reliable by declaring Parameters." -category = "main" optional = false python-versions = ">=2.7" files = [ @@ -2769,7 +2721,6 @@ tests = ["coverage", "flake8", "pytest"] name = "parse" version = "1.19.0" description = "parse() is the opposite of format()" -category = "main" optional = false python-versions = "*" files = [ @@ -2780,7 +2731,6 @@ files = [ name = "parso" version = "0.8.3" description = "A Python Parser" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2796,7 +2746,6 @@ testing = ["docopt", "pytest (<6.0.0)"] name = "pathspec" version = "0.11.1" description = "Utility library for gitignore style pattern matching of file paths." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2808,7 +2757,6 @@ files = [ name = "peakutils" version = "1.3.4" description = "Peak detection utilities for 1D data" -category = "main" optional = false python-versions = "*" files = [ @@ -2824,7 +2772,6 @@ scipy = "*" name = "pexpect" version = "4.8.0" description = "Pexpect allows easy control of interactive console applications." -category = "main" optional = false python-versions = "*" files = [ @@ -2839,7 +2786,6 @@ ptyprocess = ">=0.5" name = "pickleshare" version = "0.7.5" description = "Tiny 'shelve'-like database with concurrency support" -category = "main" optional = false python-versions = "*" files = [ @@ -2851,7 +2797,6 @@ files = [ name = "pillow" version = "9.5.0" description = "Python Imaging Library (Fork)" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2931,7 +2876,6 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa name = "pkgutil-resolve-name" version = "1.3.10" description = "Resolve a name to an object." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2943,7 +2887,6 @@ files = [ name = "platformdirs" version = "3.5.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2959,7 +2902,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest- name = "plotly" version = "5.14.1" description = "An open-source, interactive data visualization library for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2975,7 +2917,6 @@ tenacity = ">=6.2.0" name = "pluggy" version = "1.0.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2991,7 +2932,6 @@ testing = ["pytest", "pytest-benchmark"] name = "pooch" version = "1.7.0" description = "\"Pooch manages your Python library's sample data files: it automatically downloads and stores them in a local directory, with support for versioning and corruption checks.\"" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3013,7 +2953,6 @@ xxhash = ["xxhash (>=1.4.3)"] name = "pre-commit" version = "2.21.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3032,7 +2971,6 @@ virtualenv = ">=20.10.0" name = "prometheus-client" version = "0.16.0" description = "Python client for the Prometheus monitoring system." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3047,7 +2985,6 @@ twisted = ["twisted"] name = "prompt-toolkit" version = "3.0.38" description = "Library for building powerful interactive command lines in Python" -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -3062,7 +2999,6 @@ wcwidth = "*" name = "psutil" version = "5.9.5" description = "Cross-platform lib for process and system monitoring in Python." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -3089,7 +3025,6 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] name = "ptyprocess" version = "0.7.0" description = "Run a subprocess in a pseudo terminal" -category = "main" optional = false python-versions = "*" files = [ @@ -3101,7 +3036,6 @@ files = [ name = "pure-eval" version = "0.2.2" description = "Safely evaluate AST nodes without side effects" -category = "main" optional = false python-versions = "*" files = [ @@ -3116,7 +3050,6 @@ tests = ["pytest"] name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -3128,7 +3061,6 @@ files = [ name = "pycodestyle" version = "2.10.0" description = "Python style guide checker" -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -3140,7 +3072,6 @@ files = [ name = "pycparser" version = "2.21" description = "C parser in Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -3152,7 +3083,6 @@ files = [ name = "pyct" version = "0.5.0" description = "Python package common tasks for users (e.g. copy examples, fetch data, ...)" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3173,7 +3103,6 @@ tests = ["flake8", "pytest"] name = "pydata-sphinx-theme" version = "0.8.1" description = "Bootstrap-based Sphinx theme from the PyData community" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3197,7 +3126,6 @@ test = ["pydata-sphinx-theme[doc]", "pytest"] name = "pygments" version = "2.15.1" description = "Pygments is a syntax highlighting package written in Python." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3212,7 +3140,6 @@ plugins = ["importlib-metadata"] name = "pylint" version = "2.17.4" description = "python code static checker" -category = "dev" optional = false python-versions = ">=3.7.2" files = [ @@ -3239,7 +3166,6 @@ testutils = ["gitpython (>3)"] name = "pyparsing" version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" optional = false python-versions = ">=3.6.8" files = [ @@ -3254,7 +3180,6 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pyperclip" version = "1.8.2" description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)" -category = "main" optional = true python-versions = "*" files = [ @@ -3265,7 +3190,6 @@ files = [ name = "pyrsistent" version = "0.19.3" description = "Persistent/Functional/Immutable data structures" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3302,7 +3226,6 @@ files = [ name = "pytest" version = "6.2.5" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -3327,7 +3250,6 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -3342,7 +3264,6 @@ six = ">=1.5" name = "python-json-logger" version = "2.0.7" description = "A python library adding a json log formatter" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3354,7 +3275,6 @@ files = [ name = "pytz" version = "2023.3" description = "World timezone definitions, modern and historical" -category = "main" optional = false python-versions = "*" files = [ @@ -3366,7 +3286,6 @@ files = [ name = "pyvista" version = "0.39.0" description = "Easier Pythonic interface to VTK" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3393,7 +3312,6 @@ trame = ["trame (>=2.2.6)", "trame-client (>=2.4.2)", "trame-server (>=2.8.0)", name = "pywavelets" version = "1.4.1" description = "PyWavelets, wavelet transform module" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3431,7 +3349,6 @@ numpy = ">=1.17.3" name = "pywin32" version = "306" description = "Python for Window Extensions" -category = "main" optional = false python-versions = "*" files = [ @@ -3455,7 +3372,6 @@ files = [ name = "pywinpty" version = "2.0.10" description = "Pseudo terminal support for Windows from Python." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3471,7 +3387,6 @@ files = [ name = "pyyaml" version = "6.0" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3521,7 +3436,6 @@ files = [ name = "pyzmq" version = "25.0.2" description = "Python bindings for 0MQ" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3611,7 +3525,6 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} name = "questionary" version = "1.10.0" description = "Python library to build pretty command line user prompts ⭐️" -category = "dev" optional = false python-versions = ">=3.6,<4.0" files = [ @@ -3629,7 +3542,6 @@ docs = ["Sphinx (>=3.3,<4.0)", "sphinx-autobuild (>=2020.9.1,<2021.0.0)", "sphin name = "requests" version = "2.30.0" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3651,7 +3563,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "rfc3339-validator" version = "0.1.4" description = "A pure python RFC3339 validator" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -3666,7 +3577,6 @@ six = "*" name = "rfc3986-validator" version = "0.1.1" description = "Pure python rfc3986 validator" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -3678,7 +3588,6 @@ files = [ name = "ruamel-yaml" version = "0.17.26" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" -category = "main" optional = false python-versions = ">=3" files = [ @@ -3697,7 +3606,6 @@ jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] name = "ruamel-yaml-clib" version = "0.2.7" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -3743,7 +3651,6 @@ files = [ name = "scikit-image" version = "0.19.3" description = "Image processing in Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3795,7 +3702,6 @@ test = ["asv", "codecov", "flake8", "matplotlib (>=3.0.3)", "pooch (>=1.3.0)", " name = "scipy" version = "1.10.1" description = "Fundamental algorithms for scientific computing in Python" -category = "main" optional = false python-versions = "<3.12,>=3.8" files = [ @@ -3834,7 +3740,6 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo name = "scooby" version = "0.7.2" description = "A Great Dane turned Python environment detective" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3849,7 +3754,6 @@ cpu = ["mkl", "psutil"] name = "send2trash" version = "1.8.2" description = "Send file to trash natively under Mac OS X, Windows and Linux" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -3866,7 +3770,6 @@ win32 = ["pywin32"] name = "setuptools" version = "67.7.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3883,7 +3786,6 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs ( name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -3895,7 +3797,6 @@ files = [ name = "sniffio" version = "1.3.0" description = "Sniff out which async library your code is running under" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3907,7 +3808,6 @@ files = [ name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -category = "dev" optional = false python-versions = "*" files = [ @@ -3919,7 +3819,6 @@ files = [ name = "soupsieve" version = "2.4.1" description = "A modern CSS selector implementation for Beautiful Soup." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3931,7 +3830,6 @@ files = [ name = "sphinx" version = "4.5.0" description = "Python documentation generator" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -3967,7 +3865,6 @@ test = ["cython", "html5lib", "pytest", "pytest-cov", "typed-ast"] name = "sphinx-copybutton" version = "0.5.2" description = "Add a copy button to each of your code cells." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3986,7 +3883,6 @@ rtd = ["ipython", "myst-nb", "sphinx", "sphinx-book-theme", "sphinx-examples"] name = "sphinx-jinja" version = "2.0.2" description = "includes jinja templates in a documentation" -category = "dev" optional = false python-versions = ">=3.6,<4" files = [ @@ -4003,7 +3899,6 @@ sphinx = ">4.2.0" name = "sphinxcontrib-applehelp" version = "1.0.4" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -4019,7 +3914,6 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -4035,7 +3929,6 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.0.1" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -4051,7 +3944,6 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -4066,7 +3958,6 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-qthelp" version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -4082,7 +3973,6 @@ test = ["pytest"] name = "sphinxcontrib-serializinghtml" version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -4098,7 +3988,6 @@ test = ["pytest"] name = "sqlalchemy" version = "1.4.48" description = "Database Abstraction Library" -category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -4146,7 +4035,7 @@ files = [ ] [package.dependencies] -greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and platform_machine == \"aarch64\" or python_version >= \"3\" and platform_machine == \"ppc64le\" or python_version >= \"3\" and platform_machine == \"x86_64\" or python_version >= \"3\" and platform_machine == \"amd64\" or python_version >= \"3\" and platform_machine == \"AMD64\" or python_version >= \"3\" and platform_machine == \"win32\" or python_version >= \"3\" and platform_machine == \"WIN32\""} +greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} [package.extras] aiomysql = ["aiomysql", "greenlet (!=0.4.17)"] @@ -4173,7 +4062,6 @@ sqlcipher = ["sqlcipher3-binary"] name = "stack-data" version = "0.6.2" description = "Extract data from python stack frames and tracebacks for informative displays" -category = "main" optional = false python-versions = "*" files = [ @@ -4193,7 +4081,6 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] name = "tenacity" version = "8.2.2" description = "Retry code until it succeeds" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -4208,7 +4095,6 @@ doc = ["reno", "sphinx", "tornado (>=4.5)"] name = "termcolor" version = "2.3.0" description = "ANSI color formatting for output in terminal" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4223,7 +4109,6 @@ tests = ["pytest", "pytest-cov"] name = "terminado" version = "0.17.1" description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4244,7 +4129,6 @@ test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] name = "tifffile" version = "2023.7.10" description = "Read and write TIFF files" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -4262,7 +4146,6 @@ all = ["defusedxml", "fsspec", "imagecodecs (>=2023.1.23)", "lxml", "matplotlib" name = "tinycss2" version = "1.2.1" description = "A tiny CSS parser" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4281,7 +4164,6 @@ test = ["flake8", "isort", "pytest"] name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -4293,7 +4175,6 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4305,7 +4186,6 @@ files = [ name = "tomlkit" version = "0.11.8" description = "Style preserving TOML library" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4317,7 +4197,6 @@ files = [ name = "tornado" version = "6.3.2" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -category = "main" optional = false python-versions = ">= 3.8" files = [ @@ -4338,7 +4217,6 @@ files = [ name = "traitlets" version = "5.9.0" description = "Traitlets Python configuration system" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4354,7 +4232,6 @@ test = ["argcomplete (>=2.0)", "pre-commit", "pytest", "pytest-mock"] name = "traittypes" version = "0.2.1" description = "Scipy trait types" -category = "main" optional = false python-versions = "*" files = [ @@ -4372,7 +4249,6 @@ test = ["numpy", "pandas", "pytest", "xarray"] name = "trame" version = "2.4.2" description = "Trame, a framework to build applications in plain Python" -category = "main" optional = false python-versions = "*" files = [ @@ -4399,7 +4275,6 @@ trame-vuetify = "<3.0.0" name = "trame-client" version = "2.7.5" description = "Internal client of trame" -category = "main" optional = false python-versions = "*" files = [ @@ -4411,7 +4286,6 @@ files = [ name = "trame-components" version = "2.1.0" description = "Core components for trame widgets" -category = "main" optional = false python-versions = "*" files = [ @@ -4426,7 +4300,6 @@ trame-client = "*" name = "trame-deckgl" version = "2.0.1" description = "Deck.gl widget for trame" -category = "main" optional = false python-versions = "*" files = [ @@ -4441,7 +4314,6 @@ trame-client = "*" name = "trame-markdown" version = "2.0.2" description = "Markdown widget for trame" -category = "main" optional = false python-versions = "*" files = [ @@ -4456,7 +4328,6 @@ trame-client = "*" name = "trame-matplotlib" version = "2.0.1" description = "Markdown widget for trame" -category = "main" optional = false python-versions = "*" files = [ @@ -4471,7 +4342,6 @@ trame-client = "*" name = "trame-plotly" version = "2.1.0" description = "Plotly figure widget for trame" -category = "main" optional = false python-versions = "*" files = [ @@ -4486,7 +4356,6 @@ trame-client = "*" name = "trame-rca" version = "0.3.1" description = "Remote Controlled Area widget for trame" -category = "main" optional = false python-versions = "*" files = [ @@ -4502,7 +4371,6 @@ wslink = "*" name = "trame-router" version = "2.0.1" description = "Vue Router widgets for trame" -category = "main" optional = false python-versions = "*" files = [ @@ -4517,7 +4385,6 @@ trame-client = "*" name = "trame-server" version = "2.11.0" description = "Internal server side implementation of trame" -category = "main" optional = false python-versions = "*" files = [ @@ -4532,7 +4399,6 @@ wslink = ">=1.9.0" name = "trame-simput" version = "2.3.1" description = "Simput implementation for trame" -category = "main" optional = false python-versions = "*" files = [ @@ -4548,7 +4414,6 @@ trame-client = "*" name = "trame-vega" version = "2.0.2" description = "Vega widget for trame" -category = "main" optional = false python-versions = "*" files = [ @@ -4563,7 +4428,6 @@ trame-client = "*" name = "trame-vtk" version = "2.4.4" description = "VTK widgets for trame" -category = "main" optional = false python-versions = "*" files = [ @@ -4578,7 +4442,6 @@ trame-client = "*" name = "trame-vuetify" version = "2.2.4" description = "Vuetify widgets for trame" -category = "main" optional = false python-versions = "*" files = [ @@ -4593,7 +4456,6 @@ trame-client = "*" name = "typing-extensions" version = "4.5.0" description = "Backported and Experimental Type Hints for Python 3.7+" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4605,7 +4467,6 @@ files = [ name = "uri-template" version = "1.2.0" description = "RFC 6570 URI Template Processor" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -4620,7 +4481,6 @@ dev = ["flake8 (<4.0.0)", "flake8-annotations", "flake8-bugbear", "flake8-commas name = "urllib3" version = "2.0.2" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4638,7 +4498,6 @@ zstd = ["zstandard (>=0.18.0)"] name = "vecmaths" version = "0.1.6" description = "A collection of (mostly vectorised) maths functions in Python." -category = "main" optional = false python-versions = "*" files = [ @@ -4653,7 +4512,6 @@ numpy = "*" name = "virtualenv" version = "20.23.0" description = "Virtual Python Environment builder" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4674,7 +4532,6 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.3)", "coverage-enable-subprocess name = "vtk" version = "9.2.6" description = "VTK is an open-source toolkit for 3D computer graphics, image processing, and visualization" -category = "main" optional = false python-versions = "*" files = [ @@ -4712,7 +4569,6 @@ web = ["wslink (>=1.0.4)"] name = "wcwidth" version = "0.2.6" description = "Measures the displayed width of unicode strings in a terminal" -category = "main" optional = false python-versions = "*" files = [ @@ -4724,7 +4580,6 @@ files = [ name = "webcolors" version = "1.13" description = "A library for working with the color formats defined by HTML and CSS." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4740,7 +4595,6 @@ tests = ["pytest", "pytest-cov"] name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" -category = "main" optional = false python-versions = "*" files = [ @@ -4752,7 +4606,6 @@ files = [ name = "websocket-client" version = "1.5.1" description = "WebSocket client for Python with low level API options" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4769,7 +4622,6 @@ test = ["websockets"] name = "widgetsnbextension" version = "3.6.4" description = "IPython HTML widgets for Jupyter" -category = "main" optional = false python-versions = "*" files = [ @@ -4784,7 +4636,6 @@ notebook = ">=4.4.1" name = "wrapt" version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -4869,7 +4720,6 @@ files = [ name = "wslink" version = "1.10.1" description = "Python/JavaScript library for communicating over WebSocket" -category = "main" optional = false python-versions = "*" files = [ @@ -4887,7 +4737,6 @@ ssl = ["cryptography"] name = "yarl" version = "1.9.2" description = "Yet another URL library" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4971,11 +4820,30 @@ files = [ idna = ">=2.0" multidict = ">=4.0" +[[package]] +name = "zarr" +version = "2.16.0" +description = "An implementation of chunked, compressed, N-dimensional arrays for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "zarr-2.16.0-py3-none-any.whl", hash = "sha256:6cf9e6e4c58b9233262e024394e68921a438a6af5a7428bd6bdb1e4e8d05b69a"}, + {file = "zarr-2.16.0.tar.gz", hash = "sha256:84e36b695bda0ecea52af9861271984cb22a5c864679907b7b9ba3f79b684f7e"}, +] + +[package.dependencies] +asciitree = "*" +fasteners = "*" +numcodecs = ">=0.10.0" +numpy = ">=1.20" + +[package.extras] +jupyter = ["ipytree (>=0.2.2)", "ipywidgets (>=8.0.0)", "notebook"] + [[package]] name = "zipp" version = "3.15.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4991,7 +4859,6 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more name = "zstandard" version = "0.21.0" description = "Zstandard bindings for Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -5054,4 +4921,4 @@ notebook = ["notebook"] [metadata] lock-version = "2.0" python-versions = ">=3.8,<3.11" -content-hash = "abcd7dc42d7dbae62b9047bcbc873c753743224f5ce52c18ba1bab3e9beec12e" +content-hash = "d251f7abd73aa3726138e2e7d9119e651d0b7fbcbcea8a2a761964ae2e650eff" diff --git a/pyproject.toml b/pyproject.toml index f787eb1..f1725e0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,6 +30,7 @@ sqlalchemy = {version = "<2.0.0", optional = true} pyvista = "^0.39.0" trame = "^2.4.2" defdap = "^0.93.5" +zarr = "^2.16.0" [tool.poetry.dev-dependencies] pylint = "^2.12.2"