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 specs #1

Merged
merged 25 commits into from
Aug 27, 2024
Merged
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
0a1cb88
create specs
alessandratrapani May 25, 2024
00158e1
add test
alessandratrapani May 25, 2024
97270d4
minor fix
alessandratrapani May 25, 2024
7ae8983
fix typos
alessandratrapani May 25, 2024
d70ab9e
restructure testing
alessandratrapani May 25, 2024
c5eb8a1
minor fix
alessandratrapani May 25, 2024
f5f3846
Merge branch 'main' into create_specs
CodyCBakerPhD May 25, 2024
6014db6
create DeviceModel
alessandratrapani May 27, 2024
d1c59a7
add OpticalFilter as base calss for BandOpticalFilter and EdgeOptical…
alessandratrapani May 27, 2024
273cee0
add a example for magnification field
alessandratrapani May 27, 2024
6296281
minor fixes
alessandratrapani May 27, 2024
c5791ed
add mermaid entity relationship diagram
alessandratrapani May 27, 2024
fd9b78c
add pulsed excitation source
alessandratrapani May 27, 2024
1339c62
add tests for DeviceModel, OpticalFilter and PulsedExcitationSource
alessandratrapani May 27, 2024
486c0a5
update Entity relationship diagram
alessandratrapani May 27, 2024
5122ae8
Update spec/ndx-ophys-devices.extensions.yaml
alessandratrapani May 28, 2024
fadb936
separate diagrams
alessandratrapani May 28, 2024
7c2f36f
fix illumination_type doc
alessandratrapani May 28, 2024
f30c6fb
define indicator and effector as nwbcontainer
alessandratrapani May 28, 2024
1bb58da
minor fix
alessandratrapani May 28, 2024
a426f08
remove Microscope object
alessandratrapani Aug 20, 2024
76d02c7
remove Microscope object
alessandratrapani Aug 20, 2024
1122c78
remmove tetrode series from example.ipynb
alessandratrapani Aug 20, 2024
c5d99e5
minor fixes
alessandratrapani Aug 20, 2024
385bdcc
change dichroic mirror attribute from bandwidth to band
alessandratrapani Aug 27, 2024
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
215 changes: 215 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,218 @@ This is an NWB extension for storing metadata of devices used in optical experim

---
This extension was created using [ndx-template](https://github.com/nwb-extensions/ndx-template).

## Entity relationship diagrams

#### Indicator and Effector

```mermaid
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#ffffff', "primaryBorderColor': '#144E73', 'lineColor': '#D96F32'}}}%%
classDiagram
direction BT
class Indicator{
<<NWBContainer>>
--------------------------------------
attributes
--------------------------------------
label : text
description : text, optional
manufacturer : text, optional
injection_location : text, optional
alessandratrapani marked this conversation as resolved.
Show resolved Hide resolved
injection_coordinates_in_mm : numeric, length 3, optional
CodyCBakerPhD marked this conversation as resolved.
Show resolved Hide resolved
}
class Effector{
<<NWBContainer>>
--------------------------------------
attributes
--------------------------------------
label : text
description : text, optional
manufacturer : text, optional
injection_location : text, optional
injection_coordinates_in_mm : numeric, length 3, optional
}
```
#### Optical Filters

```mermaid
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#ffffff', "primaryBorderColor': '#144E73', 'lineColor': '#D96F32'}}}%%
classDiagram
direction BT
class DeviceModel{
<<Device>>
--------------------------------------
attributes
--------------------------------------
model : text, optional
}
class DichroicMirror{
<<DeviceModel>>
--------------------------------------
attributes
--------------------------------------
cut_on_wavelength_in_nm : numeric, optional
cut_off_wavelength_in_nm : numeric, optional
reflection_bandwidth_in_nm : numeric, optional
transmission_bandwidth_in_nm : numeric, optional
angle_of_incidence_in_degrees : numeric, optional
}
class OpticalFilter{
<<DeviceModel>>
--------------------------------------
attributes
--------------------------------------
filter_type : text, optional
}
class BandOpticalFilter{
<<OpticalFilter>>
--------------------------------------
attributes
--------------------------------------
center_wavelength_in_nm : numeric
bandwidth_in_nm : numeric
}
class EdgeOpticalFilter{
<<OpticalFilter>>
--------------------------------------
attributes
--------------------------------------
cut_wavelength_in_nm : numeric
slope_in_percent_cut_wavelength : numeric, optional
slope_starting_transmission_in_percent : numeric, optional
slope_ending_transmission_in_percent : numeric, optional
}
DichroicMirror *-- DeviceModel : extends
OpticalFilter *-- DeviceModel : extends
BandOpticalFilter *-- OpticalFilter : extends
EdgeOpticalFilter *-- OpticalFilter : extends
```
#### Devices in the microscopy setup
```mermaid
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#ffffff', "primaryBorderColor': '#144E73', 'lineColor': '#D96F32'}}}%%
classDiagram
direction BT
class DeviceModel{
<<Device>>
--------------------------------------
attributes
--------------------------------------
model : text, optional
}
class ExcitationSource{
<<DeviceModel>>
--------------------------------------
attributes
--------------------------------------
illumination_type : text, optional
excitation_wavelength_in_nm : numeric, optional
power_in_W : numeric, optional
intensity_in_W_per_m2 : numeric, optional
exposure_time_in_s : numeric, optional
}
class PulsedExcitationSource{
alessandratrapani marked this conversation as resolved.
Show resolved Hide resolved
<<DeviceModel>>
--------------------------------------
attributes
--------------------------------------
peak_power_in_W : numeric, optional
peak_pulse_energy_in_J : numeric, optional
pulse_rate_in_Hz : numeric, optional
}
class Photodetector{
<<DeviceModel>>
--------------------------------------
attributes
--------------------------------------
detector_type : text, optional
detected_wavelength_in_nm : numeric, optional
gain : numeric, optional
CodyCBakerPhD marked this conversation as resolved.
Show resolved Hide resolved
alessandratrapani marked this conversation as resolved.
Show resolved Hide resolved
}
class ObjectiveLens{
<<DeviceModel>>
--------------------------------------
attributes
--------------------------------------
numerical_aperture : numeric, optional
magnification : numeric, optional
}
class Microscope{
<<DeviceModel>>
--------------------------------------
attributes
--------------------------------------
microscopy_type : text, optional
doi : text, optional
}
ExcitationSource *-- DeviceModel : extends
PulsedExcitationSource *-- ExcitationSource : extends
Photodetector *-- DeviceModel : extends
Microscope *-- DeviceModel : extends
ObjectiveLens *-- DeviceModel : extends
OpticalFilter *-- DeviceModel : extends
BandOpticalFilter *-- OpticalFilter : extends
EdgeOpticalFilter *-- OpticalFilter : extends
DichroicMirror *-- DeviceModel : extends
Comment on lines +157 to +160
Copy link
Member

Choose a reason for hiding this comment

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

Did you intend to duplicate the OpticalFilter and below in both the ophys and fiber photometry?

I think just including it in the separate block above is sufficient unless you also showed how those filters interact as metadata with the other extensions data series (which I think would be better in the respective extensions)

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yes! Agree I can simplify it like this

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I am correcting this in #2

```
#### Devices in the fiber photometry setup
```mermaid
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#ffffff', "primaryBorderColor': '#144E73', 'lineColor': '#D96F32'}}}%%
classDiagram
direction BT
class DeviceModel{
<<Device>>
--------------------------------------
attributes
--------------------------------------
model : text, optional
}
class OpticalFiber{
<<DeviceModel>>
--------------------------------------
attributes
--------------------------------------
numerical_aperture : numeric, optional
core_diameter_in_um : numeric, optional
}
class ExcitationSource{
<<DeviceModel>>
--------------------------------------
attributes
--------------------------------------
illumination_type : text, optional
excitation_wavelength_in_nm : numeric, optional
power_in_W : numeric, optional
intensity_in_W_per_m2 : numeric, optional
exposure_time_in_s : numeric, optional
}
class PulsedExcitationSource{
<<DeviceModel>>
--------------------------------------
attributes
--------------------------------------
peak_power_in_W : numeric, optional
peak_pulse_energy_in_J : numeric, optional
pulse_rate_in_Hz : numeric, optional
}
class Photodetector{
<<DeviceModel>>
--------------------------------------
attributes
--------------------------------------
detector_type : text, optional
detected_wavelength_in_nm : numeric, optional
gain : numeric, optional
}
ExcitationSource *-- DeviceModel : extends
PulsedExcitationSource *-- ExcitationSource : extends
Photodetector *-- DeviceModel : extends
OpticalFiber *-- DeviceModel : extends
DichroicMirror *-- DeviceModel : extends
OpticalFilter *-- DeviceModel : extends
BandOpticalFilter *-- OpticalFilter : extends
EdgeOpticalFilter *-- OpticalFilter : extends
```

## Contributing

Add a comment on how to contribute to this extension
Loading
Loading