aboutsummaryrefslogtreecommitdiff
path: root/gn3/heatmaps/heatmaps.py
diff options
context:
space:
mode:
authorMuriithi Frederick Muriuki2021-08-12 17:21:44 +0300
committerArun Isaac2021-08-18 08:47:34 +0000
commit3d1595d1fcc5085621ef8ce41a007d283595c7c6 (patch)
tree2580896397b6a9bb203a7be3b9ee7c931605b5b7 /gn3/heatmaps/heatmaps.py
parent70ed53f03f3d74877d5bc71e49e3a1e65af8b15f (diff)
downloadgenenetwork3-3d1595d1fcc5085621ef8ce41a007d283595c7c6.tar.gz
Initialise heatmap generation module
Issue: https://github.com/genenetwork/gn-gemtext-threads/blob/main/topics/gn1-migration-to-gn2/clustering.gmi * gn3/heatmaps/heatmaps.py: Initialise the module with some code to be used to test out plotly features on the command-line. * guix.scm: Add `python-plotly` and `python-pandas` as dependencies.
Diffstat (limited to 'gn3/heatmaps/heatmaps.py')
-rw-r--r--gn3/heatmaps/heatmaps.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/gn3/heatmaps/heatmaps.py b/gn3/heatmaps/heatmaps.py
new file mode 100644
index 0000000..3bf7917
--- /dev/null
+++ b/gn3/heatmaps/heatmaps.py
@@ -0,0 +1,54 @@
+import random
+import plotly.express as px
+
+#### Remove these ####
+
+heatmap_dir = "heatmap_images"
+
+def generate_random_data(data_stop: float = 2, width: int = 10, height: int = 30):
+ """
+ This is mostly a utility function to be used to generate random data, useful
+ for development of the heatmap generation code, without access to the actual
+ database data.
+ """
+ return [[random.uniform(0,data_stop) for i in range(0, width)]
+ for j in range(0, height)]
+
+def heatmap_x_axis_names():
+ return [
+ "UCLA_BXDBXH_CARTILAGE_V2::ILM103710672",
+ "UCLA_BXDBXH_CARTILAGE_V2::ILM2260338",
+ "UCLA_BXDBXH_CARTILAGE_V2::ILM3140576",
+ "UCLA_BXDBXH_CARTILAGE_V2::ILM5670577",
+ "UCLA_BXDBXH_CARTILAGE_V2::ILM2070121",
+ "UCLA_BXDBXH_CARTILAGE_V2::ILM103990541",
+ "UCLA_BXDBXH_CARTILAGE_V2::ILM1190722",
+ "UCLA_BXDBXH_CARTILAGE_V2::ILM6590722",
+ "UCLA_BXDBXH_CARTILAGE_V2::ILM4200064",
+ "UCLA_BXDBXH_CARTILAGE_V2::ILM3140463"]
+#### END: Remove these ####
+
+# Grey + Blue + Red
+def generate_heatmap():
+ rows = 20
+ data = generate_random_data(height=rows)
+ y = (["%s"%x for x in range(1, rows+1)][:-1] + ["X"]) #replace last item with x for now
+ fig = px.imshow(
+ data,
+ x=heatmap_x_axis_names(),
+ y=y,
+ width=500)
+ fig.update_traces(xtype="array")
+ fig.update_traces(ytype="array")
+ # fig.update_traces(xgap=10)
+ fig.update_xaxes(
+ visible=True,
+ title_text="Traits",
+ title_font_size=16)
+ fig.update_layout(
+ coloraxis_colorscale=[
+ [0.0, '#3B3B3B'], [0.4999999999999999, '#ABABAB'],
+ [0.5, '#F5DE11'], [1.0, '#FF0D00']])
+
+ fig.write_html("%s/%s"%(heatmap_dir, "test_image.html"))
+ return fig