This commit is contained in:
Lasse Studion 2023-05-03 22:33:20 +02:00
parent 799ca67cf5
commit d70a34fefa

24
app.py
View File

@ -60,14 +60,20 @@ with st.form("files"):
# Ask for relations file. # Ask for relations file.
csv_edges = st.file_uploader(label="Upload file with **relations**.", key="relations", help=f'[Example]({info.relations_example})') csv_edges = st.file_uploader(label="Upload file with **relations**.", key="relations", help=f'[Example]({info.relations_example})')
sep = st.radio('Separator in your files:', options=[',', ';', 'tab']) sep = st.radio('Separator in your files:', options=['comma ( , )', 'semicolon ( ; )', 'tab ( \u21E5 )'], help='What are the values in your files separated with?')
if sep == 'tab':
sep='\t' files_uploaded = st.form_submit_button("Done")
files_uploaded = st.form_submit_button("Ok")
if files_uploaded: if files_uploaded:
df = pd.read_csv(csv_edges, sep=sep) separators = {'comma ( , )': ',', 'semicolon ( ; )': ';', 'tab ( \u21E5 )': '\t'}
if 'sep' not in st.session_state:
st.session_state["sep"] = separators[sep]
if csv_edges == None:
st.markdown(':red[You need to upload a file with relations.]')
st.stop()
df = pd.read_csv(csv_edges, sep=st.session_state["sep"])
df.rename({'type': 'relation_type'}, inplace=True, axis=1) # 'type' can't be used as attribute. df.rename({'type': 'relation_type'}, inplace=True, axis=1) # 'type' can't be used as attribute.
df.columns = [i.lower() for i in df.columns] # Remove capital letters from column names. df.columns = [i.lower() for i in df.columns] # Remove capital letters from column names.
@ -113,7 +119,7 @@ if files_uploaded:
) )
if csv_nodes != None: # When a nodes file is uploaded. if csv_nodes != None: # When a nodes file is uploaded.
df_nodes = pd.read_csv(csv_nodes, sep=sep) df_nodes = pd.read_csv(csv_nodes, sep=st.session_state["sep"])
df_nodes.columns = [i.lower() for i in df_nodes.columns] # Remove capital letters from column names. df_nodes.columns = [i.lower() for i in df_nodes.columns] # Remove capital letters from column names.
columns = df_nodes.columns.tolist() columns = df_nodes.columns.tolist()
if "label" in columns: if "label" in columns:
@ -136,7 +142,7 @@ if files_uploaded:
df_nodes.set_index("labels", inplace=True) df_nodes.set_index("labels", inplace=True)
gexf_file = "output.gexf" gexf_file = "output.gexf"
#with open(gexf_file) as f:
# Make empty graph. # Make empty graph.
G = nx.MultiDiGraph() G = nx.MultiDiGraph()
# Add nodes. # Add nodes.
@ -146,7 +152,7 @@ if files_uploaded:
G, df, source=source, target=target, chosen_columns=chosen_columns G, df, source=source, target=target, chosen_columns=chosen_columns
) )
# Turn the graph into text. # Turn the graph into a string.
graph_text = "\n".join([line for line in nx.generate_gexf(G)]) graph_text = "\n".join([line for line in nx.generate_gexf(G)])
# Download gexf-file. # Download gexf-file.