public static void ShowWindow(IExperimentDesignFile configFile) { DesignSaverEditorWindow editorWindow = (DesignSaverEditorWindow)GetWindow(typeof(DesignSaverEditorWindow), false, "Design Saver"); editorWindow.previewer = new DesignPreviewer(configFile); editorWindow.Show(); }
void CheckMaxBlockPermutationsAllowed(bool isBlockVariable) { if (!isBlockVariable || valuesProperty.arraySize <= ExperimentDesign.MaxBlockPermutationsAllowed) { return; } IExperimentDesignFile iExperimentDesignFile = VariableProperty.serializedObject.targetObject as IExperimentDesignFile; if (iExperimentDesignFile == null) { return; } if (iExperimentDesignFile.GetBlockOrderConfigurations.Count == 0) { VariableValidationResults.AddError( "Too many Block Values for automatic permutation. " + "Must define possible Block orders manually using BlockOrderDefinition files. " + "Please see docs."); } if (!iExperimentDesignFile.GetBlockOrderIsValid) { VariableValidationResults.AddWarning("A recent change has invalidated your manual block order configurations. " + "Please update them before running your experiment"); } }
public static DataTable DataTableFromCsv(IExperimentDesignFile configurationFile, string fullPath) { DataTable loadedDataTable = new DataTable(); using (StreamReader streamReader = new StreamReader(fullPath)) { int rowNumber = 0; List <DataColumn> columns = GetColumns(configurationFile, streamReader, loadedDataTable); rowNumber++; while (!streamReader.EndOfStream) { string[] rowValues = streamReader.ReadLine()?.Split(','); DataRow row = loadedDataTable.NewRow(); for (int columnIndex = 0; columnIndex < columns.Count; columnIndex++) { DataColumn column = columns[columnIndex]; try { LoadAndSetValue(column, rowValues, columnIndex, row); } catch (FormatException) { Debug.Log($"{TuxLog.Prefix} row: {rowNumber} trying to convert column {column.ColumnName} value {row[column.ColumnName]} to type {column.DataType}"); throw; } } loadedDataTable.Rows.Add(row); rowNumber++; } } return(loadedDataTable); }
ExperimentDesign(IExperimentDesignFile designFile) { this.designFile = designFile; columnNames = designFile.GetColumnNamesSettings; baseBlockTable = new BaseBlockTable(designFile); baseTrialTable = new BaseTrialTable(baseBlockTable, designFile); }
public RunnableDesign(ExperimentRunner runner, DataTable finalDataTable, IExperimentDesignFile designFile) { this.runner = runner; this.designFile = designFile; this.finalDataTable = finalDataTable; CreateAndAddBlocks(); WriteParticipantValuesToTables(); }
public static ExperimentDesign CreateFrom(IExperimentDesignFile designFile) { if (designFile == null) { throw new NullReferenceException("Trying to create Design from null file"); } return(new ExperimentDesign(designFile)); }
public BaseTrialTable(BaseBlockTable baseBlockTable, IExperimentDesignFile iExperimentDesignFile) { variables = iExperimentDesignFile.GetVariables; columnNames = iExperimentDesignFile.GetColumnNamesSettings; baseTrialTable = AddVariablesToTable(); AddMetaColumns(baseBlockTable); }
void CheckValidBlockOrder() { IExperimentDesignFile designFile = serializedObject.targetObject as IExperimentDesignFile; if (designFile == null) { return; } if (!designFile.GetHasBlocks) { return; } if (!designFile.GetBlockOrderIsValid) { EditorGUILayout.HelpBox("A recent change has invalidated any manual block order configurations. Please update them before running your experiment", MessageType.Error); EditorGUILayout.Space(); } }
static List <DataColumn> GetColumns(IExperimentDesignFile configurationFile, StreamReader streamReader, DataTable loadedDataTable) { string[] headerNames = streamReader.ReadLine()?.Split(','); List <DataColumn> columns = new List <DataColumn>(); if (headerNames == null) { throw new NullReferenceException("Headers not found"); } foreach (string header in headerNames) { Variable variableWithName = configurationFile.GetVariables.GetVariableWithName(header); DataColumn newColumn = variableWithName == null ? configurationFile.GetColumnNamesSettings.GetColumnWithName(header) : new DataColumn(variableWithName.Name, variableWithName.Type); loadedDataTable.Columns.Add(newColumn); columns.Add(newColumn); } return(columns); }
public DesignPreviewer(IExperimentDesignFile designFile) { DesignFile = designFile; ExperimentDesign = ExperimentDesign.CreateFrom(designFile); BlockOrderData = new BlockOrderData(ExperimentDesign); }
public BaseBlockTable(IExperimentDesignFile iExperimentDesignFile) { orderConfigs = iExperimentDesignFile.GetBlockOrderConfigurations; blockVariables = iExperimentDesignFile.GetVariables.BlockVariables; baseBlockTable = AddVariablesToTable(); }
public static RunnableDesign CreateFromFile(ExperimentRunner runner, string fullPathToFile, IExperimentDesignFile configurationFile) { DataTable experimentTable = DataTableCsvUtility.DataTableFromCsv(configurationFile, fullPathToFile); return(new RunnableDesign(runner, experimentTable, configurationFile)); }