Exemplo n.º 1
0
        /// <summary>
        /// Expand each data file in the comparison into the variable mapping
        /// and lists of variables and array variables
        /// </summary>
        /// <param name="comparison"></param>
        private VariableMappings mapFiles(TreatmentComparison comparison)
        {
            // There is no point in mapping if no concentration file was found
            if (comparison.ConcentrationFile == null)
            {
                return(null);
            }

            // Extract variables for concentration
            var extendedConc = this.extractVariables(comparison.ConcentrationFile);

            // If no array variables were found in concentration data is useless, return
            if (!extendedConc.ArrayVariables.Any())
            {
                return(null);
            }

            // Extract variables for pk and time
            var extendedPk   = this.extractVariables(comparison.PkFile);
            var extendedTime = comparison.UseTimeFile ?
                               this.extractVariables(comparison.TimeFile) : null;

            // Compute the list of common variables
            var commonVarNames = extendedPk.Variables.Intersect(extendedConc.Variables);
            var commonVars     = commonVarNames.Select(v => new Variable
            {
                Name   = v,
                Values = extendedConc.Data.AsEnumerable()
                         .Select(r => r[v].ToString()).Distinct().ToList()
            });
            var mappings = new VariableMappings {
                CommonVariables = commonVars.ToList()
            };

            // Add the array variables
            mappings.ArrayVariables = extendedConc.ArrayVariables;
            mappings.ArrayVariables.ForEach(v => v.File = "CONC");
            if (comparison.UseTimeFile)
            {
                extendedTime.ArrayVariables.ForEach(v => v.File = "TIME");
                mappings.ArrayVariables.AddRange(extendedTime.ArrayVariables);
            }

            // Map common variables
            mappings.CommonVariableMappings = this.mapCommonVariables(mappings);

            // Map array variables
            mappings.ArrayVariableMappings = this.mapConcentrationVariables(mappings.ArrayVariables);

            return(mappings);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Map the common variables from the names they have in the files
        /// to the names used by the analysis script
        /// </summary>
        /// <param name="mappings"></param>
        /// <returns></returns>
        List <VariableMapping> mapCommonVariables(VariableMappings mappings)
        {
            var mappedVariables = new List <VariableMapping>();

            mappedVariables.Add(new VariableMapping
            {
                TargetVariable = "SUB",
                FileVariable   = mapSubjectVariable(mappings.CommonVariables)
            });
            mappedVariables.Add(new VariableMapping
            {
                TargetVariable = "PER",
                FileVariable   = mapPeriodVariable(mappings.CommonVariables)
            });
            mappedVariables.Add(new VariableMapping
            {
                TargetVariable = "TRT",
                FileVariable   = mapTreatmentVariable(mappings.CommonVariables)
            });
            mappedVariables.Add(new VariableMapping
            {
                TargetVariable = "SEQ",
                FileVariable   = mapSequenceVariable(mappings.CommonVariables)
            });

            //Determine if we want to map group
            var groupVar = mapGroupVariable(mappings.CommonVariables);

            if (groupVar != null)
            {
                mappedVariables.Add(new VariableMapping
                {
                    TargetVariable = "SEQ",
                    FileVariable   = groupVar
                });
            }

            return(mappedVariables);
        }