Esempio n. 1
0
def init_app():

    server = flask.Flask(__name__, instance_relative_config=True)
    server.config.from_object('config')
    server.config.from_pyfile('config.py')

    cache.init_app(server)
    scheduler.init_app(server)

    app = dash.Dash(__name__,
                    server=server,
                    external_stylesheets=[dbc.themes.BOOTSTRAP],
                    title='SWAT Viewer',
                    requests_pathname_prefix=f'{server.config["APP_ROOT"]}')

    du.configure_upload(
        app,
        server.config['UPLOAD_FOLDER_ROOT'],
    )

    app.layout = maintabs

    # add call backs
    add_callbacks(app)

    # add scheduler
    add_scheduler(scheduler)

    scheduler.start()
    return app
Esempio n. 2
0
def register_callbacks(app, cache, fsc):
    logging.warning('Register callbacks')
    upload_root = os.getenv('MINT_DATA_DIR', tempfile.gettempdir())
    upload_dir = str(P(upload_root) / 'MINT-Uploads')
    UPLOAD_FOLDER_ROOT = upload_dir
    du.configure_upload(app, UPLOAD_FOLDER_ROOT)

    messages.callbacks(app=app, fsc=fsc, cache=cache)

    for module in _modules:
        func = module.callbacks
        if func is not None:
            func(app=app, fsc=fsc, cache=cache)

    # Updates the current viewport
    app.clientside_callback(
        """
        function(href) {
            var w = window.innerWidth;
            var h = window.innerHeight;
            return `${w},${h}` ;
        }
        """, Output('viewport-container', 'children'),
        Input('progress-interval', 'n_intervals'))

    @app.callback(Output('tab-content', 'children'), Input('tab', 'value'),
                  State('wdir', 'children'))
    def render_content(tab, wdir):
        func = modules[tab].layout
        if tab != 'Workspaces' and wdir == '':
            return dbc.Alert('Please, create and activate a workspace.',
                             color='warning')
        elif tab in ['Metadata', 'Peak Optimization', 'Processing'] and len(
                T.get_ms_fns(wdir)) == 0:
            return dbc.Alert('Please import MS files.', color='warning')
        elif tab in ['Processing'] and (len(T.get_targets(wdir)) == 0):
            return dbc.Alert('Please, define targets.', color='warning')
        elif tab in ['Analysis'] and not P(T.get_results_fn(wdir)).is_file():
            return dbc.Alert('Please, create results (Processing).',
                             color='warning')
        if func is not None:
            return func()
        else:
            raise PreventUpdate

    @app.callback(Output('tmpdir', 'children'), Output('logout-button',
                                                       'style'),
                  Input('progress-interval', 'n_intervals'))
    def upate_tmpdir(x):
        if hasattr(app.server, 'login_manager'):
            username = current_user.username
            logging.warning(f'User: {username}')
            tmpdir = str(TMPDIR / 'User' / username)
            logging.warning(tmpdir)
            return tmpdir, {'visibility': 'visible'}
        logging.info('Hide login button')
        return str(TMPDIR / 'Local'), {'visibility': 'hidden'}
Esempio n. 3
0
import dash
import dash_bootstrap_components as dbc
import dash_html_components as html
from dash.dependencies import Input, Output, State
import dash_uploader as du
import os
from flask import send_from_directory
import time

app = dash.Dash(__name__, suppress_callback_exceptions=True)

du.configure_upload(app, 'NetDisk', use_upload_id=False)

app.layout = html.Div(
    dbc.Container([
        html.H3('简易的个人云盘应用'),
        html.Hr(),
        html.P('文件上传区:'),
        du.Upload(id='upload',
                  text='点击或拖动文件到此进行上传!',
                  text_completed='已完成上传文件:',
                  max_files=1000),
        html.Hr(),
        dbc.Row([
            dbc.Button('删除选中的文件', id='delete-btn', outline=True),
            dbc.Button('打包下载选中的文件', id='download-btn', outline=True)
        ]),
        html.Hr(),
        dbc.Spinner(dbc.Checklist(id='file-list-check')),
        html.A(id='download-url', target='_blank')
    ]))
Esempio n. 4
0
from dash.dependencies import Input, Output
import plotly.express as px
import plotly.graph_objects as go
from sklearn.manifold import TSNE
from chord import Chord
from sklearn import (manifold, datasets, decomposition, ensemble,
                     discriminant_analysis, random_projection, neighbors)
import dash_uploader as du
import uuid
from sklearn.decomposition import PCA

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
UPLOAD_FOLDER_ROOT = r"C:\tmp\Uploads"
du.configure_upload(app, UPLOAD_FOLDER_ROOT)
# make a sample data frame with 6 columns
np.random.seed(0)

df_iris = datasets.load_iris()
df = df_iris.data
df = pd.DataFrame(df)

#pca = PCA()
#pca.fit(df)
#exp_var_cumul = np.cumsum(pca.explained_variance_ratio_)
#x=range(1, exp_var_cumul.shape[0] + 1)
app.layout = html.Div(
    [

        # empty Div to trigger javascript file for graph resizing
Esempio n. 5
0
        vid = open(fn_pre, 'rb')
        base64_data = b64encode(vid.read())
        base64_string = base64_data.decode('utf-8')
        return [html.Video(src=f'data:video/webm;base64,{base64_string}', controls=True)], f'/{ffname}', False


    return app


if __name__ == '__main__':

    external_stylesheets = [
        dbc.themes.BOOTSTRAP,
    ]

    server = Flask(__name__)
    app = Dash(__name__, server=server, external_stylesheets=external_stylesheets)
    app.config['suppress_callback_exceptions'] = True

    @app.server.route('/downloads/<path:path>')
    def serve_static(path):
        return send_from_directory(
            Path("downloads"), path, as_attachment=True
        )

    du.configure_upload(app, Path.cwd() / Path("temp"))

    app.layout = layout
    app = add_dash(app)
    app.run_server(debug=True)
Esempio n. 6
0
if DEBUG:
    import shutil
    try:
        shutil.rmtree(str(UPLOADPATH))
    except FileNotFoundError:
        pass
UPLOADPATH.mkdir(parents=False, exist_ok=True)

app = dash.Dash(
    __name__,
    suppress_callback_exceptions=
    True,  # disable callback vaidations to enable dynamic modification
    external_stylesheets=[dbc.themes.BOOTSTRAP])

# configure the upload folder
du.configure_upload(app, UPLOADPATH)
CACHE_CONFIG = {
    'CACHE_TYPE': 'filesystem',
    'CACHE_DIR': 'cache-directory',

    # should be equal to maximum number of users on the app at a single time
    # higher numbers will store more data in the filesystem / redis cache
    'CACHE_THRESHOLD': 10
}
# cache = Cache()
# cache.init_app(app.server, config=CACHE_CONFIG)
# cache.clear()

env['UPLOADPATH'] = str(UPLOADPATH)
app.layout = serve_layout()
register_callbacks(app)
Esempio n. 7
0
import dash_bootstrap_components as dbc
import dash_uploader as du
import plotly.graph_objects as go

from PIL import Image


from python import xai


BS = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
app = dash.Dash(
    __name__, external_stylesheets=[BS], assets_folder=os.getcwd() + "/assets/static"
)

du.configure_upload(app, "temp", use_upload_id=False)

navbar = dbc.NavbarSimple(
    children=[
        dbc.NavItem(
            dbc.NavLink(
                "Dog Dataset",
                href="https://s3-us-west-1.amazonaws.com/udacity-aind/dog-project/dogImages.zip",
            )
        ),
        dbc.NavItem(
            dbc.NavLink("DenseNet-121", href="https://arxiv.org/abs/1608.06993")
        ),
        dbc.NavItem(dbc.NavLink("Grad-CAM", href="https://arxiv.org/abs/1610.02391")),
    ],
    brand="Explainable Artificial Intelligence Webapp",
Esempio n. 8
0
import globals

import dash_uploader as du

app.layout = html.Div(
    [dcc.Location(id='url', refresh=False),
     html.Div(id='page-content')])


@app.callback(dash.dependencies.Output('page-content', 'children'),
              [dash.dependencies.Input('url', 'pathname')])
def display_page(pathname):
    if pathname == '/apps/dsAndAlgos':
        return dsAndAlgosPage
    elif pathname == '/apps/datasets':
        return datasetsPage
    elif pathname == '/apps/algorithms':
        return algorithmsPage
    else:
        return dsAndAlgosPage  # This is the "default page"


if __name__ == '__main__':

    globals.yoloInstance.load_network()

    # Dash uploader creates folder if it does not exist
    du.configure_upload(app, globals.upload_dir)

    app.run_server(debug=False, dev_tools_hot_reload=False)
Esempio n. 9
0
if not os.path.exists(DOWNLOAD_DIRECTORY):
    os.makedirs(DOWNLOAD_DIRECTORY)

if not os.path.exists(LOG_DIRECTORY):
    os.makedirs(LOG_DIRECTORY)
    with open(LOG_DIRECTORY+'/app.log', 'w') as fp:
        pass

logging.basicConfig(filename=LOG_DIRECTORY+'/app.log', format='%(asctime)s  %(levelname)s:  %(message)s', datefmt='%m/%d/%Y %H:%M:%S', level=logging.INFO)

# Normally, Dash creates its own Flask server internally. By creating our own,
# we can create a route for downloading files directly:
server = Flask(__name__)
app = dash.Dash(server=server, external_stylesheets=[dbc.themes.BOOTSTRAP])
du.configure_upload(app, UPLOAD_DIRECTORY)


@server.route("/downloads/<path:path>")
def download(path):
    """Serve a file from the upload directory."""
    return send_from_directory(DOWNLOAD_DIRECTORY, path, as_attachment=True)

@server.route("/list")
def list():
    filelist = uploaded_files()
    return '<br>'.join(filelist)

@server.route("/deleteall")
def deleteall():
    delete_folder(DOWNLOAD_DIRECTORY)
Esempio n. 10
0
import dash
import dash_uploader as du
import dash_bootstrap_components as dbc
import dash_html_components as html
from dash.dependencies import Input, Output, State

app = dash.Dash(__name__)

# 配置上传文件夹
du.configure_upload(app, folder='temp')

app.layout = html.Div(
    dbc.Container(
        [du.Upload(id='uploader'),
         html.H5('上传中或还未上传文件!', id='upload_status')]))


@app.callback(Output('upload_status', 'children'),
              Input('uploader', 'isCompleted'), State('uploader', 'fileNames'))
def show_upload_status(isCompleted, fileNames):
    if isCompleted:
        return '已完成上传:' + fileNames[0]

    return dash.no_update


if __name__ == '__main__':
    app.run_server(debug=True, port=8051)
Esempio n. 11
0
import dash
import dash_core_components as dcc
import dash_bootstrap_components as dbc
import dash_html_components as html
import dash_uploader as du
from dash.dependencies import Input, Output, State
from MainApp import app


du.configure_upload(app, 'data/',use_upload_id=False)

tab_style = {
    'backgroundColor': '#d3e0ea',
    'color': 'rgb(70, 79, 85)'
}

tab_selected_style = {
    'backgroundColor': 'rgb(70, 162, 187)',
    'color': 'white',
}

app.layout = html.Div([
    
   html.Div(
        className="navbar",
        children=[ 
            html.H3(
                children="Interactive Data Analytics Dashboard for RDF Knowledge Graphs", 
                className="navbar--title"),
            html.Div(
                children=[
Esempio n. 12
0
from flask import session
from components.ippd_fw import InteractiveProcessDriftDetectionFW
import uuid

app = dash.Dash(__name__,
                external_stylesheets=[dbc.themes.FLATLY],
                meta_tags=[{
                    'name': 'viewport',
                    'content': 'width=device-width, initial-scale=1.0'
                }],
                suppress_callback_exceptions=True)

framework = InteractiveProcessDriftDetectionFW(model_type='dfg')
app.title = 'IPDD Framework'
# configure the upload folder
du.configure_upload(app, framework.get_input_path())
server = app.server
app.server.secret_key = b'e\x19\xf5\xcaZ\x89\xff\xf4\xbf\x15\x14S.\x931\xbd'


def get_user_id():
    # recover the user from session
    user = '******'
    if not session.get('user'):
        print(f'Creating user session...')
        user = str(uuid.uuid4())
        session['user'] = user
    elif session.get('user'):
        user = session['user']
        # print(f'Get user from session {user}')
    return user
Esempio n. 13
0
import base64
from datetime import datetime as dt


from app import navbar as navbar
from app import app
import calculation as calculation

import dash_uploader as du

temp_upload_directory = r"./monthly_data/uploads/temp/"

temp_upload_directory_abs = os.path.abspath(
    temp_upload_directory).replace('\\', '/') + '/'

du.configure_upload(app, temp_upload_directory, use_upload_id=False)
# cache = Cache(app.server, config={
#    # try 'filesystem' if you don't want to setup redis
#    'CACHE_TYPE': 'redis',
#    'CACHE_REDIS_URL': os.environ.get('REDIS_URL', '')
# })

directories = [a for a in os.listdir(
    './monthly_data/uploads/') if a != '.gitkeep']


column_style = {'height': '60vh',
                'gridTemplateColumns': '100%',
                'display': 'grid',
                'alignItems': 'center',
                'justifyContent': 'center',
Esempio n. 14
0
import dash
from flask_caching import Cache
import dash_uploader as du

app = dash.Dash(__name__, suppress_callback_exceptions=True)
app.title = 'LRGASP quantification evaluation'

config = {
    "DEBUG": True,  # some Flask specific configs
    "CACHE_TYPE": "simple",  # Flask-Caching related configs
    "CACHE_DEFAULT_TIMEOUT": 300
}
cache = Cache()
du.configure_upload(app, r"tmp")
cache.init_app(app.server, config=config)
Esempio n. 15
0
from flask import send_from_directory
import dash
import dash_uploader as du
import dash_html_components as html
import dash_bootstrap_components as dbc
from dash.dependencies import Input, Output
import os

app = dash.Dash(__name__)

du.configure_upload(app, 'temp', use_upload_id=False)

app.layout = html.Div(
    dbc.Container([du.Upload(id='upload'),
                   html.Div(id='download-files')]))


@app.server.route('/download/<file>')
def download(file):

    return send_from_directory('temp', file)


@app.callback(Output('download-files', 'children'),
              Input('upload', 'isCompleted'))
def render_download_url(isCompleted):

    if isCompleted:
        return html.Ul([
            html.Li(
                html.A(f'/{file}', href=f'/download/{file}', target='_blank'))
Esempio n. 16
0
from dash.dependencies import Input, Output, State
import dash_table
import dash_uploader as du

import re
import os
import pandas as pd
from sqlalchemy import create_engine
import cchardet as chardet

postgres_url = 'postgresql://*****:*****@localhost:5432/Dash'
engine = create_engine(postgres_url)

app = dash.Dash(__name__)

du.configure_upload(app, 'upload')

app.layout = html.Div(
    dbc.Container(
        [
            du.Upload(id='upload',
                      filetypes=['csv'],
                      text='点击或拖动文件到此进行上传!',
                      text_completed='已完成上传文件:',
                      cancel_button=True,
                      pause_button=True),
            html.Hr(),
            dbc.Form([
                dbc.FormGroup([
                    dbc.Label("设置入库表名", html_for="table-name"),
                    dbc.Input(id='table-name', autoComplete='off'),
Esempio n. 17
0
from bs4 import BeautifulSoup as bs

if platform.system() == 'Windows':
    cachepath = '\\cache\\'
    dfpath = '\\feathereddataframes\\'
    figurepath = '\\pickledfigures\\'
    topopath = '\\topo\\'
else:
    cachepath = '/cache/'
    dfpath = '/feathereddataframes/'
    topopath = '/topo/'

packagepath = pathlib.Path(__file__).parent.parent.resolve()
du.configure_upload(
    app,
    str(packagepath) + cachepath,
    use_upload_id=False,
)
'''
Contents: 
1 - Dropdown population 
    - Generic placeholder generation, fired on server startup
2 - File upload 
    - makedataframe() 
3 - Data pre-processing 
    - preprocessdata()
        - compares dataframes and checks for intra and inter file errors
4 - Figure management
    - clearprogramdata()
        - clears out files from rats/feathereddataframes and rats/pickledfigures
5 - Server shutdown 
Esempio n. 18
0
import gdown

from styles import SIDEBAR_STYLE, CONTENT_STYLE, LOGO_STYLE

import json

import scvi
import scanpy as sc

import time

sc.set_figure_params(figsize=(4, 4))

app = dash.Dash(external_stylesheets=[dbc.themes.BOOTSTRAP])

du.configure_upload(app, r"./data")

sidebar = html.Div(
    [
        html.Img(src="https://docs.scvi-tools.org/en/stable/_static/logo.png",
                 style=LOGO_STYLE),
        html.Hr(),
        html.P("A gui for scvi.", className="lead"),
        dbc.Nav(
            [
                dbc.NavLink("Upload Data", href="/", active="exact"),
                dbc.NavLink("Preprocess", href="/preprocess", active="exact"),
                dbc.NavLink(
                    "Setup anndata", href="/setup-anndata", active="exact"),
                dbc.NavLink("Train model", href="/train-model",
                            active="exact"),