def funcFindPrf(idxPrc,<EOL>aryFuncChnk,<EOL>aryPrfTc,<EOL>aryMdls,<EOL>queOut):
<EOL>varNumVoxChnk = aryFuncChnk.shape[<NUM_LIT:0>]<EOL>varNumVol = aryFuncChnk.shape[<NUM_LIT:1>]<EOL>vecBstXpos = np.zeros(varNumVoxChnk)<EOL>vecBstYpos = np.zeros(varNumVoxChnk)<EOL>vecBstSd = np.zeros(varNumVoxChnk)<EOL>vecBstRes = np.add(np.zeros(varNumVoxChnk),<EOL><NUM_LIT>)<EOL>aryFuncChnk = aryFuncChnk.T<EOL>vecConst = np.ones((varNumVol), dtype=np.float32)<EOL>aryFuncChnk = aryFuncChnk.astype(np.float32)<EOL>aryPrfTc = aryPrfTc.astype(np.float32)<EOL>varNumMdls = len(aryMdls)<EOL>if idxPrc == <NUM_LIT:0>:<EOL><INDENT>varStsStpSze = <NUM_LIT:20><EOL>vecStatPrf = np.linspace(<NUM_LIT:0>,<EOL>varNumMdls,<EOL>num=(varStsStpSze+<NUM_LIT:1>),<EOL>endpoint=True)<EOL>vecStatPrf = np.ceil(vecStatPrf)<EOL>vecStatPrf = vecStatPrf.astype(int)<EOL>vecStatPrc = np.linspace(<NUM_LIT:0>,<EOL><NUM_LIT:100>,<EOL>num=(varStsStpSze+<NUM_LIT:1>),<EOL>endpoint=True)<EOL>vecStatPrc = np.ceil(vecStatPrc)<EOL>vecStatPrc = vecStatPrc.astype(int)<EOL>varCntSts01 = <NUM_LIT:0><EOL>varCntSts02 = <NUM_LIT:0><EOL><DEDENT>for idxMdls in range(<NUM_LIT:0>, varNumMdls):<EOL><INDENT>if idxPrc == <NUM_LIT:0>:<EOL><INDENT>if varCntSts02 == vecStatPrf[varCntSts01]:<EOL><INDENT>strStsMsg = ('<STR_LIT>' +<EOL>str(vecStatPrc[varCntSts01]) +<EOL>'<STR_LIT>' +<EOL>str(vecStatPrf[varCntSts01]) +<EOL>'<STR_LIT>' +<EOL>str(varNumMdls))<EOL>print(strStsMsg)<EOL>if varCntSts01 < varStsStpSze:<EOL><INDENT>varCntSts01 = varCntSts01 + int(<NUM_LIT:1>)<EOL><DEDENT><DEDENT><DEDENT>vecMdlTc = aryPrfTc[idxMdls, :].flatten()<EOL>aryDsgn = np.vstack([vecMdlTc,<EOL>vecConst]).T<EOL><INDENT>print('<STR_LIT>' +<EOL>str(idxX) +<EOL>'<STR_LIT>' +<EOL>str(idxY) +<EOL>'<STR_LIT>' +<EOL>str(idxSd) +<EOL>'<STR_LIT>')<EOL>varTmeTmp01 = time.time()<EOL><DEDENT>vecTmpRes = np.linalg.lstsq(aryDsgn, aryFuncChnk)[<NUM_LIT:1>]<EOL><INDENT>varTmeTmp02 = time.time()<EOL>varTmeTmp03 = np.around((varTmeTmp02 - varTmeTmp01),<EOL>decimals=<NUM_LIT:2>)<EOL>print('<STR_LIT>' +<EOL>str(idxX) +<EOL>'<STR_LIT>' +<EOL>str(idxY) +<EOL>'<STR_LIT>' +<EOL>str(idxSd) +<EOL>'<STR_LIT>' +<EOL>str(varTmeTmp03) +<EOL>'<STR_LIT:s>')<EOL><DEDENT>vecLgcTmpRes = np.less(vecTmpRes, vecBstRes)<EOL>vecBstXpos[vecLgcTmpRes] = aryMdls[idxMdls][<NUM_LIT:0>]<EOL>vecBstYpos[vecLgcTmpRes] = aryMdls[idxMdls][<NUM_LIT:1>]<EOL>vecBstSd[vecLgcTmpRes] = aryMdls[idxMdls][<NUM_LIT:2>]<EOL>vecBstRes[vecLgcTmpRes] = vecTmpRes[vecLgcTmpRes]<EOL><INDENT>varTmeTmp04 = time.time()<EOL>varTmeTmp05 = np.around((varTmeTmp04 - varTmeTmp02),<EOL>decimals=<NUM_LIT:2>)<EOL>print('<STR_LIT>' +<EOL>str(idxX) +<EOL>'<STR_LIT>' +<EOL>str(idxY) +<EOL>'<STR_LIT>' +<EOL>str(idxSd) +<EOL>'<STR_LIT>' +<EOL>str(varTmeTmp05) +<EOL>'<STR_LIT:s>')<EOL><DEDENT>if idxPrc == <NUM_LIT:0>:<EOL><INDENT>varCntSts02 = varCntSts02 + <NUM_LIT:1><EOL><DEDENT><DEDENT>vecFuncMean = np.mean(aryFuncChnk, axis=<NUM_LIT:0>)<EOL>vecFuncDev = np.subtract(aryFuncChnk, vecFuncMean[None, :])<EOL>vecSsTot = np.sum(np.power(vecFuncDev,<EOL><NUM_LIT>),<EOL>axis=<NUM_LIT:0>)<EOL>vecBstR2 = np.subtract(<NUM_LIT:1.0>,<EOL>np.divide(vecBstRes,<EOL>vecSsTot))<EOL>lstOut = [idxPrc,<EOL>vecBstXpos,<EOL>vecBstYpos,<EOL>vecBstSd,<EOL>vecBstR2]<EOL>queOut.put(lstOut)<EOL>
Function for finding best pRF model for voxel time course.
This function should be used if there is only one predictor.