Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import zipfile | |
| import urllib.request | |
| import glob | |
| import SigProfilerMatrixGenerator | |
| from SigProfilerMatrixGenerator import install as genInstall | |
| import shutil | |
| import os | |
| from SigProfilerExtractor import sigpro as sig | |
| import sys | |
| import base64 | |
| import streamlit.components.v1 as components | |
| curdir= os.getcwd() | |
| def remove_old_vcf(): | |
| vcfrem=glob.glob('input/*.vcf') | |
| for filepath in vcfrem: | |
| os.remove(filepath) | |
| vcfrem=glob.glob('input/input/*.vcf') | |
| for filepath in vcfrem: | |
| os.remove(filepath) | |
| def show_pdf(file_path): | |
| with open(file_path,"rb") as f: | |
| base64_pdf = base64.b64encode(f.read()).decode('utf-8') | |
| pdf_display = f'<iframe src="data:application/pdf;base64,{base64_pdf}" width="1500" height="1000" type="application/pdf"></iframe>' | |
| st.markdown(pdf_display, unsafe_allow_html=True) | |
| if st.button('get reference genome'): | |
| st.write(os.path.dirname(SigProfilerMatrixGenerator.__file__)) | |
| dirtest=os.path.dirname(SigProfilerMatrixGenerator.__file__) | |
| #st.write(sys.path) | |
| urllib.request.urlretrieve('https://dl.dropboxusercontent.com/s/et97ewsct862x7m/references.zip?dl=0','references.zip') | |
| with zipfile.ZipFile('references.zip', 'r') as zip_ref: | |
| zip_ref.extractall(dirtest) | |
| seev=glob.glob('/home/appuser/venv/lib/python3.9/site-packages/SigProfilerMatrixGenerator/references/*') | |
| for i in seev: | |
| st.write(i) | |
| ##genInstall.install('GRCh37') | |
| if not os.path.exists('input'): | |
| os.mkdir('input') | |
| if not os.path.exists('input/input'): | |
| os.mkdir('input/input') | |
| file_to_lookat=st.file_uploader('VCF upload here',type=[".vcf"],accept_multiple_files=True) | |
| remove_old_vcf() | |
| if file_to_lookat !=[]: | |
| bytes_data=file_to_lookat[0].read() | |
| with open(os.path.join("input",file_to_lookat[0].name),"wb") as f: | |
| f.write(bytes_data) | |
| f.close() | |
| #vcfuse=glob.glob('file_to_lookat[0].name')[0] | |
| #shutil.copy2(vcfuse,'input/'+vcfuse) | |
| #pdb.set_trace() | |
| with st.spinner('computing signatures'): | |
| sig.sigProfilerExtractor("vcf", "output", "input", minimum_signatures=1, maximum_signatures=3) | |
| show_pdf('output/SBS96/Suggested_Solution/COSMIC_SBS96_Decomposed_Solution/SBS96_Decomposition_Plots.pdf') | |
| components.iframe("https://cancer.sanger.ac.uk/signatures/sbs/", height=3000,width=800) | |
| show_pdf('output/ID83/Suggested_Solution/COSMIC_ID83_Decomposed_Solution/ID83_Decomposition_Plots.pdf') | |
| components.iframe("https://cancer.sanger.ac.uk/signatures/id/",height=3000,width=800) | |
| remove_old_vcf() |