Ejemplo n.º 1
0
        public JsonResult RecalculateCt(string newCtWell, string newCtMiRname, string newCtInputId, double lessX, double greaterX, double lessY, double greaterY, double treshold, ulong predicted)
        {
            try
            {
                var oldData = Session["CalculatedCtsΔCtsmeanCts"] as CtViewModel;
                var oldCts  = oldData?.Cts.Select(item => new CalculateCt()
                {
                    Ct = item.Ct, readValues = item.readValues, ThresholdValue = item.ThresholdValue, Well = item.Well, R = item.R, ΔΔCt = item.ΔΔCt, id = item.id, miRname = item.miRname
                }).ToList();
                var previousState = new CtViewModel {
                    Cts = oldCts, Mean = oldData.Mean, StandardDeviation = oldData.StandardDeviation
                };
                Session["CalculatedCtsΔCtsmeanCtsPreviousState"] = previousState;
                var ctValue = _ICalculateCtLogic.ReCalculateCt(lessX, greaterX, lessY, greaterY, treshold, predicted);

                oldData.Cts.Single(p => p.Well.Equals(newCtWell)).Ct = ctValue;
                Session["CalculatedCtsΔCtsmeanCts"] = oldData;

                return(Json(new { newCtInputId, newCtWell, newCtMiRname, ctValue = ctValue.ToString() }));
            }
            catch (Exception e)
            {
                return(Json(new { message = e.Message }));
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Metoda przeliczajaca na nowo wartosci Ct oraz deltaCt dla calych danych
        /// </summary>
        /// <param name="data">dane z obliczonymi wartosciami Ct</param>
        /// <param name="mean">srednia wartosc Ct</param>
        /// <returns>Zwraca przeliczone wartosci dla calych danych</returns>
        public CtViewModel CalculateΔCtsMeanCts(CtViewModel data, double mean)
        {
            foreach (var item in data.Cts.Where(p => p.Ct > 0))
            {
                item.ΔΔCt = item.Ct - mean;
                item.R    = Math.Pow(2, -item.ΔΔCt);
            }

            return(data);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Metoda ustawiajaca nazwy dla poszczegolnych dolkow
        /// </summary>
        /// <param name="data">wczytane dane</param>
        /// <returns>Zwraca dane ze zmienionymi nazwami</returns>
        public CtViewModel SetMiRnames(CtViewModel data)
        {
            if (HttpContext.Current.Session["uniqueMiRname"] != null)
            {
                var names = HttpContext.Current.Session["uniqueMiRname"] as IEnumerable <MiRname>;
                foreach (var name in data.Cts)
                {
                    name.miRname = names.First(p => p.Well.Equals(name.Well)).Name;
                }
            }

            return(data);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Metoda obliczajaca wartosci Ct
        /// </summary>
        /// <param name="rMax">wartosc od ktorej musi byc wieksza maksymalna wartosc pomiaru w dolku aby zostaly dla niej wykonane obliczenia</param>
        /// <param name="predicted">ilosc punktow przewidywanych miedzy punktem mniejszym i wiekszym od wartosci Th na wykresie</param>
        /// <param name="data">wczytane dane</param>
        /// <returns>Zwraca obliczone dane</returns>
        public CtViewModel CalculateCt(double rMax, ulong predicted, IEnumerable <AmplificationData> data)
        {
            var result = new List <CalculateCt>();
            var cts    = new List <double>();
            var lowCts = new List <double>();
            var values = CalculateThreshold(rMax, data);
            var index  = 0;

            foreach (var item in values.Item2)
            {
                if (item.Count > 1)
                {
                    IList <Tuple <Double, Double> > points = PointsPrediction(new Tuple <Double, Double>(item[0], item[1]),
                                                                              new Tuple <Double, Double>(item[2], item[3]), predicted); //1mln
                    foreach (var point in points)
                    {
                        if (point.Item1.ToString("F2").Equals(item[4].ToString("F2")))
                        {
                            cts.Add(point.Item2);
                        }
                    }
                    if (cts.Count.Equals(0) && points.Any(p => p.Item1.ToString("F1").Equals(item[4].ToString("F1"))))
                    {
                        lowCts.Add(points.First(p => p.Item1.ToString("F1").Equals(item[4].ToString("F1"))).Item2);
                    }
                    else
                    {
                        lowCts.Add(0);
                    }
                    result.Add(new CalculateCt()
                    {
                        Well           = values.Item1[index],
                        Ct             = cts.Count > 0 ? cts.Average() : lowCts.First(),
                        ThresholdValue = item[4],
                        readValues     = values.Item3[index].ToArray()
                    });
                    cts    = new List <double>();
                    lowCts = new List <double>();
                    index++;
                }
                else
                {
                    result.Add(new CalculateCt()
                    {
                        Well           = values.Item1[index],
                        Ct             = 0,
                        ThresholdValue = item[0],
                        readValues     = values.Item3[index].ToArray()
                    });
                    cts    = new List <double>();
                    lowCts = new List <double>();
                    index++;
                }
            }

            var meanCt         = result.Where(p => p.Ct > 0).Select(p => p.Ct).Average();
            var calculatedData = new CtViewModel()
            {
                Cts = result, Mean = meanCt, StandardDeviation = Math.Sqrt(result.Where(p => p.Ct > 0).Select(p => p.Ct).Average(v => Math.Pow(v - result.Where(p => p.Ct > 0).Select(p => p.Ct).Average(), 2)))
            };

            calculatedData = CalculateΔCtsMeanCts(calculatedData, meanCt);
            calculatedData = SetMiRnames(calculatedData);

            return(calculatedData);
        }
Ejemplo n.º 5
0
 public CtControlView(CtViewModel model)
 {
     InitializeComponent();
     Model       = model;
     DataContext = Model;
 }