Skip to content

Commit

Permalink
Import cleanup + code formatting using black.
Browse files Browse the repository at this point in the history
  • Loading branch information
pascalaldo committed Dec 12, 2024
1 parent d52f9d9 commit 339ab32
Show file tree
Hide file tree
Showing 15 changed files with 651 additions and 389 deletions.
9 changes: 3 additions & 6 deletions about/views.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
from django.shortcuts import render

# Create your views here.

from django.http import HttpResponse
from django.template import loader


def about(request):
template = loader.get_template('about/about.html')
return HttpResponse(template.render())
template = loader.get_template("about/about.html")
return HttpResponse(template.render())
17 changes: 9 additions & 8 deletions ai_assistant/views.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
from django.shortcuts import render

# Create your views here.

from django.http import HttpResponse
from django.template import loader
import os


def ai_assistant(request):
template = loader.get_template('ai_assistant/ai_assistant.html')
# The url of the separately deployed AI Assistant web application is included into the render context
# as a env variable: ----
return HttpResponse(template.render(context={'AI_ASSISTANT_APP_URL': os.environ.get('AI_ASSISTANT_APP_URL')}))
template = loader.get_template("ai_assistant/ai_assistant.html")
# The url of the separately deployed AI Assistant web application is included into the render context
# as a env variable: ----
return HttpResponse(
template.render(
context={"AI_ASSISTANT_APP_URL": os.environ.get("AI_ASSISTANT_APP_URL")}
)
)
14 changes: 9 additions & 5 deletions common/csv_export.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from django.http import HttpResponse, StreamingHttpResponse
from django.http import StreamingHttpResponse
import csv


# Source: https://docs.djangoproject.com/en/5.0/howto/outputting-csv/
class Echo:
"""An object that implements just the write method of the file-like
Expand All @@ -11,21 +12,24 @@ def write(self, value):
"""Write the value by returning it, instead of storing in a buffer."""
return value


def iter_dict_writer_items(items, field_names):
pseudo_buffer = Echo()
writer = csv.DictWriter(pseudo_buffer, fieldnames=field_names)
yield writer.writeheader()

for item in items:
yield writer.writerow(item)



def dict_writer_response(file_name, field_names, rows):
response = StreamingHttpResponse(
iter_dict_writer_items(rows, field_names), content_type="text/csv"
)
response['Content-Disposition'] = f"attachment; filename={file_name}"
response["Content-Disposition"] = f"attachment; filename={file_name}"
return response


def list_writer_response(file_name, rows):
pseudo_buffer = Echo()
writer = csv.writer(pseudo_buffer)
Expand All @@ -35,5 +39,5 @@ def list_writer_response(file_name, rows):
response = StreamingHttpResponse(
(writer.writerow(row) for row in rows), content_type="text/csv"
)
response['Content-Disposition'] = f"attachment; filename={file_name}"
return response
response["Content-Disposition"] = f"attachment; filename={file_name}"
return response
4 changes: 3 additions & 1 deletion common/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@
)
DB = MONOGO_CLIENT[settings.MONGODB["db_name"]]


class MongoDBObjects:
def __init__(self, collection_name):
self.collection = DB[collection_name]

def aggregate(self, pipeline, **kwargs):
return self.collection.aggregate(pipeline, **kwargs)

Expand All @@ -27,5 +28,6 @@ def find(self, filter=None, projection=None, **kwargs):
if not "_id" in projection:
projection["_id"] = 0
return self.collection.find(filter=filter, projection=projection, **kwargs)

def find_one(self, *args, **kwargs):
return self.collection.find_one(*args, **kwargs)
4 changes: 3 additions & 1 deletion common/datatables.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import re


def _parse_get_array(req_get, name):
data = {}
for k, v in req_get.items():
Expand All @@ -22,6 +23,7 @@ def _parse_get_array(req_get, name):
data = [data[i] for i in range(len(data))]
return data


def create_datatables_api(
mongo_aggregate, request_get, select_pipeline, out_keys, as_list=True
):
Expand Down Expand Up @@ -259,4 +261,4 @@ def create_datatables_api_mongodb(
"columns": columns,
"order": order,
}
return response
return response
195 changes: 148 additions & 47 deletions django_project/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""

from django.contrib import admin
from django.urls import path
from django.views.generic import TemplateView

Expand All @@ -26,52 +25,154 @@
from gene_function import views as gene_function_views
from search import views as search_views
from ai_assistant import views as ai_assistant_views
import json, requests


urlpatterns = [
path('robots.txt', TemplateView.as_view(template_name='robots.txt', content_type='text/plain')),
path('', home_views.home, name='home'),
path('about/', about_views.about, name='about'),
path('publications/', publications_views.publications, name='publications'),
path('organisms/', organisms_views.organisms, name='organisms'),
path('pangenome_analyses/overview/', pangenome_analyses_views.overview, name='pangenome_analyses_overview'),
path('pangenome_analyses/overview/csv/', organisms_views.download_organisms_table_csv,
name='download_organisms_table_csv'),
path('heaps_law/', pangenome_analyses_views.heaps_law, name='heaps_law'),
path('cumulative_freq/', pangenome_analyses_views.cumulative_freq, name='cumulative_freq'),
path('gene_annotation_distribution/', pangenome_analyses_views.gene_annotation_distribution, name='gene_annotation_distribution'),
path('gene_freq/', pangenome_analyses_views.gene_freq, name='gene_freq'),
path('hotmap/', pangenome_analyses_views.hotmap, name='hotmap'),
path('hotmap/data/', pangenome_analyses_views.hotmap_data, name='hotmap_data'),
path('hotmap/csv/', pangenome_analyses_views.download_matrix_csv, name='download_matrix_csv'),
path('variant_dominant_freq/', pangenome_analyses_views.variant_dominant_freq, name='variant_dominant_freq'),
path('ds_dn_ratio/', pangenome_analyses_views.ds_dn_ratio, name='ds_dn_ratio'),
path('pangenome_analyses/gene_annotation/', pangenome_analyses_views.gene_annotation, name='pangenome_analyses_gene_annotation'),
path('pangenome_analyses/gene_annotation/json/', pangenome_analyses_views.gene_annotation_json, name='pangenome_analyses_gene_annotation_json'),
path('pangenome_analyses/gene_annotation/csv/', pangenome_analyses_views.download_gene_annotation_table_csv,
name='download_gene_annotation_table_csv'),
path('pangenome_analyses/genome/', pangenome_analyses_views.genome, name='pangenome_analyses_genome'),
path('pangenome_analyses/genome/csv/', pangenome_analyses_views.download_genome_info_table_csv, name='download_genome_info_table_csv'),
path('pangenome_analyses/genome/json/', pangenome_analyses_views.genome_json, name='pangenome_analyses_genome_json'),
path('pangenome_analyses/phylogenetic_tree/', pangenome_analyses_views.phylogenetic_tree, name='pangenome_analyses_phylogenetic_tree'),
path('phylotree_plot/', pangenome_analyses_views.phylotree_plot, name='phylotree_plot'),
path('gene_function/gene_info/', gene_function_views.gene_info, name='gene_info'),
path('gene_function/gene_info/csv/', gene_function_views.download_gene_info_table_csv, name='download_gene_info_table_csv'),
path('aa_pos_overview/', gene_function_views.aa_pos_overview, name='aa_pos_overview'),
path('msa/', gene_function_views.msa, name='msa'),
path('gene_function/genome_info/', gene_function_views.genome_info, name='genome_info'),
path('gene_function/genome_info/genes/csv/', gene_function_views.download_genome_info_gene_table_csv, name='download_genome_info_gene_table_csv'),
path('genome_barplot/', gene_function_views.genome_barplot, name='genome_barplot'),
path('gene_function/genome_gene_info/', gene_function_views.genome_gene_info, name='genome_gene_info'),
path('gene_function/pathway_info/', gene_function_views.pathway_info, name='pathway_info'),
path('gene_function/pathway_info/genes/json/', gene_function_views.pathway_gene_annotation_json, name='pathway_info_genes_json'),
path('search/', search_views.search_results, name='search_results'),
path('search/genes_json/', search_views.gene_annotation_json, name='search_genes_json'),
path('search/family/csv/', search_views.download_search_family_csv, name='download_search_family_csv'),
path('search/species/csv/', search_views.download_search_species_csv, name='download_search_species_csv'),
path('search/pathway/csv/', search_views.download_search_pathway_csv, name='download_search_pathway_csv'),
path('search/genes/csv/', search_views.download_search_genes_csv, name='download_search_genes_csv'),
path('ai_assistant/', ai_assistant_views.ai_assistant, name='ai_assistant')
#path('admin/', admin.site.urls) # make the amdin panel inaccessible via its utl (the admin admin is preserved for the potential future needs)
]
path(
"robots.txt",
TemplateView.as_view(template_name="robots.txt", content_type="text/plain"),
),
path("", home_views.home, name="home"),
path("about/", about_views.about, name="about"),
path("publications/", publications_views.publications, name="publications"),
path("organisms/", organisms_views.organisms, name="organisms"),
path(
"pangenome_analyses/overview/",
pangenome_analyses_views.overview,
name="pangenome_analyses_overview",
),
path(
"pangenome_analyses/overview/csv/",
organisms_views.download_organisms_table_csv,
name="download_organisms_table_csv",
),
path("heaps_law/", pangenome_analyses_views.heaps_law, name="heaps_law"),
path(
"cumulative_freq/",
pangenome_analyses_views.cumulative_freq,
name="cumulative_freq",
),
path(
"gene_annotation_distribution/",
pangenome_analyses_views.gene_annotation_distribution,
name="gene_annotation_distribution",
),
path("gene_freq/", pangenome_analyses_views.gene_freq, name="gene_freq"),
path("hotmap/", pangenome_analyses_views.hotmap, name="hotmap"),
path("hotmap/data/", pangenome_analyses_views.hotmap_data, name="hotmap_data"),
path(
"hotmap/csv/",
pangenome_analyses_views.download_matrix_csv,
name="download_matrix_csv",
),
path(
"variant_dominant_freq/",
pangenome_analyses_views.variant_dominant_freq,
name="variant_dominant_freq",
),
path("ds_dn_ratio/", pangenome_analyses_views.ds_dn_ratio, name="ds_dn_ratio"),
path(
"pangenome_analyses/gene_annotation/",
pangenome_analyses_views.gene_annotation,
name="pangenome_analyses_gene_annotation",
),
path(
"pangenome_analyses/gene_annotation/json/",
pangenome_analyses_views.gene_annotation_json,
name="pangenome_analyses_gene_annotation_json",
),
path(
"pangenome_analyses/gene_annotation/csv/",
pangenome_analyses_views.download_gene_annotation_table_csv,
name="download_gene_annotation_table_csv",
),
path(
"pangenome_analyses/genome/",
pangenome_analyses_views.genome,
name="pangenome_analyses_genome",
),
path(
"pangenome_analyses/genome/csv/",
pangenome_analyses_views.download_genome_info_table_csv,
name="download_genome_info_table_csv",
),
path(
"pangenome_analyses/genome/json/",
pangenome_analyses_views.genome_json,
name="pangenome_analyses_genome_json",
),
path(
"pangenome_analyses/phylogenetic_tree/",
pangenome_analyses_views.phylogenetic_tree,
name="pangenome_analyses_phylogenetic_tree",
),
path(
"phylotree_plot/",
pangenome_analyses_views.phylotree_plot,
name="phylotree_plot",
),
path("gene_function/gene_info/", gene_function_views.gene_info, name="gene_info"),
path(
"gene_function/gene_info/csv/",
gene_function_views.download_gene_info_table_csv,
name="download_gene_info_table_csv",
),
path(
"aa_pos_overview/", gene_function_views.aa_pos_overview, name="aa_pos_overview"
),
path("msa/", gene_function_views.msa, name="msa"),
path(
"gene_function/genome_info/",
gene_function_views.genome_info,
name="genome_info",
),
path(
"gene_function/genome_info/genes/csv/",
gene_function_views.download_genome_info_gene_table_csv,
name="download_genome_info_gene_table_csv",
),
path("genome_barplot/", gene_function_views.genome_barplot, name="genome_barplot"),
path(
"gene_function/genome_gene_info/",
gene_function_views.genome_gene_info,
name="genome_gene_info",
),
path(
"gene_function/pathway_info/",
gene_function_views.pathway_info,
name="pathway_info",
),
path(
"gene_function/pathway_info/genes/json/",
gene_function_views.pathway_gene_annotation_json,
name="pathway_info_genes_json",
),
path("search/", search_views.search_results, name="search_results"),
path(
"search/genes_json/",
search_views.gene_annotation_json,
name="search_genes_json",
),
path(
"search/family/csv/",
search_views.download_search_family_csv,
name="download_search_family_csv",
),
path(
"search/species/csv/",
search_views.download_search_species_csv,
name="download_search_species_csv",
),
path(
"search/pathway/csv/",
search_views.download_search_pathway_csv,
name="download_search_pathway_csv",
),
path(
"search/genes/csv/",
search_views.download_search_genes_csv,
name="download_search_genes_csv",
),
path("ai_assistant/", ai_assistant_views.ai_assistant, name="ai_assistant"),
# path('admin/', admin.site.urls) # make the amdin panel inaccessible via its utl (the admin admin is preserved for the potential future needs)
]
11 changes: 5 additions & 6 deletions gene_function/models.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
from common import database


# Model for the Gene Info table content
class GeneInfo:
objects = database.MongoDBObjects('pankb_gene_info')
objects = database.MongoDBObjects("pankb_gene_info")


# Model for the Genome Info table content
class GenomeInfo:
objects = database.MongoDBObjects('pankb_genome_info')
objects = database.MongoDBObjects("pankb_genome_info")

def get_genome_and_isolation_info_pipeline(genome_match):
return [
Expand Down Expand Up @@ -37,10 +38,8 @@ def get_genome_and_isolation_info(genome_match, projection=None):
projection["_id"] = 0
if projection:
pipeline.append({"$project": projection})
return GenomeInfo.objects.aggregate(
pipeline
)
return GenomeInfo.objects.aggregate(pipeline)


class PathwayInfo:
objects = database.MongoDBObjects('pankb_pathway_info')
objects = database.MongoDBObjects("pankb_pathway_info")
Loading

0 comments on commit 339ab32

Please sign in to comment.