private bool GetUseDiscriminationParamForEstimation(Worksheet sheet)
        {
            string row = CellReader.GetCell(UseDiscriminationParameterForEstimationCell, sheet);

            row = row.ToLower();

            return(String.Equals(row, "true"));
        }
        private double GetMistakeProbability(Worksheet sheet)
        {
            string row = CellReader.GetCell(MistakeProbabilityCell, sheet);

            if (row.ToLower() == "false")
            {
                return(0);
            }

            return(Convert.ToDouble(row));
        }
        private UserAnswers ReadPerson(Worksheet sheet, int personRowIndex)
        {
            string itemRange   = "A" + IdRowIndex + ":" + FinalColumn + IdRowIndex;
            string personRange = "A" + personRowIndex + ":" + FinalColumn + personRowIndex;
            string scaleRange  = "A" + ScaleRowIndex + ":" + FinalColumn + ScaleRowIndex;

            List <string> scaleRow   = CellReader.GetRange(scaleRange, sheet);
            List <string> itemRow    = CellReader.GetRange(itemRange, sheet).Skip(NumEmptyScores).ToList();
            List <string> scoresRow  = CellReader.GetRange(personRange, sheet);
            string        personName = scoresRow[0];

            scoresRow = scoresRow.Skip(NumEmptyScores).ToList();

            List <string> scaleNames = scaleRow.Distinct().ToList();

            List <ScaleAnswers> scaleAnswersList = new List <ScaleAnswers>();

            foreach (var scaleName in scaleNames)
            {
                List <int> indices = Enumerable.Range(0, scaleRow.Count)
                                     .Where(index => scaleRow[index] == scaleName)
                                     .ToList();

                Dictionary <string, int> itemsToAnswersMap = new Dictionary <string, int>();
                for (int k = 0; k < indices.Count; k++)
                {
                    var index    = indices[k];
                    var itemName = itemRow[index];
                    itemsToAnswersMap[itemName] = Convert.ToInt32(scoresRow[index]);
                }

                ScaleAnswers scaleAnswers = new ScaleAnswers()
                {
                    ScaleName       = scaleName,
                    ItemToAnswerMap = itemsToAnswersMap
                };

                scaleAnswersList.Add(scaleAnswers);
            }


            UserAnswers answers = new UserAnswers()
            {
                PersonName   = personName,
                ScaleAnswers = scaleAnswersList
            };

            return(answers);
        }
        private ItemInformation GetInformationForRow(int i, Worksheet sheet)
        {
            string        rowRange = "A" + i + ":" + "F" + i;
            List <string> row      = CellReader.GetRange(rowRange, sheet);

            ItemInformation itemInformation = new ItemInformation()
            {
                ItemName    = row[ItemIndex],
                Orientation = (row[ItemOrientationIndex] == "N") ? Orientation.Normal : Orientation.Reversed,
                ParameterA  = Convert.ToDouble(row[ParameterAIndex]),
                ParameterB  = Convert.ToDouble(row[ParameterBIndex]),
                ParameterC  = Convert.ToDouble(row[ParameterCIndex]),
                ScaleName   = row[ScaleIndex]
            };

            return(itemInformation);
        }
 private int GetNumItems(Worksheet sheet)
 {
     return(CellReader.GetRange(ScaleColumn, sheet).Count);
 }
        private int GetNumPeople(Worksheet sheet)
        {
            List <string> personsList = CellReader.GetRange(PersonLabelsColumn, sheet);

            return(personsList.Count - 1); // Substract 1 for ID
        }
        private double GetInformationCutoff(Worksheet sheet)
        {
            string row = CellReader.GetCell(InformationCutoffCell, sheet);

            return(Convert.ToDouble(row));
        }
        private List <double> GetIncreasingStepSize(Worksheet sheet)
        {
            List <string> row = CellReader.GetRange(StepSizeIncreasingRange, sheet);

            return(row.Select(Convert.ToDouble).ToList());
        }
        private int GetNumQuestionsBeforeCatBegins(Worksheet sheet)
        {
            string row = CellReader.GetCell(NumQuestionsBeforeCatBeginsCell, sheet);

            return(Convert.ToInt32(row));
        }
        private double GetTolerance(Worksheet sheet)
        {
            string row = CellReader.GetCell(ToleranceCell, sheet);

            return(Convert.ToDouble(row));
        }
        private int GetMaxNumQuestions(Worksheet sheet)
        {
            string row = CellReader.GetCell(MaxNumQuestionsCell, sheet);

            return(Convert.ToInt32(row));
        }
        private List <double> GetStartingThetaList(Worksheet sheet)
        {
            List <string> row = CellReader.GetRange(StartingThetaRow, sheet);

            return(row.Select(Convert.ToDouble).ToList());
        }