我有一个函数,可以在API的容器中查找,您可以在下面看到。本质上,我正在尝试创建一个Nx4数据帧,其中包含API上所有符合特定条件的文件(“嵌套字典中特定键中的func”和“anat”,以及文件类型为nifti)。N=找到的文件数,subjectLabel
和sessionLabel
是一对变量,用于识别研究中的受试者。我基本上获得了所有符合这些对标准的文件(嵌套字典中的anat和func,以及nifti类型):
def find_intent(projectLabel, subjectLabel, sessionLabel, group = 'pennftdcenter'):
# Initialize subject session pairs to lookup
import flywheel
fw = flywheel.Client()
s = fw.lookup('/'.join([group, projectLabel, str(subjectLabel), str(sessionLabel)]))
import pandas as pd
results = None
results_failed = False
Intent_df = None
# Look into BIDS metafield and print out (testing purposes)
# the paths and BIDS parent folder if functional or anatomical data was found.
matches = ["func", "anat"]
d = []
for acq in s.acquisitions():
try:
for f in acq.files:
ext = f.type
if 'BIDS' in f.info.keys():
fBIDS = f.info['BIDS']['Folder']
if any(i in fBIDS for i in matches) and ext == 'nifti':
results = str(fw.get(acq.parents.subject).label) + "," + str(fw.get(acq.parents.session).label) + "," + str(fBIDS) + "," + str(f.info['BIDS']['Filename'])
print(results, '\n')
d.append(
{
'SubjectLabel': str(fw.get(acq.parents.subject).label),
'SessionLabel': str(fw.get(acq.parents.session).label),
'Intent': str(fBIDS),
'FileName': str(f.info['BIDS']['Filename'])
}
)
#else:
#print("Subject-Session Pair not curated:", subjectLabel, sessionLabel)
except Exception as e:
print(e, '\n')
#print('Subject not curated:', subjectLabel, sessionLabel)
results_failed=e
pass
Intent_df = pd.DataFrame(d)
return (Intent_df)
我试图将行Intent_df = pd.DataFrame(d)
移动到循环中的不同位置以防止覆盖,但没有成功。我还尝试将空数据帧初始化为d
,然后执行.append()
,但这也不起作用
下面是我在运行一批主题时如何运行函数。这个循环迭代我已经导入的csv,并将主题和会话存储在两个相应的列表中。我将df
作为我试图输出的输出数据帧,但它总是以最后一个主题会话对结束:
findintent_fails_subject_labels = []
findintent_fails_session_labels = []
for h in range(len(subject_labels)):
try:
df = find_intent('test_project', subject_labels[h], session_labels[h])
except Exception as e:
print(e)
findintent_fails_subject_labels.append(subject_labels[h])
findintent_fails_session_labels.append(session_labels[h])
我的函数是否有问题,或者在运行它的第二个循环中如何调用该函数
提前谢谢
目前没有回答
相关问题 更多 >
编程相关推荐