def funcFindPrfMltpPrdXVal(idxPrc,<EOL>aryFuncChnkTrn,<EOL>aryFuncChnkTst,<EOL>aryPrfMdlsTrnConv,<EOL>aryPrfMdlsTstConv,<EOL>aryMdls,<EOL>queOut):
<EOL>varNumVoxChnk = aryFuncChnkTrn.shape[<NUM_LIT:0>]<EOL>varNumVolTrn = aryFuncChnkTrn.shape[<NUM_LIT:2>]<EOL>varNumVolTst = aryFuncChnkTst.shape[<NUM_LIT:2>]<EOL>varNumXval = aryPrfMdlsTrnConv.shape[<NUM_LIT:2>]<EOL>vecBstXpos = np.zeros(varNumVoxChnk)<EOL>vecBstYpos = np.zeros(varNumVoxChnk)<EOL>vecBstSd = np.zeros(varNumVoxChnk)<EOL>vecTmpResXVal = np.empty((varNumVoxChnk, varNumXval), dtype='<STR_LIT>')<EOL>vecBstRes = np.add(np.zeros(varNumVoxChnk),<EOL><NUM_LIT>)<EOL>vecConstTrn = np.ones((varNumVolTrn), dtype=np.float32)<EOL>vecConstTst = np.ones((varNumVolTst), dtype=np.float32)<EOL>aryPrfMdlsTrnConv = aryPrfMdlsTrnConv.astype(np.float32)<EOL>aryPrfMdlsTstConv = aryPrfMdlsTstConv.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>for idxXval in range(<NUM_LIT:0>, varNumXval):<EOL><INDENT>vecMdlTrn = aryPrfMdlsTrnConv[idxMdls, :, idxXval, :]<EOL>vecMdlTst = aryPrfMdlsTstConv[idxMdls, :, idxXval, :]<EOL>aryDsgnTrn = np.vstack([vecMdlTrn,<EOL>vecConstTrn]).T<EOL>aryDsgnTst = np.vstack([vecMdlTst,<EOL>vecConstTst]).T<EOL>aryTmpPrmEst = np.linalg.lstsq(aryDsgnTrn,<EOL>aryFuncChnkTrn[:, idxXval, :].T)[<NUM_LIT:0>]<EOL>aryTmpMdlTc = np.dot(aryDsgnTst, aryTmpPrmEst)<EOL>vecTmpResXVal[:, idxXval] = np.sum(<EOL>(np.subtract(aryFuncChnkTst[:, idxXval, :].T,<EOL>aryTmpMdlTc))**<NUM_LIT:2>, axis=<NUM_LIT:0>)<EOL><DEDENT>vecTmpRes = np.mean(vecTmpResXVal, axis=<NUM_LIT:1>)<EOL>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>if idxPrc == <NUM_LIT:0>:<EOL><INDENT>varCntSts02 = varCntSts02 + <NUM_LIT:1><EOL><DEDENT><DEDENT>lstOut = [idxPrc,<EOL>vecBstXpos,<EOL>vecBstYpos,<EOL>vecBstSd,<EOL>]<EOL>queOut.put(lstOut)<EOL>
Function for finding best pRF model for voxel time course.
This function should be used if there are several predictors.