Skip to content

Commit

Permalink
Merge pull request #369 from DESm1th/missing_fixes
Browse files Browse the repository at this point in the history
[FIX] Add bug fixes that never got committed to main
  • Loading branch information
DESm1th authored Jan 17, 2025
2 parents 9a05db0 + c21ecee commit b1cdb7b
Show file tree
Hide file tree
Showing 2 changed files with 574 additions and 35 deletions.
44 changes: 32 additions & 12 deletions bin/dm_xnat_extract.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,8 @@ def get_bids_config(self, config, bids_conf=None):
def main():
args = read_args()

configure_logging(args.study, args.quiet, args.verbose, args.debug)
log_level = get_log_level(args)
configure_logging(args.study, log_level)

if args.use_dcm2bids and not datman.exporters.DCM2BIDS_FOUND:
logger.error("Failed to import Dcm2Bids. Ensure that "
Expand All @@ -130,6 +131,7 @@ def main():
clobber=args.clobber,
dcm2bids_config=args.dcm_config,
bids_out=args.bids_out,
log_level=log_level,
refresh=args.refresh
)
else:
Expand Down Expand Up @@ -297,17 +299,27 @@ def _is_file(path, parser):
return args


def configure_logging(study, quiet=None, verbose=None, debug=None):
ch = logging.StreamHandler(sys.stdout)
def get_log_level(args):
"""Return a string representing the log level, based on user input.
A string representation of the log level is needed to please dcm2bids :)
"""
if args.quiet:
return "ERROR"

if args.verbose:
return "INFO"

if args.debug:
return "DEBUG"

return "WARNING"

log_level = logging.WARNING
if quiet:
log_level = logging.ERROR
if verbose:
log_level = logging.INFO
if debug:
log_level = logging.DEBUG

def configure_logging(study, log_level):
ch = logging.StreamHandler(sys.stdout)

log_level = getattr(logging, log_level)
logger.setLevel(log_level)
ch.setLevel(log_level)

Expand Down Expand Up @@ -586,7 +598,10 @@ def export_scans(config, xnat, xnat_experiment, session, bids_opts=None,
exporter.export(scan.download_dir)

for exporter in session_exporters:
exporter.export(temp_dir)
try:
exporter.export(temp_dir)
except Exception as e:
logger.error(f"Exporter {exporter} failed - {e}")


def make_session_exporters(config, session, experiment, bids_opts=None,
Expand Down Expand Up @@ -779,7 +794,12 @@ def needs_raw(session_exporters):
def needs_export(session_exporters):
"""Returns True if any session exporters need to be run.
"""
return any([not exp.outputs_exist() for exp in session_exporters])
try:
return any([not exp.outputs_exist() for exp in session_exporters])
except ValueError:
# ValueError is raised when an invalid series number exists on XNAT.
# Skip these sessions
return False


def needs_download(scan, session_exporters, series_exporters):
Expand Down
Loading

0 comments on commit b1cdb7b

Please sign in to comment.