-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Associating measurement data and sample descriptions #183
Comments
... and it looks like my proposal for a "labels" field is already there in the form of the "contents" field that was recently added to SampleArray. My thoughts:
|
Just to clarify how things currently work ... We have
The In test/test_samplemap.py, the -- I think the point @jakebeal is making, is that it's not clear what |
Some more detail from test/test_samplemap.py: The '{"dims": ["array", "aliquot", "contents"], "attrs": {"units": "uL"}, "data": [[[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], "coords": {"array": {"dims": ["array"], "attrs": {}, "data": ["target"]}, "aliquot": {"dims": ["aliquot"], "attrs": {}, "data": [0, 1, 2, 3]}, "contents": {"dims": ["contents"], "attrs": {}, "data": ["https://bbn.com/scratch/ddH2Oa", "https://bbn.com/scratch/ddH2Ob"]}}, "name": null}' and the absorbance '{"coords": {"aliquot": {"dims": ["aliquot"], "attrs": {}, "data": [0, 1, 2, 3]}}, "attrs": {}, "dims": {"aliquot": 4}, "data_vars": {"absorbance": {"dims": ["aliquot"], "attrs": {}, "data": [null, null, null, null]}}}' These are the values after the execution engine executes the protocol. It is somewhat confusing for the target array to refer to its initial contents, seeing how the absorbance is not measured over the initial target contents (rather, the dynamic contents). If we made the Using an I can see this working like this: EmptyContainer.samples --> MeasureAbsorbance.samples If EmptyContainer.samples.contents is not specified, then MeasureAbsorbance.samples.values will be unspecified. However, ExcelToLabels.labels will impose the shape of MeasureAbsorbance.samples.values. |
I think that I am still struggling to understand the current semantics of Let's say we have a protocol that executes with two sequential operations:
In a Is that correct? |
Per discussion on Zoom, we are recognizing that Instead, in order to associate metadata, we will change the direction of the pointer and have a To follow the sample above, measuring the OD of the tube would be a five operation protocol:
|
I've set up a pull request containing the initial model (#184). I have not changed any of |
I've now done a search-and-replace on the code, which should take care of the errors, but there are some semantic issues exposed by the change that need to be addressed, notably in the markdown_specialization.py |
Pull request is ready for review and merging. |
Clarifying question: If I understand the example above correctly, the |
With |
Is it also true, according to this proposal, that the |
In this proposal, Thus, practically speaking, the LabOP representation per se has no way to record when the execution makes its inferences. The execution engine is thus free to calculate as it goes, at the call for |
It seems like these two changes work toward cross-purposes:
If we can use 1) to pull out a snapshot from the execution trace (and I am on board with that idea), then why should it matter if the |
This, indeed, does not have a representation for tracking state. Previously, however, the Per the conversation with @danbryce yesterday, the representation of the state of containers and equipment is a potentially very deep representational question, because of the questions of time and ordering that get involved. These are not needed for a snapshot, though. We will likely want to address state representation at some point in the future, but if we can avoid standardizing it for now, then we can keep experimenting pragmatically in execution engines without having to commit to how general representations of evolving state are shared (only snapshots). Yes, we will need a place other than the "contents" field to put state into. Lots of ways to do that, though, including simply having the execution environment keep a dictionary mapping SampleArray to state. |
In LabOP, the
SampleData
object is used to represent the relationship between a set of containers and a set of measurements taken from those containers. This is not yet enough to support analysis, however. Typically, in an analysis, we will also need to relate those measurements to the independent variables of an experiment. There are several ways that we might approach this question, and a number of possible implementations.Specifications to associate with the samples could come at various levels of detail, listed here from more complete to most minimal:
This information could be supplied in several ways, from most manual to most automated:
Different combinations are likely to be appropriate for different models, so I propose that we address the issue by making the labeling of sample data a first class object.
Specifically:
This combinations will allow us to use manual specification initially and for situations where we can’t make a model, transitioning to greater levels of automation over time.
We will also not have to modify any measurement operators, because the labels will be carried implicitly by the SampleCollection they are told to measure.
The text was updated successfully, but these errors were encountered: