Source code for PAMI.extras.graph.visualizePatterns

# visualizePatterns is used to visualize points produced by pattern miner .
#
#  **Importing this algorithm into a python program**
#  --------------------------------------------------------
#
#     from PAMI.extras.graph import visualizePatterns as viz
#
#     obj = viz.visualizePatterns(iFile, topk)
#
#     obj.save()
#





__copyright__ = """
Copyright (C)  2021 Rage Uday Kiran

     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation, either version 3 of the License, or
     (at your option) any later version.

     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.

     You should have received a copy of the GNU General Public License
     along with this program.  If not, see <https://www.gnu.org/licenses/>.
"""

import plotly.express as px
import pandas as pd
import sys


[docs] class visualizePatterns: """ :Description: visualizePatterns is used to visualize points produced by pattern miner . :Attributes: :param file : file store input data as file :param topk : int Takes the value int as input **Importing this algorithm into a python program** -------------------------------------------------------- .. code-block:: python from PAMI.extras.graph import visualizePatterns as viz obj = viz.visualizePatterns(iFile, topk) obj.save() """ def __init__(self, file: str, topk: int) -> None: self.file = file self.topk = topk
[docs] def visualize(self, markerSize: int = 20, zoom: int = 3, width: int = 1500, height: int = 1000) -> None: """ Visualize points produced by pattern miner. :param markerSize: Size of the marker :type markerSize: int :param zoom: Zoom level :type zoom: int :param width: Width of the graph :type width: int :param height: Height of the graph on the screen :type width: int :return: None """ long = [] lat = [] name = [] color = [] R = G = B = 0 lines = {} with open(self.file, "r") as f: for line in f: lines[line] = len(line) lines = list(dict(sorted(lines.items(), key=lambda x: x[1])[-self.topk:]).keys()) start = 1 print("Number \t Pattern") for line in lines: start += 1 if start % 3 == 0: R += 20 if start % 3 == 1: G += 20 if start % 3 == 2: B += 20 if R > 255: R = 0 if G > 255: G = 0 if B > 255: B = 0 RHex = hex(R)[2:] GHex = hex(G)[2:] BHex = hex(B)[2:] line = line.split(":") freq = line[-1] freq = "Frequency: " + freq.strip() line = line[:-1] print(str(start) + "\t" + line[0]) points = line[0].split("\t") points = [x for x in points if x != ""] points = [x.strip("Point()") for x in points] for i in range(len(points)): temp = points[i].split() lat.append(float(temp[0])) long.append(float(temp[1])) name.append(freq) color.append("#" + RHex + GHex + BHex) df = pd.DataFrame({"lon": long, "lat": lat, "freq": name, "col": color}) fig = px.scatter_mapbox(df, lat="lon", lon="lat", hover_name="freq", color="col", zoom=zoom, width=width, height=height) fig.update_layout(mapbox_style="open-street-map") fig.update_traces({'marker': {'size': markerSize}}) fig.show()
if __name__ == "__main__": #_ap = str() _ap = visualizePatterns(sys.argv[1], sys.argv[2]) _ap.visualize()