void Start() { ExperimentEvents.CheckMainWindowIsOpen(this); if (!WindowOpen) { throw new InvalidOperationException( $"Can't run experiment unless Experiment window is open" + $"\nPlease open {MenuNames.BmlMainMenu} Menu and open " + $"the main runner window"); } //check if config file is loaded if (ConfigFile == null) { Debug.LogError("Design Configuration not set up properly, make sure you dragged a configDesign file into your Runner GameObject"); ExitProgram(); return; } Design = ConfigFile.Factory.ToTable(this, ConfigFile.ShuffleTrialOrder, ConfigFile.RepeatTrialBlock, ConfigFile.ShuffleDifferentlyForEachBlock); if (Design == null) { Debug.Log("Design not created properly"); throw new NullReferenceException("Design null"); } experiment = (Experiment)Activator.CreateInstance(ExperimentType, this, Design); ExperimentEvents.InitExperiment(this); }
protected Experiment(ExperimentRunner runner, ExperimentDesign design) : base(runner) { this.runner = runner; if (design == null) { throw new NullReferenceException("Experiment created with null design"); } this.design = design; Enable(); }
public BlockTable(List <Variable> allData, ExperimentDesign design) { //Get block Variables List <Variable> blockVariables = new List <Variable>(); foreach (Variable datum in allData) { if (datum.TypeOfVariable == VariableType.Independent) { IndependentVariable independentVariable = (IndependentVariable)datum; if (independentVariable.Block) { blockVariables.Add(independentVariable); } } } baseBlockTable = design.SortAndAddIVs(blockVariables, true); }
public TrialTable(List <Variable> allData, ExperimentDesign design, BlockTable baseBlockTable, bool shuffleBaseTrialOrder, int numberOfRepetitions, ColumnNames columnNames) { this.columnNames = columnNames; BaseTrialTable = design.SortAndAddIVs(allData); //Repeat all trials if specified if (numberOfRepetitions > 1) { DataTable repeatedTable = BaseTrialTable.Clone(); for (int i = 0; i < numberOfRepetitions; i++) { foreach (DataRow row in BaseTrialTable.Rows) { repeatedTable.ImportRow(row); } } BaseTrialTable = repeatedTable; } //Shuffle trial order if needed if (shuffleBaseTrialOrder) { BaseTrialTable = BaseTrialTable.Shuffle(); } AddBlockColumnsFrom(baseBlockTable); AddTotalTrialIndexColumnTo(); AddTrialIndexColumnTo(); AddBlockNumberColumnTo(); AddSuccessColumnTo(); AddAttemptsColumnTo(); AddSkippedColumnTo(); AddTrialTimeColumnTo(); }