def main(): args = parse_command_line() print args smoothing = args.smoothing use_inplane = args.use_inplane basedir = os.path.abspath(args.basedir) nonlinear = args.nonlinear modelnum = args.modelnum if not args.confound: print 'omitting confound modeling' dataset = args.taskid if not args.test: outfile = open('mk_all_level1_%s.sh' % dataset, 'w') tasknum_spec = 'task*' if not args.tasknum == None: tasknum_spec = 'task%03d*' % args.tasknum dsdir = os.path.join(basedir, dataset) bolddirs = glob.glob(os.path.join(dsdir, 'sub*/BOLD/%s' % tasknum_spec)) print bolddirs for root in bolddirs: #print 'ROOT:',root for m in glob.glob(os.path.join(root, 'bold_mcf_brain.nii.gz')): #print 'BOLDFILE:',m f_split = root.split('/') #print f_split scankey = '/' + '/'.join(f_split[1:7]) + '/scan_key.txt' taskid = f_split[6] subnum = int(f_split[7].lstrip('sub')) taskinfo = f_split[9].split('_') tasknum = int(taskinfo[0].lstrip('task')) runnum = int(taskinfo[1].lstrip('run')) #tr=float(load_scankey(scankey)['TR']) # check for inplane inplane = '/' + '/'.join( f_split[1:8]) + '/anatomy/inplane001_brain.nii.gz' ## if args.nobbr: ## print 'using nobbr option' ## print 'mk_level1_fsf("%s",%d,%d,%d,%d,%d,"%s",%d)'%(taskid,subnum,tasknum,runnum,smoothing,use_inplane,basedir,modelnum) ## else: ## print 'mk_level1_fsf_bbr("%s",%d,%d,%d,%d,%d,"%s",%d)'%(taskid,subnum,tasknum,runnum,smoothing,use_inplane,basedir,modelnum) if not args.test: if args.nobbr: fname = mk_level1_fsf(taskid, subnum, tasknum, runnum, smoothing, use_inplane, basedir, nonlinear, modelnum) else: fname = mk_level1_fsf_bbr(taskid, subnum, tasknum, runnum, smoothing, use_inplane, basedir, nonlinear, modelnum, args.anatimg, args.confound, args.hpf, args.whiten) #print 'CMD: mk_level1_fsf_bbr(taskid,subnum,tasknum,runnum,smoothing,use_inplane,basedir,nonlinear,modelnum,args.anatimg,args.confound)' outfile.write('feat %s\n' % fname) if not args.test: outfile.close() if not args.test: print 'now launching all feats:' print "find %s/sub*/model/*.fsf |sed 's/^/feat /' > run_all_feats.sh; sh run_all_feats.sh" % args.taskid f = open('mk_all_level1_%s.sh' % dataset) l = f.readlines() f.close() njobs = len(l) if args.parenv == '': args.parenv = '6way' way = float(args.parenv.replace('way', '')) if args.ncores == 0: ncores = (njobs / way) * 12.0 else: ncores = args.ncores if args.launch: launch_qsub.launch_qsub(script_name='mk_all_level1_%s.sh' % dataset, runtime='04:00:00', jobname='%sl1' % dataset, email=False, parenv=args.parenv, ncores=ncores)
def main(): config = commandline() basedir = config.basedir dataset = config.dataset model_num = config.model_num nonlinear = config.nonlinear use_inplane = config.use_inplane smoothing = config.smoothing full_path = os.path.dirname(os.path.realpath(__file__)) #outfile=open('mk_all_level1_%s.sh'%dataset,'w') if config.qsub: qsub_name = 'feat_level1_%s_qsub.sh' % dataset qsub_file = open(qsub_name, 'w') fsl_container = '/home/acp16sz/fsl.img' else: script_name = 'feat_level1_%s.sh' % dataset script_file = open(script_name, 'w') for subject in os.listdir(basedir + dataset): if subject[0:3] == 'sub': for bold in os.listdir('%s/%s/BOLD/' % (basedir + dataset, subject)): for image in os.listdir('%s/%s/BOLD/%s/' % (basedir + dataset, subject, bold)): # TBD: add checking to handle case with no viable data if image == 'bold_mcf_brain.nii.gz': path = '%s/%s/BOLD/%s/' % (basedir + dataset, subject, bold) path_split = path.split('/') scankey = basedir + dataset + '/scan_key.txt' ds_id = dataset for i in path_split: if i[0:3] == 'sub': sub_num = int(i.lstrip('sub')) if i[0:4] == 'task': task_run = i.split('_') task_num = int(task_run[0].lstrip('task')) if config.task_num != 0 and task_num != config.task_num: continue run_num = int(task_run[1].lstrip('run')) tr = float(load_scankey(scankey)['TR']) inplane = basedir + dataset + '/anatomy/inplane001_brain.nii.gz' if os.path.exists(inplane): use_inplane = 1 else: use_inplane = 0 feat_name = mk_level1_fsf(ds_id, sub_num, task_num, run_num, smoothing, use_inplane, basedir, nonlinear, model_num) if config.qsub: sub_job_name = 'feat_level1_%s_sub00%s_task00%s_run00%s.sh' % ( ds_id, sub_num, task_num, run_num) sub_job_file = open(sub_job_name, 'w') sub_job_file.write('#!/bin/bash\n') sub_job_file.write('#$ -l rmem=8G\n') sub_job_file.write( 'singularity exec %s feat %s\n' % (fsl_container, feat_name)) sub_job_file.close() qsub_file.write('qsub %s\n' % sub_job_name) else: script_file.write('feat %s\n' % feat_name) if config.qsub: qsub_file.close() print 'run "bash %s/%s" to submit job to HPC' % (full_path, qsub_name) else: script_file.close() print 'now run: "bash %s/%s"' % (full_path, script_name)
def main(): args=parse_command_line() print args smoothing=args.smoothing use_inplane=args.use_inplane basedir=os.path.abspath(args.basedir) nonlinear=args.nonlinear modelnum=args.modelnum if not args.confound: print 'omitting confound modeling' dataset=args.taskid if not args.test: outfile=open('mk_all_level1_%s.sh'%dataset,'w') tasknum_spec='task*' if not args.tasknum==None: tasknum_spec='task%03d*'%args.tasknum dsdir=os.path.join(basedir,dataset) bolddirs=glob.glob(os.path.join(dsdir,'sub*/BOLD/%s'%tasknum_spec)) print bolddirs for root in bolddirs: #print 'ROOT:',root for m in glob.glob(os.path.join(root,'bold_mcf_brain.nii.gz')): #print 'BOLDFILE:',m f_split=root.split('/') #print f_split scankey='/'+'/'.join(f_split[1:7])+'/scan_key.txt' taskid=f_split[6] subnum=int(f_split[7].lstrip('sub')) taskinfo=f_split[9].split('_') tasknum=int(taskinfo[0].lstrip('task')) runnum=int(taskinfo[1].lstrip('run')) tr=float(load_scankey(scankey)['TR']) # check for inplane inplane='/'+'/'.join(f_split[1:8])+'/anatomy/inplane001_brain.nii.gz' ## if args.nobbr: ## print 'using nobbr option' ## print 'mk_level1_fsf("%s",%d,%d,%d,%d,%d,"%s",%d)'%(taskid,subnum,tasknum,runnum,smoothing,use_inplane,basedir,modelnum) ## else: ## print 'mk_level1_fsf_bbr("%s",%d,%d,%d,%d,%d,"%s",%d)'%(taskid,subnum,tasknum,runnum,smoothing,use_inplane,basedir,modelnum) if not args.test: if args.nobbr: fname=mk_level1_fsf(taskid,subnum,tasknum,runnum,smoothing,use_inplane,basedir,nonlinear,modelnum) else: fname=mk_level1_fsf_bbr(taskid,subnum,tasknum,runnum,smoothing,use_inplane,basedir,nonlinear,modelnum,args.anatimg,args.confound,args.hpf,args.whiten) #print 'CMD: mk_level1_fsf_bbr(taskid,subnum,tasknum,runnum,smoothing,use_inplane,basedir,nonlinear,modelnum,args.anatimg,args.confound)' outfile.write('feat %s\n'%fname) if not args.test: outfile.close() if not args.test: print 'now launching all feats:' print "find %s/sub*/model/*.fsf |sed 's/^/feat /' > run_all_feats.sh; sh run_all_feats.sh"%args.taskid f=open('mk_all_level1_%s.sh'%dataset) l=f.readlines() f.close() njobs=len(l) if args.parenv=='': args.parenv='6way' way=float(args.parenv.replace('way','')) if args.ncores==0: ncores=(njobs/way)*12.0 else: ncores=args.ncores if args.launch: launch_qsub.launch_qsub(script_name='mk_all_level1_%s.sh'%dataset,runtime='04:00:00',jobname='%sl1'%dataset,email=False,parenv=args.parenv,ncores=ncores)
def main(): if len(sys.argv)>2: dataset=sys.argv[1] modelnum=int(sys.argv[2]) else: usage() if len(sys.argv)>3: basedir=sys.argv[3] if not os.path.exists(basedir): print 'basedir %s does not exist!'%basedir sys.exit(1) else: basedir=os.path.abspath(os.curdir) if not basedir[-1]=='/': basedir=basedir+'/' nonlinear=1 if len(sys.argv)>4: nonlinear=int(sys.argv[4]) if nonlinear==0: print 'using linear registration' outfile=open('mk_all_level1_%s.sh'%dataset,'w') smoothing=0 if len(sys.argv)>5: smoothing=int(sys.argv[5]) tasknum_spec=0 if len(sys.argv)>6: tasknum_spec=int(sys.argv[6]) use_inplane=1 for d in os.listdir(basedir+dataset): if d[0:3]=='sub': for bd in os.listdir('%s/%s/BOLD/'%(basedir+dataset,d)): for m in os.listdir('%s/%s/BOLD/%s/'%(basedir+dataset,d,bd)): # TBD: add checking to handle case with no viable data if m=='bold_mcf_brain.nii.gz': root='%s/%s/BOLD/%s/'%(basedir+dataset,d,bd) f_split=root.split('/') scankey='/'+'/'.join(f_split[1:7])+'/scan_key.txt' taskid=f_split[6] subnum=int(f_split[7].lstrip('sub')) taskinfo=f_split[9].split('_') tasknum=int(taskinfo[0].lstrip('task')) if (tasknum_spec>0) and not (tasknum==tasknum_spec): continue runnum=int(taskinfo[1].lstrip('run')) tr=float(load_scankey(scankey)['TR']) # check for inplane inplane='/'+'/'.join(f_split[1:8])+'/anatomy/inplane001_brain.nii.gz' if os.path.exists(inplane): use_inplane=1 else: use_inplane=0 print 'mk_level1_fsf("%s",%d,%d,%d,%d,%d,"%s",%d)'%(taskid,subnum,tasknum,runnum,smoothing,use_inplane,basedir,modelnum) fname=mk_level1_fsf(taskid,subnum,tasknum,runnum,smoothing,use_inplane,basedir,nonlinear,modelnum) outfile.write('feat %s\n'%fname) outfile.close() print 'now launching all feats:' print "find %s/sub*/model/*.fsf |sed 's/^/feat /' > run_all_feats.sh; sh run_all_feats.sh"%taskid f=open('mk_all_level1_%s.sh'%dataset) l=f.readlines() f.close() njobs=len(l) ncores=(njobs/2)*12 launch_qsub.launch_qsub(script_name='mk_all_level1_%s.sh'%dataset,runtime='04:00:00',jobname='%sl1'%dataset,email=False,parenv='2way',ncores=ncores)
def main(): if len(sys.argv) > 2: dataset = sys.argv[1] modelnum = int(sys.argv[2]) else: usage() if len(sys.argv) > 3: basedir = sys.argv[3] if not os.path.exists(basedir): print 'basedir %s does not exist!' % basedir sys.exit(1) else: basedir = os.path.abspath(os.curdir) if not basedir[-1] == '/': basedir = basedir + '/' nonlinear = 1 if len(sys.argv) > 4: nonlinear = int(sys.argv[4]) if nonlinear == 0: print 'using linear registration' outfile = open('mk_all_level1_%s.sh' % dataset, 'w') smoothing = 0 if len(sys.argv) > 5: smoothing = int(sys.argv[5]) tasknum_spec = 0 if len(sys.argv) > 6: tasknum_spec = int(sys.argv[6]) use_inplane = 1 for d in os.listdir(basedir + dataset): if d[0:3] == 'sub': for bd in os.listdir('%s/%s/BOLD/' % (basedir + dataset, d)): for m in os.listdir('%s/%s/BOLD/%s/' % (basedir + dataset, d, bd)): # TBD: add checking to handle case with no viable data if m == 'bold_mcf_brain.nii.gz': root = '%s/%s/BOLD/%s/' % (basedir + dataset, d, bd) f_split = root.split('/') scankey = '/' + '/'.join( f_split[1:7]) + '/scan_key.txt' taskid = f_split[6] subnum = int(f_split[7].lstrip('sub')) taskinfo = f_split[9].split('_') tasknum = int(taskinfo[0].lstrip('task')) if (tasknum_spec > 0) and not (tasknum == tasknum_spec): continue runnum = int(taskinfo[1].lstrip('run')) tr = float(load_scankey(scankey)['TR']) # check for inplane inplane = '/' + '/'.join( f_split[1:8]) + '/anatomy/inplane001_brain.nii.gz' if os.path.exists(inplane): use_inplane = 1 else: use_inplane = 0 print 'mk_level1_fsf("%s",%d,%d,%d,%d,%d,"%s",%d)' % ( taskid, subnum, tasknum, runnum, smoothing, use_inplane, basedir, modelnum) fname = mk_level1_fsf(taskid, subnum, tasknum, runnum, smoothing, use_inplane, basedir, nonlinear, modelnum) outfile.write('feat %s\n' % fname) outfile.close() print 'now launching all feats:' print "find %s/sub*/model/*.fsf |sed 's/^/feat /' > run_all_feats.sh; sh run_all_feats.sh" % taskid f = open('mk_all_level1_%s.sh' % dataset) l = f.readlines() f.close() njobs = len(l) ncores = (njobs / 2) * 12 launch_qsub.launch_qsub(script_name='mk_all_level1_%s.sh' % dataset, runtime='04:00:00', jobname='%sl1' % dataset, email=False, parenv='2way', ncores=ncores)