def convert_dicoms(sid, dicom_dir_template, outputdir, queue=None, heuristic_func=None,
                   extension = None,embed=False,no_moco=False):

    import os
    from nipype.utils.filemanip import load_json,save_json
    from glob import glob
    sdir = dicom_dir_template%sid
    tdir = os.path.join(outputdir, sid)
    infofile =  os.path.join(tdir,'%s.auto.txt' % sid)
    editfile =  os.path.join(tdir,'%s.edit.txt' % sid)
    if os.path.exists(editfile) and heuristic_func:
        info = load_json(editfile)
    elif not heuristic_func:
        pass
    else:
        infofile =  os.path.join(tdir,'%s.auto.txt' % sid)
        info = heuristic_func(sdir, os.path.join(tdir,'dicominfo.txt'))
        save_json(infofile, info)

    if heuristic_func:
        for key in info:
            if not os.path.exists(os.path.join(tdir,key)):
                os.mkdir(os.path.join(tdir,key))
            for idx, ext in enumerate(info[key]):
                convertcmd = ['dcmstack', sdir,'--dest-dir', os.path.join(tdir,key),
                              '--file-ext', '*-%d-*'%ext, '--force-read', '-v', '--output-name', key+'%03d'%(idx+1)]
                if embed:
                    convertcmd.append('--embed-meta')
                convertcmd = ' '.join(convertcmd)
                print convertcmd
                os.system(convertcmd)
    else:
        if not no_moco:
            convertcmd = ['dcmstack', sdir, '--dest-dir', os.path.join(outputdir,sid),
                          '--force-read','-v']
            if embed:
                convertcmd.append('--embed-meta')
            convertcmd = ' '.join(convertcmd)
            print convertcmd
            os.system(convertcmd)
        else:
            import numpy as np
            from bips.workflows.workflow19 import isMoco
            foo = np.genfromtxt(os.path.join(tdir,'dicominfo.txt'),dtype=str)
            for f in foo:
                if not isMoco(glob(os.path.join(sdir,f[1]))[0]):
                    convertcmd = ['dcmstack', sdir, '--dest-dir', os.path.join(outputdir,sid),
                          '--force-read','-v','--file-ext','*-%s-*'%f[2]]
                    if embed:
                        convertcmd.append('--embed-meta')
                    convertcmd = ' '.join(convertcmd)
                    print convertcmd
                    os.system(convertcmd)
                else:
                    print "skipping moco run %s"%f[1]
    return 1
def convert_dicoms(sid,
                   dicom_dir_template,
                   outputdir,
                   queue=None,
                   heuristic_func=None,
                   extension=None,
                   embed=False,
                   no_moco=False):

    import os
    from nipype.utils.filemanip import load_json, save_json

    sdir = dicom_dir_template % sid
    tdir = os.path.join(outputdir, sid)
    infofile = os.path.join(tdir, '%s.auto.txt' % sid)
    editfile = os.path.join(tdir, '%s.edit.txt' % sid)
    if os.path.exists(editfile) and heuristic_func:
        info = load_json(editfile)
    elif not heuristic_func:
        pass
    else:
        infofile = os.path.join(tdir, '%s.auto.txt' % sid)
        info = heuristic_func(sdir, os.path.join(tdir, 'dicominfo.txt'))
        save_json(infofile, info)

    if heuristic_func:
        for key in info:
            if not os.path.exists(os.path.join(tdir, key)):
                os.mkdir(os.path.join(tdir, key))
            for idx, ext in enumerate(info[key]):
                convertcmd = [
                    'dcmstack', sdir, '--dest-dir',
                    os.path.join(tdir, key), '--file-ext',
                    '*-%d-*' % ext, '--force-read', '-v', '--output-name',
                    key + '%03d' % (idx + 1)
                ]
                if embed:
                    convertcmd.append('--embed-meta')
                convertcmd = ' '.join(convertcmd)
                print convertcmd
                os.system(convertcmd)
    else:
        if not no_moco:
            convertcmd = [
                'dcmstack', sdir, '--dest-dir',
                os.path.join(outputdir, sid), '--force-read', '-v'
            ]
            if embed:
                convertcmd.append('--embed-meta')
            convertcmd = ' '.join(convertcmd)
            print convertcmd
            os.system(convertcmd)
        else:
            import numpy as np
            from bips.workflows.workflow19 import isMoco
            foo = np.genfromtxt(os.path.join(tdir, 'dicominfo.txt'), dtype=str)
            for f in foo:
                if not isMoco(os.path.join(sdir, f[1])):
                    convertcmd = [
                        'dcmstack', sdir, '--dest-dir',
                        os.path.join(outputdir, sid), '--force-read', '-v',
                        '--file-ext',
                        '*-%s-*' % f[2]
                    ]
                    if embed:
                        convertcmd.append('--embed-meta')
                    convertcmd = ' '.join(convertcmd)
                    print convertcmd
                    os.system(convertcmd)
    return 1
def convert_dicoms(sid, dicom_dir_template, outputdir, queue=None, heuristic_func=None,
                   extension = None,embed=False,no_moco=False):

    import os
    from nipype.utils.filemanip import load_json,save_json
    from glob import glob
    sdir = dicom_dir_template%sid
    tdir = os.path.join(outputdir, sid)
    infofile =  os.path.join(tdir,'%s.auto.txt' % sid)
    editfile =  os.path.join(tdir,'%s.edit.txt' % sid)
    if os.path.exists(editfile) and heuristic_func:
        info = load_json(editfile)
    elif not heuristic_func:
        pass
    else:
        infofile =  os.path.join(tdir,'%s.auto.txt' % sid)
        info = heuristic_func(sdir, os.path.join(tdir,'dicominfo.txt'))
        save_json(infofile, info)

    if heuristic_func:
        import dicom
        import dcmstack
        for key in info:
            if not os.path.exists(os.path.join(tdir,key)):
                os.mkdir(os.path.join(tdir,key))
            for idx, ext in enumerate(info[key]):
                src = glob(os.path.join(sdir,'*-%d-*'%ext))
                print key
                dcm = dcmstack.DicomStack()
                added_success = True
                for f in src:
                    try:
                        dcm.add_dcm(dicom.read_file(f,force=True))
                        
                    except:
                        added_success = False
                        print "error adding %s to stack"%f
                if added_success:
                    a = dcm.to_nifti(embed_meta = embed)
                    a.to_filename(os.path.join(tdir,key,key+'%03d'%(idx+1)))
                #convertcmd = ['dcmstack', sdir,'--dest-dir', os.path.join(tdir,key),
                #              '--file-ext', '*-%d-*'%ext, '--force-read', '-v', '--output-name', key+'%03d'%(idx+1)]
                #if embed:
                #    convertcmd.append('--embed-meta')
                #convertcmd = ' '.join(convertcmd)
                #print convertcmd
                #os.system(convertcmd)
    else:
        if not no_moco:
            convertcmd = ['dcmstack', sdir, '--dest-dir', os.path.join(outputdir,sid),
                          '--force-read','-v']
            if embed:
                convertcmd.append('--embed-meta')
            convertcmd = ' '.join(convertcmd)
            print convertcmd
            os.system(convertcmd)
        else:
            import numpy as np
            from bips.workflows.workflow19 import isMoco
            foo = np.genfromtxt(os.path.join(tdir,'dicominfo.txt'),dtype=str)
            for f in foo:
                if not isMoco(glob(os.path.join(sdir,f[1]))[0]):
                    convertcmd = ['dcmstack', sdir, '--dest-dir', os.path.join(outputdir,sid),
                          '--force-read','-v','--file-ext','*-%s-*'%f[2]]
                    if embed:
                        convertcmd.append('--embed-meta')
                    convertcmd = ' '.join(convertcmd)
                    print convertcmd
                    os.system(convertcmd)
                else:
                    print "skipping moco run %s"%f[1]
    return 1
def convert_dicoms(sid, dicom_dir_template, outputdir, queue=None, heuristic_func=None,
                   extension = None,embed=False,no_moco=False):

    import os
    from nipype.utils.filemanip import load_json,save_json
    from glob import glob
    sdir = dicom_dir_template%sid
    tdir = os.path.join(outputdir, sid)
    infofile =  os.path.join(tdir,'%s.auto.txt' % sid)
    editfile =  os.path.join(tdir,'%s.edit.txt' % sid)
    if os.path.exists(editfile) and heuristic_func:
        info = load_json(editfile)
    elif not heuristic_func:
        pass
    else:
        infofile =  os.path.join(tdir,'%s.auto.txt' % sid)
        info = heuristic_func(sdir, os.path.join(tdir,'dicominfo.txt'))
        save_json(infofile, info)

    if heuristic_func:
        import dicom
        import dcmstack
        for key in info:
            if not os.path.exists(os.path.join(tdir,key)):
                os.mkdir(os.path.join(tdir,key))
            for idx, ext in enumerate(info[key]):
                src = glob(os.path.join(sdir,'*-%d-*'%ext))
                dcm = dcmstack.DicomStack()
                for f in src:
                    dcm.add_dcm(dicom.read_file(f,force=True))
                a = dcm.to_nifti(embed_meta = embed)
                a.to_filename(os.path.join(tdir,key,key+'%03d'%(idx+1)))
                #convertcmd = ['dcmstack', sdir,'--dest-dir', os.path.join(tdir,key),
                #              '--file-ext', '*-%d-*'%ext, '--force-read', '-v', '--output-name', key+'%03d'%(idx+1)]
                #if embed:
                #    convertcmd.append('--embed-meta')
                #convertcmd = ' '.join(convertcmd)
                #print convertcmd
                #os.system(convertcmd)
    else:
        if not no_moco:
            convertcmd = ['dcmstack', sdir, '--dest-dir', os.path.join(outputdir,sid),
                          '--force-read','-v']
            if embed:
                convertcmd.append('--embed-meta')
            convertcmd = ' '.join(convertcmd)
            print convertcmd
            os.system(convertcmd)
        else:
            import numpy as np
            from bips.workflows.workflow19 import isMoco
            foo = np.genfromtxt(os.path.join(tdir,'dicominfo.txt'),dtype=str)
            for f in foo:
                if not isMoco(glob(os.path.join(sdir,f[1]))[0]):
                    convertcmd = ['dcmstack', sdir, '--dest-dir', os.path.join(outputdir,sid),
                          '--force-read','-v','--file-ext','*-%s-*'%f[2]]
                    if embed:
                        convertcmd.append('--embed-meta')
                    convertcmd = ' '.join(convertcmd)
                    print convertcmd
                    os.system(convertcmd)
                else:
                    print "skipping moco run %s"%f[1]
    return 1