Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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();
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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();
        }