public BaseModule() { InitializeComponent(); // -------------- Load data -------------- dataLoad dl = new dataLoad(); Dictionary <String, double[]> pMat_raw = dl.LoadMatrix(controlDataFile); Dictionary <String, double[]> rMat_raw = dl.LoadMatrix(caseDataFile); Dictionary <String, List <String> > allPathways = dl.LoadPathways(pathwaysFile); // -------------- Discretized case (Resistant) data matrix -------------- processData pD = new processData(th_dic_high, th_dic_low); Dictionary <String, int[]> rMat_discritized = pD.getDiscritizedMat(pMat_raw, rMat_raw); //Dictionary<String, double[]> rMat_standardizedOnly = pD.getStandardizedVal(pMat_raw, rMat_raw); //printData(rMat_standardizedOnly); Dictionary <String, Dictionary <String, int[]> > pathwayMats = pD.getDiscritizedMatForPathways(allPathways, rMat_discritized); // -------------- Infer BN strucrure (for each pathway) -------------- //Parallel.ForEach(allPathways.Keys, pathway =>{ //foreach (string pathway in allPathways.Keys) //{ //int nNodes = pathwayMats[pathway].Count; string pathway = "TGF-BETA_SIGNALING_PATHWAY"; //Dictionary<String, double[]> pathwayStdData = pD.getStandardizedDataforAPathway(pathway, allPathways, rMat_standardizedOnly); int nNodes = pathwayMats[pathway].Count; // -- prepare MCMC sampling config settings SetMCMCconfig(); NameValueCollection InputSettings = new NameValueCollection(); // ------------ input settings InputSettings.Add("nNodes", nNodes.ToString()); InputSettings.Add("nIteration", nSamplingIter.ToString()); // [Tasaki et al.] sampling iteration: 5000, burn-in (inclusive): 1000 (20%) InputSettings.Add("nBurnIn", nburnIn.ToString()); // http://www.genetics.org/content/early/2015/01/28/genetics.114.172619 InputSettings.Add("nMaxOutdegree", nMaxOutdegree.ToString()); InputSettings.Add("nMaxIndegree", nMaxIndegree.ToString()); InputSettings.Add("pathway", pathway); // -- NS algorithm (comment out when need to use) Adaptive_NS obj_NS = new Adaptive_NS(InputSettings, MethodSettings, OutputSettings, pathwayMats[pathway]); List <String> BNs_NS = obj_NS.StartAnalysis(); string bn_NS = Find_CombinedBN(BNs_NS); List <double[, ]> bnMats = getNetworkSfromString(bn_NS, nNodes); printNet(bn_NS, obj_NS.nodeNameList, pathway, "NS"); bugsSampling bugs_NS = new bugsSampling(bnMats[0], bnMats[1], nNodes, pathway, obj_NS.nodeNameList, "NS", nburnIn, nSamplingIter, gamma_prior_a, gamma_prior_b); // [0] original matrix, [1] complementary matrix // ----------- // -- HAR algorithm (comment out when need to use) Adaptive_HAR obj_HAR = new Adaptive_HAR(InputSettings, MethodSettings, OutputSettings, pathwayMats[pathway]); List <String> BNs_HAR = obj_HAR.StartAnalysis(); string bn_HAR = Find_CombinedBN(BNs_HAR); List <double[, ]> bnMats_HAR = getNetworkSfromString(bn_HAR, nNodes); printNet(bn_HAR, obj_HAR.nodeNameList, pathway, "HAR"); bugsSampling bugs_HAR = new bugsSampling(bnMats_HAR[0], bnMats_HAR[1], nNodes, pathway, obj_HAR.nodeNameList, "HAR", nburnIn, nSamplingIter, gamma_prior_a, gamma_prior_b); // [0] original matrix, [1] complementary matrix // ----------- // -- MH algorithm (comment out when need to use) Adaptive_MH obj_MH = new Adaptive_MH(InputSettings, MethodSettings, OutputSettings, pathwayMats[pathway]); List <String> BNs_MH = obj_MH.StartAnalysis(); string bn_MH = Find_CombinedBN(BNs_MH); List <double[, ]> bnMats_MH = getNetworkSfromString(bn_MH, nNodes); printNet(bn_MH, obj_MH.nodeNameList, pathway, "MH"); bugsSampling bugs_MH = new bugsSampling(bnMats_MH[0], bnMats_MH[1], nNodes, pathway, obj_MH.nodeNameList, "MH", nburnIn, nSamplingIter, gamma_prior_a, gamma_prior_b); // [0] original matrix, [1] complementary matrix // ----------- //} //}); MessageBox.Show("complete"); }
public void DO_Operation(object sender, DoWorkEventArgs e) { Session["OuterWorker"] = bgWorker1; #region Prepare input settings and call the required analysis function constructor NameValueCollection inputSettings = new NameValueCollection(); inputSettings.Add("nNodes", txt_nNodes.Text); inputSettings.Add("nIteration", txt_nIteration.Text); inputSettings.Add("nBurnIn", txt_nBurnIn.Text); inputSettings.Add("nMaxOutdegree", txt_maxOutDegree.Text); inputSettings.Add("nMaxIndegree", txt_maxInDegree.Text); //inputSettings.Add("nSSDstepsize", txt_SSD_Step.Text); Session["iterationCount"] = txt_nIteration.Text.ToString().Trim(); #endregion #region Prepare Method settings and call the required analysis function constructor List <string> MethodSettings = new List <string>(); string initialNetwork = ""; string SamplingDistribution = ""; string AcceptanceRatio = ""; List <string> MCMC_methods = new List <string>(); if (radioButton_InitNet_FixedorRandom.SelectedIndex > -1) { if (radioButton_InitNet_FixedorRandom.SelectedIndex == 0) { initialNetwork = "Fixed"; } else if (radioButton_InitNet_FixedorRandom.SelectedIndex == 1) { initialNetwork = "Random"; } } SamplingDistribution = "DirMul"; AcceptanceRatio = "MH"; //if (radioButton_SamplingDist_Uniform.Checked) // SamplingDistribution = "Uniform"; //else if (radioButton_SamplingDist_DirMul.Checked) // SamplingDistribution = "DirMul"; //if (radioButton_AccepRatio_Approximation.Checked) // AcceptanceRatio = "Approximation"; //else if (radioButton_AccepRatio_MH.Checked) // AcceptanceRatio = "MH"; //if (radioButton_MCMC_MetroPolish.Checked) // MCMC_methods = "Metropolis"; if (chk_method_MH.Checked) { MCMC_methods.Add("MH"); } if (chk_method_NS.Checked) { MCMC_methods.Add("NS"); } if (chk_method_HAR.Checked) { MCMC_methods.Add("HAR"); } MethodSettings.Add(initialNetwork); MethodSettings.Add(SamplingDistribution); MethodSettings.Add(AcceptanceRatio); #endregion #region Prepare Numerical Output settings List <string> NumerialOutputSettings = new List <string>(); string SampledNetwithFreq = "false"; string LogPosteriorFunction = "false"; string SSD_values = "false"; string Mean_Posterior = "false"; if (checkBox_SelectedNets_with_Freq.Checked) { SampledNetwithFreq = "true"; } if (checkBox_LogPosterior.Checked) { LogPosteriorFunction = "true"; } //if (checkBox_SSD_values.Checked) // SSD_values = "true"; if (checkBox_MeanPosterior.Checked) { Mean_Posterior = "true:" + txt_MeanPosterior_Th.Text; } NumerialOutputSettings.Add(SampledNetwithFreq); NumerialOutputSettings.Add(LogPosteriorFunction); NumerialOutputSettings.Add(SSD_values); NumerialOutputSettings.Add(Mean_Posterior); #endregion #region Prepare Graphical Output settings List <string> GraphicalOutputSettings = new List <string>(); string LogPosterior_VS_iteration = "false"; string SSD_VS_StepSize = "false"; string TrueDist_VS_EstimatedDist = "false"; string Mean_Posterior_Net = "false"; string Highest_Freq_Net = "false"; if (checkBox_LogPosterior_VS_iteration.Checked) { LogPosterior_VS_iteration = "true"; } //if (checkBox_SSD_VS_stepSize.Checked) // SSD_VS_StepSize = "true"; //if (checkBox_TrueDist_VS_EstimatedDist.Checked) // TrueDist_VS_EstimatedDist = "true"; if (checkBox_MeanPosteriorNet.Checked) { Mean_Posterior_Net = "true"; } if (checkBox_HighestFreqNet.Checked) { Highest_Freq_Net = "true"; } GraphicalOutputSettings.Add(LogPosterior_VS_iteration); GraphicalOutputSettings.Add(SSD_VS_StepSize); GraphicalOutputSettings.Add(TrueDist_VS_EstimatedDist); GraphicalOutputSettings.Add(Mean_Posterior_Net); GraphicalOutputSettings.Add(Highest_Freq_Net); #endregion #region Call proper Class inputFileInfo = (List <string>)Session["inputFileInfo"]; string outputDirectory = (string)Session["path"]; #region For Metropolis-Hastings Sampler if (MCMC_methods.Contains("MH")) { Session["MCMC_method_MH"] = "true"; //Response.Write("<script type='text/javascript' src='Scripts/Progress.js'> GetStatus('MH');</script>"); //Response.Write("<script type='text/javascript' src='Scripts/Progress.js'> GetStatus_1();</script>"); //Response.Write("<script> window.onload=function(){GetStatus('MH');}</script>"); //Response.Write("<script> window.onload=function(){GetStatus_1();}</script>"); ClientScript.RegisterStartupScript(typeof(Page), "keyMH", "<script type=\"text/javascript\"> GetStatus_1(); </script>", false); //Response.Write("<script> window.GetStatus('MH');</script>"); /* THE SAMPLER CLASS RUNNING STARTS HERE */ Adaptive_MH obj_MH = new Adaptive_MH(inputFileInfo, inputSettings, outputDirectory, MethodSettings, NumerialOutputSettings, GraphicalOutputSettings); obj_MH.StartAnalysis(Session); } #endregion #region For Neighbourhood Sampler if (MCMC_methods.Contains("NS")) { Session["MCMC_method_NS"] = "true"; //Response.Write("<script type='text/javascript' src='Scripts/Progress.js'> GetStatus('NS'); </script>"); //Response.Write("<script type='text/javascript' src='Scripts/Progress.js'> GetStatus_2(); </script>"); //Response.Write("<script> window.onload=function(){GetStatus('NS');}</script>"); //Response.Write("<script> window.onload=function(){GetStatus_2();}</script>"); //Response.Write("<script> window.GetStatus('NS');</script>"); ClientScript.RegisterStartupScript(typeof(Page), "keyNS", "<script type=\"text/javascript\"> GetStatus_2(); </script>", false); /* THE SAMPLER CLASS RUNNING STARTS HERE */ Adaptive_NS obj_NS = new Adaptive_NS(inputFileInfo, inputSettings, outputDirectory, MethodSettings, NumerialOutputSettings, GraphicalOutputSettings); obj_NS.StartAnalysis(Session); } #endregion #region For Hit-n-Run Sampler if (MCMC_methods.Contains("HAR")) { Session["MCMC_method_HAR"] = "true"; //Response.Write("<script type='text/javascript' src='Scripts/Progress.js'> GetStatus('HAR');</script>"); //Response.Write("<script type='text/javascript' src='Scripts/Progress.js'> GetStatus_3();</script>"); //Response.Write("<script> window.onload=function(){GetStatus('HAR');}</script>"); //Response.Write("<script> window.onload=function(){GetStatus_3();}</script>"); //.Write("<script> window.GetStatus('HAR');</script>"); ClientScript.RegisterStartupScript(typeof(Page), "keyHAR", "<script type=\"text/javascript\"> GetStatus_3(); </script>", false); /* THE SAMPLER CLASS RUNNING STARTS HERE */ Adaptive_HAR obj_HAR = new Adaptive_HAR(inputFileInfo, inputSettings, outputDirectory, MethodSettings, NumerialOutputSettings, GraphicalOutputSettings, txt_HAR_lambda.Text); obj_HAR.StartAnalysis(Session); } #endregion #endregion }