void LoadList() { listView1.ShowItemToolTips = true; int mlistIndex = 0; foreach (INCCKnew.TransferSummary ts in list) { ListViewItem lvi = new ListViewItem(new string[] { ts.det, ts.item, string.IsNullOrEmpty(ts.stratum) ? "-" : ts.stratum, ts.dto.ToString("yy.MM.dd HH:mm:ss"), Path.GetFileName(ts.path), ts.comment, AssaySelector.ForMass(ts.meastype) ? ts.material : string.Empty, mlistIndex.ToString() // subitem at index 7 has the original mlist index of this element }); listView1.Items.Add(lvi); lvi.Tag = ts.dto; // for proper column sorting mlistIndex++; } MCount.Text = listView1.Items.Count.ToString() + " files"; if (listView1.SelectedItems.Count > 0) { MCountSel.Text = listView1.SelectedItems.Count.ToString(); } else { MCountSel.Text = string.Empty; } }
bool PrepList(List <AssaySelector.MeasurementOption> filters, Detector det) { if (Goal == EndGoal.Report) { if (LMOnly) // LMOnly { mlist.RemoveAll(EmptyCSVFile); // cull those without LM CSV results } else { mlist.RemoveAll(EmptyINCC5File); // cull those with traditional INCC5 results } } ctrllog = N.App.Loggers.Logger(LMLoggers.AppSection.Control); if (mlist.Count == 0) { string msg = string.Format("No {0}measurements for {1} found.", TypeTextFragment(filters), det == null ? "any" : det.Id.DetectorId); MessageBox.Show(msg, "WARNING"); return(false); } LoadList(filters); if (Goal == EndGoal.Report || Goal == EndGoal.Reanalysis || Goal == EndGoal.Transfer) // it is for a named detector so elide the detector column { listView1.Columns[1].Width = 0; } if (!AllMeas) { listView1.Columns[0].Width = 0; } if (filters.Contains(AssaySelector.MeasurementOption.rates)) // show item id { listView1.Columns[2].Width = 0; } if (filters.Contains(AssaySelector.MeasurementOption.normalization)) { listView1.Columns[2].Width = 0; listView1.Columns[3].Width = 0; } if (filters.Contains(AssaySelector.MeasurementOption.background)) // NEXT: add configuration active or passive column { listView1.Columns[2].Width = 0; listView1.Columns[3].Width = 0; } foreach (AssaySelector.MeasurementOption mo in filters) { if (!AssaySelector.ForMass(mo) && !mo.IsWildCard()) { listView1.Columns[7].Width = 0; // material column } } if (Goal == EndGoal.Reanalysis) { listView1.Columns[0].Text = "Id"; listView1.Columns[0].Width = 43; } return(true); }
void LoadList(List <AssaySelector.MeasurementOption> filters) { listView1.ShowItemToolTips = true; int mlistIndex = 0; foreach (Measurement m in mlist) { int CycleCount = N.App.DB.GetCycleCount(m.MeasurementId); string ItemWithNumber = string.IsNullOrEmpty(m.MeasurementId.Item.item) ? "-" : m.AcquireState.ItemId.item; if (Path.GetFileName(m.MeasurementId.FileName).Contains("_") && (filters.Contains(AssaySelector.MeasurementOption.verification)) && (filters.Contains(m.MeasOption))) { //scan file name to display subsequent reanalysis number...... hn 9.21.2015 ItemWithNumber += "(" + Path.GetFileName(m.MeasurementId.FileName).Substring(Path.GetFileName(m.MeasurementId.FileName).IndexOf('_') + 1, 2) + ")"; } string col0; if (Goal == EndGoal.Reanalysis) { col0 = m.MeasurementId.UniqueId.ToString(); } else { col0 = m.MeasOption.PrintName(); } ListViewItem lvi = new ListViewItem(new string[] { col0, m.Detector.Id.DetectorId, ItemWithNumber, string.IsNullOrEmpty(m.AcquireState.stratum_id.Name) ? "-" : m.AcquireState.stratum_id.Name, m.MeasDate.DateTime.ToString("yy.MM.dd HH:mm:ss"), GetMainFilePath(m.ResultsFiles, m.MeasOption, true), CycleCount.ToString(), AssaySelector.ForMass(m.MeasOption) ? m.AcquireState.item_type : string.Empty, m.AcquireState.comment, mlistIndex.ToString() // subitem at index 9 has the original mlist index of this element }); listView1.Items.Add(lvi); lvi.Tag = m.MeasDate; // for proper column sorting string p = GetMainFilePath(m.ResultsFiles, m.MeasOption, false); if (string.IsNullOrEmpty(p)) { lvi.ToolTipText = "(" + m.MeasurementId.UniqueId.ToString() + ") No results file available"; } else { lvi.ToolTipText = "(" + m.MeasurementId.UniqueId.ToString() + ") " + p; } mlistIndex++; } MCount.Text = listView1.Items.Count.ToString() + " measurements"; if (listView1.SelectedItems.Count > 0) { MCountSel.Text = listView1.SelectedItems.Count.ToString(); } else { MCountSel.Text = string.Empty; } }
/// <summary> /// Process one or more .NCC Review measurement data files, with related .NOP/.COP files. /// Presence of NOP/COP files is optional /// See Import Operator Declarations from Operator Review and Measurements from Radiation Review p. 24, /// See Operator Declaration File Format p. 87, /// See Operator Declaration File Format for Curium Ratio Measurements p. 88, /// See Radiation Review Measurement Data File Format p. 93, INCC Software Users Manual, March 29, 2009 /// </summary> void INCCReviewFileProcessing() { FireEvent(EventType.ActionPrep, this); NC.App.Opstate.StampOperationStartTime(); // This code would be the same for an interactive version of this operation // > Start here // first find and process and .NOP files List <string> exts = new List <string>() { ".nop", ".cop" }; FileList <CSVFile> hdlr = new FileList <CSVFile>(); hdlr.Init(exts, ctrllog); FileList <CSVFile> files = null; OPFiles opfiles = new OPFiles(); // The INCC5 semantics if (NC.App.AppContext.FileInputList == null) { files = (FileList <CSVFile>)hdlr.BuildFileList(NC.App.AppContext.FileInput, NC.App.AppContext.Recurse, true); } else { files = (FileList <CSVFile>)hdlr.BuildFileList(NC.App.AppContext.FileInputList); } if (files != null && files.Count > 0) { // construct lists of isotopics and items from the NOP and COP files opfiles.Process(files); ctrllog.TraceEvent(LogLevels.Verbose, 33085, "NOP items " + opfiles.Results.ItemIds.Count); //ctrllog.TraceEvent(LogLevels.Verbose, 33085, "COP entries " + opfiles.Results.COPRatioRecs.Count); } else { ctrllog.TraceEvent(LogLevels.Warning, 33085, "No operator declarations available, continuing with default values"); } // process the NCC files only INCCFileOrFolderInfo foo = new INCCFileOrFolderInfo(ctrllog, "*.NCC"); if (NC.App.AppContext.FileInputList == null) { foo.SetPath(NC.App.AppContext.FileInput); } else { foo.SetFileList(NC.App.AppContext.FileInputList); } foo.eh += new TransferEventHandler((s, e) => { FireEvent(EventType.ActionInProgress, e); }); List <INCCTransferBase> res = foo.Restore(); // use RemoveAll to cull those NCC files that reference a non-existent detector DetectorList dl = NC.App.DB.Detectors; foreach (INCCReviewFile rf in res) { List <Detector> tdk = dl.FindAll(d => 0 == string.Compare(d.Id.DetectorName, rf.detector, true)); if (tdk.Count < 1) { rf.skip = true; ctrllog.TraceEvent(LogLevels.Warning, 33085, "No detector " + rf.detector + " defined, cannot complete processing NCC review file " + System.IO.Path.GetFileName(rf.Path)); } } res.RemoveAll(rf => (rf as INCCReviewFile).skip); res.Sort((rf1, rf2) => // sort chronologically { return(DateTime.Compare((rf1 as INCCReviewFile).dt, (rf2 as INCCReviewFile).dt)); }); /// end here > The sorted, filtered and processed list here would be returned to the UI for display and interactive selection if (res == null || res.Count < 1) { NC.App.Opstate.StopTimer(); NC.App.Opstate.StampOperationStopTime(); FireEvent(EventType.ActionStop, this); ctrllog.TraceEvent(LogLevels.Warning, 33085, "No usable NCC review files found in " + System.IO.Path.GetFullPath(foo.GetPath())); return; } AcquireParameters orig_acq = new AcquireParameters(NC.App.Opstate.Measurement.AcquireState); // Each NCC file is a separate measurement foreach (INCCReviewFile irf in res) { ResetMeasurement(); if (NC.App.Opstate.IsQuitRequested) { break; } // Find the detector named in the NCC file (existence shown in earlier processing above) Detector curdet = NC.App.DB.Detectors.Find(d => string.Compare(d.Id.DetectorName, irf.detector, true) == 0); if (curdet.AB.Unset) { ABKey abkey = new ABKey(curdet.MultiplicityParams, 512); // NEXT: maxbins is arbitrary, just the first of many for VSR LMRawAnalysis.SDTMultiplicityCalculator.SetAlphaBeta(abkey, curdet.AB); } // set up acquire state based on the NCC file content AcquireParameters newacq = ConfigureAcquireState(curdet, orig_acq, irf); AssaySelector.MeasurementOption mo = NCCMeasOption(irf); // make a temp MeasId MeasId thisone = new MeasId(mo, newacq.MeasDateTime); // get the list of measurement Ids for this detector List <MeasId> list = NC.App.DB.MeasurementIds(curdet.Id.DetectorName, mo.PrintName()); MeasId already = list.Find(mid => mid.Equals(thisone)); if (already != null) { // URGENT: do the replacement as it says ctrllog.TraceEvent(LogLevels.Warning, 33085, "Replacing the matching {0} measurement, timestamp {1} (in a future release)", already.MeasOption.PrintName(), already.MeasDateTime.ToString()); } IntegrationHelpers.BuildMeasurement(newacq, curdet, mo); Measurement meas = NC.App.Opstate.Measurement; meas.MeasDate = newacq.MeasDateTime; // use the date and time from the NCC file content meas.Persist(); // preserve the basic results record if (AssaySelector.ForMass(meas.MeasOption) && !meas.INCCAnalysisState.Methods.AnySelected()) { ctrllog.TraceEvent(LogLevels.Warning, 437, "No mass methods for " + meas.INCCAnalysisState.Methods.selector.ToString()); } try { ushort total_number_runs = 0; double run_count_time = 0; double total_good_count_time = 0; if (irf.num_runs == 0) { ctrllog.TraceEvent(LogLevels.Error, 440, "This measurement has no good cycles."); continue; } if (meas.MeasOption == AssaySelector.MeasurementOption.holdup) { continue; } /* convert to total count time */ total_number_runs = irf.num_runs; total_good_count_time = irf.num_runs * run_count_time; meas.RequestedRepetitions = total_number_runs; // convert runs to cycles for (int i = 0; i < irf.num_runs; i++) { /* run date and time (IAEA format) */ AddReviewFileCycle(i, irf.runs[i], irf.times[i], meas, irf.Path); if (i % 8 == 0) { FireEvent(EventType.ActionInProgress, this); } } FireEvent(EventType.ActionInProgress, this); // NEXT: handle true AAS cycles as in INCC5 if (meas.MeasOption == AssaySelector.MeasurementOption.verification && meas.INCCAnalysisState.Methods.Has(AnalysisMethod.AddASource) && meas.AcquireState.well_config == WellConfiguration.Passive) { ctrllog.TraceEvent(LogLevels.Error, 440, "No add-a-source data processed because the implementation is incomplete. AAS"); //AddASourceSetup aass = IntegrationHelpers.GetCurrentAASSParams(meas.Detector); //for (int n = 1; n <= aass.number_positions; n++) //{ // /* number of good runs */ // string l = td.reader.ReadLine(); // if (td.reader.EndOfStream) // { // ctrllog.TraceEvent(LogLevels.Error, 440, "No add-a-source data found in disk file. " + "AAS p" + n.ToString()); // } //} } } catch (Exception e) { NC.App.Opstate.SOH = OperatingState.Trouble; ctrllog.TraceException(e, true); ctrllog.TraceEvent(LogLevels.Error, 437, "NCC file processing stopped with error: '" + e.Message + "'"); } finally { NC.App.Loggers.Flush(); } FireEvent(EventType.ActionInProgress, this); ComputeFromINCC5SRData(meas); FireEvent(EventType.ActionInProgress, this); } NC.App.Opstate.ResetTokens(); NC.App.Opstate.SOH = OperatingState.Stopping; NC.App.Opstate.StampOperationStopTime(); FireEvent(EventType.ActionFinished, this); }