https://github.com/samsydco/HBN
Raw File
Tip revision: 7161591e3032afc987821f6fd80181a20976aec2 authored by Samantha Cohen on 16 August 2022, 18:12:06 UTC
Merge branch 'master' of https://github.com/samsydco/HBN
Tip revision: 7161591
3_fmriprep.py
#!/usr/bin/env python3

# Documentation for fmriprep version 1.1.4:
# https://fmriprep.org/en/1.1.4/usage.html

import subprocess as sp 
import glob
import pandas as pd
import numpy as np
import os
from tqdm import tqdm
import datetime
from settings import *
	
site = 'Site-CBIC'
#site = 'Site-RU'

compcsv = TRratingdr+'compT1_'+site+'.csv'
compdf = pd.read_csv(compcsv)

plist = []
for index, row in compdf.iterrows():
	if ((str(row['final']) != "n" and str(row['final'])!='nan') and
		not os.path.exists(fmripreppath+row['sub']+'.html')):
		#len(glob.glob(fmripreppath+row['sub']+'/figures/*sdc*'))!=2):
		plist.append(row['sub'])
plist = plist[:75]
nchunk = 4 # number of items per chunk (maybe use 10?)
pchunk = [plist[x:x+nchunk] for x in range(0,len(plist),nchunk)]
	
if __name__ == "__main__":
	# stuff only to run when not called via 'import' here

	password = input('Type the password for scohen@sophon.columbia.edu:')
	# Run participants in batches of nchunk - check what is max?:
	# Delete extra BOLD stuff
	for chunk in tqdm(pchunk):
		pstr = ' '.join(chunk)
		for task in ['DM']:
			date = str(datetime.datetime.now())[0:19].replace(' ','_')
			f = open("%sfmriprep_cmdoutput/%s_%s_%s.txt"%(path,task,date,pstr.replace(" ","_")), "w")
			# "-t" in docker instead of "-it" :)
			command = ('docker run --rm -t -u 14128:13110 -v                         /usr/local/freesurfer/license.txt:/opt/freesurfer/license.txt:ro -v '+path+site+':/data:ro -v '+outputdr+':/out -v '+tmpdr+':/scratch poldracklab/fmriprep:1.1.4 /data /out participant --ignore slicetiming fieldmaps --use-syn-sdc --output-space template fsaverage6  --participant_label '+pstr+' -t movie'+task+' -w /scratch').split()
			p = sp.Popen(['sudo', '-S'] + command, stdin=sp.PIPE, stderr=sp.PIPE,
			  universal_newlines=True,stdout=f)
			p.communicate(password + '\n')[1]
			
			

			
			
			
    

back to top