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.
Files changed (357) hide show
  1. {pyvcell-0.2.4 → pyvcell-0.3.0}/PKG-INFO +33 -25
  2. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyproject.toml +47 -18
  3. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/python_infix.py +4 -3
  4. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sbml/sbml_simulation.py +2 -2
  5. pyvcell-0.3.0/pyvcell/vcml/__init__.py +256 -0
  6. pyvcell-0.3.0/pyvcell/vcml/models.py +222 -0
  7. pyvcell-0.3.0/pyvcell/vcml/models_app.py +162 -0
  8. pyvcell-0.3.0/pyvcell/vcml/models_base.py +29 -0
  9. pyvcell-0.3.0/pyvcell/vcml/models_geometry.py +203 -0
  10. pyvcell-0.3.0/pyvcell/vcml/models_math.py +217 -0
  11. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/utils.py +10 -5
  12. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/vcml_reader.py +273 -37
  13. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/vcml_simulation.py +2 -2
  14. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/vcml_writer.py +213 -17
  15. pyvcell-0.2.4/pyvcell/vcml/__init__.py +0 -107
  16. pyvcell-0.2.4/pyvcell/vcml/models.py +0 -537
  17. {pyvcell-0.2.4 → pyvcell-0.3.0}/README.md +0 -0
  18. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/__init__.py +0 -0
  19. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/__init__.py +0 -0
  20. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/__init__.py +0 -0
  21. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/__init__.py +0 -0
  22. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/__init__.py +0 -0
  23. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/admin_resource_api.py +0 -0
  24. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/bio_model_resource_api.py +0 -0
  25. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/export_resource_api.py +0 -0
  26. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/field_data_resource_api.py +0 -0
  27. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/geometry_resource_api.py +0 -0
  28. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/hello_world_api.py +0 -0
  29. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/math_model_resource_api.py +0 -0
  30. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/publication_resource_api.py +0 -0
  31. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/simulation_resource_api.py +0 -0
  32. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/solver_resource_api.py +0 -0
  33. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/users_resource_api.py +0 -0
  34. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api/vc_image_resource_api.py +0 -0
  35. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api_client.py +0 -0
  36. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/api_response.py +0 -0
  37. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/auth/__init__.py +0 -0
  38. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/auth/auth_utils.py +0 -0
  39. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/configuration.py +0 -0
  40. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/AccesTokenRepresentationRecord.md +0 -0
  41. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/AdminResourceApi.md +0 -0
  42. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/AnalyticCurve.md +0 -0
  43. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/AnnotatedFunctionDTO.md +0 -0
  44. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ApplicationInfo.md +0 -0
  45. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/BatchSystemType.md +0 -0
  46. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/BioModel.md +0 -0
  47. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/BioModelChildSummary.md +0 -0
  48. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/BioModelResourceApi.md +0 -0
  49. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/BioModelSummary.md +0 -0
  50. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/BiomodelRef.md +0 -0
  51. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/CompositeCurve.md +0 -0
  52. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ControlPointCurve.md +0 -0
  53. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Coordinate.md +0 -0
  54. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Curve.md +0 -0
  55. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/CurveSelectionInfo.md +0 -0
  56. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/DataIdentifier.md +0 -0
  57. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/DetailedState.md +0 -0
  58. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Domain.md +0 -0
  59. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ExportEvent.md +0 -0
  60. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ExportProgressType.md +0 -0
  61. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ExportResourceApi.md +0 -0
  62. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ExportableDataType.md +0 -0
  63. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Extent.md +0 -0
  64. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ExternalDataIdentifier.md +0 -0
  65. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/FieldData.md +0 -0
  66. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/FieldDataReference.md +0 -0
  67. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/FieldDataResourceApi.md +0 -0
  68. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/FieldDataSavedResults.md +0 -0
  69. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/FieldDataShape.md +0 -0
  70. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/FunctionCategory.md +0 -0
  71. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GIFImage.md +0 -0
  72. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GeometryMode.md +0 -0
  73. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GeometryResourceApi.md +0 -0
  74. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GeometrySpecDTO.md +0 -0
  75. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GeometrySummary.md +0 -0
  76. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GroupAccess.md +0 -0
  77. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GroupAccessAll.md +0 -0
  78. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GroupAccessNone.md +0 -0
  79. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/GroupAccessSome.md +0 -0
  80. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/HelloWorldApi.md +0 -0
  81. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/HelloWorldMessage.md +0 -0
  82. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/HtcJobID.md +0 -0
  83. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/HumanReadableExportData.md +0 -0
  84. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ISize.md +0 -0
  85. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Identity.md +0 -0
  86. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/MathModelChildSummary.md +0 -0
  87. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/MathModelResourceApi.md +0 -0
  88. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/MathModelSummary.md +0 -0
  89. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/MathType.md +0 -0
  90. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/MathmodelRef.md +0 -0
  91. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/ModelType.md +0 -0
  92. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/N5ExportRequest.md +0 -0
  93. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Origin.md +0 -0
  94. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Publication.md +0 -0
  95. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/PublicationInfo.md +0 -0
  96. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/PublicationResourceApi.md +0 -0
  97. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SPECIALCLAIM.md +0 -0
  98. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SampledCurve.md +0 -0
  99. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SchedulerStatus.md +0 -0
  100. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SimulationExecutionStatusRecord.md +0 -0
  101. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SimulationJobStatusRecord.md +0 -0
  102. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SimulationMessage.md +0 -0
  103. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SimulationQueueEntryStatusRecord.md +0 -0
  104. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SimulationQueueID.md +0 -0
  105. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SimulationResourceApi.md +0 -0
  106. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SimulationStatusPersistentRecord.md +0 -0
  107. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SolverResourceApi.md +0 -0
  108. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SourceModel.md +0 -0
  109. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SpatialSelection.md +0 -0
  110. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SpatialSelectionContour.md +0 -0
  111. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SpatialSelectionMembrane.md +0 -0
  112. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/SpatialSelectionVolume.md +0 -0
  113. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Spline.md +0 -0
  114. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/StandardExportInfo.md +0 -0
  115. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Status.md +0 -0
  116. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/StatusMessage.md +0 -0
  117. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/TimeMode.md +0 -0
  118. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/TimeSpecs.md +0 -0
  119. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/User.md +0 -0
  120. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/UserIdentityJSONSafe.md +0 -0
  121. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/UserLoginInfoForMapping.md +0 -0
  122. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/UserRegistrationInfo.md +0 -0
  123. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/UsersResourceApi.md +0 -0
  124. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VCDocumentType.md +0 -0
  125. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VCImageResourceApi.md +0 -0
  126. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VCImageSummary.md +0 -0
  127. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VCSimulationIdentifier.md +0 -0
  128. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VCellHTTPError.md +0 -0
  129. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VCellSite.md +0 -0
  130. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VCellSoftwareVersion.md +0 -0
  131. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VariableDomain.md +0 -0
  132. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VariableMode.md +0 -0
  133. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VariableSpecs.md +0 -0
  134. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VariableType.md +0 -0
  135. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/Version.md +0 -0
  136. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/docs/VersionFlag.md +0 -0
  137. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/exceptions.py +0 -0
  138. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/__init__.py +0 -0
  139. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/acces_token_representation_record.py +0 -0
  140. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/analytic_curve.py +0 -0
  141. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/annotated_function_dto.py +0 -0
  142. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/application_info.py +0 -0
  143. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/batch_system_type.py +0 -0
  144. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/bio_model.py +0 -0
  145. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/bio_model_child_summary.py +0 -0
  146. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/bio_model_summary.py +0 -0
  147. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/biomodel_ref.py +0 -0
  148. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/composite_curve.py +0 -0
  149. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/control_point_curve.py +0 -0
  150. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/coordinate.py +0 -0
  151. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/curve.py +0 -0
  152. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/curve_selection_info.py +0 -0
  153. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/data_identifier.py +0 -0
  154. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/detailed_state.py +0 -0
  155. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/domain.py +0 -0
  156. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/export_event.py +0 -0
  157. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/export_progress_type.py +0 -0
  158. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/exportable_data_type.py +0 -0
  159. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/extent.py +0 -0
  160. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/external_data_identifier.py +0 -0
  161. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/field_data.py +0 -0
  162. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/field_data_reference.py +0 -0
  163. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/field_data_saved_results.py +0 -0
  164. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/field_data_shape.py +0 -0
  165. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/function_category.py +0 -0
  166. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/geometry_mode.py +0 -0
  167. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/geometry_spec_dto.py +0 -0
  168. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/geometry_summary.py +0 -0
  169. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/gif_image.py +0 -0
  170. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/group_access.py +0 -0
  171. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/group_access_all.py +0 -0
  172. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/group_access_none.py +0 -0
  173. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/group_access_some.py +0 -0
  174. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/hello_world_message.py +0 -0
  175. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/htc_job_id.py +0 -0
  176. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/human_readable_export_data.py +0 -0
  177. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/i_size.py +0 -0
  178. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/identity.py +0 -0
  179. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/math_model_child_summary.py +0 -0
  180. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/math_model_summary.py +0 -0
  181. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/math_type.py +0 -0
  182. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/mathmodel_ref.py +0 -0
  183. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/model_type.py +0 -0
  184. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/n5_export_request.py +0 -0
  185. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/origin.py +0 -0
  186. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/publication.py +0 -0
  187. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/publication_info.py +0 -0
  188. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/sampled_curve.py +0 -0
  189. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/scheduler_status.py +0 -0
  190. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/simulation_execution_status_record.py +0 -0
  191. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/simulation_job_status_record.py +0 -0
  192. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/simulation_message.py +0 -0
  193. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/simulation_queue_entry_status_record.py +0 -0
  194. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/simulation_queue_id.py +0 -0
  195. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/simulation_status_persistent_record.py +0 -0
  196. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/source_model.py +0 -0
  197. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/spatial_selection.py +0 -0
  198. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/spatial_selection_contour.py +0 -0
  199. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/spatial_selection_membrane.py +0 -0
  200. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/spatial_selection_volume.py +0 -0
  201. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/specialclaim.py +0 -0
  202. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/spline.py +0 -0
  203. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/standard_export_info.py +0 -0
  204. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/status.py +0 -0
  205. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/status_message.py +0 -0
  206. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/time_mode.py +0 -0
  207. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/time_specs.py +0 -0
  208. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/user.py +0 -0
  209. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/user_identity_json_safe.py +0 -0
  210. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/user_login_info_for_mapping.py +0 -0
  211. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/user_registration_info.py +0 -0
  212. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/v_cell_http_error.py +0 -0
  213. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/v_cell_site.py +0 -0
  214. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/v_cell_software_version.py +0 -0
  215. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/variable_domain.py +0 -0
  216. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/variable_mode.py +0 -0
  217. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/variable_specs.py +0 -0
  218. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/variable_type.py +0 -0
  219. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/vc_document_type.py +0 -0
  220. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/vc_image_summary.py +0 -0
  221. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/vc_simulation_identifier.py +0 -0
  222. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/version.py +0 -0
  223. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/models/version_flag.py +0 -0
  224. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/rest.py +0 -0
  225. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/__init__.py +0 -0
  226. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_acces_token_representation_record.py +0 -0
  227. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_admin_resource_api.py +0 -0
  228. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_analytic_curve.py +0 -0
  229. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_annotated_function_dto.py +0 -0
  230. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_application_info.py +0 -0
  231. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_batch_system_type.py +0 -0
  232. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_bio_model.py +0 -0
  233. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_bio_model_child_summary.py +0 -0
  234. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_bio_model_resource_api.py +0 -0
  235. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_bio_model_summary.py +0 -0
  236. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_biomodel_ref.py +0 -0
  237. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_composite_curve.py +0 -0
  238. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_control_point_curve.py +0 -0
  239. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_coordinate.py +0 -0
  240. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_curve.py +0 -0
  241. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_curve_selection_info.py +0 -0
  242. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_data_identifier.py +0 -0
  243. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_detailed_state.py +0 -0
  244. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_domain.py +0 -0
  245. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_export_event.py +0 -0
  246. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_export_progress_type.py +0 -0
  247. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_export_resource_api.py +0 -0
  248. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_exportable_data_type.py +0 -0
  249. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_extent.py +0 -0
  250. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_external_data_identifier.py +0 -0
  251. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_field_data.py +0 -0
  252. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_field_data_reference.py +0 -0
  253. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_field_data_resource_api.py +0 -0
  254. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_field_data_saved_results.py +0 -0
  255. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_field_data_shape.py +0 -0
  256. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_function_category.py +0 -0
  257. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_geometry_mode.py +0 -0
  258. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_geometry_resource_api.py +0 -0
  259. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_geometry_spec_dto.py +0 -0
  260. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_geometry_summary.py +0 -0
  261. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_gif_image.py +0 -0
  262. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_group_access.py +0 -0
  263. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_group_access_all.py +0 -0
  264. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_group_access_none.py +0 -0
  265. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_group_access_some.py +0 -0
  266. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_hello_world_api.py +0 -0
  267. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_hello_world_message.py +0 -0
  268. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_htc_job_id.py +0 -0
  269. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_human_readable_export_data.py +0 -0
  270. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_i_size.py +0 -0
  271. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_identity.py +0 -0
  272. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_math_model_child_summary.py +0 -0
  273. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_math_model_resource_api.py +0 -0
  274. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_math_model_summary.py +0 -0
  275. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_math_type.py +0 -0
  276. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_mathmodel_ref.py +0 -0
  277. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_model_type.py +0 -0
  278. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_n5_export_request.py +0 -0
  279. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_origin.py +0 -0
  280. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_publication.py +0 -0
  281. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_publication_info.py +0 -0
  282. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_publication_resource_api.py +0 -0
  283. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_sampled_curve.py +0 -0
  284. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_scheduler_status.py +0 -0
  285. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_simulation_execution_status_record.py +0 -0
  286. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_simulation_job_status_record.py +0 -0
  287. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_simulation_message.py +0 -0
  288. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_simulation_queue_entry_status_record.py +0 -0
  289. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_simulation_queue_id.py +0 -0
  290. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_simulation_resource_api.py +0 -0
  291. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_simulation_status_persistent_record.py +0 -0
  292. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_solver_resource_api.py +0 -0
  293. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_source_model.py +0 -0
  294. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_spatial_selection.py +0 -0
  295. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_spatial_selection_contour.py +0 -0
  296. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_spatial_selection_membrane.py +0 -0
  297. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_spatial_selection_volume.py +0 -0
  298. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_specialclaim.py +0 -0
  299. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_spline.py +0 -0
  300. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_standard_export_info.py +0 -0
  301. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_status.py +0 -0
  302. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_status_message.py +0 -0
  303. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_time_mode.py +0 -0
  304. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_time_specs.py +0 -0
  305. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_user.py +0 -0
  306. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_user_identity_json_safe.py +0 -0
  307. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_user_login_info_for_mapping.py +0 -0
  308. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_user_registration_info.py +0 -0
  309. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_users_resource_api.py +0 -0
  310. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_v_cell_http_error.py +0 -0
  311. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_v_cell_site.py +0 -0
  312. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_v_cell_software_version.py +0 -0
  313. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_variable_domain.py +0 -0
  314. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_variable_mode.py +0 -0
  315. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_variable_specs.py +0 -0
  316. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_variable_type.py +0 -0
  317. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_vc_document_type.py +0 -0
  318. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_vc_image_resource_api.py +0 -0
  319. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_vc_image_summary.py +0 -0
  320. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_vc_simulation_identifier.py +0 -0
  321. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_version.py +0 -0
  322. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client/test/test_version_flag.py +0 -0
  323. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/api/vcell_client_README.md +0 -0
  324. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/geometry/__init__.py +0 -0
  325. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/geometry/segmented_image_geometry.py +0 -0
  326. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/__init__.py +0 -0
  327. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/fielddata_file.py +0 -0
  328. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/main.py +0 -0
  329. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/mesh.py +0 -0
  330. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/n5_data.py +0 -0
  331. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/postprocessing.py +0 -0
  332. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/simdata_models.py +0 -0
  333. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/vtk/__init__.py +0 -0
  334. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/vtk/fv_mesh_mapping.py +0 -0
  335. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/vtk/vismesh.py +0 -0
  336. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/vtk/vtkmesh_chombo.py +0 -0
  337. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/vtk/vtkmesh_fv.py +0 -0
  338. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/vtk/vtkmesh_mb.py +0 -0
  339. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/vtk/vtkmesh_utils.py +0 -0
  340. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/simdata/zarr_writer.py +0 -0
  341. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/solvers/__init__.py +0 -0
  342. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/_internal/solvers/fvsolver.py +0 -0
  343. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sbml/__init__.py +0 -0
  344. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sbml/sbml_spatial_model.py +0 -0
  345. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sim_results/__init__.py +0 -0
  346. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sim_results/plotter.py +0 -0
  347. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sim_results/result.py +0 -0
  348. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sim_results/var_types.py +0 -0
  349. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sim_results/vtk_data.py +0 -0
  350. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sim_results/widget.py +0 -0
  351. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sim_results/zarr_types.py +0 -0
  352. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/sim_results/zarr_utils.py +0 -0
  353. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/field.py +0 -0
  354. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/session.py +0 -0
  355. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/vcml_geo_from_images.py +0 -0
  356. {pyvcell-0.2.4 → pyvcell-0.3.0}/pyvcell/vcml/vcml_remote.py +0 -0
  357. {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.2.4
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: urllib3>=2.3.0,<3
33
- Requires-Dist: vtk>=9.3.1,<10
34
- Requires-Dist: zarr>=2.17.2,<3
35
- Requires-Python: >=3.10, <4.0
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.2.4"
4
- requires-python = ">=3.10,<4.0"
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
- "python-dateutil>=2.8.2,<3",
30
- "python-libsbml>=5.20.4,<6",
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