Diferencia entre revisiones de «Alexsavio scripts»
De Grupo de Inteligencia Computacional (GIC)
Sin resumen de edición |
|||
| (No se muestran 2 ediciones intermedias del mismo usuario) | |||
| Línea 1: | Línea 1: | ||
#!/usr/bin/python | |||
#------------------------------------------------------------------------------- | |||
#License GPL v3.0 | |||
#Author: Alexandre Manhaes Savio <alexsavio@gmail.com> | |||
#Grupo de Inteligencia Computational <www.ehu.es/ccwintco> | |||
#Universidad del Pais Vasco UPV/EHU | |||
#Use this at your own risk! | |||
#------------------------------------------------------------------------------- | |||
import sys | |||
import argparse | |||
import numpy as np | |||
import nibabel as nib | |||
import scipy.ndimage as scn | |||
#------------------------------------------------------------------------------- | |||
def set_parser(): | |||
parser = argparse.ArgumentParser(description='Empties each ROI in the 3D input volume and saves the result in the output volume.') | |||
parser.add_argument('-i', '--in', dest='input', required=True, help='input file') | |||
parser.add_argument('-o', '--out', dest='output', required=True, help='output file') | |||
return parser | |||
#------------------------------------------------------------------------------- | |||
def add_extension_if_needed (fpath, ext, check_if_exists=False): | |||
if fpath.find(ext) < 0: | |||
fpath += ext | |||
if check_if_exists: | |||
if not os.path.exists (fpath): | |||
err = 'File not found: ' + fpath | |||
raise IOError(err) | |||
return fpath | |||
#------------------------------------------------------------------------------- | |||
def main(argv=None): | |||
parser = set_parser() | |||
try: | |||
args = parser.parse_args () | |||
except argparse.ArgumentError, exc: | |||
print (exc.message + '\n' + exc.argument) | |||
parser.error(str(msg)) | |||
return 0 | |||
ifname = args.input.strip() | |||
ofname = args.output.strip() | |||
ofname = add_extension_if_needed(ofname, '.nii.gz') | |||
aff = nib.load(ifname).get_affine() | |||
vol = nib.load(ifname).get_data() | |||
out = np.zeros(vol.shape, dtype=vol.dtype) | |||
if vol.ndim == 2: | |||
kernel = np.ones([3,3], dtype=int) | |||
elif vol.ndim == 3: | |||
kernel = np.ones([3,3,3], dtype=int) | |||
elif vol.ndim == 4: | |||
kernel = np.ones([3,3,3,3], dtype=int) | |||
vals = np.unique(vol) | |||
vals = vals[vals != 0] | |||
for i in vals: | |||
roi = vol == i | |||
hits = scn.binary_hit_or_miss (roi, kernel) | |||
roi[hits] = 0 | |||
out[roi > 0] = i | |||
== FSL Tools == | == FSL Tools == | ||
=== create_mean_template.sh === | |||
#!/bin/bash | #!/bin/bash | ||
| Línea 149: | Línea 222: | ||
rm $temp_csf | rm $temp_csf | ||
rm $temp_grey | rm $temp_grey | ||
echo $cont files processed. | echo $cont files processed. | ||
Revisión actual - 10:35 24 jul 2012
- !/usr/bin/python
- -------------------------------------------------------------------------------
- License GPL v3.0
- Author: Alexandre Manhaes Savio <alexsavio@gmail.com>
- Grupo de Inteligencia Computational <www.ehu.es/ccwintco>
- Universidad del Pais Vasco UPV/EHU
- Use this at your own risk!
- -------------------------------------------------------------------------------
import sys import argparse import numpy as np import nibabel as nib import scipy.ndimage as scn
- -------------------------------------------------------------------------------
def set_parser():
parser = argparse.ArgumentParser(description='Empties each ROI in the 3D input volume and saves the result in the output volume.')
parser.add_argument('-i', '--in', dest='input', required=True, help='input file')
parser.add_argument('-o', '--out', dest='output', required=True, help='output file')
return parser
- -------------------------------------------------------------------------------
def add_extension_if_needed (fpath, ext, check_if_exists=False):
if fpath.find(ext) < 0:
fpath += ext
if check_if_exists:
if not os.path.exists (fpath):
err = 'File not found: ' + fpath
raise IOError(err)
return fpath
- -------------------------------------------------------------------------------
def main(argv=None):
parser = set_parser()
try:
args = parser.parse_args ()
except argparse.ArgumentError, exc:
print (exc.message + '\n' + exc.argument)
parser.error(str(msg))
return 0
ifname = args.input.strip() ofname = args.output.strip()
ofname = add_extension_if_needed(ofname, '.nii.gz')
aff = nib.load(ifname).get_affine() vol = nib.load(ifname).get_data() out = np.zeros(vol.shape, dtype=vol.dtype)
if vol.ndim == 2:
kernel = np.ones([3,3], dtype=int)
elif vol.ndim == 3:
kernel = np.ones([3,3,3], dtype=int)
elif vol.ndim == 4:
kernel = np.ones([3,3,3,3], dtype=int)
vals = np.unique(vol) vals = vals[vals != 0]
for i in vals:
roi = vol == i
hits = scn.binary_hit_or_miss (roi, kernel)
roi[hits] = 0
out[roi > 0] = i
FSL Tools
create_mean_template.sh
#!/bin/bash
#This script reads all images from the $subjs_root directory and creates a new smoothed image with the mean intensity value of all the images.
subjs_root=../Female/original
target_dir=$PWD
cd $subjs_root
cont=0
subj_num=`ls *t88_gfc*hdr | wc -l`
template=template.nii.gz
temp=temp.nii.gz
if [ -f $template ]
then
rm -f $template
fi
if [ -f $temp ]
then
rm -f $temp
fi
ls *hdr | while read vol;
do
cont=$(($cont + 1))
echo $cont - $vol
if [ -f $template ]
then
tmp=`fslstats $vol -r`
max_intensity=${tmp:`expr index "$tmp" ' '`:${#tmp}}
fslmaths -dt double $vol -div $subj_num $temp
fslmaths -dt double $temp -add $template $template -odt double
else
tmp=`fslstats $vol -r`
max_intensity=${tmp:`expr index "$tmp" ' '`:${#tmp}}
fslmaths -dt double $vol -div $subj_num $template
fi
done
cont=`ls *hdr | wc -l`
#smooth
fslmaths $template -kernel gauss 2 -fmean $template
mv $template $target_dir
rm -f $temp
echo $cont files processed.
create_tissue_prob_maps.sh
#!/bin/bash
subjs_root=../Female/segmented
target_dir=$PWD
cd $subjs_root
cont=0
white_map=white.nii.gz
grey_map=grey.nii.gz
csf_map=csf.nii.gz
temp_white=temp_white.nii.gz
temp_grey=temp_grey.nii.gz
temp_csf=temp_csf.nii.gz
if [ -f $white_map ]
then
rm $white_map
fi
if [ -f $grey_map ]
then
rm $grey_map
fi
if [ -f $csf_map ]
then
rm $csf_map
fi
ls *hdr | while read vol;
do
cont=$(($cont + 1))
echo $cont - $vol
#obtain white matter
fslmaths $vol -thr 3 -bin $temp_white
#obtain csf
fslmaths $vol -uthr 1 -bin $temp_csf
#obtain grey
fslmaths $vol -thr 2 $temp_grey
fslmaths $temp_grey -uthr 2 -bin $temp_grey
#sum white
if [ -f $white_map ]
then
fslmaths $white_map -add $temp_white $white_map
else
cp $temp_white $white_map
fi
if [ -f $grey_map ]
then
fslmaths $grey_map -add $temp_grey $grey_map
else
cp $temp_grey $grey_map
fi
if [ -f $csf_map ]
then
fslmaths $csf_map -add $temp_csf $csf_map
else
cp $temp_csf $csf_map
fi
done
cont=`ls *hdr | wc -l`
#normalize
fslmaths -dt float $white_map -div $cont $white_map -odt float
fslmaths -dt float $grey_map -div $cont $grey_map -odt float
fslmaths -dt float $csf_map -div $cont $csf_map -odt float
#smooth
fslmaths $white_map -kernel gauss 2 -fmean $white_map
fslmaths $grey_map -kernel gauss 2 -fmean $grey_map
fslmaths $csf_map -kernel gauss 2 -fmean $csf_map
#move to target directory
mv $white_map $target_dir
mv $grey_map $target_dir
mv $csf_map $target_dir
rm $temp_white
rm $temp_csf
rm $temp_grey
echo $cont files processed.