def exp1ModelBuild(dm):

	"""
	desc:
		Creates optimal models for exp 3. A full interactive model for the
		full dataset, and non-interactive models for each of the subsets,
		split by scene type and instruction.

	arguments:
		dm:
			type:	DataMatrix.
	"""

	assert(exp in ['exp1', 'expAll'])
	modelRandomEffects = '(1|file)'
	modelCandidateFixedEffects = stats.modelCandidateFixedEffects[:-1]

	lfe = stats.modelBuild(dm, suffix='.full',
		modelRandomEffects=modelRandomEffects,
		modelCandidateFixedEffects=modelCandidateFixedEffects)

	model = 'salFrom ~ %s + pupilSize + (1+pupilSize|file)' % (' + '.join(lfe))
	lm = stats.R.lmer(model)
	lm._print('Indirect model')
	lm.save('output/exp1/model.indirect.csv')

	model = 'salFrom ~ pupilSize + (1+pupilSize|file)'
	lm = stats.R.lmer(model)
	lm._print('Direct model')
	lm.save('output/exp1/model.direct.csv')
def exp1BestPupil(dm):

	"""
	desc:
		Determines which of the various pupil-size transforms is the best
		predictor of saliency.

	arguments:
		dm:
			type:	DataMatrix.
	"""

	modelRandomEffects = '(1|file)'
	modelCandidateFixedEffects = stats.modelCandidateFixedEffects[:-1]
	lfe = stats.modelBuild(dm, suffix='.full',
		modelRandomEffects=modelRandomEffects,
		modelCandidateFixedEffects=modelCandidateFixedEffects)
	model = 'salFrom ~ %s + %%s + (1+%%s|file)' % (' + '.join(lfe))
	stats.R.load(dm)
	for m in range(1, 7):
		_model = model % ('pupilSize%d' % m, 'pupilSize%d' % m)
		lm = stats.R.lmer(_model, lmerVar='model%d' % m)
		lm._print('model%d' % m)
		lm.save('output/%s/bestPupil/lmer.pupilSize%d.csv' % (exp, m))
	m1 = 1
	for m2 in range(2, 7):
		am = stats.R.anova('model%s' % m1, 'model%s' % m2)
		am._print('%s - %s' % (m1, m2))
		am.save('output/%s/bestPupil/anova.pupilSize%d-%d.csv' \
			% (exp, m1, m2))
def exp2ModelBuild(dm):

	"""
	desc:
		Creates optimal models for exp 2. A full interactive model for the
		full dataset, and non-interactive models for each of the subsets,
		split by scene type and instruction.

	arguments:
		dm:
			type:	DataMatrix.
	"""

	assert(exp == 'exp2')
	modelRandomEffects = '(1|file)'
	modelCandidateFixedEffects = stats.modelCandidateFixedEffects[:-1]

	lfe = stats.modelBuild(dm, suffix='.full',
		modelRandomEffects=modelRandomEffects,
		modelCandidateFixedEffects=modelCandidateFixedEffects)
	model = 'salFrom ~ %s + pupilSize*inst*sceneType + (1+pupilSize+inst+sceneType|file)' \
		% (' + '.join(lfe))
	lm = stats.R.lmer(model)
	lm._print('Indirect model')
	lm.save('output/exp2/model.indirect.interactionMainRandom.csv')
	model = 'salFrom ~ pupilSize*inst*sceneType + (1+pupilSize+inst+sceneType|file)'
	lm = stats.R.lmer(model)
	lm._print('Direct model')
	lm.save('output/exp2/model.direct.interactionMainRandom.csv')

	model = 'salFrom ~ %s + pupilSize*inst + pupilSize*sceneType + (1+pupilSize+inst+sceneType|file)' \
		% (' + '.join(lfe))
	lm = stats.R.lmer(model)
	lm._print('Indirect model')
	lm.save('output/exp2/model.indirect.splitInteractionMainRandom.csv')
	model = 'salFrom ~ pupilSize*inst + pupilSize*sceneType + (1+pupilSize+inst+sceneType|file)'
	lm = stats.R.lmer(model)
	lm._print('Direct model')
	lm.save('output/exp2/model.direct.splitInteractionMainRandom.csv')

	model = 'salFrom ~ %s + pupilSize + (1+pupilSize|file)' % (' + '.join(lfe))
	lm = stats.R.lmer(model)
	lm._print('Direct model')
	lm.save('output/exp2/model.indirect.csv')
	model = 'salFrom ~ pupilSize + (1+pupilSize|file)'
	lm = stats.R.lmer(model)
	lm._print('Direct model')
	lm.save('output/exp2/model.direct.csv')

	for sceneType in dm.unique('sceneType'):
		for inst in dm.unique('inst'):
			_dm = dm.select('sceneType == "%s"' % sceneType) \
				.select('inst == "%s"' % inst)
			lfe = stats.modelBuild(_dm, suffix='.%s.%s' % (sceneType, inst),
				modelRandomEffects=modelRandomEffects,
				modelCandidateFixedEffects=modelCandidateFixedEffects)
			model = 'salFrom ~ %s + pupilSize + (1+pupilSize|file)' \
				% (' + '.join(lfe))
			lm = stats.R.lmer(model)
			lm._print('Indirect model')
			lm.save('output/exp2/model.indirect.%s.%s.csv' % (sceneType, inst))
			model = 'salFrom ~ pupilSize + (1+pupilSize|file)'
			lm = stats.R.lmer(model)
			lm._print('Direct model')
			lm.save('output/exp2/model.direct.%s.%s.csv' % (sceneType, inst))

	for sceneType in dm.unique('sceneType'):
		_dm = dm.select('sceneType == "%s"' % sceneType)
		lfe = stats.modelBuild(_dm, suffix='.%s' % sceneType,
			modelRandomEffects=modelRandomEffects,
			modelCandidateFixedEffects=modelCandidateFixedEffects)
		model = 'salFrom ~ %s + pupilSize + (1+pupilSize|file)' \
			% (' + '.join(lfe))
		lm = stats.R.lmer(model)
		lm._print('Indirect model')
		lm.save('output/exp2/model.indirect.%s.csv' % sceneType)
		model = 'salFrom ~ pupilSize + (1+pupilSize|file)'
		lm = stats.R.lmer(model)
		lm._print('Direct model')
		lm.save('output/exp2/model.direct.%s.csv' % sceneType)

	for inst in dm.unique('inst'):
		_dm = dm.select('inst == "%s"' % inst)
		lfe = stats.modelBuild(_dm, suffix='.%s' % inst,
			modelRandomEffects=modelRandomEffects,
			modelCandidateFixedEffects=modelCandidateFixedEffects)
		model = 'salFrom ~ %s + pupilSize + (1+pupilSize|file)' \
			% (' + '.join(lfe))
		lm = stats.R.lmer(model)
		lm._print('Indirect model')
		lm.save('output/exp2/model.indirect.%s.csv' % inst)
		model = 'salFrom ~ pupilSize + (1+pupilSize|file)'
		lm = stats.R.lmer(model)
		lm._print('Direct model')
		lm.save('output/exp2/model.direct.%s.csv' % inst)
def exp3ModelBuild(dm):

	"""
	desc:
		Creates optimal models for exp 3. A full interactive model for the
		full dataset, and non-interactive models for each of the subsets,
		split by scene type and instruction.

	arguments:
		dm:
			type:	DataMatrix.
	"""

	assert(exp == 'exp3')
	modelRandomEffects = '(1|file)'
	modelCandidateFixedEffects = stats.modelCandidateFixedEffects[:-1]

	lfe = stats.modelBuild(dm, suffix='.full',
		modelRandomEffects=modelRandomEffects,
		modelCandidateFixedEffects=modelCandidateFixedEffects)

	model = 'salFrom ~ %s + cond + (1+cond|file)' % (' + '.join(lfe))
	lm = stats.R.lmer(model)
	lm._print('Indirect model')
	lm.save('output/exp3/model.cond.indirect.csv')

	model = 'salFrom ~ cond + (1+cond|file)'
	lm = stats.R.lmer(model)
	lm._print('Direct model')
	lm.save('output/exp3/model.cond.direct.csv')

	model = 'salFrom ~ %s + pupilSize*cond + (1+pupilSize+cond|file)' \
		% (' + '.join(lfe))
	lm = stats.R.lmer(model)
	lm._print('Indirect model')
	lm.save('output/exp3/model.indirect.interactionMainRandom.csv')

	model = 'salFrom ~ pupilSize*cond + (1+pupilSize+cond|file)'
	lm = stats.R.lmer(model)
	lm._print('Direct model')
	lm.save('output/exp3/model.direct.interactionMainRandom.csv')

	model = 'salFrom ~ %s + pupilSize + (1+pupilSize|file)' % (' + '.join(lfe))
	lm = stats.R.lmer(model)
	lm._print('Indirect model')
	lm.save('output/exp3/model.indirect.csv')

	model = 'salFrom ~ pupilSize + (1+pupilSize|file)'
	lm = stats.R.lmer(model)
	lm._print('Direct model')
	lm.save('output/exp3/model.direct.csv')

	for cond in dm.unique('cond'):
		_dm = dm.select('cond == "%s"' % cond)
		lfe = stats.modelBuild(_dm, suffix='.%s' % cond,
			modelRandomEffects=modelRandomEffects,
			modelCandidateFixedEffects=modelCandidateFixedEffects)
		model = 'salFrom ~ %s + pupilSize + (1+pupilSize|file)' \
			% (' + '.join(lfe))
		lm = stats.R.lmer(model)
		lm._print('Indirect model')
		lm.save('output/exp3/model.indirect.%s.csv' % cond)
		model = 'salFrom ~ pupilSize + (1+pupilSize|file)'
		lm = stats.R.lmer(model)
		lm._print('Direct model')
		lm.save('output/exp3/model.direct.%s.csv' % cond)