forked from LieberInstitute/VistoSeg
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Step4.Rmd
111 lines (84 loc) · 6.73 KB
/
Step4.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# Step 4: GUI to count nuclei in a Visium spot
## spotspotcheck
`spotspotcheck` is a graphical user interface (GUI) designed for:
1. Obtaining the nuclei count per Visium spot and saving it to a `.csv` file.
2. Performing quality check on the nuclei segmentations (from [Step2](http://research.libd.org/VistoSeg/step-2-nuclei-segmentation-of-individual-capture-areas-images.html)) by allowing the user to zoom in/out and toggle between the nuclei segmentation and Visium histology images. The GUI overlays the spot grid on to the Visium histology and segmentation images for the user to clearly see the nuclei inside a spot and visually inspect the results.
3. Allowing the user to search for a spot with its associated barcode ID.
To open the GUI, the [`spotspotcheck`](https://github.com/LieberInstitute/VistoSeg/blob/main/code/spotspotcheck.m) function should be executed in the MATLAB command prompt like below.
```MATLAB
spotspotcheck
loading.....
```
1. **Start Window** : A start window opens up like below. If you do not have the [tissue_spots_counts.csv](https://github.com/LieberInstitute/VistoSeg/blob/main/pipeline_outputs/spotspotcheck/tissue_spot_counts.csv) already, generated from the command line function [countNuclei](https://github.com/LieberInstitute/VistoSeg/blob/main/code/countNuclei.m), the option to `Get Cell Counts` on the window should be checked.
<center>
![](images/start.png)
</center>
Then you hit the `Start` button, which opens up the following window.
2. **Select Histology Image** : This window asks you to select the capture area `.tif` that you want the nuclei counts for, or to perform quality check on nuclei segmentations.
<center>
![](images/Select Histology Image.png)
</center>
Select the capture area `.tif` and hit the `Open` button on window, which opens the following window.
3. **Select Segmented Mat File** : This window asks for the final segmented `.mat` file of the nuclei segmentations.
<center>
![](images/Select segmentation.png)
</center>
Select the [.mat](https://github.com/LieberInstitute/VistoSeg/blob/main/pipeline_outputs/refineVNS/Liebert_Institute_OTS-20-7690_rush_anterior_A1_nuclei.mat) file and hit the `Open` button.
4. **Select Scale Factors JSON File** : Select the [scalefactors_json.json](https://github.com/LieberInstitute/VistoSeg/blob/main/pipeline_outputs/spaceranger/scalefactors_json.json) file with the Visium spot metrics obtained from the [`spaceranger`](https://support.10xgenomics.com/spatial-gene-expression/software/pipelines/latest/what-is-space-ranger) software.
<center>
![](images/select json.png)
</center>
5. **Select Tissue Positions/Spot Counts File** : If the `Get Cell Counts` option is checked in the Start window then select [tissue_positions_list.csv](https://github.com/LieberInstitute/VistoSeg/blob/main/pipeline_outputs/spaceranger/tissue_positions_list.csv) obtained from **Spaceranger**, otherwise select [tissue_spot_counts.csv](https://github.com/LieberInstitute/VistoSeg/blob/main/pipeline_outputs/spotspotcheck/tissue_spot_counts.csv) obtained from [countNuclei](https://github.com/LieberInstitute/VistoSeg/blob/main/code/countNuclei.m) function.
<center>
![](images/select spot counts.png)
</center>
6. The **spotspotcheck** GUI opens up as shown below
<center>
![](images/spotspotcheck.png)
</center>
By clicking anywhere on the image inside the GUI, the user can toggle between the histology and segmented image as shown below.
<center>
![](images/spotspotcheck BW.png)
</center>
The zoom in (symbol of magnifying glass with `+`) option is provided in the menubar at the top of the GUI (Note the position of this option on the GUI may change depending on the version of MATLAB being used, but it is always represented by the `+` symbol). Selecting/clicking this option opens a cursor with `+` symbol, which lets the user select a rectangular region of interest to zoom in to, like the image below. The `Zoom Out` button at the bottom of GUI is used for the images to return to their original size on GUI.
<center>
![](images/zoom in 1.png)
</center>
To toggle between histology/segmented images when zoomed in, the cursor should return to its normal function by un-clicking the zoom in (symbol of magnifying glass with `+`) option.
<img src="images/zoom in 2.png" title="Color cluster 1" width="350"/> <img src="images/zoom in 2 BW.png" title="Indexed object 1" width="350"/>
The dialog box at the bottom of the GUI with the label `Barcode Lookup` provides user to input the barcode ID of the specific Visium spot the user want to look at. For example, if we want to look at the 1st Visium spot on this image, paste the barcode ID of the spot (from [tissue_spot_counts.csv](https://github.com/LieberInstitute/VistoSeg/blob/main/pipeline_outputs/spotspotcheck/tissue_spot_counts.csv)) into the white space and hit the `Lookup` button. It opens up the image where ever this spot is located.
<center>
![](images/Barcode ID.png)
</center>
## countNuclei
This function can be run on MATLAB command prompt to obtain the [tissue_spot_counts.csv](https://github.com/LieberInstitute/VistoSeg/blob/main/pipeline_outputs/spotspotcheck/tissue_spot_counts.csv) file without going through the `spotspotcheck` GUI.
The inputs to the function are:
1. Filename with full path for the `.mat` file of the final nuclei segmentation.
2. Filename with full path for the `scalefactors_json.json` file.
3. Filename with full path for the `tissue_positions_list.csv` file.
```MATLAB
mask = '/path_to_capture_area_segmentation/Lieber_Institute_OTS-20-7690_rush_anterior_A1_nuclei.mat';
jsonname = '/path_to_scalefactors_json/scalefactors_json.json';
posname = '/path_to_tissue_positions_list/tissue_positions_list.csv';
countNuclei(mask,jsonname,posname)
loading data
Elapsed time is 4.216505 seconds.
84385 cells detected
4992 spots detected
counting nuclei per spot
100 spots finished in time 77.1357s
200 spots finished in time 140.8369s
300 spots finished in time 204.5829s
400 spots finished in time 267.4467s
500 spots finished in time 335.6774s
600 spots finished in time 403.0874s
700 spots finished in time 467.4493s
800 spots finished in time 534.8536s
900 spots finished in time 602.1899s
.
.
.
```
The [countNuclei](https://github.com/LieberInstitute/VistoSeg/blob/main/code/countNuclei.m) function generates a nuclei count file listed below. The file is saved in the same path as the [tissue_positions_list.csv](https://github.com/LieberInstitute/VistoSeg/blob/main/pipeline_outputs/spaceranger/tissue_positions_list.csv) that is provided to the function.
Below are the outputs of the [countNuclei](https://github.com/LieberInstitute/VistoSeg/blob/main/code/countNuclei.m) function for the example image.
1. [tissue_spot_counts.csv](https://github.com/LieberInstitute/VistoSeg/blob/main/pipeline_outputs/spotspotcheck/tissue_spot_counts.csv)