Exemple #1
0
 /// <summary>
 /// Adds a link to the map if it passes the link filter criteria.
 /// </summary>
 /// <param name="tssMap">Tss map.</param>
 /// <param name="LocusMap">Locus map.</param>
 /// <param name="filter">Filter.</param>
 /// <param name="link">Link.</param>
 private static void AddLink(
     ref TssRegulatoryMap tssMap,
     ref LocusRegulatoryMap LocusMap,
     MapLinkFilter filter,
     MapLink link)
 {
     if (filter.IsValidLink(link.Strand, link.LinkLength, link.ConfidenceScore, link.Correlation))
     {
         filter.ApplyLinkFilterType(link, tssMap, LocusMap);
     }
 }
Exemple #2
0
        /// <summary>
        /// Loads the map.
        /// </summary>
        /// <returns>The map.</returns>
        /// <param name="mapFileName">Map file name.</param>
        /// <param name="filter">Filter of map links.</param>
        public static TssRegulatoryMap LoadMap(
            string mapFileName,
            MapLinkFilter filter)
        {
            using (TextReader tr = new StreamReader(mapFileName))
            {
                string line = null;

                TssRegulatoryMap   tssMap   = new TssRegulatoryMap();
                LocusRegulatoryMap LocusMap = new LocusRegulatoryMap();

                while ((line = tr.ReadLine()) != null)
                {
                    var fields = line.Split('\t');


                    var transcriptName = fields[3];
                    var confidence     = double.Parse(fields[8]);
                    var correlation    = double.Parse(fields[7]);
                    var distance       = int.Parse(fields[9]);
                    var LocusName      = fields[6];
                    var strand         = fields[5];

                    var link = new MapLink
                    {
                        ConfidenceScore = confidence,
                        Correlation     = correlation,
                        LinkLength      = distance,
                        TranscriptName  = transcriptName,
                        TssName         = transcriptName,
                        LocusName       = LocusName,
                        Strand          = strand,
                        Chromosome      = fields[0],
                        TssPosition     = int.Parse(fields[1]),
                        HistoneName     = fields[10],
                        GeneName        = fields[11],
                    };

                    if ((filter.TranscriptSet == null || (filter.TranscriptSet != null && filter.TranscriptSet.Contains(transcriptName))) &&
                        (filter.LocusSet == null || (filter.LocusSet != null && filter.LocusSet.Contains(LocusName))))
                    {
                        AddLink(ref tssMap, ref LocusMap, filter, link);
                    }
                }

                return(filter.PostProcessLinkFilterType(tssMap, LocusMap));
            }
        }