コード例 #1
0
        /// <summary>
        /// Generate the cleavage sites and sort it by the extendability
        /// </summary>
        public static void GenerateCleavegeSites()
        {
            string[] lines = FileExtension.ReadList(Config.AllCleavegSiteFile);
            Console.WriteLine($"Total Cleavage Sites:{lines.Length}");

            List <CleavageSite> sites = new List <CleavageSite>();

            foreach (string line in lines)
            {
                var arr = line.Split('_');
                if (!arr[2].IsDigit())
                {
                    continue;
                }

                if (!Config.ValidNames.Contains(arr[1]))
                {
                    continue;
                }

                CleavageSite site = new CleavageSite();
                site.MiRNA   = arr[0];
                site.Gene    = arr[1];
                site.StartAt = int.Parse(arr[2]);
                int extendLeft  = site.StartAt - 1;
                int extendRight = Gene.GetCount(site.Gene) - (site.StartAt - 1 + 21);
                site.Extendability = Math.Min(extendLeft, extendRight);
                sites.Add(site);
            }

            sites.Sort((a, b) => - a.Extendability.CompareTo(b.Extendability));

            //create file
            StringBuilder site_content = new StringBuilder();

            foreach (var site in sites)
            {
                site_content.AppendLine(site.ToString());
            }

            FileExtension.Save(site_content.ToString(), Config.WorkingFolder + "\\cleavage_sites_repeat.csv");

            List <CleavageSite> combinedSites = Combine(sites);
            //create file
            StringBuilder combined_site_content = new StringBuilder();

            foreach (var site in combinedSites)
            {
                combined_site_content.AppendLine(site.ToString());
            }

            FileExtension.Save(combined_site_content.ToString(), Config.WorkingFolder + "\\cleavage_sites.csv");
        }
コード例 #2
0
        public static void GenerateCleavageSiteFiles()
        {
            List <CleavageSite> sites = new List <CleavageSite>();

            string[] lines = FileExtension.ReadList(Config.WorkingFolder + "cleavage_sites.csv");
            Console.WriteLine($"Total Cleavage Sites:{lines.Length}");
            foreach (string line in lines)
            {
                var          arr  = line.Split('_');
                CleavageSite site = CleavageSite.Parse(line);
                sites.Add(site);
            }
            Console.WriteLine($"After filtered by cleavage efficiency and reactivity:{sites.Count}");

            //Generate 4 files filtered by 4 degradome datasets.
            foreach (DegradomeType dType in EnumUtil.GetValues <DegradomeType>())
            {
                string site_content           = string.Empty;
                string efficiency_content     = string.Empty;
                string efficiency_log_content = string.Empty;
                string reactivity_content     = string.Empty;
                string reactivity_25_content  = string.Empty;
                string reactivity_50_content  = string.Empty;
                //string reactivity_75_content = string.Empty;
                //string reactivity_100_content = string.Empty;

                foreach (CleavageSite site in sites)
                {
                    if (site.Extendability < 50)
                    {
                        break;
                    }

                    //if the cleavage efficiency is zero,
                    //we can say that this is not a cleavage site.
                    //filter it out.
                    float efficiency = Efficiency.GetEfficiency(site, dType);
                    if (efficiency == 0)
                    {
                        continue;
                    }

                    site_content           += site.ToString() + "\n";
                    efficiency_content     += efficiency.ToString() + "\n";
                    efficiency_log_content += Math.Log(efficiency).ToString() + "\n";
                    for (int j = 0; j < 21; j++)
                    {
                        reactivity_content += Reactivity.GetReactivity(site.Gene, site.StartAt - 1 + j) + ",";
                    }

                    for (int j = 0 - 25; j < 21 + 25; j++)
                    {
                        reactivity_25_content += Reactivity.GetReactivity(site.Gene, site.StartAt - 1 + j) + ",";
                    }

                    for (int j = 0 - 50; j < 21 + 50; j++)
                    {
                        reactivity_50_content += Reactivity.GetReactivity(site.Gene, site.StartAt - 1 + j) + ",";
                    }

                    reactivity_content    = reactivity_content.TrimEnd(',') + "\n";
                    reactivity_25_content = reactivity_25_content.TrimEnd(',') + "\n";
                    reactivity_50_content = reactivity_50_content.TrimEnd(',') + "\n";
                }
                FileExtension.Save(site_content, Config.WorkingFolder + "\\cleavage_site_" + dType + ".csv");
                FileExtension.Save(efficiency_content, Config.WorkingFolder + "\\cs_efficiencies_" + dType + ".csv");
                FileExtension.Save(efficiency_log_content, Config.WorkingFolder + "\\cs_efficiencies_log_" + dType + ".csv");
                FileExtension.Save(reactivity_content, Config.WorkingFolder + "\\cs_reactivity_" + dType + ".csv");
                FileExtension.Save(reactivity_25_content, Config.WorkingFolder + "\\cs_reactivity_" + dType + "_25.csv");
                FileExtension.Save(reactivity_50_content, Config.WorkingFolder + "\\cs_reactivity_" + dType + "_50.csv");
                //FileExtension.Save(reactivity_75_content, Config.WorkingFoler + "\\cs_reactivity_" + dType + "_75.csv");
                //FileExtension.Save(reactivity_100_content, Config.WorkingFoler + "\\cs_reactivity_" + dType + "_100.csv");
            }
        }