nwb-schema icon indicating copy to clipboard operation
nwb-schema copied to clipboard

solution composition

Open bendichter opened this issue 5 years ago • 6 comments

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

bendichter avatar Feb 22 '20 03:02 bendichter

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.

rly avatar Mar 16 '20 17:03 rly

OK, what do you think would be best for the structure of this extension?

bendichter avatar Mar 16 '20 18:03 bendichter

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 avatar Mar 16 '20 19:03 rly

@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 avatar Mar 17 '20 21:03 bendichter

@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.

rly avatar Mar 18 '20 03:03 rly

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.

lvsltz avatar Mar 18 '20 17:03 lvsltz