Diferencia entre revisiones de «Alexsavio scripts»
De Grupo de Inteligencia Computacional (GIC)
Sin resumen de edición |
|||
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 == | ||
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.