File size: 2,554 Bytes
4b0a09a
e07fb1f
4b0a09a
8574486
 
3fb28d3
c65ead2
3fb28d3
8574486
e1a4424
 
 
 
c513aeb
b315f6a
c513aeb
3fb28d3
 
 
 
25cd418
3fb28d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8574486
 
 
3fb28d3
8574486
f4d15bb
e1a4424
c513aeb
 
f4d15bb
3fb28d3
f4d15bb
8574486
4aa07f2
 
 
 
c513aeb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fed1c09
c513aeb
685d6d8
c513aeb
 
 
 
 
 
685d6d8
c513aeb
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import streamlit as st
from predict_chromosome import predict_and_write


st.title("DeepLoop")
st.write("Looking for some example data?")
st.write("https://huggingface.co/datasets/funlab/HiCorr_test_data")
st.write("Use hg19, HindIII, chr11, CPGZ and LoopDenoise for the Demo data")


#########
# INPUT #
#########
HiCorr_data_hf_repo = st.text_input(
    "HiCorr Data 🤗 Dataset", value="funlab/HiCorr_test_data"
)
training_set = st.selectbox("Select Training Set", ["CPGZ", "H9"], index=0)
depth = st.selectbox("Select Depth", ["LoopDenoise", "50M", "101K"], index=0)
# TODO Throw a warning that h9 only has LoopDenoise and 100M
chromosome = st.selectbox("Select Chromosome", ["chr11"])
prefix = "results"
genome = st.selectbox(
    "Reference Genome",
    [
        "hg19",
        "hg38",
        "mm10",
    ],
)
digestion_enzyme = st.selectbox(
    "Digestion Enzyme",
    [
        "HindIII",
        "Arima",
        # FIXME "microC_5kb_bin"
        "DPNII",
    ],
    index=0,
)
# TODO Add the other toggles
# small_matrix_size
# step_size
# max_dist
# dummy
# val_cols
# keep_zeros

# Load the model from hugging face
from huggingface_hub import from_pretrained_keras

model = from_pretrained_keras(f"funlab/DeepLoop-{training_set}-{depth}")

from huggingface_hub import snapshot_download

HiCorr_data = snapshot_download(HiCorr_data_hf_repo, repo_type="dataset")

anchors = snapshot_download(
    repo_id=f"funlab/{genome}_{digestion_enzyme}_anchor_bed", repo_type="dataset"
)

import os

os.makedirs(prefix, exist_ok=True)

if st.button("Run Deeploop", type="primary"):
    denoised_anchor_to_anchor = None
    with st.spinner("Running the model"):
        denoised_anchor_to_anchor = predict_and_write(
            model,
            full_matrix_dir=HiCorr_data + f"/anchor_2_anchor.loop.{chromosome}",
            input_name=HiCorr_data + f"/anchor_2_anchor.loop.{chromosome}.p_val",
            outdir=prefix,
            anchor_dir=anchors,
            chromosome=chromosome,
            small_matrix_size=128,
            step_size=128,
            dummy=5,
            # max_dist,
            val_cols=["obs", "exp", "pval"],
            # keep_zeros,
        )

    st.success("Done!")

    # Print and list the files
    st.download_button(
        label="Download Denoised Results",
        data=os.path.join(prefix, chromosome + ".denoised.anchor.to.anchor"),
        file_name=chromosome + ".denoised.anchor.to.anchor",
        mime="text/csv",
    )
    st.dataframe(denoised_anchor_to_anchor)
    st.write(os.listdir(prefix))