コード例 #1
0
        /// <summary>
        /// Step through and calculate means+std devs for each voltage in .fullDATs
        /// </summary>
        public void GenerateStatsData()
        {
            StackTrace st = new StackTrace();

            Debug.WriteLine("GenerateStatsData() caller name: " + st.GetFrame(1).GetMethod().Name);
            StatsDataList = new List <LJVStatsDatum>();
            //remove scans where pixel did not light up
            for (int i = 0; i < LJVScanVMCollection.Count; i++)
            {
                if (!LJVScanVMCollection[i].TheLJVScan.PixelLitUp ?? false)
                {
                    Debug.WriteLine(LJVScanVMCollection[i].TheLJVScan.DeviceLJVScanSummary.Device.Label + LJVScanVMCollection[i].TheLJVScan.Pixel.Site + " did not light up");
                    LJVScanVMCollection.Remove(LJVScanVMCollection[i]);
                }
            }
            //first find the maximum voltage across all LJVScans
            decimal   maxVoltage = 0;
            LJVScanVM maxScan    = new LJVScanVM();

            foreach (LJVScanVM scan in LJVScanVMCollection)
            {
                try
                {
                    if (scan.FullLJVDataList.Count != scan.RawLJVDataList.Count)
                    {
                        scan.GenerateFullLJVData();
                    }
                    var scanMax = scan.FullLJVDataList.Max(x => x.Voltage);
                    if (scanMax > maxVoltage)
                    {
                        maxVoltage = scanMax;
                        maxScan    = scan;
                    }
                }
                catch (Exception e)
                {
                    Debug.WriteLine("LJVScanSummaryVM GenerateStatsData error: " + e.ToString());
                }
            }
            //assume that the StepSize is constant and loop through each step in maxScan
            for (int i = 0; i < maxScan.FullLJVDataList.Count; i++)
            {
                List <FullLJVDatum> dataAtVoltage = new List <FullLJVDatum>();
                foreach (LJVScanVM scan in LJVScanVMCollection)
                {
                    if (scan.FullLJVDataList.Count >= i)
                    {
                        FullLJVDatum datumAtIndex = scan.FullLJVDataList.Where(x => x.Voltage == maxScan.FullLJVDataList[i].Voltage).FirstOrDefault();
                        if (datumAtIndex != null)
                        {
                            dataAtVoltage.Add(datumAtIndex);
                        }
                    }
                }
                StatsDataList.Add(StatsDatumFromFullLJVList(dataAtVoltage));
            }
            SetStatsDataPath();
            DataProcessingService.WriteIENumberableToCSV(StatsDataList, _statsDataPath);
        }
コード例 #2
0
        private void SetStatsDataPath()
        {
            string firstRawDat = LJVScanVMCollection.First().TheLJVScan.RawDATFilePath;

            _statsDataPath = firstRawDat.Remove(firstRawDat.LastIndexOf("_"));
            _statsDataPath = _statsDataPath.Replace("Raw Data", "Statistical Data");
            string directoryCheck = _statsDataPath.Remove(_statsDataPath.LastIndexOf(@"\"));

            Directory.CreateDirectory(directoryCheck);
            _statsDataPath = string.Concat(_statsDataPath, ".statsDAT");
            TheLJVScanSummary.StatsDataPath = _statsDataPath;
            //ctx.Entry(TheLJVScanSummary).State = System.Data.Entity.EntityState.Modified;
            ctx.SaveChanges();
            Debug.WriteLine("_statsDataPath = " + _statsDataPath);
        }