Mercurial > repos > itaxotools > mold
annotate api.py @ 0:4e8e2f836d0f draft default tip
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
author | itaxotools |
---|---|
date | Sun, 29 Jan 2023 16:25:48 +0000 |
parents | |
children |
rev | line source |
---|---|
0
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
1 #!/usr/bin/env python |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
3 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
4 from flask import Flask, make_response, request, current_app, send_file, url_for |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
5 from flask_restful import Resource, Api, reqparse, abort |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
6 from flask.json import jsonify |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
7 from flasgger import Swagger |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
8 from flask_cors import CORS, cross_origin |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
9 from flask_restful.utils import cors |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
10 import logging |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
11 import base64 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
12 import uuid |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
13 import tempfile |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
14 import os |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
15 import html2text |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
16 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
17 # for emails |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
18 import smtplib |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
19 from email.message import EmailMessage |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
20 from email.mime.multipart import MIMEMultipart |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
21 from email.mime.text import MIMEText |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
22 from email.mime.image import MIMEImage |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
23 from celery import Celery |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
24 from celery.schedules import crontab |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
25 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
26 import json |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
27 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
28 #from MolD_sDNC import SortedDisplayDict |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
29 #from MolD_sDNC import Step1 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
30 #from MolD_sDNC import C_VP_PP |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
31 #from MolD_sDNC import random_position |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
32 #from MolD_sDNC import step_reduction_complist |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
33 #from MolD_sDNC import ConditionD |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
34 #from MolD_sDNC import RemoveRedundantPositions |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
35 #from MolD_sDNC import Diagnostic_combinations |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
36 #from MolD_sDNC import IndependentKey |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
37 #from MolD_sDNC import random_sequence2 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
38 #from MolD_sDNC import GenerateBarcode2 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
39 #from MolD_sDNC import Screwed_dataset31 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
40 from MolD_sDNCFASTA import mainprocessing |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
41 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
42 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
43 logging.basicConfig(format='%(levelname)s: %(asctime)s - %(message)s', |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
44 level=logging.DEBUG, datefmt='%d.%m.%Y %I:%M:%S %p') |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
45 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
46 app = Flask(__name__) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
47 app.config.from_envvar('APPSETTINGS') |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
48 API_VERSION = app.config.get('API_VERSION', 1) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
49 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
50 cors = CORS(app, resources={r"/*": {"origins": "*"}}, methods=['GET', 'POST', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
51 api = Api(app, prefix=f"/api/v{API_VERSION}") |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
52 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
53 gunicorn_logger = logging.getLogger('gunicorn.error') |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
54 app.logger.handlers = gunicorn_logger.handlers |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
55 app.logger.setLevel(gunicorn_logger.level) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
56 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
57 REDIS_HOST = app.config.get('REDIS_HOST', 'localhost') |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
58 REDIS_PORT = app.config.get('REDIS_PORT', 6379) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
59 REDIS_DB = app.config.get('REDIS_DB', 0) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
60 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
61 MAILUSER = app.config.get('MAILUSER') |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
62 MAILPASS = app.config.get('MAILPASS') |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
63 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
64 app.config['SWAGGER'] = { |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
65 'uiversion': 3 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
66 } |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
67 swtemplate = { |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
68 "info": { |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
69 "title": "MoID API", |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
70 "description": "MoID API is the online version of a tree independent algorithm to retrieve diagnostic nucleotide characters from monolocus datasets. BioRxiv. DOI: 10.1101/838151", |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
71 "version": f"{API_VERSION}", |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
72 }, |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
73 "schemes": [ |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
74 "https" |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
75 ] |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
76 } |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
77 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
78 swagger_config = { |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
79 "headers": [ |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
80 ], |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
81 "specs": [ |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
82 { |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
83 "endpoint": 'apidescr', |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
84 "route": '/apidescr.json', |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
85 "rule_filter": lambda rule: True, |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
86 "model_filter": lambda tag: True, |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
87 } |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
88 ], |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
89 "static_url_path": "/flasgger_static", |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
90 "swagger_ui": True, |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
91 "specs_route": "/docs/", |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
92 'uiversion': 3 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
93 } |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
94 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
95 swagger = Swagger(app, config=swagger_config, template=swtemplate) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
96 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
97 SEND_EMAILS = True |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
98 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
99 app.config['CELERY_BROKER_URL'] = 'redis://{}:{}/{}'.format(REDIS_HOST, REDIS_PORT, REDIS_DB) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
100 app.config['CELERY_RESULT_BACKEND'] = 'redis://{}:{}/{}'.format(REDIS_HOST, REDIS_PORT, REDIS_DB) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
101 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
102 def make_celery(app): |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
103 celery = Celery(app.import_name, broker=app.config['CELERY_BROKER_URL']) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
104 celery.conf.update(app.config) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
105 TaskBase = celery.Task |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
106 class ContextTask(TaskBase): |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
107 abstract = True |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
108 def __call__(self, *args, **kwargs): |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
109 with app.app_context(): |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
110 return TaskBase.__call__(self, *args, **kwargs) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
111 celery.Task = ContextTask |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
112 return celery |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
113 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
114 celery = make_celery(app) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
115 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
116 #@celery.on_after_configure.connect |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
117 #def setup_periodic_tasks(sender, **kwargs): |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
118 # sender.add_periodic_task( |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
119 # crontab(minute=0, hour='*/3'), |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
120 # check_pending_notifications.s(), |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
121 # ) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
122 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
123 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
124 @celery.task |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
125 def send_email_notification(email, status, parameters, taxalist, orig_filename): |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
126 print("Sending email") |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
127 sender = MAILUSER |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
128 taxa = ", ".join(taxalist) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
129 print(taxalist) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
130 taxa1 = "-".join([t.replace(" ", "_") for t in taxalist]) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
131 msg = MIMEMultipart('related') |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
132 msg['Subject'] = f'MolD results: {taxa}' |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
133 msg['From'] = sender |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
134 msg['To'] = email |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
135 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
136 # TODO: add three txt files: |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
137 # |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
138 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
139 email_body = """\ |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
140 <html> |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
141 <head></head> |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
142 <body> |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
143 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
144 Results: |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
145 {} |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
146 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
147 *************** |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
148 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
149 <p>Citation: <b>Fedosov A.E.</b>, Achaz G., Puillandre N. 2019. Revisiting use of DNA characters in taxonomy with MolD – a tree independent algorithm to retrieve diagnostic nucleotide characters from monolocus datasets. BioRxiv, published online on 11.11.2019. DOI: 10.1101/838151 </p> |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
150 </body> |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
151 </html> |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
152 """.format(status) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
153 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
154 plain_text_results = html2text.html2text(status) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
155 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
156 message_text = MIMEText(email_body, 'html') |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
157 msg.attach(message_text) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
158 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
159 text_attachment = f""" |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
160 Results: |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
161 {plain_text_results} |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
162 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
163 *************** |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
164 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
165 Citation: Fedosov A.E., Achaz G., Puillandre N. 2019. Revisiting use of DNA characters in taxonomy with MolD – a tree independent algorithm to retrieve diagnostic nucleotide characters from monolocus datasets. BioRxiv, published online on 11.11.2019. DOI: 10.1101/838151 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
166 """ |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
167 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
168 mail_attachment = MIMEText(text_attachment) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
169 fname = f"{orig_filename}.results.txt" |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
170 mail_attachment.add_header('Content-Disposition', 'attachment', filename=fname) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
171 msg.attach(mail_attachment) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
172 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
173 print("mail ready to be sent") |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
174 s = smtplib.SMTP('smtp.gmail.com', 587) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
175 s.ehlo() |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
176 s.starttls() |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
177 s.login(MAILUSER, MAILPASS) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
178 s.sendmail(sender, email, msg.as_string()) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
179 s.quit() |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
180 print("mail sent") |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
181 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
182 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
183 @celery.task |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
184 def process_data(email, gapsaschars, taxalist, taxonrank, cutoff, numnucl, numiter, maxlenraw, maxlenrefined, pdiff, nmax, thresh, tmpfname, orig_fname): |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
185 print("Processing data") |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
186 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
187 results, qclades = mainprocessing(gapsaschars, taxalist, taxonrank, cutoff, numnucl, numiter, maxlenraw, maxlenrefined, pdiff, nmax, thresh, tmpfname, orig_fname) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
188 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
189 parameters = f""" |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
190 List of focus taxa: {taxalist} |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
191 Taxon rank: {taxonrank} |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
192 Cutoff: {cutoff} |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
193 NNNNN...: {numnucl} |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
194 Num iterations: {numiter} |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
195 Max length for the raw mDNCs: {maxlenraw} |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
196 Max length for the refined mDNCs: {maxlenrefined} |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
197 Pdiff: {pdiff} |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
198 NMaxSeq: {nmax} |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
199 Threshold of rDNC rating: {thresh} |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
200 """ |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
201 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
202 send_email_notification.delay(email, results, parameters, qclades, orig_fname) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
203 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
204 @app.errorhandler(404) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
205 def not_found(error): |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
206 return make_response(jsonify({'error': 'Not found'}), 404) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
207 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
208 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
209 class DataAPI(Resource): |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
210 def __init__(self): |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
211 self.method_decorators = [] |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
212 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
213 def options(self, *args, **kwargs): |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
214 return jsonify([]) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
215 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
216 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
217 #@token_required |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
218 @cross_origin() |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
219 def post(self): |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
220 """ |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
221 POST data to analyse |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
222 --- |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
223 parameters: |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
224 - in: formData |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
225 name: file |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
226 type: file |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
227 required: true |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
228 description: Data file |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
229 - in: formData |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
230 name: tags |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
231 type: array |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
232 required: false |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
233 description: A list of image tags to link with the image |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
234 items: |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
235 type: string |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
236 description: Tag text |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
237 - in: formData |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
238 name: width |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
239 type: integer |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
240 required: false |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
241 description: Image width |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
242 - in: formData |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
243 name: height |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
244 type: integer |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
245 required: false |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
246 description: Image height |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
247 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
248 responses: |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
249 200: |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
250 description: Data processing |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
251 400: |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
252 description: Bad request |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
253 """ |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
254 app.logger.debug(request.files) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
255 app.logger.debug(request.values) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
256 email = request.values.get('email', None) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
257 gapsaschars = request.values.get('gapsaschars', "no") |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
258 taxalist = request.values.get('taxalist', "ALL") |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
259 taxalist = taxalist.replace(" ", '') |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
260 taxonrank = int(request.values.get('taxonrank', 2)) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
261 cutoff = request.values.get('cutoff', ">0") |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
262 numnucl = int(request.values.get('numnucl', 5)) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
263 numiter = int(request.values.get('numites', 10000)) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
264 maxlenraw = int(request.values.get('maxlenraw', 12)) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
265 maxlenrefined = int(request.values.get('maxlenrefined', 7)) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
266 pdiff = int(request.values.get('pdiff', 1)) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
267 #prseq = float(request.values.get('prseq', 0.1)) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
268 nmax = int(request.values.get('nmax', 20)) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
269 thresh = int(request.values.get('thresh', 85)) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
270 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
271 if not all([email, gapsaschars, taxalist, taxonrank, cutoff, numnucl, numiter, maxlenraw, maxlenrefined, pdiff, nmax, thresh]): |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
272 return make_response(jsonify({'error': 'Parameter missing'}), 400) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
273 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
274 if not request.files: |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
275 return make_response(jsonify({'error': 'No file provided'}), 400) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
276 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
277 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
278 data_file = [request.files.get(f) for f in request.files][-1] |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
279 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
280 thumb_height = request.values.get('height', None) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
281 tmpdname = "/tmp" |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
282 tmpfname = str(uuid.uuid4()) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
283 tmp_upl_file = os.path.join(tmpdname, tmpfname) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
284 data_file.save(tmp_upl_file) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
285 app.logger.debug(tmp_upl_file) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
286 process_data.delay(email, gapsaschars, taxalist, taxonrank, cutoff, numnucl, numiter, maxlenraw, maxlenrefined, pdiff, nmax, thresh, tmp_upl_file, data_file.filename) |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
287 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
288 return jsonify("OK"), 200 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
289 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
290 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
291 api.add_resource(DataAPI, '/data', endpoint='processdata') |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
292 |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
293 if __name__ == '__main__': |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
294 app.debug = True |
4e8e2f836d0f
planemo upload commit 232ce39054ce38be27c436a4cabec2800e14f988-dirty
itaxotools
parents:
diff
changeset
|
295 app.run(host='0.0.0.0') |