v2: Combining experiment and condition tables
Nobody has claimed this yet.
- Dominant language
- No language data
- Stars
- 66
- Forks
- 16
- Avg merge
- 3h 2m
- Merged PRs (30d)
- 10
Description
Problem: The current condition table only allows entry of the conditionId, targetId and targetValue. In v1, multiple targets could be specified for each condition. This allowed description of a whole experiment in one line, but the changes had to occur at time = 0.
v2 allows different conditions to occur at different times. This is an improvement as this reflects experimental protocols better. It also allows introduction of a 'forcing function' of sorts with stepwise changes in the parameters.
I propose that the change from wide condition tables to long condition tables obviates the need for the condition table and experiment tables should have the following columns:
experimentId, time, targetId, targetValue
Example:
v1 Alkan_SciSig2018 condition table (first two entries):
conditionId | Dox_level | Gem_level | SN38_level
model1_data1 | 0.0 | 0.0 | 0.0
model1_data2 | 0.0 | 0.0003 | 0.0
v2 Alkan_SciSig2018 condition table:
conditionId | targatID | targetValue
model1_data1 | Dox_level | 0.0
model1_data1 | Gem_level | 0.0
model1_data1 | SN38_level| 0.0
model1_data2 | Dox_level | 0.0
model1_data2 | Gem_level | 0.0003
model1_data2 | SN38_level| 0.0
v2 Alkan_SciSig2018 experiment table:
experimentId | time | conditionId
experiment1 | 0 | model1_data1
experiment2 | 0 | model1_data2
Proposed v2 Alkan_SciSig2018 experiment table:
experimentId | time | targatID | targetValue
experiment1 | 0 | Dox_level | 0.0
experiment1 | 0 | Gem_level | 0.0
experiment1 | 0 | SN38_level| 0.0
experiment2 | 0 | Dox_level | 0.0
experiment2 | 0 | Gem_level | 0.0003
experiment2 | 0 | SN38_level| 0.0
If, for example, experiment2 was a pulse of Gem_level, then it would be:
experimentId | time | targatID | targetValue
experiment1 | 0 | Dox_level | 0.0
experiment1 | 0 | Gem_level | 0.0
experiment1 | 0 | SN38_level| 0.0
experiment2 | 0 | Dox_level | 0.0
experiment2 | 0 | Gem_level | 0.0003
experiment2 | 10 | Gem_level | 0.0
experiment2 | 0 | SN38_level| 0.0
The current equivalent would be:
v2 Alkan_SciSig2018 experiment table:
experimentId | time | conditionId
experiment1 | 0 | model1_data1
experiment2 | 0 | model1_data2
experiment2 | 10 | model1_data1
which would introduce two unneeded events or a new condition. Because the conditionId is used nowhere else besides the experiment table, you will be creating a bunch of conditionIds for minor benefits. I agree that the benefits would be greater if the condition table was still wide.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the current v2 condition table and experiment table definitions described in the issue, then compare them with the proposed long experiment-table examples. Resolve whether conditionId can be removed and how timed target changes should be represented. Done means the schema decision is agreed and its implications for existing v2 data are documented.
Written by the indexing model from the issue text.
Assessment
- Domain
- bioinformatics
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100