Skip to content

Commit

Permalink
Create specs (#1)
Browse files Browse the repository at this point in the history
* create specs

* add test

* minor fix

* fix typos

* restructure testing

* minor fix

* create DeviceModel

* add OpticalFilter as base calss for BandOpticalFilter and EdgeOpticalFilter

* add a example for magnification field

* minor fixes

* add mermaid entity relationship diagram

* add pulsed excitation source

* add tests for DeviceModel, OpticalFilter and PulsedExcitationSource

* update Entity relationship diagram

* Update spec/ndx-ophys-devices.extensions.yaml

Co-authored-by: Cody Baker <[email protected]>

* separate diagrams

* fix illumination_type doc

* define indicator and effector as nwbcontainer

* minor fix

* remove Microscope object

* remove Microscope object

* remmove tetrode series from example.ipynb

* minor fixes

* change dichroic mirror attribute from bandwidth to band

---------

Co-authored-by: Cody Baker <[email protected]>
  • Loading branch information
alessandratrapani and CodyCBakerPhD authored Aug 27, 2024
1 parent 66b0a09 commit 3a5dc62
Show file tree
Hide file tree
Showing 11 changed files with 1,069 additions and 251 deletions.
208 changes: 208 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,211 @@ 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_brain_region : text, optional
injection_coordinates_in_mm : numeric, length 3, optional
}
class Effector{
<<NWBContainer>>
--------------------------------------
attributes
--------------------------------------
label : text
description : text, optional
manufacturer : text, optional
injection_brain_region : 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_band_in_nm : numeric, optional
transmission_band_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{
<<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
gain_unit : text, false
}
class ObjectiveLens{
<<DeviceModel>>
--------------------------------------
attributes
--------------------------------------
numerical_aperture : numeric, optional
magnification : numeric, optional
}
ExcitationSource *-- DeviceModel : extends
PulsedExcitationSource *-- ExcitationSource : extends
Photodetector *-- DeviceModel : extends
ObjectiveLens *-- DeviceModel : extends
OpticalFilter *-- DeviceModel : extends
BandOpticalFilter *-- OpticalFilter : extends
EdgeOpticalFilter *-- OpticalFilter : extends
DichroicMirror *-- DeviceModel : extends
```
#### 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

0 comments on commit 3a5dc62

Please sign in to comment.