+import types
import logging
-import urlparse
+import urllib.parse
from django.db import models
from django.contrib.auth.models import User, UserManager
from django.core import urlresolvers
biology = models.TextField(blank=True, null=True)
notes = models.TextField(blank=True, null=True)
def __unicode__(self):
- return u'%s - %s' % (self.antigene, self.antibodies)
+ return '%s - %s' % (self.antigene, self.antibodies)
class Meta:
verbose_name_plural = "antibodies"
ordering = ["antigene"]
notes = models.TextField(blank=True)
def __unicode__(self):
- return unicode(self.cellline_name)
+ return str(self.cellline_name)
class Meta:
ordering = ["cellline_name"]
notes = models.TextField(blank=True)
def __unicode__(self):
- return unicode(self.condition_name)
+ return str(self.condition_name)
class Meta:
ordering = ["condition_name"]
name = models.CharField(max_length=50, unique=True)
def __unicode__(self):
- return unicode(self.name)
+ return str(self.name)
class Tag(models.Model):
tag_name = models.CharField(max_length=100, db_index=True,blank=False,null=False)
choices=TAG_CONTEXT, default='Library')
def __unicode__(self):
- return u'%s' % (self.tag_name)
+ return '%s' % (self.tag_name)
class Meta:
ordering = ["context","tag_name"]
#use_genome_build = models.CharField(max_length=100, blank=False, null=False)
def __unicode__(self):
- return u'%s (%s)' % (self.scientific_name, self.common_name)
+ return '%s (%s)' % (self.scientific_name, self.common_name)
class Meta:
verbose_name_plural = "species"
users.admin_order_field = "username"
def __unicode__(self):
- str = unicode(self.name)
+ str = str(self.name)
if self.contact is not None and len(self.contact) > 0:
- str += u' ('+self.contact+u')'
+ str += ' ('+self.contact+')'
return str
def Users(self):
users = self.users.all().order_by('username')
- return ", ".join([unicode(a) for a in users ])
+ return ", ".join([str(a) for a in users ])
class Meta:
ordering = ["name","contact"]
class LibraryType(models.Model):
name = models.CharField(max_length=255, unique=True,
- name="Adapter Type")
+ verbose_name="Adapter Type")
is_paired_end = models.BooleanField(default=True,
help_text="can you do a paired end run with this adapter")
can_multiplex = models.BooleanField(default=True,
help_text="Does this adapter provide multiplexing?")
def __unicode__(self):
- return unicode(self.name)
+ return str(self.name)
class Meta:
ordering = ["-id"]
class MultiplexIndex(models.Model):
"""Map adapter types to the multiplex sequence"""
adapter_type = models.ForeignKey(LibraryType)
- multiplex_id = models.CharField(max_length=3, null=False)
+ multiplex_id = models.CharField(max_length=6, null=False)
sequence = models.CharField(max_length=12, blank=True, null=True)
class Meta:
+ verbose_name_plural = "multiplex indicies"
unique_together = ('adapter_type', 'multiplex_id')
class Library(models.Model):
undiluted_concentration = models.DecimalField("Concentration",
max_digits=5, decimal_places=2, blank=True, null=True,
- help_text=u"Undiluted concentration (ng/\u00b5l)")
+ help_text="Undiluted concentration (ng/\u00b5l)")
# note \u00b5 is the micro symbol in unicode
successful_pM = models.DecimalField(max_digits=9,
decimal_places=1, blank=True, null=True)
bioanalyzer_summary = models.TextField(blank=True,default="")
bioanalyzer_concentration = models.DecimalField(max_digits=5,
decimal_places=2, blank=True, null=True,
- help_text=u"(ng/\u00b5l)")
+ help_text="(ng/\u00b5l)")
bioanalyzer_image_url = models.URLField(blank=True,default="")
def __unicode__(self):
- return u'#%s: %s' % (self.id, self.library_name)
+ return '#%s: %s' % (self.id, self.library_name)
class Meta:
verbose_name_plural = "libraries"
if self.multiplex_id is None or len(self.multiplex_id) == 0:
return 'Err: id empty'
sequences = {}
- multiplex_ids = self.multiplex_id.split(',')
- for multiplex_id in multiplex_ids:
- try:
- multiplex = MultiplexIndex.objects.get(
- adapter_type = self.library_type.id,
- multiplex_id = multiplex_id)
- sequences[multiplex_id] = multiplex.sequence
- except MultiplexIndex.DoesNotExist, e:
- sequences[multiplex_id] = 'Err: index not found'
+ multiplex_expressions = self.multiplex_id.split(',')
+ for multiplex_term in multiplex_expressions:
+ pairs = multiplex_term.split('-')
+ if len(pairs) == 1:
+ key = pairs[0]
+ seq = self._lookup_index(pairs[0])
+ elif len(pairs) == 2:
+ key = pairs[0] + '-' + pairs[1]
+ seq0 = self._lookup_index(pairs[0])
+ seq1 = self._lookup_index(pairs[1])
+ if seq0 is None or seq1 is None:
+ seq = None
+ else:
+ seq = seq0 + '-' + seq1
+ else:
+ raise RuntimeError("Too many - seperated sequences")
+ if seq is None:
+ seq = 'Err: index not found'
+ sequences[key] = seq
return sequences
+ def _lookup_index(self, multiplex_id):
+ try:
+ multiplex = MultiplexIndex.objects.get(
+ adapter_type = self.library_type.id,
+ multiplex_id = multiplex_id)
+ return multiplex.sequence
+ except MultiplexIndex.DoesNotExist as e:
+ return None
+
def index_sequence_text(self, seperator=' '):
"""Return formatted multiplex index sequences"""
sequences = self.index_sequences()
- multiplex_ids = sequences.keys()
+ if sequences is None:
+ return ""
+ if type(sequences) in str:
+ return sequences
+ multiplex_ids = list(sequences.keys())
multiplex_ids.sort()
return seperator.join(( "%s:%s" %(i,sequences[i]) for i in multiplex_ids))
index_sequence_text.short_description = "Index"
ar = []
for t in affs:
ar.append(t.__unicode__())
- return u'%s' % ( ", ".join(ar))
+ return '%s' % ( ", ".join(ar))
def DataRun(self):
str ='<a target=_self href="/admin/experiments/datarun/?q='+self.id+'" title="Check All Data Runs for This Specific Library ..." ">Data Run</a>'
# Check data sanity
if res[2] != "OK":
- return u'<div style="border:solid red 2px">'+res[2]+'</div>'
+ return '<div style="border:solid red 2px">'+res[2]+'</div>'
rc = "%1.2f" % (res[1]/1000000.0)
# Color Scheme: green is more than 10M, blue is more than 5M, orange is more than 3M and red is less. For RNAseq, all those thresholds should be doubled
def __unicode__(self):
#return unicode(self.username) + u" (" + unicode(self.get_full_name()) + u")"
- return unicode(self.get_full_name()) + u' (' + unicode(self.username) + ')'
+ return str(self.get_full_name()) + ' (' + str(self.username) + ')'
def HTSUserInsertID(sender, instance, **kwargs):
"""