Skip to content
Snippets Groups Projects
Commit 044c458c authored by Fidel Alfaro Almagro's avatar Fidel Alfaro Almagro :speech_balloon:
Browse files

Correcting generic bugs

parent a1ccf248
No related branches found
No related tags found
No related merge requests found
...@@ -13,9 +13,8 @@ ...@@ -13,9 +13,8 @@
import os import os
import shutil import shutil
import logging import logging
import subprocess
from pipe_tree import In, Out, Ref from pipe_tree import In, Out, Ref
from bip.utils.log_utils import redirect_logging from bip.utils.log_utils import redirect_logging, run_command
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
...@@ -28,25 +27,24 @@ def run(ctx, ...@@ -28,25 +27,24 @@ def run(ctx,
with redirect_logging('FS_proc', outdir=logs_dir): with redirect_logging('FS_proc', outdir=logs_dir):
# We need to delete the folder because otherwise, FreeSurfer complains
if os.path.exists(FreeSurfer_dir): if os.path.exists(FreeSurfer_dir):
shutil.rmtree(FreeSurfer_dir) shutil.rmtree(FreeSurfer_dir)
subjects_dir=os.getcwd() subjects_dir=os.getcwd()
os.environ["SUBJECTS_DIR"] = subjects_dir + "/" + ctx.subject os.environ["SUBJECTS_DIR"] = subjects_dir + "/" + ctx.subject
cmd = 'recon-all -all -s FreeSurfer -i ' + subjects_dir + "/" + T1_unbiased T1_path = subjects_dir + "/" + T1_unbiased
T2_path = subjects_dir + "/" + T2_FLAIR_unbiased
cmd = 'recon-all -all -s FreeSurfer -i ' + T1_path
if os.path.exists(T2_FLAIR_unbiased): if os.path.exists(T2_FLAIR_unbiased):
cmd += " -FLAIR " + subjects_dir + "/" + T2_FLAIR_unbiased + " -FLAIRpial" cmd += " -FLAIR " + T2_path + " -FLAIRpial"
try: output = run_command(log, cmd)
returned_val = subprocess.call(cmd, shell=True)
print(returned_val) log.info(output)
except Exception as e:
print('Command: ' + cmd)
print('Exception type: \t' + str(type(e)))
print('Exception args: \t' + str(e.args))
print('Exception message: \t' + str(e))
#ext_wrappers.recon_all(subjects_dir=os.getcwd(), #ext_wrappers.recon_all(subjects_dir=os.getcwd(),
# directive="all", subjid="FreeSurfer", # directive="all", subjid="FreeSurfer",
......
...@@ -15,7 +15,7 @@ import logging ...@@ -15,7 +15,7 @@ import logging
from shutil import copyfile from shutil import copyfile
from fsl import wrappers from fsl import wrappers
from bip.utils.log_utils import redirect_logging, tempdir from bip.utils.log_utils import redirect_logging, tempdir
from pipe_tree import In, Out, Ref, update_closure from pipe_tree import In, Out, Ref
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
...@@ -35,11 +35,12 @@ def run(ctx, ...@@ -35,11 +35,12 @@ def run(ctx,
T1: Ref, T1: Ref,
tmp_dir: Ref, tmp_dir: Ref,
tmp_T1_prefix: Ref, tmp_T1_prefix: Ref,
transform_outputs: Ref("T1*_to_*")): T1_orig_to_MNI_warp: Out,
T1_orig_ud_to_std_mat: Out,
T1_to_MNI_warp_coef: Out,
T1_to_MNI_warp_jac: Out):
with redirect_logging('T1_brain_extract', outdir=logs_dir),\ with redirect_logging('T1_brain_extract', outdir=logs_dir),tempdir(tmp_dir):
tempdir(tmp_dir),\
update_closure(transform_outputs):
T1_tmp_1 = tmp_dir + '/T1_tmp_1.nii.gz' T1_tmp_1 = tmp_dir + '/T1_tmp_1.nii.gz'
T1_tmp_2 = tmp_dir + '/T1_tmp_2.nii.gz' T1_tmp_2 = tmp_dir + '/T1_tmp_2.nii.gz'
......
...@@ -13,23 +13,26 @@ ...@@ -13,23 +13,26 @@
import logging import logging
from fsl import wrappers from fsl import wrappers
from bip.utils.log_utils import redirect_logging from bip.utils.log_utils import redirect_logging
from pipe_tree import In, Out, Ref, update_closure from pipe_tree import In, Out, Ref
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
def run(ctx, def run(ctx,
T1: In, T1: In,
T1_brain: In, T1_brain: In,
logs_dir: Ref, logs_dir: Ref,
T1_unbiased: Out, T1_fast_dir: Ref,
T1_unbiased_brain: Out, T1_unbiased: Out,
T1_fast_pve_0: Out, T1_unbiased_brain: Out,
T1_fast_pve_1: Out, T1_fast_pve_0: Out,
T1_fast_pve_2: Out, T1_fast_pve_1: Out,
fast_outputs: Out("T1_fast_*")): T1_fast_pve_2: Out,
T1_fast_CSF_mask: Out,
T1_fast_GM_mask: Out,
T1_fast_WM_mask: Out,
T1_fast_brain_bias: Out):
with redirect_logging('T1_fast', outdir=logs_dir),\ with redirect_logging('T1_fast', outdir=logs_dir):
update_closure(fast_outputs):
#Run fast #Run fast
wrappers.fast(T1_brain, out = T1_fast_dir + '/T1_brain', b=True) wrappers.fast(T1_brain, out = T1_fast_dir + '/T1_brain', b=True)
......
...@@ -13,33 +13,33 @@ import logging ...@@ -13,33 +13,33 @@ import logging
from shutil import copyfile from shutil import copyfile
from fsl import wrappers from fsl import wrappers
from bip.utils.log_utils import redirect_logging, tempdir from bip.utils.log_utils import redirect_logging, tempdir
from pipe_tree import In, Out, Ref, update_closure from pipe_tree import In, Out, Ref
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
def run(ctx, def run(ctx,
T1_brain: In, T1_brain: In,
T1_brain_mask: In, T1_brain_mask: In,
T1_orig_ud: In, T1_orig_ud: In,
T1_orig_ud_to_T1_mat: In, T1_orig_ud_to_T1_mat: In,
T1_to_MNI_linear_mat: In, T1_to_MNI_linear_mat: In,
T1_to_MNI_warp: In, T1_to_MNI_warp: In,
T2_FLAIR_orig: In, T2_FLAIR_orig: In,
T2_FLAIR_orig_ud: In, T2_FLAIR_orig_ud: In,
T2_FLAIR_orig_ud_warp: In, T2_FLAIR_orig_ud_warp: In,
T2_FLAIR_brain: Out, T2_FLAIR_brain: Out,
T2_FLAIR_brain_mask: Out, T2_FLAIR_brain_mask: Out,
T2_FLAIR_brain_to_MNI: Out, T2_FLAIR_brain_to_MNI: Out,
T2_FLAIR_to_MNI_linear_mat: Out, T2_FLAIR_to_MNI_linear_mat: Out,
T2_FLAIR_orig_ud_to_T2_FLAIR_mat: Out, T2_FLAIR_orig_ud_to_T2_FLAIR_mat: Out,
T2_FLAIR: Ref, T2_FLAIR_orig_ud_to_MNI_linear_mat: Out,
logs_dir: Ref, T2_FLAIR_orig_to_MNI_warp: Out,
tmp_dir: Ref, T2_FLAIR: Ref,
transform_outputs: Ref("T2_FLAIR*_to_*")): logs_dir: Ref,
tmp_dir: Ref):
with redirect_logging('T2_FLAIR_brain_extract', outdir=logs_dir),\ with redirect_logging('T2_FLAIR_brain_extract', outdir=logs_dir),\
tempdir(tmp_dir),\ tempdir(tmp_dir):
update_closure(transform_outputs):
T2_FLAIR_tmp_1_mat = tmp_dir + '/T2_FLAIR_tmp_1.mat' T2_FLAIR_tmp_1_mat = tmp_dir + '/T2_FLAIR_tmp_1.mat'
T2_FLAIR_tmp_2_mat = tmp_dir + '/T2_FLAIR_tmp_2.mat' T2_FLAIR_tmp_2_mat = tmp_dir + '/T2_FLAIR_tmp_2.mat'
......
#!/usr/bin/env python
#
# logs_utils.py - Tools for logging.
#
# Author: Paul McCarthy <pauldmccarthy@gmail.com>
# Author: Fidel Alfaro Almagro <fidel.alfaroalmagro@ndcn.ox.ac.uk>
# Author: Michiel Cottaar <michiel.cottaar@ndcn.ox.ac.uk>
#
# pylint: disable=C0103,E0602,C0114,C0115,C0116,R0913,R0914,R0915
# pylint: disable=W0613
#
import os import os
import os.path as op import os.path as op
import socket import socket
...@@ -7,9 +18,25 @@ import logging ...@@ -7,9 +18,25 @@ import logging
import traceback import traceback
import contextlib import contextlib
import functools as ft import functools as ft
from subprocess import check_output
from fsl import wrappers from fsl import wrappers
def run_command(logger, command):
try:
logger.info('COMMAND TO RUN: \t' + command.strip())
job_output = check_output(command, shell=True).decode('UTF-8')
logger.info('COMMAND OUTPUT: \t' + job_output.strip())
except Exception as e:
logger.error('Exception raised during: \t' + command.strip())
logger.error('Exception type: \t' + str(type(e)))
logger.error('Exception args: \t' + str(e.args))
logger.error('Exception message: \t' + str(e))
job_output = ""
return job_output.strip()
def create_formatter(): def create_formatter():
"""Create a logging.Formatter. """ """Create a logging.Formatter. """
return logging.Formatter('%(asctime)s ' return logging.Formatter('%(asctime)s '
...@@ -105,12 +132,12 @@ def redirect_logging(name, outdir='.', level=logging.INFO): ...@@ -105,12 +132,12 @@ def redirect_logging(name, outdir='.', level=logging.INFO):
@contextlib.contextmanager @contextlib.contextmanager
def tempdir(dirName): def tempdir(dir_name):
os.makedirs(dirName, exist_ok=True) os.makedirs(dir_name, exist_ok=True)
yield dirName yield dir_name
for fileName in os.listdir(dirName): for file_name in os.listdir(dir_name):
filePath = os.path.join(dirName, fileName) file_path = os.path.join(dir_name, file_name)
try: try:
shutil.rmtree(filePath) shutil.rmtree(file_path)
except OSError: except OSError:
os.remove(filePath) os.remove(file_path)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment