Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
myosoft-imcf
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Package registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
imcf
myosoft-imcf
Commits
84fad588
Commit
84fad588
authored
4 years ago
by
Kai Schleicher
Browse files
Options
Downloads
Patches
Plain Diff
feature: accepts any roi-set and only searches for central nuclei
parent
8ca6ed3a
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
myosoft-imcf_central_nuclei_counter.py
+6
-67
6 additions, 67 deletions
myosoft-imcf_central_nuclei_counter.py
with
6 additions
and
67 deletions
myosoft-imcf_central_nuclei_counter.py
+
6
−
67
View file @
84fad588
...
...
@@ -24,9 +24,7 @@ import os
#@ Float (label="ROI Shrinking factor", value=0.7) shrink
#@ String (visibility=MESSAGE, value="<html><b> channel positions in the hyperstack </b></html>") msg5
#@ Integer (label="Nucleus staining channel number", style="slider", min=1, max=5, value=3) nucleus_channel
#@ Integer (label="Fiber staining (MHC) channel number", style="slider", min=1, max=5, value=3) fiber_channel
#@ Integer (label="minimum nucleus intensity (0=auto)", description="0 = automatic threshold detection", value=0) min_nucleus_intensity
#@ Integer (label="minimum fiber intensity (0=auto)", description="0 = automatic threshold detection", value=0) min_fiber_intensity
#@ ResultsTable rt
#@ RoiManager rm
...
...
@@ -157,22 +155,6 @@ def measure_in_all_rois( imp, channel, rm ):
rm
.
runCommand
(
imp
,
"
Measure
"
)
def
change_all_roi_color
(
rm
,
color
):
"""
change the color of all ROIs in the RoiManager
Parameters
----------
rm : RoiManager
a reference of the IJ-RoiManager
color : string
the desired color. e.g.
"
green
"
,
"
red
"
,
"
yellow
"
,
"
magenta
"
...
"""
number_of_rois
=
rm
.
getCount
()
for
roi
in
range
(
number_of_rois
):
rm
.
select
(
roi
)
rm
.
runCommand
(
"
Set Color
"
,
color
)
def
change_subset_roi_color
(
rm
,
selected_rois
,
color
):
"""
change the color of selected ROIs in the RoiManager
...
...
@@ -285,38 +267,6 @@ def select_central_nuclei( imp, channel, rm, min_intensity ):
return
selected_rois
def
select_positive_fibers
(
imp
,
channel
,
rm
,
min_intensity
):
"""
For all ROIs in the RoiManager, select ROIs based on intensity measurement in given channel of imp.
See https://imagej.nih.gov/ij/developer/api/ij/process/ImageStatistics.html
Parameters
----------
imp : ImagePlus
the imp on which to measure
channel : integer
the channel on which to measure. starts at 1
rm : RoiManager
a reference of the IJ-RoiManager
min_intensity : integer
the selection criterion (here: intensity threshold)
Returns
-------
array
a selection of ROIs which passed the selection criterion (are above the threshold)
"""
imp
.
setC
(
channel
)
all_rois
=
rm
.
getRoisAsArray
()
selected_rois
=
[]
for
i
,
roi
in
enumerate
(
all_rois
):
imp
.
setRoi
(
roi
)
stats
=
imp
.
getStatistics
()
if
stats
.
mean
>
min_intensity
:
selected_rois
.
append
(
i
)
return
selected_rois
def
open_rois_from_zip
(
rm
,
path
):
"""
open RoiManager ROIs from zip and adds them to the RoiManager
...
...
@@ -423,10 +373,12 @@ raw_image_title = fix_BF_czi_imagetitle(raw)
# take care of paths and directories
output_dir
=
os
.
path
.
dirname
(
str
(
roi_zip
))
input_roi_zip
=
os
.
path
.
basename
(
str
(
roi_zip
))
output_dir
=
fix_ij_dirs
(
output_dir
)
input_rois_path
=
output_dir
+
input_roi_zip
# open ROIS and show on image
open_rois_from_zip
(
rm
,
out
put_
dir
+
"
all_fiber_rois.zip
"
)
open_rois_from_zip
(
rm
,
in
put_
rois_path
)
show_all_rois_on_image
(
rm
,
raw
)
# update the log for the user
...
...
@@ -435,17 +387,9 @@ if raw_image_calibration.scaled() == False:
IJ
.
log
(
"
Your image is not spatially calibrated! Size measurements are only possible in [px].
"
)
IJ
.
log
(
"
-- settings used --
"
)
IJ
.
log
(
"
ROI Shrinking factor =
"
+
str
(
shrink
)
)
IJ
.
log
(
"
Selected fiber-ROIs zip-file =
"
+
str
(
roi_zip
)
)
IJ
.
log
(
"
Selected fiber-ROIs zip-file =
"
+
str
(
input_rois_path
)
)
IJ
.
log
(
"
-- settings used --
"
)
# check for positive fibers
if
min_fiber_intensity
==
0
:
min_fiber_intensity
=
get_threshold_from_method
(
raw
,
fiber_channel
,
"
Mean
"
)[
0
]
IJ
.
log
(
"
fiber intensity threshold:
"
+
str
(
min_fiber_intensity
)
)
positive_fibers
=
select_positive_fibers
(
raw
,
fiber_channel
,
rm
,
min_fiber_intensity
)
save_selected_rois
(
rm
,
positive_fibers
,
output_dir
+
"
mhc_positive_fiber_rois.zip
"
)
# shrink ROIs and look for nuclei
rm
.
hide
()
raw
.
hide
()
...
...
@@ -460,19 +404,14 @@ if min_nucleus_intensity == 0:
central_nuclei_fibers
=
select_central_nuclei
(
raw
,
nucleus_channel
,
rm
,
min_nucleus_intensity
)
save_selected_rois
(
rm
,
central_nuclei_fibers
,
output_dir
+
"
central_nuclei_fiber_rois.zip
"
)
clear_ij_roi_manager
(
rm
)
open_rois_from_zip
(
rm
,
output_dir
+
"
all_fiber_rois.zip
"
)
change_all_roi_color
(
rm
,
"
blue
"
)
positive_fibers_with_central_nucleus
=
list
(
set
(
positive_fibers
).
intersection
(
central_nuclei_fibers
)
)
change_subset_roi_color
(
rm
,
positive_fibers
,
"
magenta
"
)
change_subset_roi_color
(
rm
,
positive_fibers_with_central_nucleus
,
"
yellow
"
)
open_rois_from_zip
(
rm
,
input_rois_path
)
change_subset_roi_color
(
rm
,
central_nuclei_fibers
,
"
yellow
"
)
save_all_rois
(
rm
,
output_dir
+
"
all_fiber_rois_central_nuclei_color-coded.zip
"
)
# measure size & shape, add column for pos nuclei and fiber findings, save
IJ
.
run
(
"
Set Measurements...
"
,
"
area perimeter shape feret
'
s redirect=None decimal=4
"
)
IJ
.
run
(
"
Clear Results
"
,
""
)
measure_in_all_rois
(
raw
,
nucleus_channel
,
rm
)
preset_results_column
(
rt
,
"
MHC Positive Fibers (magenta)
"
,
"
NO
"
)
add_results
(
rt
,
"
MHC Positive Fibers (magenta)
"
,
positive_fibers
,
"
YES
"
)
preset_results_column
(
rt
,
"
Centralized Nuclei (yellow)
"
,
"
NO
"
)
add_results
(
rt
,
"
Centralized Nuclei (yellow)
"
,
central_nuclei_fibers
,
"
YES
"
)
rt
.
save
(
output_dir
+
"
centralized_nuclei_results.csv
"
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment