/// <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); } }
/// <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)); } }