def do_GeneAnnotationWorker(): """ This function starts the GeneAnnotationWorker/Manager combo in order to add annotations for a set of upload genes in the POST variable """ if request.method == 'POST': file_obj = request.files['file'] filetype = request.form["filetype"] filter_name = request.form["filter_name"] filter_desc = request.form["filter_desc"] if file_obj and allowed_file(file_obj.filename): filename = secure_filename(file_obj.filename) save_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) file_obj.save(save_path) if filetype=='type_gene': filter_mgr = filter_manager(db="test",conn=g.conn) filter_mgr.create_filter(filter_name, filter_desc) manager = annotation.GaussWorkerManager(db="test",conn=g.conn) worker = annotation.GeneAnnotationWorker2("mygeneworker") #manager.register_worker(worker) manager.start_worker(worker, args=(filter_name,save_path)) flash("Job successfully queued", "success") return redirect(url_for("filters")) flash("Error in queueing job!", "error") return redirect("/filters")
def get_variants(gene=None, sample_id=None, chrom=None, start=None, end=None): """ Flask function for variants endpoint. Sets up basic query string which is passed in to the javascript datatables AJAX call. """ isoform = None if sample_id is not None: title = "%s" % sample_id query_string = "sample_id=%s" % sample_id elif gene is not None: title = "<em>%s</em>" % gene query_string = "gene=%s" % gene elif chrom is not None: chrom_int = int(chrom.lower().replace("chr","")) title="%s: %s - %s" % (chrom, start, end) query_string = "chrom=%s&start=%s&end=%s" % (chrom, start, end) else: title = 'All variants' query_string = "" filter_mgr = filter_manager(db="test",conn=g.conn) filters = filter_mgr.get_all_filters() return render_template("view_variants.html", title=Markup(title), query_string=Markup(query_string), filters=filters, isoform=isoform)
def jsonfilters(): """ Returns jsonified list of filters for use in AJAX calls and in modals that display current filters, etc """ filter_mgr = filter_manager(db="test",conn=g.conn) rows = filter_mgr.get_all_filters() return jsonify(result=[i for i in rows])
def filters(): """ Show a list of current filters and user-defined/uploaded sets. """ filter_mgr = filter_manager(db="test",conn=g.conn) rows = filter_mgr.get_all_filters() return render_template("filters.html", rows=rows, columns=["filter_name","description", "type", "date_added","color"])
def delete_filter(name): """ Delete a user-defined set. It is not possible to delete filters defined by GAUSS """ filter_mgr = filter_manager(db="test",conn=g.conn) filter_mgr.delete_filter(name) # manager = annotation.GaussWorkerManager(db="test",conn=g.conn) # worker = annotation.GeneAnnotationWorker2("mygeneworker") # manager.register_worker(worker) # manager.start_worker(worker, args=[filter_name])) flash("Filter successfully deleted","success") return redirect(url_for("filters"))
def __init__(self, db, conn): super(GaussQuery, self).__init__() self.db = db self.conn = conn self.var_mgr = variant_manager(db=self.db, conn=self.conn) self.filter_mgr = filter_manager(db=self.db, conn=self.conn) self.column_list = ["chrom", "start", "end", "sample_name", "id", "ref", "alt"] self.custom_column_list = [] self.projection = {k: True for k in self.column_list} #del self.projection["end"] # may not be necessary self.projection["filter"] = True # can add to column_list? self.projection["annotations.EFF"] = True # can add to column list? self.grouped = False self.skip = 0 self.limit = 1000 self.query = defaultdict(lambda: defaultdict(list))