Small django app to model genes
Project description
# phizz-genes #
A small django app to represent genes, transcripts, omim phenotypes, aliases etc
## Instructions ##
- Add phizz-genes to your INSTALLED_APPS settings like:
```python
INSTALLED_APPS = [
...
'genes',
]
```
- Run `python manage.py migrate` to create the models
## Models ##
```python
class Gene(models.Model):
#The ensembl gene id, ex. 'ENSG00000156110'
#can be use with link like:
#ensembl.org/Homo_sapiens/Gene/Summary?g=ENSG00000156110
ensembl_id = models.CharField(max_length=20)
chrom = models.CharField(max_length=30)
start = models.IntegerField()
stop = models.IntegerField()
#The hgnc symbol, ex. 'ADK
hgnc_symbol = models.CharField(max_length=20, blank=True)
description = models.CharField(max_length=200, null=True)
#The hgnc id, ex. '257' for using link like:
#genenames.org/cgi-bin/gene_symbol_report?hgnc_id=HGNC:257
hgnc_id = models.IntegerField(null=True)
#entrez id, ex. 132, for using link like:
#ncbi.nlm.nih.gov/gene/132
entrez_id = models.IntegerField(null=True)
#vega id, ex. OTTHUMG00000018506, for using link like:
#http://vega.sanger.ac.uk/Homo_sapiens/Gene/Summary?db=core;g=OTTHUMG00000018506
vega_id = models.CharField(max_length=20, null=True)
#ucsc id, ex. uc001jwi.4, for using link like:
#http://genome.cse.ucsc.edu/cgi-bin/hgGene?org=Human&hgg_chrom=none&hgg_type=knownGene&hgg_gene=uc001jwi.4
ucsc_id = models.CharField(max_length=20, null=True)
#pli_score is the estimated sensibility to lof mutations estimated by ExAC
pli_score = models.DecimalField(max_digits=6, decimal_places=5, null=True)
def __str__(self):
return self.hgnc_symbol
#One gene can have several transcripts, one transcript are attached to one gene
class Transcript(models.Model):
gene = models.ForeignKey(Gene, on_delete=models.CASCADE)
refseq_name = models.CharField(max_length=30, null=True)
ensembl_transcript_id = models.CharField(max_length=30)
def __str__(self):
return self.refseq_name
#One phenotype can have several transcripts, one transcript are attached to one gene
class Omim(models.Model):
gene = models.ForeignKey(Gene, on_delete=models.CASCADE)
omim_id = models.IntegerField()
class Alias(models.Model):
gene = models.ForeignKey(Gene, on_delete=models.CASCADE)
alias = models.CharField(max_length=20)
class UniProt(models.Model):
gene = models.ForeignKey(Gene, on_delete=models.CASCADE)
uniprot_id = models.CharField(max_length=20)
```
A small django app to represent genes, transcripts, omim phenotypes, aliases etc
## Instructions ##
- Add phizz-genes to your INSTALLED_APPS settings like:
```python
INSTALLED_APPS = [
...
'genes',
]
```
- Run `python manage.py migrate` to create the models
## Models ##
```python
class Gene(models.Model):
#The ensembl gene id, ex. 'ENSG00000156110'
#can be use with link like:
#ensembl.org/Homo_sapiens/Gene/Summary?g=ENSG00000156110
ensembl_id = models.CharField(max_length=20)
chrom = models.CharField(max_length=30)
start = models.IntegerField()
stop = models.IntegerField()
#The hgnc symbol, ex. 'ADK
hgnc_symbol = models.CharField(max_length=20, blank=True)
description = models.CharField(max_length=200, null=True)
#The hgnc id, ex. '257' for using link like:
#genenames.org/cgi-bin/gene_symbol_report?hgnc_id=HGNC:257
hgnc_id = models.IntegerField(null=True)
#entrez id, ex. 132, for using link like:
#ncbi.nlm.nih.gov/gene/132
entrez_id = models.IntegerField(null=True)
#vega id, ex. OTTHUMG00000018506, for using link like:
#http://vega.sanger.ac.uk/Homo_sapiens/Gene/Summary?db=core;g=OTTHUMG00000018506
vega_id = models.CharField(max_length=20, null=True)
#ucsc id, ex. uc001jwi.4, for using link like:
#http://genome.cse.ucsc.edu/cgi-bin/hgGene?org=Human&hgg_chrom=none&hgg_type=knownGene&hgg_gene=uc001jwi.4
ucsc_id = models.CharField(max_length=20, null=True)
#pli_score is the estimated sensibility to lof mutations estimated by ExAC
pli_score = models.DecimalField(max_digits=6, decimal_places=5, null=True)
def __str__(self):
return self.hgnc_symbol
#One gene can have several transcripts, one transcript are attached to one gene
class Transcript(models.Model):
gene = models.ForeignKey(Gene, on_delete=models.CASCADE)
refseq_name = models.CharField(max_length=30, null=True)
ensembl_transcript_id = models.CharField(max_length=30)
def __str__(self):
return self.refseq_name
#One phenotype can have several transcripts, one transcript are attached to one gene
class Omim(models.Model):
gene = models.ForeignKey(Gene, on_delete=models.CASCADE)
omim_id = models.IntegerField()
class Alias(models.Model):
gene = models.ForeignKey(Gene, on_delete=models.CASCADE)
alias = models.CharField(max_length=20)
class UniProt(models.Model):
gene = models.ForeignKey(Gene, on_delete=models.CASCADE)
uniprot_id = models.CharField(max_length=20)
```