labstep 3.35.0__tar.gz → 3.36.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.
- {labstep-3.35.0 → labstep-3.36.0}/PKG-INFO +1 -1
- labstep-3.36.0/labstep/constants/version.py +1 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experiment/model.py +41 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentCondition/repository.py +8 -6
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentDataField/repository.py +79 -79
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentInventoryField/repository.py +51 -22
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentProtocol/model.py +110 -27
- labstep-3.36.0/labstep/entities/experimentSmartTable/model.py +29 -0
- labstep-3.36.0/labstep/entities/experimentSmartTable/repository.py +23 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocol/model.py +41 -0
- labstep-3.36.0/labstep/entities/protocolSmartTable/model.py +31 -0
- labstep-3.36.0/labstep/entities/protocolSmartTable/repository.py +19 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolVersion/model.py +52 -11
- {labstep-3.35.0 → labstep-3.36.0}/labstep.egg-info/PKG-INFO +1 -1
- {labstep-3.35.0 → labstep-3.36.0}/labstep.egg-info/SOURCES.txt +4 -0
- labstep-3.35.0/labstep/constants/version.py +0 -1
- {labstep-3.35.0 → labstep-3.36.0}/README.rst +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/__init__.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/config/export.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/constants/__init__.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/constants/unspecified.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/converter/__init__.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/converter/htmlToProseMirror.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/apiKey/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/apiKey/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/autoshare/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/autoshare/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/chemical/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/chemical/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/chemicalReaction/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/chemicalReaction/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/collaborator/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/collaborator/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/collaboratorRole/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/collaboratorRole/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/collaboratorRoleRequirement/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/collaboratorRoleRequirement/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/collection/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/collection/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/comment/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/comment/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/customIdentifierSet/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/customIdentifierSet/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/device/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/device/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/deviceBooking/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/deviceBooking/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/deviceCategory/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/deviceCategory/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/deviceData/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/deviceData/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/deviceTemplate/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/deviceTemplate/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/entityImport/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/entityImport/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/entityState/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/entityState/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/entityStateWorkflow/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/entityStateWorkflow/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experiment/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentCondition/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentDataField/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentInventoryField/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentLink/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentLink/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentProtocol/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentSignature/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentSignature/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentSignatureRequest/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentSignatureRequest/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentStep/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentStep/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentTable/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentTable/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentTemplate/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentTemplate/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentTimer/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/experimentTimer/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/export/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/export/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/file/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/file/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/invitation/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/invitation/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/jupyterInstance/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/jupyterInstance/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/jupyterNotebook/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/jupyterNotebook/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/jupyterSchedule/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/jupyterSchedule/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/metadata/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/metadata/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/molecule/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/molecule/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/notification/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/notification/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/notificationAlert/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/notificationAlert/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/orderRequest/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/orderRequest/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/organization/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/organization/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/organizationUser/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/organizationUser/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/permission/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/permission/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocol/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolCondition/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolCondition/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolDataField/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolDataField/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolDevice/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolDevice/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolInventoryField/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolInventoryField/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolStep/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolStep/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolTable/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolTable/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolTemplate/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolTemplate/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolTimer/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolTimer/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/protocolVersion/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/purchaseOrder/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/purchaseOrder/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/resource/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/resource/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/resourceCategory/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/resourceCategory/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/resourceItem/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/resourceItem/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/resourceLocation/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/resourceLocation/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/resourceTemplate/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/resourceTemplate/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/sequence/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/sequence/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/sharelink/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/sharelink/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/signatureRequirement/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/signatureRequirement/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/tag/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/tag/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/user/facade.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/user/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/user/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/workspace/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/workspace/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/workspaceMember/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/workspaceMember/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/workspaceRole/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/workspaceRole/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/workspaceRolePermission/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/entities/workspaceRolePermission/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/generic/entity/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/generic/entity/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/generic/entityList/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/generic/entityPrimary/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/generic/entityWithAssign/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/generic/entityWithComments/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/generic/entityWithMetadata/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/generic/entityWithMetadata/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/generic/entityWithSharing/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/generic/entityWithTags/model.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/generic/entityWithTags/repository.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/service/__init__.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/service/config.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/service/helpers.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/service/htmlExport.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/service/htmlToPDF.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/service/htmlToProseMirror.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/service/jupyter.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/service/ping.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep/service/request.py +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep.egg-info/dependency_links.txt +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep.egg-info/not-zip-safe +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep.egg-info/requires.txt +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/labstep.egg-info/top_level.txt +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/setup.cfg +0 -0
- {labstep-3.35.0 → labstep-3.36.0}/setup.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
VERSION = "3.36.0"
|
|
@@ -717,6 +717,47 @@ class Experiment(EntityPrimary):
|
|
|
717
717
|
|
|
718
718
|
return self.root_experiment.addJupyterNotebook(name, data)
|
|
719
719
|
|
|
720
|
+
def addSmartTable(self, name=UNSPECIFIED, extraParams={}):
|
|
721
|
+
"""
|
|
722
|
+
Add a new smart table to an Experiment.
|
|
723
|
+
|
|
724
|
+
Parameters
|
|
725
|
+
----------
|
|
726
|
+
name (str)
|
|
727
|
+
The name of the smart table.
|
|
728
|
+
|
|
729
|
+
Returns
|
|
730
|
+
-------
|
|
731
|
+
:class:`~labstep.entities.experimentSmartTable.model.ExperimentSmartTable`
|
|
732
|
+
The newly added smart table entity.
|
|
733
|
+
|
|
734
|
+
Example
|
|
735
|
+
-------
|
|
736
|
+
::
|
|
737
|
+
|
|
738
|
+
experiment = user.getExperiment(17000)
|
|
739
|
+
experiment.addSmartTable(name='My Smart Table')
|
|
740
|
+
"""
|
|
741
|
+
return self.root_experiment.addSmartTable(name=name, extraParams=extraParams)
|
|
742
|
+
|
|
743
|
+
def getSmartTables(self):
|
|
744
|
+
"""
|
|
745
|
+
Returns a list of the smart tables in an Experiment.
|
|
746
|
+
|
|
747
|
+
Returns
|
|
748
|
+
-------
|
|
749
|
+
List[:class:`~labstep.entities.experimentSmartTable.model.ExperimentSmartTable`]
|
|
750
|
+
List of the smart tables in an Experiment.
|
|
751
|
+
|
|
752
|
+
Example
|
|
753
|
+
-------
|
|
754
|
+
::
|
|
755
|
+
|
|
756
|
+
experiment = user.getExperiment(17000)
|
|
757
|
+
smart_tables = experiment.getSmartTables()
|
|
758
|
+
"""
|
|
759
|
+
return self.root_experiment.getSmartTables()
|
|
760
|
+
|
|
720
761
|
def addConditions(self, number_of_conditions):
|
|
721
762
|
"""
|
|
722
763
|
Add conditions to the experiment
|
|
@@ -7,8 +7,7 @@ def addExperimentConditions(entity, number_of_conditions):
|
|
|
7
7
|
from labstep.generic.entity.repository import newEntities
|
|
8
8
|
from labstep.entities.experimentCondition.model import ExperimentCondition
|
|
9
9
|
|
|
10
|
-
conditions = [{f
|
|
11
|
-
] * number_of_conditions
|
|
10
|
+
conditions = [{f"{entity.__entityName__}_guid": entity.guid}] * number_of_conditions
|
|
12
11
|
|
|
13
12
|
return newEntities(entity.__user__, ExperimentCondition, conditions)
|
|
14
13
|
|
|
@@ -18,9 +17,12 @@ def getExperimentConditions(entity):
|
|
|
18
17
|
from labstep.entities.experimentCondition.model import ExperimentCondition
|
|
19
18
|
from labstep.constants import UNSPECIFIED
|
|
20
19
|
|
|
21
|
-
|
|
22
20
|
params = {
|
|
23
|
-
f
|
|
21
|
+
f"{entity.__entityName__}_id": (
|
|
22
|
+
entity.guid if hasattr(entity, "guid") else UNSPECIFIED
|
|
23
|
+
),
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
return getEntities(
|
|
25
|
+
|
|
26
|
+
return getEntities(
|
|
27
|
+
entity.__user__, ExperimentCondition, count=UNSPECIFIED, filterParams=params
|
|
28
|
+
)
|
|
@@ -20,59 +20,59 @@ def getDataFields(entity, count=UNSPECIFIED, extraParams={}):
|
|
|
20
20
|
|
|
21
21
|
params = {}
|
|
22
22
|
|
|
23
|
-
if hasattr(entity,
|
|
23
|
+
if hasattr(entity, "metadata_thread") is False:
|
|
24
24
|
entity.update()
|
|
25
25
|
|
|
26
26
|
if isinstance(entity, ExperimentProtocol):
|
|
27
|
-
params = {
|
|
28
|
-
"metadata_thread_id": entity.metadata_thread["id"]}
|
|
27
|
+
params = {"metadata_thread_id": entity.metadata_thread["id"]}
|
|
29
28
|
|
|
30
29
|
elif isinstance(entity, Resource):
|
|
31
|
-
params = {
|
|
32
|
-
"multiplexing_input_resource_id": entity.id,
|
|
33
|
-
"has_value": True
|
|
34
|
-
}
|
|
30
|
+
params = {"multiplexing_input_resource_id": entity.id, "has_value": True}
|
|
35
31
|
dataWhenInput = entityRepository.getEntities(
|
|
36
|
-
entity.__user__,
|
|
37
|
-
|
|
32
|
+
entity.__user__,
|
|
33
|
+
ExperimentDataField,
|
|
34
|
+
count=count,
|
|
35
|
+
filterParams={**params, **extraParams},
|
|
36
|
+
)
|
|
38
37
|
|
|
39
|
-
params = {
|
|
40
|
-
"multiplexing_output_resource_id": entity.id,
|
|
41
|
-
"has_value": True
|
|
42
|
-
}
|
|
38
|
+
params = {"multiplexing_output_resource_id": entity.id, "has_value": True}
|
|
43
39
|
dataWhenOutput = entityRepository.getEntities(
|
|
44
|
-
entity.__user__,
|
|
45
|
-
|
|
40
|
+
entity.__user__,
|
|
41
|
+
ExperimentDataField,
|
|
42
|
+
count=count,
|
|
43
|
+
filterParams={**params, **extraParams},
|
|
44
|
+
)
|
|
46
45
|
|
|
47
46
|
return dataWhenInput + dataWhenOutput
|
|
48
47
|
|
|
49
48
|
elif isinstance(entity, ResourceItem):
|
|
50
|
-
params = {
|
|
51
|
-
"multiplexing_input_resource_item_id": entity.id,
|
|
52
|
-
"has_value": True
|
|
53
|
-
}
|
|
49
|
+
params = {"multiplexing_input_resource_item_id": entity.id, "has_value": True}
|
|
54
50
|
dataWhenInput = entityRepository.getEntities(
|
|
55
|
-
entity.__user__,
|
|
56
|
-
|
|
51
|
+
entity.__user__,
|
|
52
|
+
ExperimentDataField,
|
|
53
|
+
count=count,
|
|
54
|
+
filterParams={**params, **extraParams},
|
|
55
|
+
)
|
|
57
56
|
|
|
58
|
-
params = {
|
|
59
|
-
"multiplexing_output_resource_item_id": entity.id,
|
|
60
|
-
"has_value": True
|
|
61
|
-
}
|
|
57
|
+
params = {"multiplexing_output_resource_item_id": entity.id, "has_value": True}
|
|
62
58
|
dataWhenOutput = entityRepository.getEntities(
|
|
63
|
-
entity.__user__,
|
|
64
|
-
|
|
59
|
+
entity.__user__,
|
|
60
|
+
ExperimentDataField,
|
|
61
|
+
count=count,
|
|
62
|
+
filterParams={**params, **extraParams},
|
|
63
|
+
)
|
|
65
64
|
|
|
66
65
|
return dataWhenInput + dataWhenOutput
|
|
67
66
|
|
|
68
67
|
return entityRepository.getEntities(
|
|
69
|
-
entity.__user__,
|
|
70
|
-
|
|
68
|
+
entity.__user__,
|
|
69
|
+
ExperimentDataField,
|
|
70
|
+
count=count,
|
|
71
|
+
filterParams={**params, **extraParams},
|
|
71
72
|
)
|
|
72
73
|
|
|
73
74
|
|
|
74
75
|
def addDataFieldTo(
|
|
75
|
-
|
|
76
76
|
entity,
|
|
77
77
|
fieldName,
|
|
78
78
|
fieldType="default",
|
|
@@ -89,7 +89,7 @@ def addDataFieldTo(
|
|
|
89
89
|
else:
|
|
90
90
|
fileId = UNSPECIFIED
|
|
91
91
|
|
|
92
|
-
if hasattr(entity,
|
|
92
|
+
if hasattr(entity, "metadata_thread") is False:
|
|
93
93
|
entity.update()
|
|
94
94
|
|
|
95
95
|
params = {
|
|
@@ -107,12 +107,18 @@ def addDataFieldTo(
|
|
|
107
107
|
return entityRepository.newEntity(entity.__user__, ExperimentDataField, params)
|
|
108
108
|
|
|
109
109
|
|
|
110
|
-
def editDataField(
|
|
110
|
+
def editDataField(
|
|
111
|
+
dataField,
|
|
112
|
+
fieldName=UNSPECIFIED,
|
|
113
|
+
value=UNSPECIFIED,
|
|
114
|
+
is_variable=UNSPECIFIED,
|
|
115
|
+
extraParams={},
|
|
116
|
+
):
|
|
111
117
|
params = {
|
|
112
118
|
"label": handleString(fieldName),
|
|
113
119
|
"value": handleString(value),
|
|
114
120
|
"is_variable": is_variable,
|
|
115
|
-
**extraParams
|
|
121
|
+
**extraParams,
|
|
116
122
|
}
|
|
117
123
|
return entityRepository.editEntity(dataField, params)
|
|
118
124
|
|
|
@@ -122,43 +128,43 @@ def getDataFieldValue(dataField):
|
|
|
122
128
|
if dataField.device_data is not None:
|
|
123
129
|
dataField = DeviceData(dataField.device_data, dataField.__user__)
|
|
124
130
|
|
|
125
|
-
if dataField.type ==
|
|
131
|
+
if dataField.type == "default":
|
|
126
132
|
return dataField.value
|
|
127
133
|
|
|
128
|
-
if dataField.type ==
|
|
134
|
+
if dataField.type == "numeric":
|
|
129
135
|
return dataField.number
|
|
130
136
|
|
|
131
|
-
if dataField.type ==
|
|
137
|
+
if dataField.type == "date":
|
|
132
138
|
if dataField.date is None:
|
|
133
139
|
return None
|
|
134
140
|
return formatDate(dataField.date, time=False)
|
|
135
141
|
|
|
136
|
-
if dataField.type ==
|
|
142
|
+
if dataField.type == "datetime":
|
|
137
143
|
return formatDate(dataField.date)
|
|
138
144
|
|
|
139
|
-
if dataField.type ==
|
|
145
|
+
if dataField.type == "options":
|
|
140
146
|
if dataField.options is None:
|
|
141
147
|
return None
|
|
142
148
|
|
|
143
|
-
keys = [k for k, v in dataField.options[
|
|
149
|
+
keys = [k for k, v in dataField.options["values"].items() if v]
|
|
144
150
|
|
|
145
151
|
if keys == []:
|
|
146
152
|
return None
|
|
147
153
|
|
|
148
|
-
if dataField.options[
|
|
154
|
+
if dataField.options["is_allow_multiple"]:
|
|
149
155
|
return keys
|
|
150
156
|
|
|
151
157
|
return keys[0]
|
|
152
158
|
|
|
153
|
-
if dataField.type ==
|
|
159
|
+
if dataField.type == "file":
|
|
154
160
|
|
|
155
161
|
if len(dataField.files) == 1:
|
|
156
162
|
return File(dataField.files[0], dataField.__user__)
|
|
157
163
|
else:
|
|
158
164
|
return EntityList(dataField.files, File, dataField.__user__)
|
|
159
165
|
|
|
160
|
-
if dataField.type ==
|
|
161
|
-
return json.loads(dataField.sequence[
|
|
166
|
+
if dataField.type == "sequence":
|
|
167
|
+
return json.loads(dataField.sequence["data"])
|
|
162
168
|
|
|
163
169
|
return None
|
|
164
170
|
|
|
@@ -166,13 +172,14 @@ def getDataFieldValue(dataField):
|
|
|
166
172
|
def setDataFieldValue(dataField, value, condition_id=None):
|
|
167
173
|
if condition_id is not None:
|
|
168
174
|
if dataField.is_variable is False:
|
|
169
|
-
raise Exception(
|
|
170
|
-
'Cannot set value for conditions on a constant data field')
|
|
175
|
+
raise Exception("Cannot set value for conditions on a constant data field")
|
|
171
176
|
|
|
172
177
|
conditionDataField = entityRepository.getEntities(
|
|
173
|
-
dataField.__user__,
|
|
174
|
-
|
|
175
|
-
|
|
178
|
+
dataField.__user__,
|
|
179
|
+
ExperimentDataField,
|
|
180
|
+
count=UNSPECIFIED,
|
|
181
|
+
filterParams={"protocol_condition_id": condition_id},
|
|
182
|
+
).get(dataField.guid, searchKey="variable_template_guid")
|
|
176
183
|
|
|
177
184
|
if conditionDataField is None:
|
|
178
185
|
params = {
|
|
@@ -181,27 +188,26 @@ def setDataFieldValue(dataField, value, condition_id=None):
|
|
|
181
188
|
"variable_template_id": dataField.id,
|
|
182
189
|
"protocol_condition_id": condition_id,
|
|
183
190
|
}
|
|
184
|
-
newField = entityRepository.newEntity(
|
|
191
|
+
newField = entityRepository.newEntity(
|
|
192
|
+
dataField.__user__, ExperimentDataField, params
|
|
193
|
+
)
|
|
185
194
|
setDataFieldValue(newField, value)
|
|
186
195
|
else:
|
|
187
|
-
return setDataFieldValue(conditionDataField,value)
|
|
188
|
-
|
|
196
|
+
return setDataFieldValue(conditionDataField, value)
|
|
189
197
|
|
|
190
|
-
if condition_id is None and dataField.is_variable is True:
|
|
191
|
-
raise Exception(
|
|
192
|
-
'Please specify a condition ID for variable data fields')
|
|
198
|
+
if condition_id is None and dataField.is_variable is True and dataField.variable_template_guid is None:
|
|
199
|
+
raise Exception("Please specify a condition ID for variable data fields")
|
|
193
200
|
|
|
201
|
+
if dataField.type == "default":
|
|
202
|
+
return dataField.edit(extraParams={"value": str(value)})
|
|
194
203
|
|
|
195
|
-
if dataField.type ==
|
|
196
|
-
return dataField.edit(extraParams={
|
|
204
|
+
if dataField.type == "numeric":
|
|
205
|
+
return dataField.edit(extraParams={"number": float(value)})
|
|
197
206
|
|
|
198
|
-
if dataField.type ==
|
|
199
|
-
return dataField.edit(extraParams={
|
|
207
|
+
if dataField.type == "date" or dataField.type == "datetime":
|
|
208
|
+
return dataField.edit(extraParams={"date": handleDate(value)})
|
|
200
209
|
|
|
201
|
-
if dataField.type ==
|
|
202
|
-
return dataField.edit(extraParams={'date': handleDate(value)})
|
|
203
|
-
|
|
204
|
-
if dataField.type == 'options':
|
|
210
|
+
if dataField.type == "options":
|
|
205
211
|
|
|
206
212
|
if isinstance(value, list) is False:
|
|
207
213
|
value = [str(value)]
|
|
@@ -209,31 +215,25 @@ def setDataFieldValue(dataField, value, condition_id=None):
|
|
|
209
215
|
options = dataField.options
|
|
210
216
|
|
|
211
217
|
if options is None:
|
|
212
|
-
options = {
|
|
213
|
-
'is_allow_multiple': False,
|
|
214
|
-
'is_allow_add': True,
|
|
215
|
-
'values': {}
|
|
216
|
-
}
|
|
218
|
+
options = {"is_allow_multiple": False, "is_allow_add": True, "values": {}}
|
|
217
219
|
|
|
218
|
-
if options[
|
|
219
|
-
options[
|
|
220
|
+
if options["values"] is None:
|
|
221
|
+
options["values"] = {}
|
|
220
222
|
|
|
221
|
-
options[
|
|
223
|
+
options["values"] = {key: False for key in options["values"].keys()}
|
|
222
224
|
|
|
223
|
-
if options[
|
|
224
|
-
raise Exception(
|
|
225
|
-
'Specifying multiple values for this field is forbidden. ')
|
|
225
|
+
if options["is_allow_multiple"] is False and len(value) > 1:
|
|
226
|
+
raise Exception("Specifying multiple values for this field is forbidden. ")
|
|
226
227
|
|
|
227
228
|
for activeKey in value:
|
|
228
|
-
options[
|
|
229
|
+
options["values"][activeKey] = True
|
|
229
230
|
|
|
230
|
-
return dataField.edit(extraParams={
|
|
231
|
+
return dataField.edit(extraParams={"options": options})
|
|
231
232
|
|
|
232
|
-
if dataField.type ==
|
|
233
|
+
if dataField.type == "file":
|
|
233
234
|
if isinstance(value, File) is False:
|
|
234
|
-
raise Exception(
|
|
235
|
-
'Please specify a Labstep File object as the value')
|
|
235
|
+
raise Exception("Please specify a Labstep File object as the value")
|
|
236
236
|
|
|
237
|
-
return dataField.edit(extraParams={
|
|
237
|
+
return dataField.edit(extraParams={"file_id": value.id})
|
|
238
238
|
|
|
239
239
|
return None
|
|
@@ -14,15 +14,23 @@ def getExperimentInventoryField(user, experiment_inventoryfield_id):
|
|
|
14
14
|
)
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
def getExperimentInventoryFields(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
17
|
+
def getExperimentInventoryFields(
|
|
18
|
+
user, experiment_id, count=UNSPECIFIED, extraParams={}
|
|
19
|
+
):
|
|
20
|
+
params = {"experiment_id": experiment_id, **extraParams}
|
|
22
21
|
return entityRepository.getEntities(user, ExperimentInventoryField, count, params)
|
|
23
22
|
|
|
24
23
|
|
|
25
|
-
def newExperimentInventoryField(
|
|
24
|
+
def newExperimentInventoryField(
|
|
25
|
+
user,
|
|
26
|
+
experiment_id,
|
|
27
|
+
name,
|
|
28
|
+
resource_id=UNSPECIFIED,
|
|
29
|
+
resource_item_id=UNSPECIFIED,
|
|
30
|
+
amount=UNSPECIFIED,
|
|
31
|
+
units=UNSPECIFIED,
|
|
32
|
+
extraParams={},
|
|
33
|
+
):
|
|
26
34
|
params = {
|
|
27
35
|
"experiment_id": experiment_id,
|
|
28
36
|
"name": name,
|
|
@@ -39,18 +47,27 @@ def newExperimentInventoryField(user, experiment_id, name, resource_id=UNSPECIFI
|
|
|
39
47
|
return entityRepository.newEntity(user, ExperimentInventoryField, params)
|
|
40
48
|
|
|
41
49
|
|
|
42
|
-
def editExperimentInventoryField(
|
|
50
|
+
def editExperimentInventoryField(
|
|
51
|
+
expermient_inventoryfield,
|
|
52
|
+
name=UNSPECIFIED,
|
|
53
|
+
amount=UNSPECIFIED,
|
|
54
|
+
units=UNSPECIFIED,
|
|
55
|
+
resource_id=UNSPECIFIED,
|
|
56
|
+
resource_item_id=UNSPECIFIED,
|
|
57
|
+
extraParams={},
|
|
58
|
+
):
|
|
43
59
|
params = {
|
|
44
60
|
"name": name,
|
|
45
|
-
"value": amount,
|
|
61
|
+
"value": str(amount) if amount is not UNSPECIFIED else UNSPECIFIED,
|
|
46
62
|
"units": units,
|
|
47
63
|
"resource_id": resource_id,
|
|
48
64
|
"resource_item_id": resource_item_id,
|
|
49
|
-
**extraParams
|
|
65
|
+
**extraParams,
|
|
50
66
|
}
|
|
51
67
|
|
|
52
68
|
return entityRepository.editEntity(expermient_inventoryfield, params)
|
|
53
69
|
|
|
70
|
+
|
|
54
71
|
def getValue(experiment_inventory_field, condition_id=UNSPECIFIED):
|
|
55
72
|
"""
|
|
56
73
|
Get the value of an Experiment Inventory Field for a specific condition.
|
|
@@ -68,7 +85,12 @@ def getValue(experiment_inventory_field, condition_id=UNSPECIFIED):
|
|
|
68
85
|
return experiment_inventory_field.getValue(condition_id)
|
|
69
86
|
|
|
70
87
|
|
|
71
|
-
def setValue(
|
|
88
|
+
def setValue(
|
|
89
|
+
experiment_inventory_field,
|
|
90
|
+
amount,
|
|
91
|
+
resource_item_id=UNSPECIFIED,
|
|
92
|
+
condition_id=UNSPECIFIED,
|
|
93
|
+
):
|
|
72
94
|
"""
|
|
73
95
|
Set the value of an Experiment Inventory Field for a specific condition.
|
|
74
96
|
|
|
@@ -88,26 +110,33 @@ def setValue(experiment_inventory_field, amount, resource_item_id=UNSPECIFIED, c
|
|
|
88
110
|
"""
|
|
89
111
|
if condition_id is not UNSPECIFIED:
|
|
90
112
|
if experiment_inventory_field.is_variable is False:
|
|
91
|
-
raise Exception(
|
|
92
|
-
'Cannot set value for conditions on a constant field')
|
|
113
|
+
raise Exception("Cannot set value for conditions on a constant field")
|
|
93
114
|
|
|
94
115
|
conditionInventoryField = entityRepository.getEntities(
|
|
95
|
-
experiment_inventory_field.__user__,
|
|
96
|
-
|
|
97
|
-
|
|
116
|
+
experiment_inventory_field.__user__,
|
|
117
|
+
ExperimentInventoryField,
|
|
118
|
+
count=UNSPECIFIED,
|
|
119
|
+
filterParams={"protocol_condition_id": condition_id},
|
|
120
|
+
).get(experiment_inventory_field.guid, searchKey="variable_template_guid")
|
|
98
121
|
|
|
99
122
|
if conditionInventoryField is None:
|
|
100
123
|
params = {
|
|
101
|
-
"is_input":experiment_inventory_field.is_input,
|
|
102
|
-
"is_output":experiment_inventory_field.is_output,
|
|
103
|
-
"experiment_id": experiment_inventory_field.experiment[
|
|
124
|
+
"is_input": experiment_inventory_field.is_input,
|
|
125
|
+
"is_output": experiment_inventory_field.is_output,
|
|
126
|
+
"experiment_id": experiment_inventory_field.experiment["id"],
|
|
104
127
|
"variable_template_id": experiment_inventory_field.id,
|
|
105
128
|
"protocol_condition_id": condition_id,
|
|
106
129
|
"resource_item_id": resource_item_id,
|
|
107
|
-
"value": amount,
|
|
130
|
+
"value": str(amount) if amount is not UNSPECIFIED else UNSPECIFIED,
|
|
108
131
|
}
|
|
109
|
-
conditionInventoryField = entityRepository.newEntity(
|
|
132
|
+
conditionInventoryField = entityRepository.newEntity(
|
|
133
|
+
experiment_inventory_field.__user__, ExperimentInventoryField, params
|
|
134
|
+
)
|
|
110
135
|
|
|
111
|
-
return conditionInventoryField.edit(
|
|
136
|
+
return conditionInventoryField.edit(
|
|
137
|
+
amount=amount, resource_item_id=resource_item_id
|
|
138
|
+
)
|
|
112
139
|
|
|
113
|
-
return experiment_inventory_field.edit(
|
|
140
|
+
return experiment_inventory_field.edit(
|
|
141
|
+
amount=amount, resource_item_id=resource_item_id
|
|
142
|
+
)
|