def make(commit=DEFAULT_HASH):
    """Downloads a lean version of tract_querier. Output is '$soft/tract_querier-<commit>'."""

    if commit != 'master':
        out = get_path(commit)
        if checkExists(out):
            return

    with local.tempdir() as tmpdir, local.cwd(tmpdir):
        repo = downloadGithubRepo(REPO, commit)
        sha, date = getCommitInfo(repo)
        out = get_path(sha)
        if checkExists(out):
            return

        # save space
        (repo / 'doc').delete()
        (repo / '.git').delete()

        log.info("Make '{out}'".format(**locals()))
        repo.move(out)

    with open(out / 'env.sh', 'w') as f:
        f.write("export PATH={}:$PATH\n".format(out / 'scripts'))
        f.write("export PYTHONPATH={}:$PYTHONPATH\n".format(out))
    date_symlink = get_path(date)
    date_symlink.unlink()
    out.symlink(date_symlink)
Exemple #2
0
def make(commit=DEFAULT_HASH):

    softdir = getSoftDir()

    if commit != 'master':
        if checkExists(get_path(commit)):
            return

    blddir = softdir / "UKFTractography-build"

    with local.cwd(softdir):
        repo = downloadGithubRepo('pnlbwh/ukftractography', commit)
    sha, date = getCommitInfo(repo)

    outbinary = get_path(sha)

    if checkExists(outbinary):
        return

    logging.info("Build code:")

    blddir.mkdir()
    with local.cwd(blddir):
        cmake(repo)
        import plumbum.cmd
        plumbum.cmd.make['-j', psutil.cpu_count(logical=False)] & FG

    binary1 = blddir / 'ukf/bin/UKFTractography'
    binary2 = blddir / 'UKFTractography-build/UKFTractography/bin/UKFTractography'  # later commits
    binary = binary1 if binary1.exists() else binary2

    outbinary.dirname.mkdir()

    binary.move(outbinary)
    # chmod('a-w', outbinary)

    with open(outbinary.dirname / 'env.sh', 'w') as f:
        f.write("export PATH={}:$PATH".format(outbinary.dirname))

    symlink = get_path(date).dirname
    print("Make symlink: {} -> {}".format(symlink, get_path(sha).dirname))
    symlink.unlink()
    get_path(sha).dirname.symlink(symlink)

    blddir.delete()

    logging.info("Made '{}'".format(outbinary))
    logging.info("Made '{}'".format(get_path(date)))
Exemple #3
0
def make(version=DEFAULT_VERSION):
    if checkExists(get_path(version)):
        return
    with TemporaryDirectory() as tmpdir, local.cwd(tmpdir):
        d = downloadGithubArchive(GITHUB_REPO, 'v' + version)
        d.move(get_path(version))
        log.info("Made '{}'".format(get_path(version)))
def make(hash=DEFAULT_HASH):
    if hash != 'master':
        if checkExists(get_path(hash)):
            return

    with local.tempdir() as tmpdir, local.cwd(tmpdir):
        repo = downloadGithubRepo('reckbo/nrrdchecker', hash)
        sha, date = getCommitInfo(repo)
        with local.cwd(repo):
            if on_partners_cluster():
                import os
                os.system('module load stack')
            from plumbum.cmd import stack
            stack['setup'] & FG
            stack['build'] & FG
            binary = stack('exec', 'which', 'nrrdchecker')[:-1]
            get_path(sha).dirname.mkdir()
            local.path(binary).move(get_path(sha))

        symlink = get_path(date).dirname
        print("Make symlink: {} -> {}".format(symlink, get_path(sha).dirname))
        symlink.unlink()
        get_path(sha).dirname.symlink(symlink)

        logger.info("Made '{}'".format(get_path(sha)))
        logger.info("Made '{}'".format(symlink))
Exemple #5
0
def make(commit=DEFAULT_HASH):

    softdir = getSoftDir()

    if commit != 'master':
        if checkExists(get_path(commit)):
            return

    blddir = softdir / "dcm2niix-build"

    with local.cwd(softdir):
        repo = downloadGithubRepo('rordenlab/dcm2niix', commit)
    sha, date = getCommitInfo(repo)

    outbinary = get_path(sha)

    if checkExists(outbinary):
        return

    logging.info("Build code:")

    blddir.mkdir()
    with local.cwd(blddir):
        cmake(repo, "-DUSE_STATIC_RUNTIME:BOOL=OFF")
        import plumbum.cmd
        plumbum.cmd.make['-j', psutil.cpu_count(logical=False)] & FG

    binary = blddir / 'bin/dcm2niix'

    outbinary.dirname.mkdir()

    binary.move(outbinary)
    # chmod('a-w', outbinary)

    with open(outbinary.dirname / 'env.sh', 'w') as f:
        f.write("export PATH={}:$PATH".format(outbinary.dirname))

    symlink = get_path(date).dirname
    print("Make symlink: {} -> {}".format(symlink, get_path(sha).dirname))
    symlink.unlink()
    get_path(sha).dirname.symlink(symlink)

    blddir.delete()

    logging.info("Made '{}'".format(outbinary))
    logging.info("Made '{}'".format(get_path(date)))
Exemple #6
0
def make(hash=DEFAULT_HASH):
    if checkExists(get_path(hash)):
        return

    with TemporaryDirectory() as tmpdir, local.cwd(tmpdir):
        tmpdir = local.path(tmpdir)
        repo = downloadGithubRepo('MRtrix3/mrtrix3', hash)
        sha, date = getCommitInfo(repo)
        with local.cwd(repo):
            os.system('./configure')
            os.system('./build')
            os.system('mv ./release {}'.format(get_path(hash)))
        get_path(hash).symlink(get_path(date))
Exemple #7
0
def make(version=DEFAULT_VERSION):
    if not URL.get(version):
        logging.error(
            "No download link set for '{}' in pnlpipe_software/Slicer.py")
        sys.exit(1)
    if checkExists(get_path(version)):
        return
    with TemporaryDirectory() as tmpdir, local.cwd(tmpdir):
        tmpdir = local.path(tmpdir)
        wget[URL.get(version), '-O', 'slicer.tar.gz'] & FG
        tar['zxvf', 'slicer.tar.gz'] & FG
        (tmpdir // 'Slicer-*')[0].move(getDir(version))
        logging.info("Made '{}'".format(get_path(version)))
def make(commit=DEFAULT_HASH):
    """Downloads whitematteranalysis. Output is '$soft/whitematteranalysis-<commit>'."""
    dest = getSoftDir()

    if commit != 'master':
        out = get_path(commit)
        if checkExists(out):
            return

    with local.tempdir() as tmpdir, local.cwd(tmpdir):
        repo = downloadGithubRepo(REPO, commit)
        sha, date = getCommitInfo(repo)
        out = get_path(sha)
        if checkExists(out):
            return

        # save space
        (repo / 'tests').delete()
        (repo / '.git').delete()

        logging.info("Make '{out}'".format(**locals()))
        repo.move(out)

    # chmod('-R', 'a-w', out)
    # chmod('a-w', out)
    with open(out / 'env.sh', 'w') as f:
        f.write("export PATH={}:$PATH\n".format(out / 'bin'))
        f.write("export PYTHONPATH={}:$PYTHONPATH\n".format(out))

    # compile cython files
    with local.cwd(out):
        from plumbum.cmd import python
        python['setup.py', 'build_ext', '--inplace'] & FG

    date_symlink = get_path(date)
    date_symlink.unlink()
    out.symlink(date_symlink)
Exemple #9
0
def installTraining(repo, commit):
    dest = getSoftDir()
    if commit == 'master':
        logging.error(
            'installing master not implemented yet for training repos, specify github hash'
        )
        import sys
        sys.exit(1)

    out = local.path(dest / repo + '-' + commit)
    if checkExists(out):
        return

    archive = downloadGithubArchive('pnlbwh/' + repo, commit)
    archive.move(out)

    with local.cwd(out):
        from plumbum.cmd import bash
        bash('./mktrainingcsv.sh', '.')
Exemple #10
0
def make(commit=DEFAULT_HASH):

    softdir = getSoftDir()

    blddir = softdir / "ANTs-build"

    with local.cwd(softdir):
        repo = downloadGithubRepo('ANTsX/ANTs', commit)
    sha, date = getCommitInfo(repo)

    out = get_path(sha)
    # if output binary directory already exists, then return
    if checkExists(out):
        return

    logging.info("Build code:")

    blddir.mkdir()
    with local.cwd(blddir):
        cmake(repo)
        import plumbum.cmd
        plumbum.cmd.make['-j', psutil.cpu_count(logical=False)] & FG

    # copy ANTs scripts
    cp('-a', (softdir / 'ANTs' / 'Scripts').list(),
       blddir / 'ANTS-build' / 'Examples')

    # move binary directory
    (blddir / 'ANTS-build' / 'Examples').move(out)

    # write PATH and ANTSPATH
    with open(out / 'env.sh', 'w') as f:
        f.write("export PATH={}:$PATH\n".format(out))
        f.write("export ANTSPATH={}\n".format(out))

    # generate symbolink links
    symlink = get_path(date)
    print("Make symlink: {} -> {}".format(symlink, get_path(sha)))
    symlink.unlink()
    get_path(sha).symlink(symlink)

    logging.info("Made '{}'".format(out))
Exemple #11
0
def make(commit=DEFAULT_HASH, delete=False):
    """Downloads and compiles BRAINSTools binaries. Output is '$soft/BRAINSTools-bin-<hash>'."""

    if os.getenv("CONDA_PREFIX"):
        # add CONDA_PREFIX paths to the compiler flags so we prefer conda's includes and libs
        conda_prefix = os.getenv("CONDA_PREFIX")
        build_flags = " -I{conda_prefix}/include -L{conda_prefix}/lib".format(conda_prefix=conda_prefix)

        cflags = os.getenv("CFLAGS") + " " + build_flags
        cxxflags = os.getenv("CXXFLAGS") + " " + build_flags
        local.env["CFLAGS"] = cflags
        local.env["CXXFLAGS"] = cxxflags
        local.env["ICU_ROOT_DIR"] = conda_prefix
        local.env["ICU_ROOT"] = conda_prefix

    dest = getSoftDir()

    if commit != 'master':
        out = dest / ('BRAINSTools-bin-'+commit)
        if checkExists(out):
            return

    blddir = dest / "BRAINSTools-build"
    with local.cwd(dest):
        repo = downloadGithubRepo('BRAINSia/BRAINSTools', commit)
    sha, date = getCommitInfo(repo)

    out = dest / ('BRAINSTools-bin-'+sha)
    symlink = dest / ('BRAINSTools-bin-'+date)
    symlink.unlink()

    log.info("Make '{}'".format(out))
    log.info("Make '{}'".format(symlink))

    if checkExists(out):
        return

    logging.info("Build code:")
    blddir.mkdir()
    with local.cwd(blddir):
        cmake(repo
        ,"-DBRAINSTools_INSTALL_DEVELOPMENT=OFF"
        ,"-DBRAINSTools_MAX_TEST_LEVEL=0"
        ,"-DBRAINSTools_SUPERBUILD=ON"
        ,"-DBRAINSTools_USE_QT=OFF"
        ,"-DBRAINS_DEBUG_IMAGE_WRITE=OFF"
        ,"-DBUILD_STYLE_UTILS=OFF"
        ,"-DBUILD_TESTING=OFF"
        ,"-DCMAKE_BUILD_TYPE=Release"
        ,"-DCMAKE_COLOR_MAKEFILE=ON"
        ,"-DCMAKE_EXE_LINKER_FLAGS=' '"
        ,"-DCMAKE_EXE_LINKER_FLAGS_DEBUG="
        ,"-DCMAKE_EXE_LINKER_FLAGS_MINSIZEREL="
        ,"-DCMAKE_EXE_LINKER_FLAGS_RELEASE="
        ,"-DCMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO="
        ,"-DCMAKE_EXPORT_COMPILE_COMMANDS=OFF"
        ,"-DCMAKE_INSTALL_PREFIX:PATH=/usr/local"
        ,"-DCMAKE_MODULE_LINKER_FLAGS=' '"
        ,"-DCMAKE_MODULE_LINKER_FLAGS_DEBUG="
        ,"-DCMAKE_MODULE_LINKER_FLAGS_MINSIZEREL="
        ,"-DCMAKE_MODULE_LINKER_FLAGS_RELEASE="
        ,"-DCMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO="
        ,"-DCMAKE_PROJECT_NAME:STATIC=SuperBuild_BRAINSTools"
        ,"-DCMAKE_SHARED_LINKER_FLAGS=' '"
        ,"-DCMAKE_SHARED_LINKER_FLAGS_DEBUG="
        ,"-DCMAKE_SHARED_LINKER_FLAGS_MINSIZEREL="
        ,"-DCMAKE_SHARED_LINKER_FLAGS_RELEASE="
        ,"-DCMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO="
        ,"-DCMAKE_SKIP_INSTALL_RPATH=NO"
        ,"-DCMAKE_SKIP_RPATH=NO"
        ,"-DCMAKE_STATIC_LINKER_FLAGS="
        ,"-DCMAKE_STATIC_LINKER_FLAGS_DEBUG="
        ,"-DCMAKE_STATIC_LINKER_FLAGS_MINSIZEREL="
        ,"-DCMAKE_STATIC_LINKER_FLAGS_RELEASE="
        ,"-DCMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO="
        ,"-DCMAKE_USE_RELATIVE_PATHS=OFF"
        ,"-DCMAKE_VERBOSE_MAKEFILE=FALSE"
        ,"-DCOVERAGE_EXTRA_FLAGS=-l"
        ,"-DCTEST_SUBMIT_RETRY_COUNT=3"
        ,"-DCTEST_SUBMIT_RETRY_DELAY=5"
        ,"-DDART_TESTING_TIMEOUT=1500"
        ,"-DEXTERNAL_PROJECT_BUILD_TYPE=Release"
        ,"-DFORCE_EXTERNAL_BUILDS=OFF"
        ,"-DITK_VERSION_MAJOR=4"
        ,"-DSuperBuild_BRAINSTools_BUILD_DICOM_SUPPORT=ON"
        ,"-DSuperBuild_BRAINSTools_USE_CTKAPPLAUNCHER=OFF"
        ,"-DSuperBuild_BRAINSTools_USE_GIT_PROTOCOL=ON"
        ,"-DUSE_ANTS=ON"
        ,"-DUSE_AutoWorkup=OFF"
        ,"-DUSE_BRAINSABC=OFF"
        ,"-DUSE_BRAINSConstellationDetector=OFF"
        ,"-DUSE_BRAINSContinuousClass=OFF"
        ,"-DUSE_BRAINSCreateLabelMapFromProbabilityMaps=OFF"
        ,"-DUSE_BRAINSCut=OFF"
        ,"-DUSE_BRAINSDWICleanup=OFF"
        ,"-DUSE_BRAINSDemonWarp=OFF"
        ,"-DUSE_BRAINSFit=OFF"
        ,"-DUSE_BRAINSInitializedControlPoints=OFF"
        ,"-DUSE_BRAINSLabelStats=OFF"
        ,"-DUSE_BRAINSLandmarkInitializer=OFF"
        ,"-DUSE_BRAINSMultiModeSegment=OFF"
        ,"-DUSE_BRAINSMultiSTAPLE=OFF"
        ,"-DUSE_BRAINSMush=OFF"
        ,"-DUSE_BRAINSPosteriorToContinuousClass=OFF"
        ,"-DUSE_BRAINSROIAuto=OFF"
        ,"-DUSE_BRAINSResample=OFF"
        ,"-DUSE_BRAINSSnapShotWriter=OFF"
        ,"-DUSE_BRAINSStripRotation=OFF"
        ,"-DUSE_BRAINSSurfaceTools=OFF"
        ,"-DUSE_BRAINSTalairach=OFF"
        ,"-DUSE_BRAINSTransformConvert=OFF"
        ,"-DUSE_ConvertBetweenFileFormats=ON"
        ,"-DUSE_DWIConvert=ON"
        ,"-DUSE_DebugImageViewer=OFF"
        ,"-DUSE_GTRACT=OFF"
        ,"-DUSE_ICCDEF=OFF"
        ,"-DUSE_ImageCalculator=OFF"
        ,"-DUSE_ReferenceAtlas=OFF"
        ,"-DUSE_SYSTEM_DCMTK=OFF"
        ,"-DUSE_SYSTEM_ITK=OFF"
        ,"-DUSE_SYSTEM_SlicerExecutionModel=OFF"
        ,"-DUSE_SYSTEM_VTK=OFF"
        ,"-DVTK_GIT_REPOSITORY=git://vtk.org/VTK.git"
        )
        import plumbum.cmd
        plumbum.cmd.make['-j', psutil.cpu_count(logical=False)] & FG
    (blddir / 'bin').move(out)
    with open(blddir / 'ANTs/Scripts/antsRegistrationSyN.sh', 'r') as src:
        with open(out / 'antsRegistrationSyN.sh', 'w') as dest:
            for idx, line in enumerate(src):
                if idx == 0:
                    dest.write('#!/usr/bin/env bash')
                else:
                    dest.write(line)
    st = os.stat(str(out / 'antsRegistrationSyN.sh'))
    os.chmod(str(out / 'antsRegistrationSyN.sh'), st.st_mode | stat.S_IEXEC)
    # (blddir / 'ANTs/Scripts/antsRegistrationSyN.sh').copy(out)
    with open(out / 'env.sh', 'w') as f:
        f.write("export PATH={}:$PATH\n".format(out))
        f.write("export ANTSPATH={}\n".format(out))
    # chmod('a-w', out.glob('*'))
    # chmod('a-w', out)
    symlink.unlink()
    out.symlink(symlink)
    if sys.flags.interactive:
        if input("Delete build directory? [y/N]") == "y":
            blddir.delete()
    log.info("Made '{}'".format(get_path(sha)))
    log.info("Made '{}'".format(symlink))
def make(commit=DEFAULT_HASH, delete=False):
    """Downloads and compiles BRAINSTools binaries. Output is '$soft/BRAINSTools-bin-<hash>'."""

    dest = getSoftDir()

    if commit != 'master':
        out = dest / ('BRAINSTools-bin-' + commit)
        if checkExists(out):
            return

    blddir = dest / "BRAINSTools-build"
    with local.cwd(dest):
        repo = downloadGithubRepo('BRAINSia/BRAINSTools', commit)

    for line in fileinput.input(repo / 'SuperBuild' / 'External_ITKv5.cmake',
                                inplace=True):
        print(line.replace('itk.org', 'github.com/InsightSoftwareConsortium'),
              end='')

    sha, date = getCommitInfo(repo)

    out = dest / ('BRAINSTools-bin-' + sha)
    symlink = dest / ('BRAINSTools-bin-' + date)
    symlink.unlink()

    log.info("Make '{}'".format(out))
    log.info("Make '{}'".format(symlink))

    if checkExists(out):
        return

    logging.info("Build code:")
    blddir.mkdir()
    with local.cwd(blddir):
        cmake(
            repo, "-DBRAINSTools_BUILD_DICOM_SUPPORT:BOOL=OFF",
            "-DBRAINSTools_MAX_TEST_LEVEL:STRING=0",
            "-DBRAINSTools_REQUIRES_VTK:BOOL=OFF",
            "-DBRAINSTools_USE_CTKAPPLAUNCHER:BOOL=OFF",
            "-DBUILD_TESTING:BOOL=OFF", "-DUSE_ANTS:BOOL=OFF",
            "-DUSE_AutoWorkup:BOOL=OFF", "-DUSE_BRAINSABC:BOOL=OFF",
            "-DUSE_BRAINSConstellationDetector:BOOL=OFF",
            "-DUSE_BRAINSDWICleanup:BOOL=OFF", "-DUSE_BRAINSFit:BOOL=OFF",
            "-DUSE_BRAINSInitializedControlPoints:BOOL=OFF",
            "-DUSE_BRAINSLabelStats:BOOL=OFF",
            "-DUSE_BRAINSLandmarkInitializer:BOOL=OFF",
            "-DUSE_BRAINSROIAuto:BOOL=OFF", "-DUSE_BRAINSResample:BOOL=OFF",
            "-DUSE_BRAINSSnapShotWriter:BOOL=OFF",
            "-DUSE_BRAINSStripRotation:BOOL=OFF",
            "-DUSE_BRAINSTransformConvert:BOOL=OFF",
            "-DUSE_ImageCalculator:BOOL=OFF", "-DUSE_ReferenceAtlas:BOOL=OFF",
            "-DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON", "-DCMAKE_SKIP_RPATH:BOOL=ON")

        import plumbum.cmd
        plumbum.cmd.make['-j', psutil.cpu_count(logical=False)] & FG
    (blddir / 'bin').move(out)

    with open(out / 'env.sh', 'w') as f:
        f.write("export PATH={}:$PATH\n".format(out))
    symlink.unlink()
    out.symlink(symlink)

    log.info("Made '{}'".format(get_path(sha)))
    log.info("Made '{}'".format(symlink))