Skip to content

Commit

Permalink
Merge pull request #312 from AmpliconSuite/metadata_integration
Browse files Browse the repository at this point in the history
Metadata integration
  • Loading branch information
jluebeck authored Jan 15, 2025
2 parents cebe5cb + 4ba0864 commit 6fe0d04
Show file tree
Hide file tree
Showing 4 changed files with 128 additions and 36 deletions.
62 changes: 32 additions & 30 deletions caper/caper/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,8 @@ def get_one_deleted_project(project_name_or_uuid):
try:

# old cursor
# project = collection_handle.find({'_id': ObjectId(project_name_or_uuid), 'delete': True})[0]
project = get_projects_close_cursor({'_id': ObjectId(project_name_or_uuid), 'delete': True})[0]
project = collection_handle.find({'_id': ObjectId(project_name_or_uuid), 'delete': True})[0]
# project = get_projects_close_cursor({'_id': ObjectId(project_name_or_uuid), 'delete': True})[0]


prepare_project_linkid(project)
Expand Down Expand Up @@ -269,8 +269,8 @@ def data_qc(request):
username = request.user.username
useremail = request.user.email

private_projects = get_projects_close_cursor({'private' : True, "$or": [{"project_members": username}, {"project_members": useremail}] , 'delete': False})
# private_projects = list(collection_handle.find({'private' : True, "$or": [{"project_members": username}, {"project_members": useremail}] , 'delete': False}))
# private_projects = get_projects_close_cursor({'private' : True, "$or": [{"project_members": username}, {"project_members": useremail}] , 'delete': False})
private_projects = list(collection_handle.find({'private' : True, "$or": [{"project_members": username}, {"project_members": useremail}] , 'delete': False}))
for proj in private_projects:
prepare_project_linkid(proj)
else:
Expand All @@ -280,8 +280,8 @@ def data_qc(request):
public_sample_count = 0


public_projects = get_projects_close_cursor({'private' : False, 'delete': False})
# public_projects = list(collection_handle.find({'private' : False, 'delete': False}))
# public_projects = get_projects_close_cursor({'private' : False, 'delete': False})
public_projects = list(collection_handle.find({'private' : False, 'delete': False}))
for proj in public_projects:
prepare_project_linkid(proj)
public_proj_count = public_proj_count + 1
Expand Down Expand Up @@ -326,8 +326,8 @@ def change_database_dates(request):
return redirect('/accounts/logout')

logging.debug('Starting to update timestamps...')
# projects = list(collection_handle.find({'delete': False}))
projects = get_projects_close_cursor({'delete': False})
projects = list(collection_handle.find({'delete': False}))
# projects = get_projects_close_cursor({'delete': False})

for project in projects:
recently_updated = change_to_standard_date(project['date'])
Expand Down Expand Up @@ -382,8 +382,8 @@ def index(request):
if request.user.is_authenticated:
username = request.user.username
useremail = request.user.email
# private_projects = list(collection_handle.find({'private' : True, "$or": [{"project_members": username}, {"project_members": useremail}] , 'delete': False}))
private_projects = get_projects_close_cursor({'private' : True, "$or": [{"project_members": username}, {"project_members": useremail}] , 'delete': False})
private_projects = list(collection_handle.find({'private' : True, "$or": [{"project_members": username}, {"project_members": useremail}] , 'delete': False}))
# private_projects = get_projects_close_cursor({'private' : True, "$or": [{"project_members": username}, {"project_members": useremail}] , 'delete': False})

for proj in private_projects:
prepare_project_linkid(proj)
Expand All @@ -394,24 +394,24 @@ def index(request):
# just get stats for all private
all_private_proj_count = 0
all_private_sample_count = 0
# all_private_projects = list(collection_handle.find({'private': True, 'delete': False}))
all_private_projects = get_projects_close_cursor({'private': True, 'delete': False})
all_private_projects = list(collection_handle.find({'private': True, 'delete': False}))
# all_private_projects = get_projects_close_cursor({'private': True, 'delete': False})
for proj in all_private_projects:
all_private_proj_count = all_private_proj_count + 1
all_private_sample_count = all_private_sample_count + len(proj['runs'])
# end private stats

public_proj_count = 0
public_sample_count = 0
# public_projects = list(collection_handle.find({'private' : False, 'delete': False}))
public_projects = get_projects_close_cursor({'private' : False, 'delete': False})
public_projects = list(collection_handle.find({'private' : False, 'delete': False}))
# public_projects = get_projects_close_cursor({'private' : False, 'delete': False})
for proj in public_projects:
prepare_project_linkid(proj)
public_proj_count = public_proj_count + 1
public_sample_count = public_sample_count + len(proj['runs'])

# featured_projects = list(collection_handle.find({'private' : False, 'delete': False, 'featured': True}))
featured_projects = get_projects_close_cursor({'private' : False, 'delete': False, 'featured': True})
featured_projects = list(collection_handle.find({'private' : False, 'delete': False, 'featured': True}))
# featured_projects = get_projects_close_cursor({'private' : False, 'delete': False, 'featured': True})
for proj in featured_projects:
prepare_project_linkid(proj)

Expand Down Expand Up @@ -443,8 +443,8 @@ def profile(request, message_to_user=None):
# prevent an absent/null email from matching on anything
if not useremail:
useremail = username
# projects = list(collection_handle.find({"$or": [{"project_members": username}, {"project_members": useremail}] , 'delete': False}))
projects = get_projects_close_cursor({"$or": [{"project_members": username}, {"project_members": useremail}] , 'delete': False})
projects = list(collection_handle.find({"$or": [{"project_members": username}, {"project_members": useremail}] , 'delete': False}))
# projects = get_projects_close_cursor({"$or": [{"project_members": username}, {"project_members": useremail}] , 'delete': False})

for proj in projects:
prepare_project_linkid(proj)
Expand Down Expand Up @@ -1164,13 +1164,13 @@ def gene_search_page(request):
useremail = request.user.email
query_obj = {'private' : True, "$or": [{"project_members": username}, {"project_members": useremail}] , 'Oncogenes' : gen_query, 'delete': False}

# private_projects = list(collection_handle.find(query_obj))
private_projects = get_projects_close_cursor(query_obj)
private_projects = list(collection_handle.find(query_obj))
# private_projects = get_projects_close_cursor(query_obj)
else:
private_projects = []

# public_projects = list(collection_handle.find({'private' : False, 'Oncogenes' : gen_query, 'delete': False}))
public_projects = get_projects_close_cursor({'private' : False, 'Oncogenes' : gen_query, 'delete': False})
public_projects = list(collection_handle.find({'private' : False, 'Oncogenes' : gen_query, 'delete': False}))
# public_projects = get_projects_close_cursor({'private' : False, 'Oncogenes' : gen_query, 'delete': False})

for proj in private_projects:
prepare_project_linkid(proj)
Expand Down Expand Up @@ -1556,8 +1556,8 @@ def admin_featured_projects(request):



# public_projects = list(collection_handle_primary.find({'private': False, 'delete': False}))
public_projects = get_projects_close_cursor({'private': False, 'delete': False})
public_projects = list(collection_handle_primary.find({'private': False, 'delete': False}))
# public_projects = get_projects_close_cursor({'private': False, 'delete': False})
for proj in public_projects:
prepare_project_linkid(proj)

Expand Down Expand Up @@ -1678,8 +1678,8 @@ def admin_stats(request):
users = User.objects.all()

# Get public and private project data
# public_projects = list(collection_handle.find({'private': False, 'delete': False}))
public_projects = get_projects_close_cursor({'private': False, 'delete': False})
public_projects = list(collection_handle.find({'private': False, 'delete': False}))
# public_projects = get_projects_close_cursor({'private': False, 'delete': False})
for proj in public_projects:
prepare_project_linkid(proj)
if check_if_db_field_exists(proj, 'project_downloads'):
Expand Down Expand Up @@ -1765,8 +1765,10 @@ def project_stats_download(request):
# return redirect('/accounts/logout')

# Get public and private project data

public_projects = list(collection_handle.find({'private': False, 'delete': False}))
# public_projects = list(collection_handle.find({'private': False, 'delete': False}))
public_projects = get_projects_close_cursor({'private': False, 'delete': False})
# public_projects = get_projects_close_cursor({'private': False, 'delete': False})
for project in public_projects:
if not 'project_downloads' in project:
project['project_downloads_sum'] = 0
Expand All @@ -1777,7 +1779,7 @@ def project_stats_download(request):
project['sample_downloads_sum'] = 0
else:
project['sample_downloads_sum'] = sum(project['sample_downloads'].values())

for proj in public_projects:
prepare_project_linkid(proj)

Expand Down Expand Up @@ -1979,8 +1981,8 @@ def admin_delete_project(request):
error_message = admin_permanent_delete_project(project_id, project, project_name)


# deleted_projects = list(collection_handle.find({'delete': True, 'current' : True}))
deleted_projects = get_projects_close_cursor({'delete': True, 'current' : True})
deleted_projects = list(collection_handle.find({'delete': True, 'current' : True}))
# deleted_projects = get_projects_close_cursor({'delete': True, 'current' : True})
for proj in deleted_projects:
prepare_project_linkid(proj)
try:
Expand Down
49 changes: 47 additions & 2 deletions caper/templates/pages/create_project.html
Original file line number Diff line number Diff line change
Expand Up @@ -123,16 +123,61 @@ <h5>AmpliconSuite-pipeline output files (.zip or .tar.gz)*</h5>
{% comment %} Accordion for the add metadata stuff {% endcomment %}
<div id="accordion">
<div class="card">
<style>
.btn-link:not([aria-expanded="false"]).collapsed::before {
content: "";
display: inline-block;
border-style: solid;
border-width: 0.4em 0 0.4em 0.4em;
border-color: transparent transparent transparent #000;
margin-right: 0.5em;
transform: rotate(0deg);
vertical-align: middle;
}

.btn-link[aria-expanded="true"]::before {
content: "";
display: inline-block;
border-style: solid;
border-width: 0.4em 0 0.4em 0.4em;
border-color: transparent transparent transparent #000;
margin-right: 0.5em;
transform: rotate(90deg);
vertical-align: middle;
}

.btn-link:not([aria-expanded="true"]).collapsed::before {
content: "";
display: inline-block;
border-style: solid;
border-width: 0.4em 0 0.4em 0.4em;
border-color: transparent transparent transparent #000;
margin-right: 0.5em;
transform: rotate(0deg);
vertical-align: middle;
}

.table-not-striped tbody tr:nth-of-type(odd) {
background-color: transparent!important;
}
.table-not-striped th {
background-color: #E6EFFB;
color: #696a6c
}
.table-not-striped td {
color: #696a6c
}
</style>
<div class="card-header" id="addMetadataHeader">
<h5 class="mb-0">
<button type="button" class="btn btn-link" data-toggle="collapse" data-target="#addMetadataContent" aria-expanded="false" aria-controls="addMetadataContent">
<button class="btn btn-link collapsed" data-toggle="collapse" data-target="#addMetadataContent" aria-expanded="false" aria-controls="addMetadataContent" style="padding: 0.25rem 0.5rem;">
Add Metadata (optional)
</button>
</h5>
</div>

<div id="addMetadataContent" class="collapse" aria-labelledby="addMetadataHeader" data-parent="#accordion">
<div class="card-body">
<h1>Add Metadata</h1>
<p>
Please upload a file in one of the following formats:
<ul>
Expand Down
50 changes: 47 additions & 3 deletions caper/templates/pages/edit_project.html
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,54 @@ <h1>Editing project: '{{ project.project_name }}'</h1>

<div id="accordion">
<div class="card">
<style>
.btn-link:not([aria-expanded="false"]).collapsed::before {
content: "";
display: inline-block;
border-style: solid;
border-width: 0.4em 0 0.4em 0.4em;
border-color: transparent transparent transparent #000;
margin-right: 0.5em;
transform: rotate(0deg);
vertical-align: middle;
}

.btn-link[aria-expanded="true"]::before {
content: "";
display: inline-block;
border-style: solid;
border-width: 0.4em 0 0.4em 0.4em;
border-color: transparent transparent transparent #000;
margin-right: 0.5em;
transform: rotate(90deg);
vertical-align: middle;
}

.btn-link:not([aria-expanded="true"]).collapsed::before {
content: "";
display: inline-block;
border-style: solid;
border-width: 0.4em 0 0.4em 0.4em;
border-color: transparent transparent transparent #000;
margin-right: 0.5em;
transform: rotate(0deg);
vertical-align: middle;
}

.table-not-striped tbody tr:nth-of-type(odd) {
background-color: transparent!important;
}
.table-not-striped th {
background-color: #E6EFFB;
color: #696a6c
}
.table-not-striped td {
color: #696a6c
}
</style>
<div class="card-header" id="headingOne">
<h5 class="mb-0">
<button type="button" class="btn btn-link" data-toggle="collapse" data-target="#collapseOne" aria-expanded="false" aria-controls="collapseOne">
<button class="btn btn-link collapsed" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne" style="padding: 0.25rem 0.5rem;">
Add more samples to project / Replace project file?
</button>
</h5>
Expand Down Expand Up @@ -140,14 +185,13 @@ <h5 class="mb-0">
<div class="card">
<div class="card-header" id="addMetadataHeader">
<h5 class="mb-0">
<button type="button" class="btn btn-link" data-toggle="collapse" data-target="#addMetadataContent" aria-expanded="false" aria-controls="addMetadataContent">
<button class="btn btn-link collapsed" data-toggle="collapse" data-target="#addMetadataContent" aria-expanded="true" aria-controls="addMetadataContent" style="padding: 0.25rem 0.5rem;">
Add Metadata
</button>
</h5>
</div>
<div id="addMetadataContent" class="collapse" aria-labelledby="addMetadataHeader" data-parent="#accordion">
<div class="card-body">
<h1>Add Metadata</h1>
<p>
Please upload a file in one of the following formats:
<ul>
Expand Down
3 changes: 2 additions & 1 deletion caper/templates/pages/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,8 @@ <h4 class="mb-0">

<div id="collapseOne" class="collapse" aria-labelledby="headingOne" data-parent="#accordion" >
<div class="card-body">
Deshpande, V., Luebeck, J., Nguyen, NP.D. et al. Exploring the landscape of focal amplifications in cancer using AmpliconArchitect. Nat Commun 10, 392 (2019). <a href="https://doi.org/10.1038/s41467-018-08200-y" target="_blank">https://doi.org/10.1038/s41467-018-08200-y</a>
<a href="https://www.biorxiv.org/content/10.1101/2024.05.06.592768v1" target="_blank">Luebeck J, Huang E, et al. "AmpliconSuite: an end-to-end workflow for analyzing focal amplifications in cancer genomes." bioRxiv. 2024.</a>
<br>
<br>
To cite results obtained from the site, please refer to the uploader's associated publication where possible.
</div>
Expand Down

0 comments on commit 6fe0d04

Please sign in to comment.