VariantGrid Admin documentation
This documentation is for admins who configure a VariantGrid server.
For normal users, see VariantGrid user documentation or Developers Technical Wiki
Managing Users
All users are automatically added to the “public” group.
Built in Authentication
For normal users, staff/admin users can create further users via the admin interface. This is “/admin” after the URL, eg: https://variantgrid.com/admin/ (need to change to your server obviously)
In the “Authentication and Authorization” section, there’s a line with “Users” - click the “+ Add” link, then enter the user/details. Groups
You may want to add people to different groups so they can share data between themselves.
Users, permissions and groups
User / Lab Assignment
Windows Authentication (LDAP)
LDAP (Lightweight Directory Access Protocol) is the protocol behind Microsoft Active Directory, which is what most corporate intranets use for logins, Outlook, shared drives etc.
See Wiki: LDAP Setup
KeyCloak Authentication
Server Status
Django Admin (admin only page)
Django comes with an admin interface that allows users (with is_staff=True) to modify database records.
Programmers need to register the models, so let them know if something doesn’t appear.
The interface is automatically generated, but the look and behavior can be customised (eg to use an autocomplete field instead of a select)
Admin Actions
Generally, you use Django admin to edit a single record at a time, but you can also create actions and apply them to multiple records (by selecting them) or all records.
VariantGrid actions are documented in individual sections, eg the “reattempt_variant_matching” action is documented in Classification Admin Pages.
Scanning and auto-loading sequencing files
Process overview
Scanning filesystem
What gets scanned
How frequently. Manually
Troubleshooting
Errors
Deleting and restarting
How do we reload something
SampleSheet.csv
Illumina SequencingRuns have a file called “SampleSheet.csv” which lists the
Many years ago we noticed this file became the main handover point between wet and dry lab staff, and asked Illumina if they would ignore any extra columns in this file, so we can add as many extra columns as we want to annotate our samples.
Special Columns
Enrichment Kits are assigned to rows in the SampleSheet.csv via the Panel column. If all samples are assigned to the same kit, the SequencingRun is also assigned to that kit.
Some panels can change over time (eg it’s a custom kit or the manufacturer adds some new genes) - in which case you can use panel versions.
To do this, add a PanelVersion field in the SampleSheet.csv
An EnrichmentKit is a lab method to enrich a sample for the DNA regions you are interested in. For instance an exome or custom gene capture kit, or amplicons.
EnrichmentKit Setup
EnrichmentKits are automatically created based on directories flowcells are detected in via scanning sequencing dirs, and entries in the sample_sheet
You need to upload:
A Bed containing capture regions
A GeneList containing symbols captured
If the canonical transcripts file contains only genes in the kit, you can turn it into a gene list via:
grep -v "^#" enrichment_kit.GeneTable.tsv | cut -f 1 > /tmp/gene_list.txt
Setup canonical transcripts (if this differs from existing canonical transcripts)
python3.8 manage.py import_canonical_transcript --genome-build=GRCh38 --annotation-consortium=RefSeq enrichment_kit.GeneTable.tsv
In Django admin, go to seqauto -> EnrichmentKits then select the kit.
Select the appropriate details for your kit (eg bed/genelist etc you uploaded) and click save.
RefSeq vs Ensembl
Annotation Versions
What happens when you upgrade annotation versions?
Keep the old one? How much space it uses etc
Might want to delete etc
Annotation Versions
What happens when you upgrade annotation versions?
Keep the old one? How much space it uses etc
Might want to delete etc
Patient record system integration
Analysis - issues (admin only page)
Admin only page - shows node failures
Reload them - what does it mean
Analysis - templates
Any user can create an analysis template, but only administrators can make them “official” and appear as links (on the sample/Cohort page etc)
This is done at an Template Version level - edit via admin at eg https://variantgrid.com/admin/analysis/analysistemplateversion/
You can alter the following check boxes:
Appears in autocomplete
Appears in links
Requires sample somatic
Requires sample gene list
Classification Admin Pages
Activity
This page shows changes that have been performed on a classification (or classifications) evidence and flags. The oldest changes are shown at the top and the newest at the bottom.
HGVS Issues
This page shows Alleles with open flags that require human action/validation.
A typical flag is “Mismatched c.HGVS” (37/38) - when you liftover between genome builds at the coordinate level, sometimes the c.HGVS coordinate can change (due to mRNA transcripts aligning differently to the reference sequences, causing eg exon boundary changes). We flag this for a human to double check everything is ok.
Django Admin tasks
Classification Report
Configuring the report
The report can only be configured by admin users. Each “organisation” within variantgrid uses its own report. To edit it go to the admin view, Organisations, (your organisation), and then edit the Classification report template.
The template is run using Django template and produces HTML
Values available for the report
Evidence Keys
All the fields in the classification are exposed here, see the Evidence Keys admin for a list of possible values, e.g. zygosity, mechanism_of_disease, mode_of_inheritance.
In addition you can also suffix _raw
or _note
e.g.
The raw value for Mode of Inheritance is {{ mode_of_inheritance_raw }} and the note for it is {{ mode_of_inheritance_note }}
{% if mode_of_inheritance_raw == 'x_linked' %}
Special case for X Linked
{% endif %}
Typically you’ll only want to refer to the _raw
value if you’re doing some logic for a specific drop down value. If you ommit the _raw
then you will get the human friendly label for the value which might subtly change in the future.
p.hgvs
You can reference the full p_hgvs
or breakdown
full p.hgvs = {{ p_hgvs }}<br/>
p amino acid from = {{ p_hgvs_aa_from }}<br/>
p hgvs codon = {{ p_hgvs_codon }}<br/>
p hgvs amino acid to = {{ p_hgvs_aa_to }}
c.hgvs
You can reference the full c_hgvs
or breakdown
full c.hgvs = {{ c_hgvs }}<br/>
c hgvs transcript = {{ c_hgvs_transcript }} or {{refseq_transcript_id}}<br/>
c hgvs gene symbole = {{ c_hgvs_gene_symbol }} or {{ gene_symbole }}<br/>
c hgvs short = c.{{ c_hgvs_short }} (this is the value in c_hgvs after "c.")
Evidence weights
A summary of the strength of ACMG critieria met can be accessed with
Evidence weights = {{ evidence_weights }}
Citations
PMIDs put anywhere in the classification can be accessed, and then specific attributes of those citations can be referenced. citations
is an array that you must loop through, e.g.
{% for cit in citations %}
<tr>
<td>{{ cit.source }}</td>
<td>{{ cit.citation_id }}</td>
<td>{{ cit.citation_link }}</td>
<td>{{ cit.journal }}</td>
<td>{{ cit.journal_short }}</td>
<td>{{ cit.title }}</td>
<td>{{ cit.year }}</td>
<td>{{ cit.authors }}</td>
<td>{{ cit.authors_short }}</td>
<td>{{ cit.abstract }}</td>
</tr>
{% endfor %}
The example here is in a table but you can display it however you’d like, e.g.
{% for cit in citations %}
{{ cit.source }}:{{ cit.citation_id }}
{% endfor %}
Which would give you PMID:12334 PMID:4555 etc