pyvcell 0.2.4__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyvcell-0.2.4 → pyvcell-0.3.0}/PKG-INFO +33 -25
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyproject.toml +47 -18
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/python_infix.py +4 -3
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sbml/sbml_simulation.py +2 -2
- pyvcell-0.3.0/pyvcell/vcml/__init__.py +256 -0
- pyvcell-0.3.0/pyvcell/vcml/models.py +222 -0
- pyvcell-0.3.0/pyvcell/vcml/models_app.py +162 -0
- pyvcell-0.3.0/pyvcell/vcml/models_base.py +29 -0
- pyvcell-0.3.0/pyvcell/vcml/models_geometry.py +203 -0
- pyvcell-0.3.0/pyvcell/vcml/models_math.py +217 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/utils.py +10 -5
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/vcml_reader.py +273 -37
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/vcml_simulation.py +2 -2
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/vcml_writer.py +213 -17
- pyvcell-0.2.4/pyvcell/vcml/__init__.py +0 -107
- pyvcell-0.2.4/pyvcell/vcml/models.py +0 -537
- {pyvcell-0.2.4 → pyvcell-0.3.0}/README.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/__init__.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/__init__.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/__init__.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/__init__.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/__init__.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/admin_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/bio_model_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/export_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/field_data_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/geometry_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/hello_world_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/math_model_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/publication_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/simulation_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/solver_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/users_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/vc_image_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api_client.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api_response.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/auth/__init__.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/auth/auth_utils.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/configuration.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/AccesTokenRepresentationRecord.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/AdminResourceApi.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/AnalyticCurve.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/AnnotatedFunctionDTO.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ApplicationInfo.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/BatchSystemType.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/BioModel.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/BioModelChildSummary.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/BioModelResourceApi.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/BioModelSummary.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/BiomodelRef.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/CompositeCurve.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ControlPointCurve.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Coordinate.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Curve.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/CurveSelectionInfo.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/DataIdentifier.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/DetailedState.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Domain.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ExportEvent.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ExportProgressType.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ExportResourceApi.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ExportableDataType.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Extent.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ExternalDataIdentifier.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/FieldData.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/FieldDataReference.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/FieldDataResourceApi.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/FieldDataSavedResults.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/FieldDataShape.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/FunctionCategory.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GIFImage.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GeometryMode.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GeometryResourceApi.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GeometrySpecDTO.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GeometrySummary.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GroupAccess.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GroupAccessAll.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GroupAccessNone.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GroupAccessSome.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/HelloWorldApi.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/HelloWorldMessage.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/HtcJobID.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/HumanReadableExportData.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ISize.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Identity.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/MathModelChildSummary.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/MathModelResourceApi.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/MathModelSummary.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/MathType.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/MathmodelRef.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ModelType.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/N5ExportRequest.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Origin.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Publication.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/PublicationInfo.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/PublicationResourceApi.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SPECIALCLAIM.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SampledCurve.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SchedulerStatus.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SimulationExecutionStatusRecord.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SimulationJobStatusRecord.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SimulationMessage.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SimulationQueueEntryStatusRecord.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SimulationQueueID.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SimulationResourceApi.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SimulationStatusPersistentRecord.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SolverResourceApi.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SourceModel.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SpatialSelection.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SpatialSelectionContour.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SpatialSelectionMembrane.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SpatialSelectionVolume.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Spline.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/StandardExportInfo.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Status.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/StatusMessage.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/TimeMode.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/TimeSpecs.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/User.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/UserIdentityJSONSafe.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/UserLoginInfoForMapping.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/UserRegistrationInfo.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/UsersResourceApi.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VCDocumentType.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VCImageResourceApi.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VCImageSummary.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VCSimulationIdentifier.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VCellHTTPError.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VCellSite.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VCellSoftwareVersion.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VariableDomain.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VariableMode.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VariableSpecs.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VariableType.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Version.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VersionFlag.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/exceptions.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/__init__.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/acces_token_representation_record.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/analytic_curve.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/annotated_function_dto.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/application_info.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/batch_system_type.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/bio_model.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/bio_model_child_summary.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/bio_model_summary.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/biomodel_ref.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/composite_curve.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/control_point_curve.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/coordinate.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/curve.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/curve_selection_info.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/data_identifier.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/detailed_state.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/domain.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/export_event.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/export_progress_type.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/exportable_data_type.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/extent.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/external_data_identifier.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/field_data.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/field_data_reference.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/field_data_saved_results.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/field_data_shape.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/function_category.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/geometry_mode.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/geometry_spec_dto.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/geometry_summary.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/gif_image.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/group_access.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/group_access_all.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/group_access_none.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/group_access_some.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/hello_world_message.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/htc_job_id.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/human_readable_export_data.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/i_size.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/identity.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/math_model_child_summary.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/math_model_summary.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/math_type.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/mathmodel_ref.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/model_type.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/n5_export_request.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/origin.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/publication.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/publication_info.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/sampled_curve.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/scheduler_status.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/simulation_execution_status_record.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/simulation_job_status_record.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/simulation_message.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/simulation_queue_entry_status_record.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/simulation_queue_id.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/simulation_status_persistent_record.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/source_model.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/spatial_selection.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/spatial_selection_contour.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/spatial_selection_membrane.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/spatial_selection_volume.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/specialclaim.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/spline.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/standard_export_info.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/status.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/status_message.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/time_mode.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/time_specs.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/user.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/user_identity_json_safe.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/user_login_info_for_mapping.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/user_registration_info.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/v_cell_http_error.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/v_cell_site.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/v_cell_software_version.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/variable_domain.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/variable_mode.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/variable_specs.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/variable_type.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/vc_document_type.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/vc_image_summary.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/vc_simulation_identifier.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/version.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/version_flag.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/rest.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/__init__.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_acces_token_representation_record.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_admin_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_analytic_curve.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_annotated_function_dto.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_application_info.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_batch_system_type.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_bio_model.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_bio_model_child_summary.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_bio_model_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_bio_model_summary.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_biomodel_ref.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_composite_curve.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_control_point_curve.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_coordinate.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_curve.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_curve_selection_info.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_data_identifier.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_detailed_state.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_domain.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_export_event.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_export_progress_type.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_export_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_exportable_data_type.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_extent.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_external_data_identifier.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_field_data.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_field_data_reference.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_field_data_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_field_data_saved_results.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_field_data_shape.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_function_category.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_geometry_mode.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_geometry_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_geometry_spec_dto.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_geometry_summary.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_gif_image.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_group_access.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_group_access_all.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_group_access_none.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_group_access_some.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_hello_world_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_hello_world_message.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_htc_job_id.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_human_readable_export_data.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_i_size.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_identity.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_math_model_child_summary.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_math_model_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_math_model_summary.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_math_type.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_mathmodel_ref.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_model_type.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_n5_export_request.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_origin.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_publication.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_publication_info.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_publication_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_sampled_curve.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_scheduler_status.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_simulation_execution_status_record.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_simulation_job_status_record.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_simulation_message.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_simulation_queue_entry_status_record.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_simulation_queue_id.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_simulation_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_simulation_status_persistent_record.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_solver_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_source_model.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_spatial_selection.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_spatial_selection_contour.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_spatial_selection_membrane.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_spatial_selection_volume.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_specialclaim.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_spline.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_standard_export_info.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_status.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_status_message.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_time_mode.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_time_specs.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_user.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_user_identity_json_safe.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_user_login_info_for_mapping.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_user_registration_info.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_users_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_v_cell_http_error.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_v_cell_site.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_v_cell_software_version.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_variable_domain.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_variable_mode.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_variable_specs.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_variable_type.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_vc_document_type.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_vc_image_resource_api.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_vc_image_summary.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_vc_simulation_identifier.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_version.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_version_flag.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client_README.md +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/geometry/__init__.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/geometry/segmented_image_geometry.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/__init__.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/fielddata_file.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/main.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/mesh.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/n5_data.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/postprocessing.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/simdata_models.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/vtk/__init__.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/vtk/fv_mesh_mapping.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/vtk/vismesh.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/vtk/vtkmesh_chombo.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/vtk/vtkmesh_fv.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/vtk/vtkmesh_mb.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/vtk/vtkmesh_utils.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/zarr_writer.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/solvers/__init__.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/solvers/fvsolver.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sbml/__init__.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sbml/sbml_spatial_model.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sim_results/__init__.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sim_results/plotter.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sim_results/result.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sim_results/var_types.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sim_results/vtk_data.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sim_results/widget.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sim_results/zarr_types.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sim_results/zarr_utils.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/field.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/session.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/vcml_geo_from_images.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/vcml_remote.py +0 -0
- {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/workspace.py +0 -0
|
@@ -1,38 +1,46 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pyvcell
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: This is the python wrapper for vcell modeling and simulation
|
|
5
5
|
Author: Jim Schaff, Logan Drescher
|
|
6
6
|
Author-email: Jim Schaff <schaff@uchc.edu>, Logan Drescher <drescher@uchc.edu>
|
|
7
|
-
Requires-Dist: antimony>=3.1.3
|
|
8
|
-
Requires-Dist: h5py>=3.11.0,<4
|
|
9
|
-
Requires-Dist: imageio>=2.37.0,<3
|
|
10
|
-
Requires-Dist: libvcell>=0.0.15.3
|
|
11
7
|
Requires-Dist: lxml>=6.1.0,<7
|
|
12
|
-
Requires-Dist: matplotlib>=3.10.0,<4
|
|
13
8
|
Requires-Dist: numexpr>=2.10,<3
|
|
14
9
|
Requires-Dist: numpy>=1.26.4,<3.0
|
|
15
|
-
Requires-Dist: orjson>=3.10.3,<4
|
|
16
|
-
Requires-Dist: overrides>=7.7.0,<8
|
|
17
10
|
Requires-Dist: pydantic>=2.10.5,<3
|
|
18
|
-
Requires-Dist: python-dateutil>=2.8.2,<3
|
|
19
|
-
Requires-Dist: python-libsbml>=5.20.4,<6
|
|
20
|
-
Requires-Dist: pyvcell-fvsolver>=0.2.1
|
|
21
|
-
Requires-Dist: pyvista>=0.44.2,<1
|
|
22
|
-
Requires-Dist: requests>=2.32.3,<3
|
|
23
|
-
Requires-Dist: requests-oauth2client>=1.6.0,<2
|
|
24
|
-
Requires-Dist: sympy>=1.13.1,<2
|
|
25
|
-
Requires-Dist: tensorstore>=0.1.72,<1
|
|
26
|
-
Requires-Dist: trame>=3.8.1,<4
|
|
27
|
-
Requires-Dist: trame-server>=3.4.0,<4
|
|
28
|
-
Requires-Dist: trame-vtk>=2.8.15,<3
|
|
29
|
-
Requires-Dist: trame-vuetify>=3.2.2,<4
|
|
30
|
-
Requires-Dist: typer>=0.12.3,<1.0.0
|
|
31
11
|
Requires-Dist: typing-extensions>=4.12.2,<5
|
|
32
|
-
Requires-Dist:
|
|
33
|
-
Requires-Dist:
|
|
34
|
-
Requires-Dist:
|
|
35
|
-
Requires-
|
|
12
|
+
Requires-Dist: pyvcell[solver,viz,remote,io,convert,native] ; extra == 'all'
|
|
13
|
+
Requires-Dist: antimony>=3.1.3 ; extra == 'convert'
|
|
14
|
+
Requires-Dist: python-libsbml>=5.20.4,<6 ; extra == 'convert'
|
|
15
|
+
Requires-Dist: sympy>=1.13.1,<2 ; extra == 'convert'
|
|
16
|
+
Requires-Dist: h5py>=3.11.0,<4 ; extra == 'io'
|
|
17
|
+
Requires-Dist: orjson>=3.10.3,<4 ; extra == 'io'
|
|
18
|
+
Requires-Dist: tensorstore>=0.1.72,<1 ; extra == 'io'
|
|
19
|
+
Requires-Dist: typer>=0.12.3,<1.0.0 ; extra == 'io'
|
|
20
|
+
Requires-Dist: zarr>=2.17.2,<3 ; extra == 'io'
|
|
21
|
+
Requires-Dist: libvcell>=0.0.15.3 ; extra == 'native'
|
|
22
|
+
Requires-Dist: overrides>=7.7.0,<8 ; extra == 'remote'
|
|
23
|
+
Requires-Dist: python-dateutil>=2.8.2,<3 ; extra == 'remote'
|
|
24
|
+
Requires-Dist: requests>=2.32.3,<3 ; extra == 'remote'
|
|
25
|
+
Requires-Dist: requests-oauth2client>=1.6.0,<2 ; extra == 'remote'
|
|
26
|
+
Requires-Dist: urllib3>=2.3.0,<3 ; extra == 'remote'
|
|
27
|
+
Requires-Dist: pyvcell-fvsolver>=0.2.1 ; extra == 'solver'
|
|
28
|
+
Requires-Dist: imageio>=2.37.0,<3 ; extra == 'viz'
|
|
29
|
+
Requires-Dist: matplotlib>=3.10.0,<4 ; extra == 'viz'
|
|
30
|
+
Requires-Dist: pyvista>=0.44.2,<1 ; extra == 'viz'
|
|
31
|
+
Requires-Dist: trame>=3.8.1,<4 ; extra == 'viz'
|
|
32
|
+
Requires-Dist: trame-server>=3.4.0,<4 ; extra == 'viz'
|
|
33
|
+
Requires-Dist: trame-vtk>=2.8.15,<3 ; extra == 'viz'
|
|
34
|
+
Requires-Dist: trame-vuetify>=3.2.2,<4 ; extra == 'viz'
|
|
35
|
+
Requires-Dist: vtk>=9.3.1,<10 ; extra == 'viz'
|
|
36
|
+
Requires-Python: >=3.12, <4.0
|
|
37
|
+
Provides-Extra: all
|
|
38
|
+
Provides-Extra: convert
|
|
39
|
+
Provides-Extra: io
|
|
40
|
+
Provides-Extra: native
|
|
41
|
+
Provides-Extra: remote
|
|
42
|
+
Provides-Extra: solver
|
|
43
|
+
Provides-Extra: viz
|
|
36
44
|
Description-Content-Type: text/markdown
|
|
37
45
|
|
|
38
46
|
# pyvcell
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "pyvcell"
|
|
3
|
-
version = "0.
|
|
4
|
-
requires-python = ">=3.
|
|
3
|
+
version = "0.3.0"
|
|
4
|
+
requires-python = ">=3.12,<4.0"
|
|
5
5
|
description = "This is the python wrapper for vcell modeling and simulation"
|
|
6
6
|
repository = "https://github.com/virtualcell/pyvcell"
|
|
7
7
|
documentation = "https://virtualcell.github.io/pyvcell/"
|
|
@@ -14,39 +14,62 @@ authors = [
|
|
|
14
14
|
packages = [
|
|
15
15
|
{include="pyvcell"},
|
|
16
16
|
]
|
|
17
|
+
# Core: just what the data models + VCML reader/writer need. Heavy runtime deps
|
|
18
|
+
# live in the optional-dependencies extras below; install pyvcell[all] for the
|
|
19
|
+
# full feature set (solver, viz, remote, io, convert, native).
|
|
17
20
|
dependencies = [
|
|
18
|
-
"antimony (>=3.1.3)",
|
|
19
|
-
"h5py>=3.11.0,<4",
|
|
20
|
-
"imageio>=2.37.0,<3",
|
|
21
|
-
"libvcell (>=0.0.15.3)",
|
|
22
21
|
"lxml>=6.1.0,<7",
|
|
23
|
-
"matplotlib>=3.10.0,<4",
|
|
24
22
|
"numexpr>=2.10,<3",
|
|
25
23
|
"numpy>=1.26.4,<3.0",
|
|
26
|
-
"orjson>=3.10.3,<4",
|
|
27
|
-
"overrides>=7.7.0,<8",
|
|
28
24
|
"pydantic>=2.10.5,<3",
|
|
29
|
-
"
|
|
30
|
-
|
|
25
|
+
"typing-extensions>=4.12.2,<5",
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
[project.optional-dependencies]
|
|
29
|
+
solver = [
|
|
31
30
|
"pyvcell-fvsolver (>=0.2.1)",
|
|
31
|
+
]
|
|
32
|
+
viz = [
|
|
33
|
+
"imageio>=2.37.0,<3",
|
|
34
|
+
"matplotlib>=3.10.0,<4",
|
|
32
35
|
"pyvista>=0.44.2,<1",
|
|
33
|
-
"requests>=2.32.3,<3",
|
|
34
|
-
"requests-oauth2client>=1.6.0,<2",
|
|
35
|
-
"sympy>=1.13.1,<2",
|
|
36
|
-
"tensorstore>=0.1.72,<1",
|
|
37
36
|
"trame>=3.8.1,<4",
|
|
38
37
|
"trame-server>=3.4.0,<4",
|
|
39
38
|
"trame-vtk>=2.8.15,<3",
|
|
40
39
|
"trame-vuetify>=3.2.2,<4",
|
|
41
|
-
"typer>=0.12.3,<1.0.0",
|
|
42
|
-
"typing-extensions>=4.12.2,<5",
|
|
43
|
-
"urllib3>=2.3.0,<3",
|
|
44
40
|
"vtk>=9.3.1,<10",
|
|
41
|
+
]
|
|
42
|
+
remote = [
|
|
43
|
+
"overrides>=7.7.0,<8",
|
|
44
|
+
"python-dateutil>=2.8.2,<3",
|
|
45
|
+
"requests>=2.32.3,<3",
|
|
46
|
+
"requests-oauth2client>=1.6.0,<2",
|
|
47
|
+
"urllib3>=2.3.0,<3",
|
|
48
|
+
]
|
|
49
|
+
io = [
|
|
50
|
+
"h5py>=3.11.0,<4",
|
|
51
|
+
"orjson>=3.10.3,<4",
|
|
52
|
+
"tensorstore>=0.1.72,<1",
|
|
53
|
+
"typer>=0.12.3,<1.0.0",
|
|
45
54
|
"zarr>=2.17.2,<3", # major upgrade will take some work!
|
|
46
55
|
]
|
|
56
|
+
convert = [
|
|
57
|
+
"antimony (>=3.1.3)",
|
|
58
|
+
"python-libsbml>=5.20.4,<6",
|
|
59
|
+
"sympy>=1.13.1,<2",
|
|
60
|
+
]
|
|
61
|
+
native = [
|
|
62
|
+
"libvcell (>=0.0.15.3)",
|
|
63
|
+
]
|
|
64
|
+
all = [
|
|
65
|
+
"pyvcell[solver,viz,remote,io,convert,native]",
|
|
66
|
+
]
|
|
47
67
|
|
|
48
68
|
[dependency-groups]
|
|
49
69
|
dev = [
|
|
70
|
+
# Dev/CI work against the full feature set (all optional extras). End users
|
|
71
|
+
# opt in per extra (e.g. `pip install pyvcell[viz]`) or `pip install pyvcell[all]`.
|
|
72
|
+
"pyvcell[all]",
|
|
50
73
|
"pytest>=7.2.0,<8",
|
|
51
74
|
"pytest-cov>=4.0.0,<5",
|
|
52
75
|
"deptry>=0.16.2,<1",
|
|
@@ -76,6 +99,12 @@ build-backend = "uv_build"
|
|
|
76
99
|
module-name = "pyvcell"
|
|
77
100
|
module-root = ""
|
|
78
101
|
|
|
102
|
+
[tool.deptry.per_rule_ignores]
|
|
103
|
+
# `pyvcell[all]` is in the dev group so dev/CI install every optional extra;
|
|
104
|
+
# it is a self-reference (first-party), so deptry's "unused dependency" check
|
|
105
|
+
# does not apply.
|
|
106
|
+
DEP002 = ["pyvcell"]
|
|
107
|
+
|
|
79
108
|
[tool.mypy]
|
|
80
109
|
files = ["pyvcell", "tests", "examples"]
|
|
81
110
|
exclude = ["stubs.*"]
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
from libvcell import vcell_infix_to_num_expr_infix
|
|
2
|
-
|
|
3
|
-
|
|
4
1
|
def get_numexpr_expression(vcell_expression: str) -> str:
|
|
2
|
+
# libvcell (the `native` extra) is imported lazily so that importing the data
|
|
3
|
+
# models / VCML reader does not require it.
|
|
4
|
+
from libvcell import vcell_infix_to_num_expr_infix
|
|
5
|
+
|
|
5
6
|
# First, get the string from vcell
|
|
6
7
|
translation_result: bool
|
|
7
8
|
result_message: str
|
|
@@ -3,8 +3,6 @@ import shutil
|
|
|
3
3
|
import tempfile
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
|
-
from libvcell import sbml_to_finite_volume_input
|
|
7
|
-
|
|
8
6
|
from pyvcell._internal.solvers.fvsolver import solve as fvsolve
|
|
9
7
|
from pyvcell.sbml.sbml_spatial_model import SbmlSpatialModel
|
|
10
8
|
from pyvcell.sim_results.result import Result
|
|
@@ -22,6 +20,8 @@ class SbmlSpatialSimulation:
|
|
|
22
20
|
self.out_dir = out_dir if isinstance(out_dir, Path) else Path(out_dir)
|
|
23
21
|
|
|
24
22
|
def run(self, duration: float | None = None, output_time_step: float | None = None) -> Result:
|
|
23
|
+
from libvcell import sbml_to_finite_volume_input
|
|
24
|
+
|
|
25
25
|
# prepare solver input files
|
|
26
26
|
# 1. upload the SBML model and retrieve generated solver inputs as a zip file
|
|
27
27
|
# 2. extract the zip archive into the output directory
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"""Public API for ``pyvcell.vcml``.
|
|
2
|
+
|
|
3
|
+
The lightweight data layer is eager: the data models (``models``,
|
|
4
|
+
``models_geometry``, ``models_math``) and ``VcmlReader`` import with only the
|
|
5
|
+
core dependencies (pydantic, lxml, numpy, numexpr). Everything that needs a
|
|
6
|
+
heavy optional dependency — ``VcmlWriter``, ``Field``, ``SegmentedImageGeometry``,
|
|
7
|
+
the remote ``VCellSession`` / ``connect`` / ``simulate`` API, and the ``utils`` /
|
|
8
|
+
``workspace`` helpers — is imported lazily (PEP 562) on first access. If the
|
|
9
|
+
optional dependency is missing, the lazy import raises a clear error naming the
|
|
10
|
+
extra to install (e.g. ``pip install pyvcell[viz]``).
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
import importlib
|
|
16
|
+
from typing import TYPE_CHECKING
|
|
17
|
+
|
|
18
|
+
# --- eager, lightweight: data models + VCML reader (core deps only) ---
|
|
19
|
+
from pyvcell.vcml.models import (
|
|
20
|
+
Application,
|
|
21
|
+
Biomodel,
|
|
22
|
+
BoundaryType,
|
|
23
|
+
Compartment,
|
|
24
|
+
Kinetics,
|
|
25
|
+
KineticsParameter,
|
|
26
|
+
Model,
|
|
27
|
+
ModelParameter,
|
|
28
|
+
Reaction,
|
|
29
|
+
Simulation,
|
|
30
|
+
Species,
|
|
31
|
+
SpeciesMapping,
|
|
32
|
+
SpeciesReference,
|
|
33
|
+
SpeciesRefType,
|
|
34
|
+
VCMLDocument,
|
|
35
|
+
Version,
|
|
36
|
+
)
|
|
37
|
+
from pyvcell.vcml.models_geometry import (
|
|
38
|
+
Geometry,
|
|
39
|
+
Image,
|
|
40
|
+
PixelClass,
|
|
41
|
+
SubVolume,
|
|
42
|
+
SubVolumeType,
|
|
43
|
+
SurfaceClass,
|
|
44
|
+
)
|
|
45
|
+
from pyvcell.vcml.models_math import (
|
|
46
|
+
Boundaries,
|
|
47
|
+
CompartmentSubDomain,
|
|
48
|
+
Constant,
|
|
49
|
+
Effect,
|
|
50
|
+
JumpCondition,
|
|
51
|
+
JumpProcess,
|
|
52
|
+
MathBoundaryType,
|
|
53
|
+
MathDescription,
|
|
54
|
+
MathFunction,
|
|
55
|
+
MathVariable,
|
|
56
|
+
MathVariableType,
|
|
57
|
+
MembraneSubDomain,
|
|
58
|
+
OdeEquation,
|
|
59
|
+
ParticleInitialCount,
|
|
60
|
+
ParticleJumpProcess,
|
|
61
|
+
ParticleProperties,
|
|
62
|
+
PdeEquation,
|
|
63
|
+
VariableInitialCount,
|
|
64
|
+
Velocity,
|
|
65
|
+
)
|
|
66
|
+
from pyvcell.vcml.vcml_reader import VcmlReader
|
|
67
|
+
|
|
68
|
+
if TYPE_CHECKING:
|
|
69
|
+
# Heavy names — eager only for type checkers / IDE autocomplete.
|
|
70
|
+
from pyvcell._internal.geometry import SegmentedImageGeometry
|
|
71
|
+
from pyvcell.vcml.field import Field
|
|
72
|
+
from pyvcell.vcml.session import SimulationJob, VCellSession
|
|
73
|
+
from pyvcell.vcml.utils import (
|
|
74
|
+
field_data_refs,
|
|
75
|
+
load_antimony_file,
|
|
76
|
+
load_antimony_str,
|
|
77
|
+
load_sbml_file,
|
|
78
|
+
load_sbml_str,
|
|
79
|
+
load_sbml_url,
|
|
80
|
+
load_vcml_file,
|
|
81
|
+
load_vcml_str,
|
|
82
|
+
load_vcml_url,
|
|
83
|
+
restore_stdout,
|
|
84
|
+
suppress_stdout,
|
|
85
|
+
to_antimony_str,
|
|
86
|
+
to_sbml_str,
|
|
87
|
+
to_vcml_str,
|
|
88
|
+
update_biomodel,
|
|
89
|
+
write_antimony_file,
|
|
90
|
+
write_sbml_file,
|
|
91
|
+
write_vcml_file,
|
|
92
|
+
)
|
|
93
|
+
from pyvcell.vcml.vcml_remote import connect, logout
|
|
94
|
+
from pyvcell.vcml.vcml_simulation import simulate
|
|
95
|
+
from pyvcell.vcml.vcml_writer import VcmlWriter
|
|
96
|
+
from pyvcell.vcml.workspace import get_workspace_dir, set_workspace_dir
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
# Heavy public name -> the submodule that defines it (imported on first access).
|
|
100
|
+
_LAZY_IMPORTS: dict[str, str] = {
|
|
101
|
+
"SegmentedImageGeometry": "pyvcell._internal.geometry",
|
|
102
|
+
"Field": "pyvcell.vcml.field",
|
|
103
|
+
"VcmlWriter": "pyvcell.vcml.vcml_writer",
|
|
104
|
+
**dict.fromkeys(["SimulationJob", "VCellSession"], "pyvcell.vcml.session"),
|
|
105
|
+
**dict.fromkeys(["connect", "logout"], "pyvcell.vcml.vcml_remote"),
|
|
106
|
+
"simulate": "pyvcell.vcml.vcml_simulation",
|
|
107
|
+
**dict.fromkeys(["get_workspace_dir", "set_workspace_dir"], "pyvcell.vcml.workspace"),
|
|
108
|
+
**dict.fromkeys(
|
|
109
|
+
[
|
|
110
|
+
"field_data_refs",
|
|
111
|
+
"load_antimony_file",
|
|
112
|
+
"load_antimony_str",
|
|
113
|
+
"load_sbml_file",
|
|
114
|
+
"load_sbml_str",
|
|
115
|
+
"load_sbml_url",
|
|
116
|
+
"load_vcml_file",
|
|
117
|
+
"load_vcml_str",
|
|
118
|
+
"load_vcml_url",
|
|
119
|
+
"restore_stdout",
|
|
120
|
+
"suppress_stdout",
|
|
121
|
+
"to_antimony_str",
|
|
122
|
+
"to_sbml_str",
|
|
123
|
+
"to_vcml_str",
|
|
124
|
+
"update_biomodel",
|
|
125
|
+
"write_antimony_file",
|
|
126
|
+
"write_sbml_file",
|
|
127
|
+
"write_vcml_file",
|
|
128
|
+
],
|
|
129
|
+
"pyvcell.vcml.utils",
|
|
130
|
+
),
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
# Missing optional top-level module -> the extra that provides it, for a clear hint.
|
|
134
|
+
_EXTRA_FOR_MODULE: dict[str, str] = {
|
|
135
|
+
"libvcell": "native",
|
|
136
|
+
"pyvcell_fvsolver": "solver",
|
|
137
|
+
"fvsolver": "solver",
|
|
138
|
+
"vtk": "viz",
|
|
139
|
+
"pyvista": "viz",
|
|
140
|
+
"matplotlib": "viz",
|
|
141
|
+
"imageio": "viz",
|
|
142
|
+
"trame": "viz",
|
|
143
|
+
"trame_server": "viz",
|
|
144
|
+
"trame_vtk": "viz",
|
|
145
|
+
"trame_vuetify": "viz",
|
|
146
|
+
"requests": "remote",
|
|
147
|
+
"requests_oauth2client": "remote",
|
|
148
|
+
"urllib3": "remote",
|
|
149
|
+
"dateutil": "remote",
|
|
150
|
+
"overrides": "remote",
|
|
151
|
+
"tensorstore": "io",
|
|
152
|
+
"zarr": "io",
|
|
153
|
+
"h5py": "io",
|
|
154
|
+
"orjson": "io",
|
|
155
|
+
"typer": "io",
|
|
156
|
+
"antimony": "convert",
|
|
157
|
+
"libsbml": "convert",
|
|
158
|
+
"sympy": "convert",
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def __getattr__(name: str) -> object:
|
|
163
|
+
module_path = _LAZY_IMPORTS.get(name)
|
|
164
|
+
if module_path is None:
|
|
165
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
166
|
+
try:
|
|
167
|
+
module = importlib.import_module(module_path)
|
|
168
|
+
except ModuleNotFoundError as exc:
|
|
169
|
+
missing = (exc.name or "").split(".")[0]
|
|
170
|
+
extra = _EXTRA_FOR_MODULE.get(missing)
|
|
171
|
+
hint = f"pip install pyvcell[{extra}]" if extra else "pip install pyvcell[all]"
|
|
172
|
+
raise ModuleNotFoundError(
|
|
173
|
+
f"pyvcell.vcml.{name} requires the optional dependency '{missing}', which is not installed. "
|
|
174
|
+
f"Install it with `{hint}`."
|
|
175
|
+
) from exc
|
|
176
|
+
value = getattr(module, name)
|
|
177
|
+
globals()[name] = value # cache so __getattr__ is not consulted again for this name
|
|
178
|
+
return value
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
def __dir__() -> list[str]:
|
|
182
|
+
return sorted(__all__)
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
__all__ = [
|
|
186
|
+
"Application",
|
|
187
|
+
"Biomodel",
|
|
188
|
+
"Boundaries",
|
|
189
|
+
"BoundaryType",
|
|
190
|
+
"Compartment",
|
|
191
|
+
"CompartmentSubDomain",
|
|
192
|
+
"Constant",
|
|
193
|
+
"Effect",
|
|
194
|
+
"Field",
|
|
195
|
+
"Geometry",
|
|
196
|
+
"Image",
|
|
197
|
+
"JumpCondition",
|
|
198
|
+
"JumpProcess",
|
|
199
|
+
"Kinetics",
|
|
200
|
+
"KineticsParameter",
|
|
201
|
+
"MathBoundaryType",
|
|
202
|
+
"MathDescription",
|
|
203
|
+
"MathFunction",
|
|
204
|
+
"MathVariable",
|
|
205
|
+
"MathVariableType",
|
|
206
|
+
"MembraneSubDomain",
|
|
207
|
+
"Model",
|
|
208
|
+
"ModelParameter",
|
|
209
|
+
"OdeEquation",
|
|
210
|
+
"ParticleInitialCount",
|
|
211
|
+
"ParticleJumpProcess",
|
|
212
|
+
"ParticleProperties",
|
|
213
|
+
"PdeEquation",
|
|
214
|
+
"PixelClass",
|
|
215
|
+
"Reaction",
|
|
216
|
+
"SegmentedImageGeometry",
|
|
217
|
+
"Simulation",
|
|
218
|
+
"SimulationJob",
|
|
219
|
+
"Species",
|
|
220
|
+
"SpeciesMapping",
|
|
221
|
+
"SpeciesRefType",
|
|
222
|
+
"SpeciesReference",
|
|
223
|
+
"SubVolume",
|
|
224
|
+
"SubVolumeType",
|
|
225
|
+
"SurfaceClass",
|
|
226
|
+
"VCMLDocument",
|
|
227
|
+
"VCellSession",
|
|
228
|
+
"VariableInitialCount",
|
|
229
|
+
"VcmlReader",
|
|
230
|
+
"VcmlWriter",
|
|
231
|
+
"Velocity",
|
|
232
|
+
"Version",
|
|
233
|
+
"connect",
|
|
234
|
+
"field_data_refs",
|
|
235
|
+
"get_workspace_dir",
|
|
236
|
+
"load_antimony_file",
|
|
237
|
+
"load_antimony_str",
|
|
238
|
+
"load_sbml_file",
|
|
239
|
+
"load_sbml_str",
|
|
240
|
+
"load_sbml_url",
|
|
241
|
+
"load_vcml_file",
|
|
242
|
+
"load_vcml_str",
|
|
243
|
+
"load_vcml_url",
|
|
244
|
+
"logout",
|
|
245
|
+
"restore_stdout",
|
|
246
|
+
"set_workspace_dir",
|
|
247
|
+
"simulate",
|
|
248
|
+
"suppress_stdout",
|
|
249
|
+
"to_antimony_str",
|
|
250
|
+
"to_sbml_str",
|
|
251
|
+
"to_vcml_str",
|
|
252
|
+
"update_biomodel",
|
|
253
|
+
"write_antimony_file",
|
|
254
|
+
"write_sbml_file",
|
|
255
|
+
"write_vcml_file",
|
|
256
|
+
]
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
from pydantic import Field
|
|
2
|
+
|
|
3
|
+
# Base + sibling-layer types are re-exported here (the `as` form marks them as an
|
|
4
|
+
# explicit re-export) so `pyvcell.vcml.models.X` keeps resolving for all of them.
|
|
5
|
+
from pyvcell.vcml.models_app import (
|
|
6
|
+
Application as Application,
|
|
7
|
+
)
|
|
8
|
+
from pyvcell.vcml.models_app import (
|
|
9
|
+
ApplicationParameter as ApplicationParameter,
|
|
10
|
+
)
|
|
11
|
+
from pyvcell.vcml.models_app import (
|
|
12
|
+
BoundaryType as BoundaryType,
|
|
13
|
+
)
|
|
14
|
+
from pyvcell.vcml.models_app import (
|
|
15
|
+
CompartmentMapping as CompartmentMapping,
|
|
16
|
+
)
|
|
17
|
+
from pyvcell.vcml.models_app import (
|
|
18
|
+
ReactionMapping as ReactionMapping,
|
|
19
|
+
)
|
|
20
|
+
from pyvcell.vcml.models_app import (
|
|
21
|
+
Simulation as Simulation,
|
|
22
|
+
)
|
|
23
|
+
from pyvcell.vcml.models_app import (
|
|
24
|
+
SpeciesMapping as SpeciesMapping,
|
|
25
|
+
)
|
|
26
|
+
from pyvcell.vcml.models_app import (
|
|
27
|
+
StructureMapping as StructureMapping,
|
|
28
|
+
)
|
|
29
|
+
from pyvcell.vcml.models_base import Parameter as Parameter
|
|
30
|
+
from pyvcell.vcml.models_base import StrEnum as StrEnum
|
|
31
|
+
from pyvcell.vcml.models_base import VcmlNode as VcmlNode
|
|
32
|
+
from pyvcell.vcml.models_base import Version as Version
|
|
33
|
+
from pyvcell.vcml.models_geometry import Geometry
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class Compartment(VcmlNode):
|
|
37
|
+
name: str
|
|
38
|
+
dim: int
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class Species(VcmlNode):
|
|
42
|
+
name: str
|
|
43
|
+
compartment_name: str
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class ModelParameter(Parameter):
|
|
47
|
+
pass
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class KineticsParameter(Parameter):
|
|
51
|
+
reaction_name: str
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class Kinetics(VcmlNode):
|
|
55
|
+
kinetics_type: str
|
|
56
|
+
kinetics_parameters: list[KineticsParameter] = Field(default_factory=list)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class SpeciesRefType(StrEnum):
|
|
60
|
+
reactant = "reactant"
|
|
61
|
+
product = "product"
|
|
62
|
+
modifier = "modifier"
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class SpeciesReference(VcmlNode):
|
|
66
|
+
name: str
|
|
67
|
+
stoichiometry: int
|
|
68
|
+
species_ref_type: SpeciesRefType
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class Reaction(VcmlNode):
|
|
72
|
+
name: str
|
|
73
|
+
compartment_name: str
|
|
74
|
+
reversible: bool = True
|
|
75
|
+
is_flux: bool = False
|
|
76
|
+
kinetics: Kinetics | None = None
|
|
77
|
+
reactants: list[SpeciesReference] = Field(default_factory=list)
|
|
78
|
+
products: list[SpeciesReference] = Field(default_factory=list)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class Model(VcmlNode):
|
|
82
|
+
name: str
|
|
83
|
+
species: list[Species] = Field(default_factory=list)
|
|
84
|
+
compartments: list[Compartment] = Field(default_factory=list)
|
|
85
|
+
reactions: list[Reaction] = Field(default_factory=list)
|
|
86
|
+
model_parameters: list[ModelParameter] = Field(default_factory=list)
|
|
87
|
+
|
|
88
|
+
def __repr__(self) -> str:
|
|
89
|
+
return f"Model(compartments={self.compartment_names}, species={self.species_names}, reactions={self.reaction_names}, parameters={self.parameter_names})"
|
|
90
|
+
|
|
91
|
+
@property
|
|
92
|
+
def species_names(self) -> list[str]:
|
|
93
|
+
return [s.name for s in self.species]
|
|
94
|
+
|
|
95
|
+
def get_species(self, name: str) -> Species:
|
|
96
|
+
for species in self.species:
|
|
97
|
+
if species.name == name:
|
|
98
|
+
return species
|
|
99
|
+
raise ValueError(f"Species '{name}' not found in model.")
|
|
100
|
+
|
|
101
|
+
@property
|
|
102
|
+
def compartment_names(self) -> list[str]:
|
|
103
|
+
return [c.name for c in self.compartments]
|
|
104
|
+
|
|
105
|
+
def get_compartment(self, name: str) -> Compartment:
|
|
106
|
+
for compartment in self.compartments:
|
|
107
|
+
if compartment.name == name:
|
|
108
|
+
return compartment
|
|
109
|
+
raise ValueError(f"Compartment '{name}' not found in model.")
|
|
110
|
+
|
|
111
|
+
@property
|
|
112
|
+
def reaction_names(self) -> list[str]:
|
|
113
|
+
return [r.name for r in self.reactions]
|
|
114
|
+
|
|
115
|
+
def get_reaction(self, name: str) -> Reaction:
|
|
116
|
+
for reaction in self.reactions:
|
|
117
|
+
if reaction.name == name:
|
|
118
|
+
return reaction
|
|
119
|
+
raise ValueError(f"Reaction '{name}' not found in model.")
|
|
120
|
+
|
|
121
|
+
@property
|
|
122
|
+
def parameter_names(self) -> list[str]:
|
|
123
|
+
return [mp.name for mp in self.model_parameters]
|
|
124
|
+
|
|
125
|
+
def get_parameter(self, name: str) -> ModelParameter | KineticsParameter:
|
|
126
|
+
if "." in name:
|
|
127
|
+
reaction_name, param_name = name.split(".")
|
|
128
|
+
for reaction in self.reactions:
|
|
129
|
+
if reaction.name == reaction_name and reaction.kinetics:
|
|
130
|
+
for kinetics_param in reaction.kinetics.kinetics_parameters:
|
|
131
|
+
if kinetics_param.name == param_name:
|
|
132
|
+
return kinetics_param
|
|
133
|
+
for model_parameter in self.model_parameters:
|
|
134
|
+
if model_parameter.name == name:
|
|
135
|
+
return model_parameter
|
|
136
|
+
raise ValueError(f"Parameter '{name}' not found in model.")
|
|
137
|
+
|
|
138
|
+
@property
|
|
139
|
+
def parameter_values(self) -> dict[str, float | str]:
|
|
140
|
+
model_params = {mp.name: mp.value for mp in self.model_parameters}
|
|
141
|
+
kin_params = {
|
|
142
|
+
f"{r.name}.{p.name}": p.value
|
|
143
|
+
for r in self.reactions
|
|
144
|
+
if r.kinetics
|
|
145
|
+
for p in r.kinetics.kinetics_parameters
|
|
146
|
+
if r.kinetics.kinetics_parameters
|
|
147
|
+
}
|
|
148
|
+
return {**model_params, **kin_params}
|
|
149
|
+
|
|
150
|
+
def set_parameter_value(self, name: str, value: float | str) -> None:
|
|
151
|
+
param = self.get_parameter(name=name)
|
|
152
|
+
param.value = value
|
|
153
|
+
|
|
154
|
+
def add_compartment(self, name: str, dim: int) -> Compartment:
|
|
155
|
+
compartment = Compartment(name=name, dim=dim)
|
|
156
|
+
self.compartments.append(compartment)
|
|
157
|
+
return compartment
|
|
158
|
+
|
|
159
|
+
def add_species(self, name: str, compartment: str | Compartment) -> Species:
|
|
160
|
+
compartment_name = compartment.name if isinstance(compartment, Compartment) else compartment
|
|
161
|
+
species = Species(name=name, compartment_name=compartment_name)
|
|
162
|
+
self.species.append(species)
|
|
163
|
+
return species
|
|
164
|
+
|
|
165
|
+
def add_model_parameter(self, name: str, value: float | str, role: str = "user defined") -> ModelParameter:
|
|
166
|
+
model_parameter = ModelParameter(name=name, value=value, role=role, unit="")
|
|
167
|
+
self.model_parameters.append(model_parameter)
|
|
168
|
+
return model_parameter
|
|
169
|
+
|
|
170
|
+
def add_reaction_mass_action(
|
|
171
|
+
self,
|
|
172
|
+
name: str,
|
|
173
|
+
comp: str | Compartment,
|
|
174
|
+
reactants: list[str | Species],
|
|
175
|
+
products: list[str | Species],
|
|
176
|
+
kf: float | str,
|
|
177
|
+
kr: float | str,
|
|
178
|
+
) -> Reaction:
|
|
179
|
+
comp_name = comp.name if isinstance(comp, Compartment) else comp
|
|
180
|
+
p_kf = KineticsParameter(name="Kf", value=kf, role="forward rate constant", unit="", reaction_name=name)
|
|
181
|
+
p_kr = KineticsParameter(name="Kr", value=kr, role="reverse rate constant", unit="", reaction_name=name)
|
|
182
|
+
kinetics = Kinetics(kinetics_type="MassAction", kinetics_parameters=[p_kf, p_kr])
|
|
183
|
+
reaction = Reaction(name=name, compartment_name=comp_name, reversible=True, is_flux=False, kinetics=kinetics)
|
|
184
|
+
for reactant in reactants:
|
|
185
|
+
reactant_name = reactant.name if isinstance(reactant, Species) else reactant
|
|
186
|
+
reaction.reactants.append(
|
|
187
|
+
SpeciesReference(name=reactant_name, stoichiometry=1, species_ref_type=SpeciesRefType.reactant)
|
|
188
|
+
)
|
|
189
|
+
for product in products:
|
|
190
|
+
product_name = product.name if isinstance(product, Species) else product
|
|
191
|
+
reaction.products.append(
|
|
192
|
+
SpeciesReference(name=product_name, stoichiometry=1, species_ref_type=SpeciesRefType.product)
|
|
193
|
+
)
|
|
194
|
+
self.reactions.append(reaction)
|
|
195
|
+
return reaction
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
class Biomodel(VcmlNode):
|
|
199
|
+
name: str
|
|
200
|
+
model: Model | None = None
|
|
201
|
+
applications: list[Application] = Field(default_factory=list)
|
|
202
|
+
version: Version | None = None
|
|
203
|
+
|
|
204
|
+
def __repr__(self) -> str:
|
|
205
|
+
return f"Biomodel(model={self.model.__repr__()}, applications={self.application_names}, simulations={self.simulation_names})"
|
|
206
|
+
|
|
207
|
+
@property
|
|
208
|
+
def application_names(self) -> list[str]:
|
|
209
|
+
return [app.name for app in self.applications]
|
|
210
|
+
|
|
211
|
+
def add_application(self, name: str, geometry: Geometry) -> Application:
|
|
212
|
+
application = Application(name=name, stochastic=False, geometry=geometry)
|
|
213
|
+
self.applications.append(application)
|
|
214
|
+
return application
|
|
215
|
+
|
|
216
|
+
@property
|
|
217
|
+
def simulation_names(self) -> list[str]:
|
|
218
|
+
return [sim.name for app in self.applications for sim in app.simulations]
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
class VCMLDocument(VcmlNode):
|
|
222
|
+
biomodel: Biomodel | None = None
|