Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
dafa1c6
Restore FKs for MCC and dam/sire
bbimber Mar 11, 2022
c8d3ab0
Update MCC ETL to use anonymized dam/sire
bbimber Mar 11, 2022
adeaf3e
Update MCC ETL to ensure dam/sire have aliases
bbimber Mar 11, 2022
30bdab1
Update MCC ETL to ensure dam/sire have aliases
bbimber Mar 12, 2022
866d44c
Update MCC ETL to ensure dam/sire have aliases
bbimber Mar 12, 2022
6e40f5e
Allow aliasing of dam/site for MCC even when not present in primary a…
bbimber Mar 12, 2022
95d25b4
Add validation to customizer
bbimber Mar 12, 2022
4975ca6
Bugfix MCC alias FK
bbimber Mar 12, 2022
d5ce4f3
Allow MCC alias customizer to run during study import, when column mi…
bbimber Mar 12, 2022
5e7b6c3
MCC: better support display of parents when not present in animal table
bbimber Mar 12, 2022
320f7b0
Convert CADD column to double (#54)
bbimber Mar 15, 2022
09c33db
Add COVID samples to folder summary
bbimber Mar 16, 2022
f14ca2d
Allow MCC notifications to use combination of users and groups
bbimber Mar 22, 2022
152ec9a
Add file missed with last commit
bbimber Mar 22, 2022
2daef99
Fix typo
bbimber Mar 22, 2022
2bc97f8
Enforce cell hashing discordance in TCR import
bbimber Mar 22, 2022
85d83c8
Add basic site management UI for MCC
bbimber Mar 22, 2022
3eb720b
MCC test fix
bbimber Mar 22, 2022
a9c309d
Add null check
bbimber Mar 31, 2022
b0f07d9
Add support for standalone nimble run, and allow SRA to merge multipl…
bbimber Apr 1, 2022
ab8f03e
Remove legacy lustre folder
bbimber Apr 2, 2022
f227900
Fix typo in COVID import panel
bbimber Apr 4, 2022
ae546eb
Skip blank lines for COVID sample import
bbimber Apr 4, 2022
24e3e00
Bugfix state translation in COVID sample import
bbimber Apr 5, 2022
93ad4ac
Add column for RQG_alt_ID
bbimber Apr 5, 2022
fd23bba
Skip 'low counts' for VDJ hashing import
bbimber Apr 5, 2022
bf5d236
Ensure consistent case for status in MCC and add automatic selection …
bbimber Apr 13, 2022
97c9d12
Allow mGAP releases to track when each new site/allele first appears
bbimber Apr 21, 2022
bffc272
Merge discvr-21.11 to discvr-22.3
bbimber Apr 22, 2022
5fb73ec
Bump minimist from 1.2.5 to 1.2.6 in /mcc (#55)
dependabot[bot] Apr 22, 2022
e2ecdd2
Bump async from 2.6.3 to 2.6.4 in /mcc (#60)
dependabot[bot] Apr 22, 2022
4065d62
Merge pull request #59 from bimberlabinternal/22.3_fb_merge
bbimber Apr 22, 2022
f4fca37
Checkpoint for sizable refactor of MCC animal request (#61)
bbimber Apr 28, 2022
27ea9e8
More tolerant resolution of legacy MCC request records
bbimber Apr 28, 2022
8f93b80
Add more audit logging for MCC
bbimber Apr 28, 2022
e50a995
Update MCC url
bbimber Apr 28, 2022
9272aec
Bugfixes to MCC request (#62)
bbimber Apr 29, 2022
ba11ce2
Add returnURL to mcc columns
bbimber Apr 29, 2022
0fea03b
Handful of small MCC form improvements
bbimber Apr 29, 2022
12fc73c
More minor MCC improvements
bbimber Apr 29, 2022
b3f5720
More minor MCC improvements
bbimber Apr 29, 2022
d5fbdf3
Non-admin users cannot write to requestscores, so use schema-layer fo…
bbimber Apr 29, 2022
31af2d0
Update field description
bbimber Apr 29, 2022
eff7bb2
Add basic COVID candidate gene table
bbimber Apr 29, 2022
19d0684
Expand text description
bbimber Apr 29, 2022
dc12263
Improve formatting of text
bbimber Apr 29, 2022
fa88724
Merge discvr-21.11 to discvr-22.3
bbimber May 1, 2022
86f1d46
Bump minimist from 1.2.5 to 1.2.6 in /mcc
dependabot[bot] May 1, 2022
186cccc
Merge pull request #63 from bimberlabinternal/22.3_fb_merge
bbimber May 1, 2022
ee19441
Changes from npm audit
bbimber May 2, 2022
e160dce
Merge pull request #64 from bimberlabinternal/dependabot/npm_and_yarn…
bbimber May 3, 2022
b7e464b
Limit U24_status field to include living animals
bbimber May 3, 2022
3b1c216
Error handling for folder deletes
bbimber May 4, 2022
236f2ba
Minor improvements to MCC review form
bbimber May 4, 2022
be0e74d
Add columns to mGAP/MCC user request views
bbimber May 4, 2022
269ab29
Misc improvements to MCC request forms (#65)
bbimber May 7, 2022
597c344
Ensure consistent slash in MCC properties
bbimber May 8, 2022
2618297
Add returnURL to MCC display column URLs and show correct RowId
bbimber May 9, 2022
dd5785e
Bugfix to MCC request form
bbimber May 10, 2022
0a7caf7
Add option to notify MCC reviewers
bbimber May 10, 2022
b7ea83e
Add file missed with last commit
bbimber May 10, 2022
19bf2f5
Test fix
bbimber May 10, 2022
f5e0167
Correct MCC email URL
bbimber May 10, 2022
93dc0d9
MCC test fix now that grid shows approved requests
bbimber May 11, 2022
77888b4
Ensure MCC objectid/requestId is uppercase so JS is consistent
bbimber May 11, 2022
54a15f4
Fault tolerance for simple updates after the original submission wher…
bbimber May 11, 2022
8f0c63b
Extend MCC Test (#66)
bbimber May 11, 2022
8cf8f48
Introduce new more granular MCC permissions (#67)
bbimber May 12, 2022
d8e9508
Merge discvr-22.3 to develop
bbimber May 18, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion covidseq/resources/schemas/covidseq.xml
Original file line numberDiff line numberDiff line change
Expand Up@@ -102,7 +102,9 @@
<column columnName="cDNA_Plate_Location">
<columnTitle>cDNA_Plate_Location</columnTitle>
</column>

<column columnName="RQG_alt_ID">
<columnTitle>RQG_alt_ID</columnTitle>
</column>
<column columnName="container">
<isHidden>true</isHidden>
</column>
Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
ALTER TABLE covidseq.samples ADD rqg_alt_id varchar(200);
15 changes: 12 additions & 3 deletions covidseq/resources/web/covidseq/panel/SampleImportPanel.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -26,9 +26,12 @@ Ext4.define('CovidSeq.panel.SampleImportPanel', {
allowBlank: true
},{
name: 'cdna_plate_id',
labels: ['cDNA_Plate_ID', 'RQG_alt_ID', 'MM Alt ID', 'Alt ID', 'MM ID', 'RQG_alt_ID'],
labels: ['cDNA_Plate_ID', 'MM Alt ID', 'Alt ID', 'MM ID'],
alwaysShow: true,
allowBlank: true
},{
name: 'RQG_alt_ID',
labels: ['RQG_alt_ID', 'RQG_alt_ID']
},{
name: 'gender',
labels: ['Gender', 'Sex'],
Expand DownExpand Up@@ -226,7 +229,8 @@ Ext4.define('CovidSeq.panel.SampleImportPanel', {

if (panel.COUNTY_MAP[val]) {
if (row.state) {
if (panel.STATE_ABBREV[val.toLowerCase()]) {
// Correct state, if needed:
if (panel.STATE_ABBREV[row.state.toLowerCase()]) {
row.state = panel.STATE_ABBREV[row.state.toLowerCase()]
}

Expand DownExpand Up@@ -574,6 +578,11 @@ Ext4.define('CovidSeq.panel.SampleImportPanel', {
var errorMessages = [];
var infoMessages = [];
Ext4.Array.forEach(rows, function(row, rowIdx){
// skip blank rows:
if (Ext4.isEmpty(row.join(''))) {
return;
}

var data = {
objectId: LABKEY.Utils.generateUUID()
};
Expand DownExpand Up@@ -640,7 +649,7 @@ Ext4.define('CovidSeq.panel.SampleImportPanel', {

// CT of record is N for taqpath, N1 for CDC?

data._patientid = data.patientid || data.state + '-OHSU-' + data.samplename.replaceAll('CV', '');
data._patientid = data.patientid || data.state + '-OHSU-' + (data.samplename ? data.samplename.replaceAll('CV', '') : 'Sample');
ret.push(data);
}, this);

Expand Down
15 changes: 14 additions & 1 deletion covidseq/src/org/labkey/covidseq/CovidseqDataProvider.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@
import org.labkey.api.laboratory.AbstractDataProvider;
import org.labkey.api.laboratory.LaboratoryService;
import org.labkey.api.laboratory.NavItem;
import org.labkey.api.laboratory.QueryCountNavItem;
import org.labkey.api.laboratory.QueryImportNavItem;
import org.labkey.api.laboratory.SummaryNavItem;
import org.labkey.api.ldk.table.QueryCache;
Expand All@@ -15,6 +16,7 @@
import org.labkey.api.view.ViewContext;
import org.labkey.api.view.template.ClientDependency;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
Expand DownExpand Up@@ -91,7 +93,18 @@ public Module getOwningModule()
@Override
public List<SummaryNavItem> getSummary(Container c, User u)
{
return Collections.emptyList();
List<SummaryNavItem> items = new ArrayList<>();

for (NavItem nav : getSampleNavItems(c, u))
{
if (nav.isVisible(c, u))
{
QueryImportNavItem item = ((QueryImportNavItem)nav);
items.add(new QueryCountNavItem(this, item.getSchema(), item.getQuery(), item.getItemType(), item.getReportCategory(), item.getLabel()));
}
}

return Collections.unmodifiableList(items);
}

@Override
Expand Down
2 changes: 1 addition & 1 deletion covidseq/src/org/labkey/covidseq/CovidseqModule.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -41,7 +41,7 @@ public String getName()
@Override
public @Nullable Double getSchemaVersion()
{
return 21.003;
return 21.004;
}

@Override
Expand Down
3 changes: 3 additions & 0 deletions mGAP/resources/etls/prime-seq.xml
Original file line numberDiff line numberDiff line change
Expand Up@@ -94,6 +94,8 @@
<column>liftedVcfId/library_id/name</column>
<column>sitesOnlyVcfId/dataid/DataFileUrl</column>
<column>sitesOnlyVcfId/name</column>
<column>novelSitesVcfId/dataid/DataFileUrl</column>
<column>novelSitesVcfId/name</column>
<column>humanJbrowseId</column>
<column>objectId</column>
</sourceColumns>
Expand All@@ -104,6 +106,7 @@
<column source="vcfId/dataid/DataFileUrl" target="vcfId" transformClass="org.labkey.mgap.columnTransforms.OutputFileTransform" />
<column source="variantTable/dataid/DataFileUrl" target="variantTable" transformClass="org.labkey.mgap.columnTransforms.OutputFileTransform" />
<column source="sitesOnlyVcfId/dataid/DataFileUrl" target="sitesOnlyVcfId" transformClass="org.labkey.mgap.columnTransforms.OutputFileTransform" />
<column source="novelSitesVcfId/dataid/DataFileUrl" target="novelSitesVcfId" transformClass="org.labkey.mgap.columnTransforms.OutputFileTransform" />
<column source="jbrowseId" transformClass="org.labkey.mgap.columnTransforms.JBrowseSessionTransform"/>
<column source="liftedVcfId/dataid/DataFileUrl" target="liftedVcfId" transformClass="org.labkey.mgap.columnTransforms.LiftedVcfTransform" />
<column source="humanJbrowseId" transformClass="org.labkey.mgap.columnTransforms.JBrowseHumanSessionTransform"/>
Expand Down
2 changes: 2 additions & 0 deletions mGAP/resources/queries/mGAP/subjectsSource.sql
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,6 +3,8 @@ SELECT
coalesce(s.gender, d.gender) as gender,
coalesce(s.species, d.species) as species,
coalesce(s.geographic_origin, d.geographic_origin) as geographic_origin,
-- TODO: geographic origin score

CASE
WHEN d.center IS NOT NULL THEN d.center
WHEN s.subjectname IS NOT NULL THEN 'ONPRC'
Expand Down
1 change: 1 addition & 0 deletions mGAP/resources/queries/mGAP/userRequests/.qview.xml
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,6 +9,7 @@
<column name="userId"/>
<column name="hasAccess"/>
<column name="created"/>
<column name="userId/Active"/>
</columns>
<sorts>
<sort column="created" descending="true"/>
Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
ALTER TABLE mgap.variantList ALTER COLUMN cadd TYPE DOUBLE PRECISION USING cadd::double precision;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
ALTER TABLE mGAP.variantCatalogReleases ADD novelSitesVcfId int;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
ALTER TABLE mgap.variantList ALTER COLUMN cadd DOUBLE PRECISION;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
ALTER TABLE mGAP.variantCatalogReleases ADD novelSitesVcfId int;
9 changes: 9 additions & 0 deletions mGAP/resources/schemas/mgap.xml
Original file line numberDiff line numberDiff line change
Expand Up@@ -158,6 +158,15 @@
<fkColumnName>rowid</fkColumnName>
</fk>
</column>
<column columnName="novelSitesVcfId">
<columnTitle>Novel Sites For This Release</columnTitle>
<nullable>true</nullable>
<fk>
<fkDbSchema>sequenceanalysis</fkDbSchema>
<fkTable>outputfiles</fkTable>
<fkColumnName>rowid</fkColumnName>
</fk>
</column>
<column columnName="humanJbrowseId">
<columnTitle>Genome Browser (Human)</columnTitle>
<nullable>true</nullable>
Expand Down
91 changes: 89 additions & 2 deletions mGAP/resources/views/phenotypes.html
Original file line numberDiff line numberDiff line change
Expand Up@@ -41,8 +41,7 @@
['No Genetic Association Reported','Cardiovascular Phenotypes','Ueda, et al. 2019','https://www.ncbi.nlm.nih.gov/pubmed/30723724'],
['Genetic Association Reported','Retinal Disease','Moshiri, et al. 2019','https://www.ncbi.nlm.nih.gov/pubmed/30667376'],
['Genetic Association Reported','Bardet-Biedl Syndrome','Peterson, et al. 2019','https://www.ncbi.nlm.nih.gov/pubmed/31589838'],
['Genetic Association Reported','Epidermolysis Bullosa','Johnson, et al. 2019','']

['Genetic Association Reported','Epidermolysis Bullosa','Johnson, et al. 2019','https://www.ncbi.nlm.nih.gov/pubmed/32096448']
];

var dataMap = {};
Expand DownExpand Up@@ -82,6 +81,83 @@
var rowId = mGAP.Utils.getMGapReleaseId();
var url = LABKEY.ActionURL.buildURL('mgap', 'phenotypeList', null, {release: rowId});
$('#traitUrl').attr('href', url);


//COVID data:
var covidRows = [
['LZTFL1','SARS-CoV-2 Infection, COVID-19 severity','x','x','x','x','x','x','2:101823807..101843715'],
['CXCR6','SARS-CoV-2 Infection, COVID-19 severity','x','x','x','x','x','x','2:101948255..101953190'],
['CCR9','SARS-CoV-2 Infection, COVID-19 severity','x','x','x','x','x','x','2:101888276..101907994'],
['CCR1','SARS-CoV-2 Infection, COVID-19 severity','x','x','x','x','x','x','2:102205536..102212086'],
['CCR3','SARS-CoV-2 Infection, COVID-19 severity','x','x','x','x','x','x','2:102268893..102269960'],
['RPL24','SARS-CoV-2 Infection','','','','','','x','2:174444785..174450351'],
['NXPE3','SARS-CoV-2 Infection','','','','','','x','2:174323787..174365577'],
['ZBTB1','SARS-CoV-2 Infection','','','','','','x','7:126570101..126598047'],
['CEP97','SARS-CoV-2 Infection','','','','','','x','2:174379912..174413230'],
['FOXP4','COVID-19 severity','','','','','','x','4:127783384..127837788'],
['CCHCR1','COVID-19 severity','','x','','x','','','4:138774693..138790019'],
['ABO','SARS-CoV-2 Infection','x','x','x','','x','x','15:7086376..7107347'],
['OAS1','COVID-19 severity','x','','','x','','x','11:112632314..112654759'],
['OAS2','COVID-19 severity','x','','','x','','x','11:112695363..112728626'],
['OAS3','COVID-19 severity','x','','','x','','x','11:112661047..112689871'],
['KANSL1','COVID-19 severity','','','','','','x','16:57818339..58014773'],
['WNT3','COVID-19 severity','','','','','','x','16:57171387..57225633'],
['TAC4','COVID-19 severity','','','','','','x','X:89,480,106..89,483,948'],
['KAT7','COVID-19 severity','','','','','','x','16:46957860..47008121'],
['DPP9','COVID-19 severity','x','x','','x','','x','19:4604356..4656762'],
['TYK2','COVID-19 severity','','','','x','','x','19:10110204..10144759'],
['ICAM5','COVID-19 severity','','','','x','','x','19:10044223..10051556'],
['ICAM3','COVID-19 severity','','','','x','','x','19:10088945..10110262'],
['ICAM4','COVID-19 severity','','','','x','','x','19:10041723..10043298'],
['ICAM1','COVID-19 severity','','','','x','','x','19:10024950..10040084'],
['PLEKHA4','SARS-CoV-2 Infection','','','','','','x','19:48819628..48850822'],
['PPP1R15A','SARS-CoV-2 Infection','','','','','','x','19:48854619..48858778'],
['TULP2','SARS-CoV-2 Infection','','','','','','x','19:48864508..48880575'],
['NUCB1','SARS-CoV-2 Infection','','','','','','x','19:48881525..48906138'],
['IFNAR2','COVID-19 severity','x','x','','x','','x','3:13289046..13325302'],
['IL10RB','COVID-19 severity','x','x','','x','','x','3:13,254,913..13,288,351'],
['TMPRSS2','COVID-19 severity','x','x','','x','','x','3:5139757..5184755'],
['ACE2','SARS-CoV-2 Infection','','','','','','','X:15247646..15300547']
];

covidRows = covidRows.map(function(r){
var publications = []
if (r[2]) {
publications.push('<a href="https://www.nature.com/articles/s41588-022-01042-x">Roberts et al.</a>')
}
if (r[3]) {
publications.push('<a href="https://pubmed.ncbi.nlm.nih.gov/35241825/">Horowitz et al.</a>')
}
if (r[4]) {
publications.push('<a href="https://doi.org/10.1038%2Fs41588-021-00854-7">Shelton et al.</a>')
}
if (r[5]) {
publications.push('<a href="https://doi.org/10.1038%2Fs41586-020-03065-y">Pairo-Castineira et al.</a>')
}
if (r[6]) {
publications.push('<a href="https://doi.org/10.1056%2FNEJMoa2020283">Ellinghaus et al.</a>')
}
if (r[7]) {
publications.push('<a href="https://doi.org/10.1038/s41586-021-03767-x">COVID-19 HGI</a>')
}

var url = LABKEY.ActionURL.buildURL('mgap', 'genomebrowser', null, {location: r[8]})
return ['<a href="' + url + '">' + r[0] + '</a>', r[1], publications.join('<br>')]
})

var table = $('#covidPublicationsTable').DataTable({
data: covidRows,
pageLength: 500,

dom: '',
buttons: [],
order: [],
columns: [
{title: 'Candidate Gene'},
{title: 'Phenotype', sortable: false, width: 250},
{title: 'Publications', sortable: false}
]
});
});
})(jQuery);
</script>
Expand DownExpand Up@@ -111,4 +187,15 @@ <h4 style="text-decoration: underline">Published Macaque Models:</h4>
<span><b>Table I. Published macaque disease models with and without reported genetic associations.</b></span>
<table id="phenotypeTable" class="stripe hover"></table>
</div>
</div>
<hr>
<h4 style="text-decoration: underline">COVID Genetic Associations:</h4>
<div class="colDiv">
<div style="flex: 1;max-width: 40%;margin-right: 20px;">
The development of COVID-19 vaccines and therapies required extensive testing of their safety and efficacy in nonhuman primates (NHPs) before these new treatments could be used in humans (<a href="https://www.nature.com/articles/s41684-021-00760-9">reviewed in this article</a>). A growing number of human genes have been implicated in COVID-19 disease severity and hospitalization. The table to the right list many of these genes (summarized in: <a href="https://www.covid19hg.org/">https://www.covid19hg.org/</a>), and provides links to mGAP variants in each gene.
</div>
<div style="width: 600px;">
<span><b>Table II. Genes associated with COVID-19 severity and links to macaque variants (<a href = "https://www.nature.com/articles/s41588-021-00985-x">Based on Karlsen et al.</a>). Click the gene name to load the genome browser, showing macaque variants in that gene.</b></span>
<table id="covidPublicationsTable" class="stripe hover"></table>
</div>
</div>
2 changes: 1 addition & 1 deletion mGAP/src/org/labkey/mgap/mGAPModule.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -61,7 +61,7 @@ public String getName()
@Override
public Double getSchemaVersion()
{
return 16.60;
return 16.63;
}

@Override
Expand Down
2 changes: 1 addition & 1 deletion mGAP/src/org/labkey/mgap/mGapMaintenanceTask.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -120,7 +120,7 @@ private void inspectReleaseFolder(String releaseId, File baseDir, Container c, U
expectedFiles.add(new File(f.getPath() + ".tbi"));
});

final Set<String> fields = PageFlowUtil.set("vcfId", "variantTable", "liftedVcfId", "sitesOnlyVcfId");
final Set<String> fields = PageFlowUtil.set("vcfId", "variantTable", "liftedVcfId", "sitesOnlyVcfId", "novelSitesVcfId");
new TableSelector(QueryService.get().getUserSchema(u, c, mGAPSchema.NAME).getTable(mGAPSchema.TABLE_VARIANT_CATALOG_RELEASES), fields, new SimpleFilter(FieldKey.fromString("objectid"), releaseId), null).forEachResults(rs -> {
for (String field : fields)
{
Expand Down
Loading