private void Startbutton_Click(object sender, EventArgs e) { //Initialize Stochfit if (FileNameTB.Text == string.Empty) { return; } //If we already have a rho loaded, invalidate it if (Z != null) { Z = null; Rho = null; reflgraphobject.RemoveGraphfromArray(modelreflname); rhographobject.RemoveGraphfromArray(rhomodelname); } //If RhoLipid was entered as zero, make it a bit larger if (double.Parse(Rholipid.Text) == 0) { Rholipid.Text = "0.1"; } SetProgressBar(IterationsTB.ToInt() - 1, 0, 0); int iterations = IterationsTB.ToInt(); if (progressBar1.Value > 0 && progressBar1.Value < iterations) { iterations = IterationsTB.ToInt() - progressBar1.Value; } reflgraphobject.SubSLD = SubSLDTB.ToDouble(); GetReflSettings(ref InfoStruct); NativeMethods.Init(InfoStruct); NativeMethods.Start(iterations); NativeMethods.GenPriority(Priority.SelectedIndex); myTimer = new System.Timers.Timer(); myTimer.Elapsed += new ElapsedEventHandler(OnUpdateTimer); myTimer.Interval = 5000; myTimer.Start(); DisableInterface(true); setModelOptionsToolStripMenuItem.Enabled = setResolutionOptionsToolStripMenuItem.Enabled = miscellaneousOptionsToolStripMenuItem.Enabled = setModelOptionsToolStripMenuItem.DropDown.Enabled = setResolutionOptionsToolStripMenuItem.DropDown.Enabled = miscellaneousOptionsToolStripMenuItem.DropDown.Enabled = false; MiscParametersBox.Enabled = OptionsMenuItem.Enabled = reflgraphobject.ProgramRunningState = Rhomodel.Enabled = Cancelbutton.Enabled = true; previtertime = DateTime.Now; //WriteSettings to file WriteSettings(); InfoStruct.Dispose(); }
private void FillSettingsStruct(ref ModelSettings settings) { settings.Title = TitleTB.Text; settings.CritEdgeOffset = int.Parse(critedgeoffTB.Text); settings.HighQOffset = int.Parse(HQoffsetTB.Text); settings.SurflayerSLD = Rholipid.ToDouble(); settings.SubSLD = SubSLDTB.ToDouble(); settings.SupSLD = SupSLDTB.ToDouble(); settings.Boxes = Boxlayers.ToInt(); settings.Surflayerlength = layerlength.ToDouble(); settings.SurflayerAbs = SurfAbs.ToDouble(); settings.Wavelength = wavelength.ToDouble(); settings.SubAbs = SubAbs.ToDouble(); settings.SupAbs = SupAbsTB.ToDouble(); settings.UseAbs = UseAbsCB.Checked; settings.SupOffset = Double.Parse(SupoffsetTB.Text); settings.Percerror = Double.Parse(QErrTB.Text); settings.Forcenorm = ForceNormCB.Checked; settings.Forcesig = Double.Parse(SigTSTB.Text); if (double.Parse(SigTSTB.Text) == 0) { settings.SigmaSearchPerc = int.Parse(SigmaSearchTB.Text); } else { settings.SigmaSearchPerc = 0; } settings.Debug = debugToolStripMenuItem.Checked; settings.ForceXR = forceXRToolStripMenuItem1.Checked; settings.Resolution = int.Parse(ResolutionTB.Text); settings.Totallength = Double.Parse(TotlengthTB.Text); settings.ImpNorm = ImpNormCB.Checked; settings.FitFunc = objectiveCB.SelectedIndex; settings.ParamTemp = Double.Parse(ParamTempTB.Text); if (UseAbsCB.Checked) { settings.AbsorptionSearchPerc = int.Parse(AbsorptionSearchTB.Text); } else { settings.AbsorptionSearchPerc = 0; } if (ImpNormCB.Checked) { settings.NormalizationSearchPerc = int.Parse(NormSearchTB.Text); } else { settings.NormalizationSearchPerc = 0; } settings.Algorithm = AlgorithmCB.SelectedIndex; settings.AnnealInitTemp = m_dAnnealtemp; settings.AnnealTempPlat = m_iAnnealplat; settings.AnnealSlope = m_dAnnealslope; settings.AnnealGamma = m_dSTUNGamma; settings.STUNfunc = m_iSTUNfunc; settings.STUNAdaptive = m_bSTUNAdaptive; settings.STUNtempiter = m_iSTUNtempiter; settings.STUNdeciter = m_iSTUNdeciter; settings.STUNgammadec = m_dSTUNgammadec; }
private void LoadDataFile(string origreflfilename) { try { if (!ReflData.Instance.SetReflData(origreflfilename, !errorsAreInVarianceToolStripMenuItem.Checked)) { throw new Exception("Could not load file"); } FileNameTB.Text = origreflfilename; settingsfile = origreflfilename + "settings.xml"; reflgraphobject.SetAllFonts("Garamond", 20, 18); reflgraphobject.SubSLD = SubSLDTB.ToDouble(); reflgraphobject.SupSLD = SupSLDTB.ToDouble(); reflgraphobject.GetHighQOffset = ReflData.Instance.GetNumberDataPoints; reflgraphobject.GetLowQOffset = 0; reflgraphobject.SetGraphType(forceRQ4GraphingToolStripMenuItem.Checked, fresnelcb.Checked); //Load the modeled files if they are available if (File.Exists(settingsfile) && !m_bloadfromcommandline) { if (MessageBox.Show("Do you want to load the previous run?", "Resume?", MessageBoxButtons.YesNo) == DialogResult.Yes) { rhographobject.Clear(); reflgraphobject.Clear(); if (!LoadSettings()) { return; } string tempfile = ReflData.Instance.GetWorkingDirectory + "\\rho.dat"; if (File.Exists(tempfile)) { LoadZ(tempfile); rhographobject.SubSLD = double.Parse(SubSLDTB.Text); rhographobject.UseSLD = UseSLDToolStripMenuItem.Checked; if (UseSLDToolStripMenuItem.Checked) { rhographobject.SetAxisTitles("Z", "SLD"); rhographobject.Title = "Model Independent SLD Fit"; } else { rhographobject.SetAxisTitles("Z", "Normalized Electron Density"); rhographobject.Title = "Model Independent Electron Density Fit"; } rhographobject.LoadFiletoGraph(tempfile.ToString(), rhomodelname, "Model Independent Electron Density Fit", Color.Tomato, SymbolType.None, 0, true); } tempfile = ReflData.Instance.GetWorkingDirectory + "\\rf.dat"; if (File.Exists(tempfile)) { reflgraphobject.SubSLD = double.Parse(SubSLDTB.Text); reflgraphobject.SupSLD = double.Parse(SupSLDTB.Text); reflgraphobject.SetGraphType(forceRQ4GraphingToolStripMenuItem.Checked, fresnelcb.Checked); reflgraphobject.GetLowQOffset = int.Parse(critedgeoffTB.Text); reflgraphobject.GetHighQOffset = ReflData.Instance.GetNumberDataPoints - int.Parse(HQoffsetTB.Text); //Load the data file to the graph reflgraphobject.LoadDatawithErrorstoGraph("Reflectivity Data", Color.Black, SymbolType.Circle, 5, ReflData.Instance.GetQData, ReflData.Instance.GetReflData); reflgraphobject.LoadFiletoGraph(tempfile.ToString(), modelreflname, "Model Independent Reflectivity", Color.Tomato, SymbolType.Square, 2, true); } GraphCollection.Instance.MainReflGraph = reflgraphobject; GraphCollection.Instance.MainRhoGraph = rhographobject; UpdateReportParameters(); } else { //Clear the report ReportGenerator.Instance.ClearAll(); //Load the data file to the graph reflgraphobject.LoadDatawithErrorstoGraph("Reflectivity Data", Color.Black, SymbolType.Circle, 5, ReflData.Instance.GetQData, ReflData.Instance.GetReflData); FileInfo info = new FileInfo(settingsfile); if (File.Exists(info.DirectoryName + "\\pop.dat")) { //Create a backup folder if we don't have one if (!System.IO.Directory.Exists(info.DirectoryName + "\\FitBackUp")) { System.IO.Directory.CreateDirectory(info.DirectoryName + "\\FitBackUp"); } int index = 0; for (; ;) { if (!System.IO.Directory.Exists(info.DirectoryName + "\\FitBackUp\\Fit" + index.ToString())) { System.IO.Directory.CreateDirectory(info.DirectoryName + "\\FitBackUp\\Fit" + index.ToString()); break; } index++; } string fileloc = info.DirectoryName + "\\FitBackUp\\Fit" + index.ToString(); File.Move(info.DirectoryName + "\\pop.dat", fileloc + "\\pop.dat"); File.Move(settingsfile, fileloc + "\\" + info.Name); if (File.Exists(info.DirectoryName + "\\rf.dat")) { File.Move(info.DirectoryName + "\\rf.dat", fileloc + "\\rf.dat"); } if (File.Exists(info.DirectoryName + "\\rho.dat")) { File.Move(info.DirectoryName + "\\rho.dat", fileloc + "\\rho.dat"); } if (File.Exists(info.DirectoryName + "\\reflfile.dat")) { File.Move(info.DirectoryName + "\\reflfile.dat", fileloc + "\\reflfile.dat"); } if (File.Exists(info.DirectoryName + "\\reflrhofit.dat")) { File.Move(info.DirectoryName + "\\reflrhofit.dat", fileloc + "\\reflrhofit.dat"); } } } } else { //Load the data file to the graph reflgraphobject.LoadDatawithErrorstoGraph("Reflectivity Data", Color.Black, SymbolType.Circle, 5, ReflData.Instance.GetQData, ReflData.Instance.GetReflData); } DisableInterface(false); Cancelbutton.Enabled = false; reflgraphobject.SetBounds(); SubAbs.Enabled = SupAbsTB.Enabled = SurfAbs.Enabled = UseAbsCB.Checked; } catch (Exception ex) { origreflfilename = string.Empty; FileNameTB.Clear(); DisableInterface(true); MessageBox.Show(ex.Message); } }