Skip to content

Add barseq acquisition#1690

Open
dougollerenshaw wants to merge 11 commits into1642-create-instrumentjson-generator-for-barseqfrom
add_barseq_acquisition
Open

Add barseq acquisition#1690
dougollerenshaw wants to merge 11 commits into1642-create-instrumentjson-generator-for-barseqfrom
add_barseq_acquisition

Conversation

@dougollerenshaw
Copy link
Contributor

Work in progress. Lots of ancillary files that we won't actually want in the repo. Remove before merging.

"dx.doi.org/10.17504/protocols.io.n2bvj82q5gk5/v1",
"dx.doi.org/10.17504/protocols.io.81wgbp4j3vpk/v2"
],
"ethics_review_id": [
Copy link
Collaborator

Choose a reason for hiding this comment

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

there is no iacuc for in vitro experiments.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Removed in c0e949b

"PLACEHOLDER_EXPERIMENTER_1",
"PLACEHOLDER_EXPERIMENTER_2"
],
"protocol_id": [
Copy link
Collaborator

Choose a reason for hiding this comment

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

why two protocols for the same thing? And why not our own protocol: https://www.protocols.io/view/barseq-2-5-kqdg3ke9qv25/v1

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Those two protocols came from the methods doc that Polina shared. I didn't know about this one. Will add instead.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

See 4ab930b

Copy link
Collaborator

Choose a reason for hiding this comment

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

maybe confirm first. This is the protocol Yoh uses, so there might be a chance it's not the same?
But, the two protocols you had at first, one was an update of the other, so we should only use the one that's being used.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Polina confirmed that this new protocol is the correct one.

{
"object_type": "Channel",
"channel_name": "Gene_G",
"intended_measurement": "Gene sequencing - DNA base G",
Copy link
Collaborator

Choose a reason for hiding this comment

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

this is not an appropriate intended measurement. DNA Base G is not a gene.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

See change here:
4f6f2c9

"channels": [
{
"object_type": "Channel",
"channel_name": "Gene_G",
Copy link
Collaborator

Choose a reason for hiding this comment

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

Same as next comment: G is not a gene.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

See change here: 4f6f2c9

},
{
"object_type": "Channel",
"channel_name": "Gene_DAPI",
Copy link
Collaborator

Choose a reason for hiding this comment

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

same here. Dapi is not a gene

Copy link
Contributor Author

Choose a reason for hiding this comment

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

See change here: 4f6f2c9

}
],
"coordinate_system": null,
"images": [],
Copy link
Collaborator

Choose a reason for hiding this comment

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

this needs to be populated. This is what is being imaged.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

See 3824c9e

],
"connections": []
},
{
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'm not sure there should be multiple data streams here. (and I'm not sure there shouldn't, but thinking out loud here). Each round of imaging creates a new image, so I would argue each round of imaging is a separate acquisition. We could decide each round is a separate data stream - that could work.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I don't have an opinion here. Just need some guidance on how to implement whatever is most sensible.

Copy link
Collaborator

Choose a reason for hiding this comment

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

If each round creates a distinct raw asset, then each round is a separate acquisition. We need to know how that works.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm not quite sure what to do with that comment. Can you help me turn that into a concrete change to make to the acquisition generator and/or a question to pose to Polina or Xiaoyin?

Are you saying that we should actually be creating three different acquistion.json files?

],
"instrument_id": "Dogwood",
"acquisition_type": "BarcodeSequencing",
"notes": "BARseq acquisition of Locus Coeruleus for noradrenergic neuron projection mapping. Specimen: 51 coronal sections (20μm) spanning CCF plates 99-112. Subject 780346 received Sindbis HZ120 virus injection 22-28h pre-harvest. BARseq experiment performed using automation template mounted on microscope. Automated microfluidics setup for reagent delivery.",
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'm generally not excited about having notes that contain the information we're trying to encode in the metadata because it enables people to develop bad habits of parsing notes instead of using the metadata properly. Likewise below.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Notes are less verbose now. I can remove them entirely if you'd prefer.

Copy link
Collaborator

@saskiad saskiad left a comment

Choose a reason for hiding this comment

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

see comments

],
"code": null,
"notes": "Gene barcode sequencing (7 cycles) using sequential base incorporation imaging",
"active_devices": [
Copy link
Collaborator

Choose a reason for hiding this comment

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

I don't think we need to list things like objective or spinning disk or filters. The things that have configs or are creating data. So cameras, lasers,

Copy link
Contributor Author

Choose a reason for hiding this comment

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

For filters, there's a field for "emission_filters" in the channel configs. See: https://aind-data-schema.readthedocs.io/en/latest/components/configs.html#channel

And they have a "device_name" field. See https://aind-data-schema.readthedocs.io/en/latest/components/configs.html#deviceconfig

As it stands, the device_names in the emission_filters align with the names in the active_devices. Is this not necessary? Should I retain the names in "emission_filters" and drop them from active_devices, or drop them in both places?

}
],
"code": null,
"notes": "Gene barcode sequencing (7 cycles) using sequential base incorporation imaging",
Copy link
Collaborator

Choose a reason for hiding this comment

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

This note feels weird to me - I would think saying something like cycle 1 of 7 makes sense, but this isn't the entire 7 cycles, is it?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That came from this line in the methods doc that Polina shared:
image

I'm open to any wording here or removing entirely. Let me know what you think makes sense.

"configurations": [
{
"object_type": "Imaging config",
"device_name": "Ti2-E__0",
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'm not sure what device this is - the main microscope? Is this the correct device to pin to? We can use the instrument itself (correct me if I'm wrong @dbirman)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That is the device name for the Microscope in the instrument:

image

Copy link
Member

Choose a reason for hiding this comment

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

I think the imaging config here should point to the full instrument_id in this case.

Copy link
Contributor Author

@dougollerenshaw dougollerenshaw Jan 17, 2026

Choose a reason for hiding this comment

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

So the field name should say "device_name": "Dogwood"?

Copy link
Member

Choose a reason for hiding this comment

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

Yep!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done. See e80306e

"channels": [
{
"object_type": "Channel",
"channel_name": "GeneSeq_G",
Copy link
Collaborator

Choose a reason for hiding this comment

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

This is a preference thing, but I would name the channel around the color if that's possible and leave the meaning to the intended measurement.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

We don't yet have the mapping for base to wavelength. And even when we do, I'm afraid there might be some subjectivity in how color names are mapped to wavelength.

I think we have 3 options:

  1. Leave as is (channel identifies base being imaged)
  2. Name channels with wavelength (precise, but maybe not intuitive)
  3. Name channels with color. If we do this, I'll need guidance on how to assign color names.

{
"object_type": "Channel",
"channel_name": "GeneSeq_G",
"intended_measurement": "Fluorescent signal from sequencing reaction indicating guanine incorporation",
Copy link
Collaborator

Choose a reason for hiding this comment

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

Might be better to make this less verbose.

Copy link
Collaborator

Choose a reason for hiding this comment

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

I think "Guanine" is sufficient, personally.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done. See b29bf11

},
{
"object_type": "Channel",
"channel_name": "GeneSeq_DAPI",
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'd remove "GeneSeq" since DAPI is not part of the sequencing.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Switched to just "DAPI". See 58759e6

Copy link
Collaborator

@saskiad saskiad left a comment

Choose a reason for hiding this comment

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

More comments - great job on the imaging config. I think the big question is about whether each round is a distinct raw asset or not.

@dougollerenshaw
Copy link
Contributor Author

More comments - great job on the imaging config. I think the big question is about whether each round is a distinct raw asset or not.

How do we resolve that question? Does it come down to how data is actually stored? Do we need to reach out to Xiaoyin or someone else?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants