/
base.py
65 lines (52 loc) · 1.92 KB
/
base.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# -*- coding: utf-8 -*-
# emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*-
# vi: set ft=python sts=4 ts=4 sw=4 et:
"""
The workbench module provides classes for interfacing with `connectome workbench
<https://www.humanconnectome.org/software/connectome-workbench>`_ tools.
Connectome Workbench is an open source, freely available visualization and
discovery tool used to map neuroimaging data, especially data generated by the
Human Connectome Project.
"""
import os
import re
from ... import logging
from ...utils.filemanip import split_filename
from ..base import CommandLine, PackageInfo
iflogger = logging.getLogger("nipype.interface")
class Info(PackageInfo):
"""Handle Connectome Workbench version information."""
version_cmd = "wb_command -version"
@staticmethod
def parse_version(raw_info):
m = re.search(r"\nVersion (\S+)", raw_info)
return m.groups()[0] if m else None
class WBCommand(CommandLine):
"""Base support for workbench commands."""
@property
def version(self):
return Info.version()
def _gen_filename(self, name, outdir=None, suffix="", ext=None):
"""Generate a filename based on the given parameters.
The filename will take the form: <basename><suffix><ext>.
Parameters
----------
name : str
Filename to base the new filename on.
suffix : str
Suffix to add to the `basename`. (defaults is '' )
ext : str
Extension to use for the new filename.
Returns
-------
fname : str
New filename based on given parameters.
"""
if not name:
raise ValueError("Cannot generate filename - filename not set")
_, fname, fext = split_filename(name)
if ext is None:
ext = fext
if outdir is None:
outdir = "."
return os.path.join(outdir, fname + suffix + ext)