diff options
author | Muriithi Frederick Muriuki | 2021-08-12 17:21:44 +0300 |
---|---|---|
committer | Muriithi Frederick Muriuki | 2021-08-12 17:21:44 +0300 |
commit | 36044483d365a907a9da6ad8a7b3f0dfb0a918e2 (patch) | |
tree | bddde66aea13ecb8d77353056c5c7f083c4261f6 | |
parent | 3420e378a614f1ecec85f633cd9f202764a54eda (diff) | |
download | genenetwork3-36044483d365a907a9da6ad8a7b3f0dfb0a918e2.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.
-rw-r--r-- | gn3/heatmaps/heatmaps.py | 54 | ||||
-rw-r--r-- | guix.scm | 5 |
2 files changed, 58 insertions, 1 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 @@ -38,6 +38,7 @@ (gn packages python) (gnu packages base) (gnu packages check) + (gnu packages graph) (gnu packages cran) (gnu packages databases) (gnu packages statistics) @@ -101,7 +102,9 @@ ,python-sqlalchemy-stubs) ("r-optparse" ,r-optparse) ("r-qtl" ,r-qtl) - ("r-stringi" ,r-stringi))) + ("r-stringi" ,r-stringi) + ("python-plotly" ,python-plotly) + ("python-pandas" ,python-pandas))) (build-system python-build-system) (home-page "https://github.com/genenetwork/genenetwork3") (synopsis "GeneNetwork3 API for data science and machine learning.") |