2016-06-27 2 views
1

저는 코딩이 처음이므로 PsychoPy 프로그램에서 사용되는 스크립트를 이해하는 데 도움이 필요합니다.trialHandler 및 응답에 대한 PsychoPy 코드 이해

더 구체적으로 말하면, 6 번에서 15 번까지의 코드를 이해하고 싶습니다.이 코드는 여러 번의 시도를 관리하는 데 사용되지만 누군가가 그 비트를 명확히하도록 도와 줄 수 있기를 바랍니다. 또한 6-8 행의 코드를 제거해도 실험이 변경되지는 않지만 10-15 행의 코드를 삭제하면 본질적으로 실험이 중단되지 않습니다.

trialsAll = data.TrialHandler(trialList=data.importConditions('trialType.xlsx'), nReps=10, method='random', name='trialsAll', dataTypes='corr') 
thisExp = data.ExperimentHandler(name='Ours') 
thisExp.addLoop(trialsAll) #adds a loop to the experiment 
thisTrial = trialsAll.trialList[0] 

if thisTrial != None: 
    for paramName in thisTrial.keys(): 
     exec(paramName + '= thisTrial.' + paramName) 

# Loop through trials 
for thisTrial in trialsAll: 
    currentLoop=trialsAll 
    if thisTrial != None: 
     for paramName in thisTrial.keys(): 
      exec(paramName + '=thisTrial.' + paramName) 

내 두 번째 질문은 응답을받는 것입니다. thisResp가 None과 같은 이유가 있습니까?

#get response 
thisResp=None 
while thisResp==None: 
    allKeys=event.waitKeys() 

어떤 도움을 주셔서 감사합니다. 감사합니다.

감사합니다, 현금

+1

안녕하세요 캐쉘, 메일 링리스트에 응답하는 사람들은 여기 거의 같습니다. 따라서 한 곳에서 중복 된 작업을 피하십시오. 전자 메일 목록에 만족스러운 답변을 얻은 경우 향후 독자에게 지침으로 자신의 질문에 대답하십시오 (자신의 질문에 대답하는 것은 사실이며 권장됩니다). –

답변

1
if thisTrial != None: 
    for paramName in thisTrial.keys(): 
     exec(paramName + '= thisTrial.' + paramName) 

이 코드는 약어의 사용을 할 수 있습니다. 예를 들어, 조건 파일에 'angle'이라는 필드가 있다고 가정하면 해당 평가판 사전의 키 (예 : thisTrial [ 'angle']) 또는 점 표기법 (thisTrial.angle)을 사용하지 말고 직접 참조 할 수 있습니다. 즉,이 예에서 :

각도 = thisTrial.angle

for thisTrial in trialsAll: 

는 psychoPy 시험 루프를 실행하는 기본이다. 주어진 조건 파일에 연결된 시행을 관리하기 위해 작성된 TrialHandler 오브젝트에 들어있는 각 평가판을 순환합니다.

#get response 
thisResp=None 
while thisResp==None: 
    allKeys=event.waitKeys() 

라인 '동안 thisResp == 없음 :'우리가 그 값을 확인 할 수있을 위하여려고하는 경우에 변수가 'thisResp'실제로 존재해야합니다. 따라서 바로 앞의 행에서 생성되고 다음 행이 정상적으로 실행될 수 있도록 초기 null 값이 제공됩니다. 이 단계에서 이것은 단지 임의의 변수이며 피험자의 응답에 실제로 연결되어 있지 않습니다. 아마 코드의 뒷부분에서 None이 아닌 다른 값이 할당 될 때 발생합니다.