solution composition
The BICCN is gathering a list of essential meta-data for intracellular electrophysiology experiments here. It seems they are reaching consensus that solution composition is on the must-have list.
It is essential metadata to keep track of the external and internal (electrode) solutions used and their constituent ion species, any drugs, blockers or buffers added, etc. How this is represented is an open question, e.g. Neuroelectro has a field for each ‘ingredient’/attribute separately, vs. e.g. having a dictionary/table storing each recipe. We keep a (not at all exhaustive) list of ingredients here as examples for discussion.
Bath/External Solution Ingredient List: [units - Moles?] Cl
K Mg Na pH Glucose Pharmacological agents (e.g. picrotoxin) Oxygenation [%]
Electrode Internal Solution Ingredient List: [units - Moles?] ATP EGTA HEPES K Cl Mg
Na
pH
Given what we discussed over Zoom - that these fields are subject to change over the next few months as this is tested by the BICCN and the broader community - I think an extension for SolutionComposition or something would be best here. Packaging it into the existing icephys extension would likely delay that extension by several months.
OK, what do you think would be best for the structure of this extension?
Since we are unlikely to capture every ion used in a particular solution, we could use either a DynamicTable or a SolutionComposition group that can hold any number of SolutionIngredient types, like so:
Within /general/intracellular_ephys/:
groups:
- name: electrode_solution
neurodata_type_inc: SolutionComposition
- name: bath_solution
neurodata_type_inc: SolutionComposition
datasets:
- neurodata_type_def: SolutionIngredient
neurodata_type_inc: NWBData
dtype: float
doc: The concentration of a particular ingredient in an intracellular solution.
attributes:
- name: unit
dtype: text
doc: Unit of measurement, which is fixed to 'moles'.
- name: description
dtype: text
doc: Description of the ingredient concentration. Use this field to note any unusual usage.
required: false
groups:
- neurodata_type_def: SolutionComposition
neurodata_type_inc: NWBDataInterface
doc: ...
datasets:
- name: cl
neurodata_type_inc: SolutionIngredient
doc: Chlorine ion concentration, in moles.
quantity: '?'
attributes:
- name: unit
dtype: text
value: moles
doc: Unit of measurement, which is fixed to 'moles'.
- neurodata_type_inc: SolutionIngredient
quantity: '*'
@rly,how do you feel about putting this in the new icephys tables? After talking with @oruebel and @rightbower, we think a more elegant solution might be to put External Solution in the Conditions table and put Internal Solution in the IntracellularElectrodes table
@bendichter That seems reasonable to me! Another approach would be to have SolutionComposition types organized in a group /general/intracellular_ephys/solutions/ and have links from the Conditions and IntracellularElectrodes tables into that group. That might reduce redundancy if the same solution is used across different conditions or electrodes.
I'd also support a simple solution if, like @rly commented above, it didn't delay the icephys extension. Atm the tables allow pretty much any kind of custom metadata. Further refinements of course will be welcome in the future.