maom commited on
Commit
a8123aa
·
verified ·
1 Parent(s): a575d96

add spring layout

Browse files
Files changed (1) hide show
  1. app.py +16 -2
app.py CHANGED
@@ -4,6 +4,7 @@ import pandas as pd
4
  import datasets
5
  import streamlit as st
6
  from streamlit_cytoscapejs import st_cytoscapejs
 
7
 
8
  st.set_page_config(layout='wide')
9
 
@@ -97,6 +98,19 @@ node_info = pd.DataFrame({
97
  "gene_name": gene_names,
98
  "description": description})
99
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  elements = []
101
  for i in range(len(gene_ids)):
102
  elements.append({
@@ -104,8 +118,8 @@ for i in range(len(gene_ids)):
104
  "id": gene_ids[i],
105
  "label": gene_name if gene_names[i] is not None else gene_ids[i]},
106
  "position": {
107
- "x" : i * 10,
108
- "y" : i * 10}})
109
  for i in range(len(neighbors.index)):
110
  edge = neighbors.iloc[i]
111
  elements.append({
 
4
  import datasets
5
  import streamlit as st
6
  from streamlit_cytoscapejs import st_cytoscapejs
7
+ import networkx as nx
8
 
9
  st.set_page_config(layout='wide')
10
 
 
98
  "gene_name": gene_names,
99
  "description": description})
100
 
101
+ ################################
102
+ # Use NetworkX to layout graph #
103
+ ################################
104
+ # note I think CytoscapeJS can layout graphs
105
+ # but I'm unsure how to do it through the streamlit-cytoscapejs interface :(
106
+
107
+ G = nx.Graph()
108
+ G.add_weighted_edges_from(
109
+ [neighbors.gene_id_1.to_list(), neighbors.gene_id_2.to_list(), neighbors.coexp_score.to_list()])
110
+ layout = nx.spring_layout(G)
111
+
112
+
113
+
114
  elements = []
115
  for i in range(len(gene_ids)):
116
  elements.append({
 
118
  "id": gene_ids[i],
119
  "label": gene_name if gene_names[i] is not None else gene_ids[i]},
120
  "position": {
121
+ "x" : layout[gene_ids[i]][0],
122
+ "y" : layout[gene_ids[i]][1]}})
123
  for i in range(len(neighbors.index)):
124
  edge = neighbors.iloc[i]
125
  elements.append({