private static void WriteTrialStatsCSV(SequenceStatistic stat) { int trialIndex = 0; foreach (TrialStatistic trialStat in stat.trialsStats) { sbTrialStats.AppendLine(trialIndex + delimiter + stat.sequence.parameter.amplitude + delimiter + stat.sequence.parameter.width + delimiter + trialStat.effectiveAmplitude + delimiter + trialStat.dx + delimiter + trialStat.trial.time.pointingTime + delimiter + trialStat.trial.time.selectionTime + delimiter + trialStat.trial.time.movementTime + delimiter + trialStat.trial.isError + delimiter + trialStat.trial.trajectory.targetReEntry + delimiter + trialStat.movement.taskAxisCrossing + delimiter + trialStat.movement.movementDirectionChange + delimiter + trialStat.movement.orthogonalDirectionChange + delimiter + trialStat.movement.movementVariable + delimiter + trialStat.movement.movementError + delimiter + trialStat.movement.movementOffset + delimiter); trialIndex++; } }
private static void WriteTrajectoryCSV(SequenceStatistic stat) { int trial = 0; foreach (FittsTrial sel in stat.sequence.fittsTrials) { string row = WriteTrajectoryLine(stat, sel, trial) + delimiter + "t="; foreach (float time in sel.trajectory.time) { row += delimiter + time; } sbTrajectory.AppendLine(row); row = WriteTrajectoryLine(stat, sel, trial) + delimiter + "x="; foreach (double x in sel.trajectory.x) { row += delimiter + x; } sbTrajectory.AppendLine(row); row = WriteTrajectoryLine(stat, sel, trial) + delimiter + "y="; foreach (float y in sel.trajectory.y) { row += delimiter + y; } sbTrajectory.AppendLine(row); trial++; } }
private static string WriteTrajectoryLine(SequenceStatistic stat, FittsTrial sel, int trial) { return(stat.sequence.parameter.amplitude * 2 + delimiter + stat.sequence.parameter.width + delimiter + trial + delimiter + sel.coord.from.x + delimiter + sel.coord.from.y + delimiter + sel.coord.to.x + delimiter + sel.coord.to.y); }
private static void WriteSequenceStatsCSV(SequenceStatistic stat) { sbSequenceStats.AppendLine(stat.sequence.timestamp + delimiter + stat.sequence.parameter.nbOfTarget + delimiter + stat.sequence.parameter.amplitude * 2 + delimiter + stat.sequence.parameter.width + delimiter + Math.Log((stat.sequence.parameter.amplitude / stat.sequence.parameter.width) + 1, 2) + delimiter + stat.effectiveAmplitudeMean + delimiter + stat.effectiveWidth + delimiter + stat.effectiveIndexDifficulty + delimiter + stat.timeMean.pointingTime + delimiter + stat.timeMean.selectionTime + delimiter + stat.timeMean.movementTime + delimiter + stat.errorMean + "%" + delimiter + stat.throughput + delimiter + stat.trialsStats.Sum(x => x.trial.trajectory.targetReEntry) / stat.trialsStats.Count + delimiter + stat.trialsStats.Sum(x => x.movement.taskAxisCrossing) / stat.trialsStats.Count + delimiter + stat.trialsStats.Sum(x => x.movement.movementDirectionChange) / stat.trialsStats.Count + delimiter + stat.trialsStats.Sum(x => x.movement.orthogonalDirectionChange) / stat.trialsStats.Count + delimiter + stat.trialsStats.Sum(x => x.movement.movementVariable) / stat.trialsStats.Count + delimiter + stat.trialsStats.Sum(x => x.movement.movementError) / stat.trialsStats.Count + delimiter + stat.trialsStats.Sum(x => x.movement.movementOffset) / stat.trialsStats.Count + delimiter); }