... | @@ -31,11 +31,12 @@ td { |
... | @@ -31,11 +31,12 @@ td { |
|
|
|
|
|
# Microscopy Pipeline Constructor (MyPiC)
|
|
# Microscopy Pipeline Constructor (MyPiC)
|
|
|
|
|
|
MyPiC is a Visual Basic for Application (VBA) macro to be used with Zeiss confocal microscopes running with the ZEN software (version black).
|
|
MyPiC is a Visual Basic for Application (VBA) macro to be used with Zeiss confocal microscopes running with the ZEN software (version black). The macro has been developed in the group of Jan Ellenberg, EMBL, Heidelberg and replaces the AutofocusScreenMacro.
|
|
|
|
|
|
The macro allows
|
|
The macro allows
|
|
|
|
|
|
* Autofocus based on reflection and fluorescence multi-location time series
|
|
* Autofocus based on reflection and fluorescence multi-location time series
|
|
* Fluorescence based “Object” Tracking
|
|
* Fluorescence based tracking using center of mass of fluorescence signal
|
|
* Multi-location time-lapse experiments
|
|
* Multi-location time-lapse experiments
|
|
* Flexible combination of several independent Z-stack and channel settings
|
|
* Flexible combination of several independent Z-stack and channel settings
|
|
* Flexible combination of several fluorescence correlation spectroscopy (FCS) measurements settings
|
|
* Flexible combination of several fluorescence correlation spectroscopy (FCS) measurements settings
|
... | @@ -44,15 +45,15 @@ The macro allows |
... | @@ -44,15 +45,15 @@ The macro allows |
|
|
|
|
|
|
|
|
|
> **Disclaimer:**
|
|
> **Disclaimer:**
|
|
> MyPiC for ZEN has been extensively tested on Zeiss LSM 780 microscopes with ZEN 2010, 2011, and 2012, and LSM880 microscopes with ZEN2.1 and ZEN2.3. We don’t guarantee that it will work on other configurations and we don’t take any responsibility for damage occuring during or after use of MyPiC.
|
|
> MyPiC for ZEN has been tested on Zeiss LSM 780 microscopes with ZEN 2010, 2011, and 2012, and LSM880 microscopes with ZEN2.1 and ZEN2.3. We don’t guarantee that it will work on other configurations and we don’t take any responsibility for damage occuring during or after use of MyPiC.
|
|
|
|
|
|
## Definitions
|
|
## Definitions
|
|
Throughout this manual we will use following naming conventions:
|
|
Throughout this manual we will use following naming definitions
|
|
|
|
|
|
* **Imaging job**<a name = "imagingjob"></a>: Contains settings used for imaging. They are defined by laser used, Z-stack, pixel-dwell time etc. Basically anything you can define in the ZEN software.
|
|
* **Imaging job**<a name = "imagingjob"></a>: Stores specific settings for imaging. The settings include laser power, Z-stack, pixel-dwell time etc. In principle anything you can define in the ZEN software.
|
|
* **FCS job**<a name = "fcsjob"></a>: Contains settings used for FCS
|
|
* **FCS job**<a name = "fcsjob"></a>: Stores specific settings to be used for FCS measurements.
|
|
* **Task**<a name = "task"></a>: An imaging or FCS job assicated or not with additional processing steps, e.g. tracking in XY
|
|
* **Task**<a name = "task"></a>: An imaging or FCS job associated or not with additional processing steps, e.g. tracking in XY.
|
|
* **Pipeline**<a name = "pipeline"></a>: A concatenation of tasks that will be executed one of the other. In MyPiC we have a Default pipeline that is executed at every position and 2 pipelines that can be triggered with external commands (Trigger1 and Trigger2).
|
|
* **Pipeline**<a name = "pipeline"></a>: A concatenation of tasks that will be executed one of the other. In MyPiC we have a Default pipeline that is executed at every position and 2 pipelines that can be triggered with external commands ([Trigger1 and Trigger2](#adaptivefeedback).
|
|
|
|
|
|
## Installation and start
|
|
## Installation and start
|
|
|
|
|
... | @@ -65,11 +66,8 @@ Throughout this manual we will use following naming conventions: |
... | @@ -65,11 +66,8 @@ Throughout this manual we will use following naming conventions: |
|
<img src="./images/assignMacro.PNG" width = "400px"> | provide a *Menu Entry*, a text, and select *PipelineConstructor.lvb* as project.
|
|
<img src="./images/assignMacro.PNG" width = "400px"> | provide a *Menu Entry*, a text, and select *PipelineConstructor.lvb* as project.
|
|
|
|
|
|
|
|
|
|
### Trouble shooting for the installation:
|
|
### Trouble shooting the installation
|
|
For any issues please contact one of the developers (at the moment Antonio Politi, politi@embl.de or the Ellenberg lab at EMBL).
|
|
For any issues please contact one of the developers in the Ellenberg group at EMBL, Heidelberg. For errors that appear in the ErrorLog window please provide the PipelineConstructor.err file and the full version of your ZEN software (Help->About). If you have a ZEN version higher than 2010 and the macro complains that it does not find ```Zeiss.Micro.AIM.ApplicationInterface.dll```, you may need to register it manually.
|
|
For errors that appear in the ErrorLog window please provide the PipelineConstructor.err file
|
|
|
|
and the full version of your ZEN software (Help->About). If you have a ZEN version higher than
|
|
|
|
2010 and the macro complains that it does not find ```Zeiss.Micro.AIM.ApplicationInterface.dll```, you may need to register it manually.
|
|
|
|
|
|
|
|
You can try this to fix
|
|
You can try this to fix
|
|
|
|
|
... | @@ -88,9 +86,9 @@ You can try this to fix |
... | @@ -88,9 +86,9 @@ You can try this to fix |
|
|
|
|
|
# <a name="back"></a> Setting up an experiment with MyPiC
|
|
# <a name="back"></a> Setting up an experiment with MyPiC
|
|
|
|
|
|
After the MyPiC has started the user needs to proceed through several steps before starting an experiment.
|
|
After MyPiC has started the user needs to proceed through several steps before starting an experiment.
|
|
|
|
|
|
1. [Load jobs in the JobSetter] (#jobsetter)
|
|
1. [Load/create jobs using JobSetter] (#jobsetter)
|
|
* [Load/create imaging jobs] (#jobsetterimaging)
|
|
* [Load/create imaging jobs] (#jobsetterimaging)
|
|
* [Load/create FCS jobs (optional)](#jobsetterfcs)
|
|
* [Load/create FCS jobs (optional)](#jobsetterfcs)
|
|
2. [Add jobs to the Default pipeline](#default)
|
|
2. [Add jobs to the Default pipeline](#default)
|
... | @@ -111,23 +109,23 @@ The **JobSetter** is started by clicking on the corresponding button (1) *JobSet |
... | @@ -111,23 +109,23 @@ The **JobSetter** is started by clicking on the corresponding button (1) *JobSet |
|
|
|
|
|
<div align = "center"><img src="./images/PipCon_upperpart.PNG"> </div>
|
|
<div align = "center"><img src="./images/PipCon_upperpart.PNG"> </div>
|
|
|
|
|
|
In the JobSetter window the user can create several [imaging jobs](#imagingjob) and [FCS jobs](#fcsjob) to be used in one or several [pipelines](#pipeline). The user choose imaging and/or FCS settings in ZEN and then upload the settings into VBA macro as a job. Imaging jobs can also be created by loading a set of microscopy images (.czi or .lsm) previously acquired on the same microscope.
|
|
In the JobSetter window the user can create several [imaging](#imagingjob) and [FCS](#fcsjob) jobs to be used in one or several [pipelines](#pipeline). The user specify acquisition settings within ZEN and then upload the settings into the VBA macro as a job. Imaging jobs can also be created by loading a set of microscopy images (.czi or .lsm) previously acquired on the same microscope.
|
|
|
|
|
|
|
|
|
|
> **Caution** Loading setting from images acquired on a different microscope may not work and may impair/harm the system.
|
|
> **Caution** Do not load settings from images acquired on a different microscope. This may not work and impair the functionality of the system.
|
|
|
|
|
|
### <a name=jobsetterimaging></a> Load/create imaging jobs
|
|
### <a name=jobsetterimaging></a> Load/create imaging jobs
|
|
|
|
|
|
JobSetter imaging jobs | Explanations of the buttons
|
|
JobSetter imaging jobs | Explanations of the buttons
|
|
-------| -------------
|
|
-------| -------------
|
|
<img src="./images/jobSetter.PNG" width = "400px">| 1. Create a new job with current imaging settings. <br /> 2. Load imaging jobs from saved images (.czi or .lsm). <br/> 3. Change name of current job (highlighted job). <br/> 4. Acquire all or one jobs and save images to a file. <br/> 5. Remove a job from the list. <br/> 6. Update current job with settings from ZEN. <br/> 7. Load settings of current job into ZEN. <br/> 8. Stop acquisition. <br/> 9. Acquire current job. <br/> 10. List of available jobs. <br/> 11. Short description of current job. <br/> 12. Available tracks for current job.
|
|
<img src="./images/jobSetter.PNG" width = "400px">| 1. Create a new job with current imaging settings <br /> 2. Load imaging jobs from saved images (.czi or .lsm) <br/> 3. Change name of current job (highlighted job) <br/> 4. Acquire all or one jobs and save images to disk <br/> 5. Remove a job from the list <br/> 6. Update current job with settings from ZEN <br/> 7. Load settings of current job into ZEN <br/> 8. Stop acquisition <br/> 9. Acquire current job <br/> 10. List of available jobs <br/> 11. Short description of current highlighted job <br/> 12. Available tracks for current job
|
|
|
|
|
|
#### Remarks for the imaging settings
|
|
#### Remarks for the imaging settings
|
|
|
|
|
|
* **Z-stack**: Use the option *Center* instead of *First\Last*, this has proven to be more reliable in the macro. This option is accessed when pressing the *Show all* option in the Z-stack menu-bar. Recenter the stack before loading into MyPiC
|
|
* **Z-stack**: Use the option *Center* instead of *First\Last*, this has proven to be more reliable in the macro. This option is accessed when pressing the *Show all* option in the Z-stack menu-bar. Recenter the stack before loading into MyPiC
|
|
* **Time-lapse**: The macro has its own time-lapse. For each time point an image is acquired and saved. However, the user can still load a job that contains Time-series. This can be useful for specific workflows (see Workflow examples).
|
|
* **Time-lapse**: The macro has its own time-lapse mode. For each time point an image is acquired and saved. However, the user can still load a job that contains Time-series. This can be useful for specific workflows (see [Workflow examples](./workflows_examples.md)).
|
|
* **Multi-position**: The macro allows the user to define a multi-position experiment. Multi-position defined within ZEN is allowed, however in this case the position in the macro should be set to single-position (see also Workflow examples).
|
|
* **Multi-position**: The macro allows the user to define a multi-position experiment. Multi-position defined within ZEN is allowed, however in this case the position in the macro should be set to single-position (see [Workflow examples](./workflows_examples.md)).
|
|
* **Definite Focus**: If the microscope has Zeiss Definite focus this can be be specified for a specific job. The position of focus stabilizer will then be initiated at the current position in the macro. For examples see Workflow examples.
|
|
* **Definite Focus**: If the microscope has Zeiss *Definite focus* this can be be used within the macro. However note that the position of focus stabilizer will be initiated at the current position stored in the macro (see [Workflow examples](./workflows_examples.md)).
|
|
* **Combine several imaging settings**: To minimize the hardware time-overhead it is best to optimize the different imaging settings so that the least hardware parts (e.g. MBS, pinhole) are modified between imaging jobs.
|
|
* **Combine several imaging settings**: To minimize the hardware time-overhead it is best to optimize the different imaging settings so that the least hardware parts (e.g. MBS, pinhole) are modified between imaging jobs.
|
|
|
|
|
|
### <a name=jobsetterfcs></a> Load/create FCS jobs
|
|
### <a name=jobsetterfcs></a> Load/create FCS jobs
|
... | @@ -136,7 +134,7 @@ For FCS jobs the loading is similar as for imaging jobs. However, you can't load |
... | @@ -136,7 +134,7 @@ For FCS jobs the loading is similar as for imaging jobs. However, you can't load |
|
|
|
|
|
JobSetter FCS jobs | Explanations of the buttons
|
|
JobSetter FCS jobs | Explanations of the buttons
|
|
-------| -------------
|
|
-------| -------------
|
|
<img src="./images/jobSetter_FCS.PNG" width = "400px"> | 1. Switch tab to load jobs for FCS. <br /> 2. Add an FCS job. ZEN asks to save the light-path configuration. <br/>3. Change name of FCS job. <br/> 4. Remove current FCS job. <br/> 5. Update current job with settings from ZEN. <br/> 6. Load settings of current job into ZEN. <br/> 7. Stop acquisition. <br/> 8. Acquire current job. <br/> 9. List of available jobs. <br/> 10. Short description of current job.
|
|
<img src="./images/jobSetter_FCS.PNG" width = "400px"> | 1. Switch tab to load jobs for FCS <br /> 2. Add an FCS job. ZEN asks the user to save the light-path configuration <br/>3. Change name of FCS job <br/> 4. Remove current FCS job <br/> 5. Update current job with settings from ZEN. ZEN asks the user to save the light-path configuration <br/> 6. Load settings of current job into ZEN <br/> 7. Stop acquisition <br/> 8. Acquire current FCS measurement <br/> 9. List of available FCS jobs <br/> 10. Short description of current job
|
|
|
|
|
|
## [<img src="./images/up.PNG">](#back)<a name=default></a> Add jobs to the Default pipeline
|
|
## [<img src="./images/up.PNG">](#back)<a name=default></a> Add jobs to the Default pipeline
|
|
In a pipeline the users specifies the sequential order of imaging and FCS jobs previously loaded into the macro using the JobSetter. For FCS jobs, FCS positions need to be specified via the adaptive feedback method otherwise the FCS measurement will not be acquired. The ***Default*** pipeline is the imaging workflow executed at every position and repetition.
|
|
In a pipeline the users specifies the sequential order of imaging and FCS jobs previously loaded into the macro using the JobSetter. For FCS jobs, FCS positions need to be specified via the adaptive feedback method otherwise the FCS measurement will not be acquired. The ***Default*** pipeline is the imaging workflow executed at every position and repetition.
|
... | @@ -209,7 +207,7 @@ DE_WXXXX |
... | @@ -209,7 +207,7 @@ DE_WXXXX |
|
DE_WXXXX_PYYYY
|
|
DE_WXXXX_PYYYY
|
|
```
|
|
```
|
|
|
|
|
|
## [<img src="./images/up.PNG">](#startstop) Start and stop acquisition, save and load settings
|
|
## [<img src="./images/up.PNG">](#back) <a name=startstop></a> Start and stop acquisition, save and load settings
|
|
After all the previous steps have been performed, acquisition can be started from the main menu of MyPiC. To reload an experiment without performing every single steps the user requires
|
|
After all the previous steps have been performed, acquisition can be started from the main menu of MyPiC. To reload an experiment without performing every single steps the user requires
|
|
|
|
|
|
* example-files of each [imaging or FCS job](#jobsetter) and the
|
|
* example-files of each [imaging or FCS job](#jobsetter) and the
|
... | @@ -220,7 +218,100 @@ Start stop | Explanations of the buttons |
... | @@ -220,7 +218,100 @@ Start stop | Explanations of the buttons |
|
<img src="./images/pipcon_startstop.PNG" width = "400px"> | 1. Start acquisition <br/> 2. Start acquisition and send commands to LabView water pump controller (optional) <br/> 3. Stop acquisition <br/> 4. Stop acquistion at the end of current repetition <br/> 5. Pause acquisition <br/> 6. Load pipelines settings from ```PipelineConstructor.ini``` file <br/> Save pipeline settings to a specific location <br/> 8. Show online image analysis registry keys
|
|
<img src="./images/pipcon_startstop.PNG" width = "400px"> | 1. Start acquisition <br/> 2. Start acquisition and send commands to LabView water pump controller (optional) <br/> 3. Stop acquisition <br/> 4. Stop acquistion at the end of current repetition <br/> 5. Pause acquisition <br/> 6. Load pipelines settings from ```PipelineConstructor.ini``` file <br/> Save pipeline settings to a specific location <br/> 8. Show online image analysis registry keys
|
|
|
|
|
|
|
|
|
|
|
|
# [<img src="./images/up.PNG">](#back) <a name="adaptivefeedback"></a> Adaptive Feeback Microscopy
|
|
|
|
|
|
|
|
With the adaptive feedback microscopy capability the user can combine online image analysis and image acquisition to perform among other things detection rare events, time-lapse FCS measurement, cell tracking, bleaching experiments. Images are acquired by the microscope and then processed by an image analysis program that is monitoring the arrival of new images to be analysed. After the image has been analysed commands are sent to the microscope in order to start for example an FCS measurement at specific points, a high-resolution 4D imaging, or update the XYZ position for tracking an object in space and time. If the user wish to trigger a different pipeline upon an event detection then the pipeline [Trigger1 and/or Trigger2](#trigger) need to be defined.
|
|
|
|
The communication is through the windows registry, thus any program that can read and write to the windows registry can be used.
|
|
|
|
|
|
|
|
|
|
|
|
## Windows registry
|
|
|
|
|
|
|
|
MyPiC communicates with external programs by reading and writing in the Windows Registry
|
|
|
|
|
|
|
|
```
|
|
|
|
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\OnlineImageAnalysis\macro
|
|
|
|
```
|
|
|
|
|
|
|
|
This occurs for each imaging job when *Online img. analysis* in the Method of [Processing and Tracking](#taskopt) is set. After the acquisition of the corresponding job the key [**CodeMic**](#codemic) will be set to `wait`, [**CodeOia**](#codeoia) to `newImage` and [**filePath**](#filepath) to the name of image to analyze. MyPiC will continuously monitor **CodeMic** until the value changes from `wait` to one of the other possible values. If **CodeMic** is `focus`, `trigger1`, `trigger2` coordinates from keys [**X, Y, Z**](#xyz) and [**FCSX, FCSY, FCSZ**] are read. Via the registry we can also dynamically set bleaching or acquisition [ROIs](#rois) for an automated FRAP experiment. A list of online image analysis keys can be obtained by clicking on the ```Show OIA Keys``` button of the main Macro window.
|
|
|
|
|
|
|
|
<div align='center'>
|
|
|
|
<img src="./images/windowsRegistryCommands.jpg" width = "600px">
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<a name="codemic"></a>
|
|
|
|
#### Key **CodeMic**
|
|
|
|
Contains the commands for the microscope
|
|
|
|
|
|
|
|
Value | Meaning
|
|
|
|
----------- | ------
|
|
|
|
`wait` | do not progress in imaging
|
|
|
|
`error` | the online image analsys pipeline has encountered an error
|
|
|
|
`nothing` | Nothing has been found
|
|
|
|
`trigger1` | Start **Trigger1** imaging using values given in XYZ
|
|
|
|
`trigger2` | Start **Trigger2** imaging using values given in XYZ
|
|
|
|
`focus` | Update XYZ coordinate of current imaging position. This can be used to perform object based tracking
|
|
|
|
`setFcsPos` | Read position(s) for FCS measurement in case a FCS job has been specified from fcsX, fcsY, fcsZ
|
|
|
|
`setRoi` | Read ROIs and update ROIs for subsequent task(s) in pipeline
|
|
|
|
|
|
|
|
<a name="codeoia"></a>
|
|
|
|
####Key **CodeOia**
|
|
|
|
Contains commands for the image analysis program.
|
|
|
|
|
|
|
|
Value | Meaning
|
|
|
|
------ | ------
|
|
|
|
`nothing` | Nothing to do
|
|
|
|
`newImage` | A new image with path filePath needs to be analysed
|
|
|
|
|
|
|
|
<a name="filepath"></a>
|
|
|
|
####Key **filePath**
|
|
|
|
Contains full path of image that needs to be analysed
|
|
|
|
|
|
|
|
Value | Meaning
|
|
|
|
------ | ------
|
|
|
|
`path/to/image` | Path of image to analyse
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a name="xyz"></a>
|
|
|
|
####Keys **XYZ**
|
|
|
|
Specifies stage positions. Coordinates with respect to upper left corner of the image (in pixels) and first slice (0,0,0). Several points are separated by `;`
|
|
|
|
|
|
|
|
Value | Meaning
|
|
|
|
----------- | ------
|
|
|
|
`X1;X2;X3;...` | X positions with respect to left corner in pixels
|
|
|
|
`Y1;Y2;Y3;...` | Y positions with respect to upper corner in pixels
|
|
|
|
`Z1;Z2;Z3;...` | Z positions with respect to bottom slice in pixels
|
|
|
|
|
|
|
|
|
|
|
|
####Keys **fcsX**, **fcsY**, **fcsZ**
|
|
|
|
|
|
|
|
Specifies FCS scanner positions. Coordinates with respect to upper left corner of the image (in pixels) and first slice (0,0,0). Several points are separated by `;`
|
|
|
|
|
|
|
|
|
|
|
|
Value | Meaning
|
|
|
|
----------- | ------
|
|
|
|
`X1;X2;X3;...` | X positions with respect to left corner in pixels
|
|
|
|
`Y1;Y2;Y3;...` | Y positions with respect to upper corner in pixels
|
|
|
|
`Z1;Z2;Z3;...` | Z positions with respect to bottom slice in pixels
|
|
|
|
|
|
|
|
|
|
|
|
<a name="rois"></a>
|
|
|
|
####Keys **roiAim**, **roiType**, **roiX**, **roiY**
|
|
|
|
A ROI is defined by 4 different keys.
|
|
|
|
|
|
|
|
Value | Meaning
|
|
|
|
----------- | ------
|
|
|
|
`roiAim` | This can take the values `nothing`, `bleach`, `acquisition`, `acquisitionBleach`
|
|
|
|
`roiType` | This can take the values `circle`, `rectangle`, `polyline`, `ellipse`
|
|
|
|
`roiX` | The X coordinates of the ROI (in pixels) separated by a comma.
|
|
|
|
`roiY`| The Y coordinates of the ROI (in pixels) separated by a comma.
|
|
|
|
|
|
|
|
For a circle specify 2 points: the center of the circle and one point on the circle.
|
|
|
|
For a rectangle specify 2 points: the upper left and lower right corners.
|
|
|
|
For a polyline to specify at least 3 points.
|
|
|
|
For an ellipse specify 3 points: the center of the ellipse and a point on axis1 and axis2, respectively.
|
|
|
|
|
|
|
|
## <a name= trigger></a> Trigger1 and Trigger2 pipelines
|
|
|
|
|
|
|
|
The pipelines Trigger1/2 are only executed when the command trigger1 or trigger2 is received through the windows registry. |
|
|
|
\ No newline at end of file |