Skip to content
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

create json schema for electrophysiology metadata #18

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
145 changes: 145 additions & 0 deletions Data-Standards/Patch-Seq/electrophysiology-metadata-schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "electrophysiology-metadata-schema.json",
"title": "Intracellular electrophysiology metadata",
"description": "Formal description of the IC Ephys Metadata List",
"author": "Ben Dichter",
"contact": "[email protected]",
"version": "0.1.0",
"type": "object",
"required": [
"species",
"subject id",
"subject age",
"subject sex",
"subject date of birth",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Many groups will not be able to supply this, what is the failure mode if they cannot and this is required? N/A?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One thing that might be possible to require that all groups could supply is age category.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The point of this document is to guide researchers to what data they should record (and to come to a common consensus about it). Maybe we don't have date_of_birth for old data, but we should be able to collect it for future sessions.

I don't really like the idea of filler for required fields. We have optional fields and if we want to make this optional we can do that. But whatever fields we mark as required, there will of course be datasets that are missing it, and what to do in those cases is more of a policy question. I prefer having minimal rules and enforcing them strictly rather than having strict rules and enforcing them leniently, but there will probably be a mix of both. Ultimately, we'll need to come up with a strategy that promotes adherence to these rules with minimal hindering of data sharing.

I do think it is a bit redundant to have subject_age and subject_date_of_birth.

What do you mean by age category? Is that something we can standardize across groups?

"citation policy",
"institution",
"genotype",
"cre line",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"cre line",
"cre line",
"driver line",

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How does making this required interact with mice that are wildtype?

"external solution recipe",
"recording temperature",
"electrode resistance",
"electrode internal solution recipe",
"specimen id",
"electrode id",
"stimulus electrode id",
"stimulus id",
"stimulus type name"
],
"properties": {
"species": {"type": "string"},
"subject id": {"type": "string"},
"subject age": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Using ISO 8601 duration"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How does this handle ages reported as P14?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does P14 mean 14 days after birth? Then age in ISO 8106 would be P14D.

},
"type": {
"type": "string",
"description": "Fetal age or birth age.",
"default": "birth"
}
}
},
"subject sex": {"type": "string"},
"subject date of birth": {"type": "string", "format": "datetime"},
"specimen id": {"type": "string"},
"citation_policy": {"type": "string"},
"institution": {"type": "string"},
"genotype": {"type": "string"},
"cre line": {"type": "string"},
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggest requiring an RRID here given that we have already gotten agreement that mice in published papers be registered with MGI.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seems reasonable to me, but I don't know much about RRID usage within BICCN

"external solution recipe": {"type": "string"},
"recording temperature": {"type": "number", "description": "temperature of bath in Celsius"},
"electrode id": {"type": "string"},
"electrode resistance": {"type": "number", "description": "Electrode resistance in MOhms"},
"electrode internal solution recipe": {"type": "string"},
"current clamp amp settings":
{
"allOf": [
{ "$ref": "#/definitions/amp settings" },
{
"required": [
"bridge balance enabled",
"fast capacitance compensation enabled",
"leak current enabled",
"leak current value"
],
"properties": {
"bridge balance enabled": {"type": "boolean"},
"bridge balance value": {"type": "number", "description": "in MOhs"},
"fast capacitance compensation enabled": {"type": "boolean"},
"fast capacitance compensation value": {"type": "number", "description": "in MOhms"},
"leak current enabled": {"type": "boolean"},
"leak current value": {"type": "number"},
"pipette capacitance neutralization": {"type": "number", "description": "in pF"},
"pipette offset": {"type": "number", "description": "in nA"}
}
}
]
},
"voltage clamp amp settings":
{
"allOf": [
{ "$ref": "#/definitions/amp settings" },
{
"required": [
"whole cell capacitance compensation enabled",
"electrode capacitance compensation enabled",
"series resistance correction enabled"
],
"properties":
{
"whole cell capacitance compensation enabled": {"type": "boolean"},
"whole cell capacitance compensation value": {"type": "number", "description": "in pF"},
"whole cell capacitance compensation resistance": {"type": "number", "description": "in MOhms"},
"electrode capacitance compensation enabled": {"type": "boolean"},
"electrode capacitance compensation value - fast": {"type": "number", "description": "in pF"},
"electrode capacitance compensation value - slow": {"type": "number", "description": "in pF"},
"electrode capacitance compensation - fast - time constant": {"type": "number", "description": "in µs"},
"electrode capacitance compensation - slow - time constant": {"type": "number", "description": "in µs"},
"series resistance correction enabled": {"type": "boolean"},
"series resistance correction value": {"type": "number", "description": "ratio"},
"series resistance correction prediction": {"type": "number", "description": "ratio"},
"series resistance bandwidth": {"type": "number", "description": "in kHz"},
"pipette offset": {"type": "number", "description": "in mV"},
"leak subtraction": {"type": "number", "description": "in MOhms"}
}
}
]
},
"stimulus type name": {"type": "string"},
"stimulus id": {"type": "string"},
"stimulus electrode id": {"type": "string"},
"cell location": {"type": "string"},
"electrode-zeroed bias current": {"type": "string", "description": " in pA"},
"initial access resistance": {"type": "number", "description": "in MOhms"},
"tight seal resistance": {"type": "number", "description": "in MOhms"},
"input resistance": {"type": "number", "description": "in MOhms"}
},
"definitions":
{
"amp settings": {
"type": "object",
"required": [
"gain",
"output high pass cutoff frequency",
"output high pass filter type",
"output low pass cutoff frequency",
"output low pass filter type",
"holding"
],
"properties": {
"gain": {"type": "number"},
"output low pass filter type": {"type": "string"},
"output low pass cutoff frequency": {"type": "number"},
"output high pass filter type": {"type": "string"},
"output high pass cutoff frequency": {"type": "number"},
"holding": {"type": "number", "description": "in mV"},
"output zero/zero offset": {"type": "number", "description": "in mV"}
}
}
}
}