Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
f2b847d
-skull option
davidmeunier79 May 28, 2025
555cbe2
NB
davidmeunier79 May 28, 2025
cf0f16e
``
davidmeunier79 May 28, 2025
e5f807c
|
davidmeunier79 May 28, 2025
8011cc0
Merge branch 'main' of github.com:davidmeunier79/skullTo3d
davidmeunier79 Jun 11, 2025
2b01a25
Merge branch 'main' of github.com:Macatools/skullTo3d
davidmeunier79 Jul 16, 2025
6608428
Merge branch 'main' of github.com:Macatools/skullTo3d
davidmeunier79 Aug 4, 2025
e3a69a3
use_T2
davidmeunier79 Aug 4, 2025
9db8667
useT2
davidmeunier79 Aug 4, 2025
3352bfd
added _1
davidmeunier79 Aug 4, 2025
c427ef9
use FLIRT with possible init directly on stereo
davidmeunier79 Aug 4, 2025
defec4e
FLIRT and init matrix
davidmeunier79 Aug 4, 2025
e16a2d1
align_ct_on_stereo_T1
davidmeunier79 Aug 4, 2025
8926997
cost
davidmeunier79 Aug 4, 2025
d366607
crop_CT
davidmeunier79 Aug 4, 2025
36eaa58
removed useT2
davidmeunier79 Aug 4, 2025
aad4f99
use_T2
davidmeunier79 Aug 4, 2025
9669125
use_T2 for CT flirt
davidmeunier79 Aug 4, 2025
13be805
clean
davidmeunier79 Aug 5, 2025
f796493
fullskull
davidmeunier79 Aug 5, 2025
b285f92
,
davidmeunier79 Aug 5, 2025
66a83ce
if crop_CT flirt to stereo otherwise reg_aladin to native and apply s…
davidmeunier79 Aug 5, 2025
401d386
added t1_head_auto_mask
davidmeunier79 Aug 5, 2025
9eb083e
sample_bins, distance
davidmeunier79 Aug 5, 2025
b33102b
,
davidmeunier79 Aug 5, 2025
d54ac29
adding fullskullmask macaque ants 4animal skullnoisypetra
davidmeunier79 Aug 5, 2025
fb0d524
fullskullmask
davidmeunier79 Aug 5, 2025
a2c68fb
fullskullmask
davidmeunier79 Aug 5, 2025
25bcd29
fullskullmask
davidmeunier79 Aug 5, 2025
c84696e
fullskullmask
davidmeunier79 Aug 5, 2025
6837370
no gcc dilate/erode for T1
davidmeunier79 Aug 5, 2025
c195c42
flake8
davidmeunier79 Aug 6, 2025
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
146 changes: 108 additions & 38 deletions skullTo3d/pipelines/skull_pipe.py
Original file line number Diff line number Diff line change
Expand Up @@ -2164,6 +2164,7 @@ def create_skull_ct_pipe(name="skull_ct_pipe", params={}):
name='outputnode')

if "crop_CT" in params:

print('crop_CT is in params')

assert "args" in params["crop_CT"].keys(), \
Expand All @@ -2182,68 +2183,137 @@ def create_skull_ct_pipe(name="skull_ct_pipe", params={}):
skull_ct_pipe.connect(inputnode, 'ct',
crop_CT, 'in_file')

# align_ct_on_T1
align_ct_on_T1 = pe.Node(interface=RegAladin(),
name="align_ct_on_T1")
align_ct_on_T1 = pe.Node(fsl.FLIRT(), name="align_ct_on_T1")
align_ct_on_T1.inputs.dof = 6

align_ct_on_T1.inputs.rig_only_flag = True
align_ct_on_T1.inputs.cost = 'normmi'

if "crop_CT" in params:
skull_ct_pipe.connect(
crop_CT, "roi_file",
align_ct_on_T1, "flo_file")
else:
align_ct_on_T1, 'in_file')

skull_ct_pipe.connect(
inputnode, 'ct',
align_ct_on_T1, "flo_file")
inputnode, "stereo_T1",
align_ct_on_T1, 'reference')

skull_ct_pipe.connect(inputnode, "native_T1",
align_ct_on_T1, "ref_file")
if "align_ct_on_T1_2" in params:

if "align_ct_on_T1_2" in params:
align_ct_on_T1_2 = pe.Node(fsl.FLIRT(), name="align_ct_on_T1_2")
align_ct_on_T1_2.inputs.dof = 6

# align_ct_on_T1
align_ct_on_T1_2 = pe.Node(interface=RegAladin(),
name="align_ct_on_T1_2")
align_ct_on_T1_2.inputs.cost = 'normmi'

align_ct_on_T1_2.inputs.rig_only_flag = True
skull_ct_pipe.connect(
crop_CT, "roi_file",
align_ct_on_T1_2, 'in_file')

skull_ct_pipe.connect(align_ct_on_T1, 'res_file',
align_ct_on_T1_2, "flo_file")
skull_ct_pipe.connect(
inputnode, "stereo_T1",
align_ct_on_T1_2, 'reference')

skull_ct_pipe.connect(inputnode, "native_T1",
align_ct_on_T1_2, "ref_file")
# initial matrix
skull_ct_pipe.connect(
align_ct_on_T1, "out_matrix_file",
align_ct_on_T1_2, 'in_matrix_file')

# align_ct_on_stereo_T1
align_ct_on_stereo_T1 = pe.Node(
interface=RegResample(pad_val=0.0),
name="align_ct_on_stereo_T1")
if "align_ct_on_T1_2" in params:
skull_ct_pipe.connect(
align_ct_on_T1_2, 'out_file',
outputnode, "stereo_ct")

if "align_ct_on_T1_2" in params:
skull_ct_pipe.connect(align_ct_on_T1_2, 'res_file',
align_ct_on_stereo_T1, "flo_file")
else:
skull_ct_pipe.connect(
align_ct_on_T1, 'out_file',
outputnode, "stereo_ct")

else:
skull_ct_pipe.connect(align_ct_on_T1, 'res_file',
align_ct_on_stereo_T1, "flo_file")

skull_ct_pipe.connect(inputnode, 'native_to_stereo_trans',
align_ct_on_stereo_T1, "trans_file")
# align_ct_on_T1
align_ct_on_T1 = pe.Node(
interface=RegAladin(),
name="align_ct_on_T1")

skull_ct_pipe.connect(inputnode, "stereo_T1",
align_ct_on_stereo_T1, "ref_file")
# output node
skull_ct_pipe.connect(align_ct_on_stereo_T1, "out_file",
outputnode, "stereo_ct")
align_ct_on_T1.inputs.rig_only_flag = True

if "crop_CT" in params:
skull_ct_pipe.connect(
crop_CT, "roi_file",
align_ct_on_T1, "flo_file")
else:
skull_ct_pipe.connect(
inputnode, 'ct',
align_ct_on_T1, "flo_file")

skull_ct_pipe.connect(
inputnode, "native_T1",
align_ct_on_T1, "ref_file")

if "align_ct_on_T1_2" in params:

# align_ct_on_T1
align_ct_on_T1_2 = pe.Node(
interface=RegAladin(),
name="align_ct_on_T1_2")

align_ct_on_T1_2.inputs.rig_only_flag = True

skull_ct_pipe.connect(
align_ct_on_T1, 'res_file',
align_ct_on_T1_2, "flo_file")

skull_ct_pipe.connect(
inputnode, "native_T1",
align_ct_on_T1_2, "ref_file")

# align_ct_on_stereo_T1
align_ct_on_stereo_T1 = pe.Node(
interface=RegResample(pad_val=0.0),
name="align_ct_on_stereo_T1")

if "align_ct_on_T1_2" in params:
skull_ct_pipe.connect(
align_ct_on_T1_2, 'res_file',
align_ct_on_stereo_T1, "flo_file")

else:
skull_ct_pipe.connect(
align_ct_on_T1, 'res_file',
align_ct_on_stereo_T1, "flo_file")

skull_ct_pipe.connect(
inputnode, 'native_to_stereo_trans',
align_ct_on_stereo_T1, "trans_file")

skull_ct_pipe.connect(
inputnode, "stereo_T1",
align_ct_on_stereo_T1, "ref_file")

# output node
skull_ct_pipe.connect(
align_ct_on_stereo_T1, "out_file",
outputnode, "stereo_ct")

if "skullmask_ct_pipe" in params:

skullmask_ct_pipe = _create_skullmask_ct_pipe(
name="skullmask_ct_pipe",
params=params["skullmask_ct_pipe"])

skull_ct_pipe.connect(align_ct_on_stereo_T1, "out_file",
skullmask_ct_pipe, "inputnode.realigned_ct")
if "crop_CT" in params:

if "align_ct_on_T1_2" in params:
skull_ct_pipe.connect(
align_ct_on_T1_2, 'out_file',
skullmask_ct_pipe, "inputnode.realigned_ct")

else:
skull_ct_pipe.connect(
align_ct_on_T1, 'out_file',
skullmask_ct_pipe, "inputnode.realigned_ct")
else:

skull_ct_pipe.connect(align_ct_on_stereo_T1, "out_file",
skullmask_ct_pipe, "inputnode.realigned_ct")

skull_ct_pipe.connect(inputnode, "indiv_params",
skullmask_ct_pipe, "inputnode.indiv_params")
Expand Down
90 changes: 79 additions & 11 deletions workflows/params_segment_macaque_0p5_ants_4animal_skull.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,14 @@
{
"headmask_t1_pipe":
{
"t1_head_auto_mask":
{
"kmeans": true,
"operation": "lower",
"index": 2,
"sample_bins": 30,
"distance": 10
},
"t1_head_dilate":
{
"operation": "modal",
Expand Down Expand Up @@ -114,17 +122,6 @@
"kernel_shape": "boxv",
"kernel_size": 9.0
},
"t1_skull_gcc_erode":
{
"kernel_shape": "boxv",
"kernel_size": 5.0
},
"t1_skull_gcc_dilate":
{
"operation": "modal",
"kernel_shape": "boxv",
"kernel_size": 5.0
},
"t1_skull_dilate":
{
"operation": "modal",
Expand All @@ -140,6 +137,29 @@
{
"brainsize": 45
}
},


"fullskullmask_t1_pipe":
{
"brainmask_expand":
{
"operation": "modal",
"kernel_shape": "boxv",
"kernel_size": 11
},

"fullskull_dilate":
{
"operation": "modal",
"kernel_shape": "boxv",
"kernel_size": 7.0
},
"fullskull_erode":
{
"kernel_shape": "boxv",
"kernel_size": 7.0
}
}
},
"skull_petra_pipe":
Expand Down Expand Up @@ -202,6 +222,28 @@
{
"brainsize": 45
}
},

"fullskullmask_petra_pipe":
{
"brainmask_expand":
{
"operation": "modal",
"kernel_shape": "boxv",
"kernel_size": 11
},

"fullskull_dilate":
{
"operation": "modal",
"kernel_shape": "boxv",
"kernel_size": 7.0
},
"fullskull_erode":
{
"kernel_shape": "boxv",
"kernel_size": 7.0
}
}
},

Expand All @@ -211,6 +253,32 @@
{
},
"skullmask_ct_pipe":
{
"ct_skull_auto_mask":
{
"kmeans": true,
"sample_bins": 30,
"distance": 10,
"operation": "lower",
"index": 2
},
"ct_skull_dilate":
{
"operation" : "modal",
"kernel_shape" : "boxv",
"kernel_size" : 3.0
},
"ct_skull_erode":
{
"kernel_shape" : "boxv",
"kernel_size" : 3.0
},
"ct_skull_fov":
{
"brainsize" : 45
}
},
"skullmask_ct_pipe":
{
"ct_skull_auto_mask":
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,14 @@
{
"headmask_t1_pipe":
{
"t1_head_auto_mask":
{
"kmeans": true,
"operation": "lower",
"index": 2,
"sample_bins": 30,
"distance": 10
},
"t1_head_dilate":
{
"operation": "modal",
Expand Down Expand Up @@ -139,6 +147,28 @@
{
"brainsize": 45
}
},

"fullskullmask_t1_pipe":
{
"brainmask_expand":
{
"operation": "modal",
"kernel_shape": "boxv",
"kernel_size": 11
},

"fullskull_dilate":
{
"operation": "modal",
"kernel_shape": "boxv",
"kernel_size": 7.0
},
"fullskull_erode":
{
"kernel_shape": "boxv",
"kernel_size": 7.0
}
}
},
"skull_petra_pipe":
Expand Down Expand Up @@ -213,6 +243,29 @@
{
"brainsize": 45
}
},


"fullskullmask_petra_pipe":
{
"brainmask_expand":
{
"operation": "modal",
"kernel_shape": "boxv",
"kernel_size": 11
},

"fullskull_dilate":
{
"operation": "modal",
"kernel_shape": "boxv",
"kernel_size": 7.0
},
"fullskull_erode":
{
"kernel_shape": "boxv",
"kernel_size": 7.0
}
}
},

Expand Down
Loading