Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/allpy/rev/0ed41390408f
Дата изменения: Unknown
Дата индексирования: Tue Oct 2 00:27:27 2012
Кодировка:

Поисковые слова: ori
allpy: 0ed41390408f

allpy

changeset 228:0ed41390408f

repeats: rename group_start and group_end to group_real_start and group_real_end add new methods group_start and group_end similar to start and end (~ min and ~ max)
author boris <bnagaev@gmail.com>
date Sat, 27 Nov 2010 19:21:17 +0300
parents 9c7963064511
children f85ca82c4965
files repeats/repeat_joiner.py repeats/test.py
diffstat 2 files changed, 50 insertions(+), 23 deletions(-) [+]
line diff
     1.1 --- a/repeats/repeat_joiner.py	Sat Nov 27 18:47:13 2010 +0300
     1.2 +++ b/repeats/repeat_joiner.py	Sat Nov 27 19:21:17 2010 +0300
     1.3 @@ -36,7 +36,7 @@
     1.4      repeat_pair
     1.5  
     1.6      in repeat_group (installes in init):
     1.7 -        group_start -- position of real_start() of this repeat in group
     1.8 +        group_real_start -- position of real_start() of this repeat in group
     1.9          group_ori -- if position of real_start() of this repeat in the group < position of real_end()
    1.10      """
    1.11      
    1.12 @@ -45,7 +45,7 @@
    1.13          self.start = pos_from
    1.14          self.end = pos_to
    1.15          self.ori = ori
    1.16 -        self.group_start = None # for repr
    1.17 +        self.group_real_start = None # for repr
    1.18          self.group_ori = None
    1.19          if chromosome_name not in repeat_joiner:
    1.20              repeat_joiner[chromosome_name] = Chromosome(chromosome_name)
    1.21 @@ -92,33 +92,60 @@
    1.22          return self.end - self.start
    1.23  
    1.24      @property
    1.25 -    def group_end(self):
    1.26 +    def group_real_end(self):
    1.27          """ reletive end of repeat """
    1.28          if self.group_ori:
    1.29 -            return self.group_start + len(self)
    1.30 +            return self.group_real_start + len(self)
    1.31          else:
    1.32 -            return self.group_start - len(self)
    1.33 -    
    1.34 +            return self.group_real_start - len(self)
    1.35 +
    1.36 +    @property
    1.37 +    def group_start(self):
    1.38 +        """ min of repeat positions in group  """
    1.39 +        if self.group_ori:
    1.40 +            return self.group_real_start
    1.41 +        else:
    1.42 +            return self.group_real_end + 1
    1.43 +
    1.44 +    @property
    1.45 +    def group_end(self):
    1.46 +        """ max of repeat positions in group  """
    1.47 +        if self.group_ori:
    1.48 +            return self.group_real_end
    1.49 +        else:
    1.50 +            return self.group_real_start + 1
    1.51 +
    1.52      def inherit_from(self, other):
    1.53 -        """ Use other as source repeat to set group_ori and group_start of this """
    1.54 +        """ Use other as source repeat to set group_ori and group_real_start of this """
    1.55          if self.thick_edge() == other:
    1.56 -            self.group_start = other.group_start
    1.57 +            self.group_real_start = other.group_real_start
    1.58              self.group_ori = other.group_ori
    1.59          else:
    1.60              chromosome_ori = other.ori == other.group_ori
    1.61              self.group_ori = self.ori == chromosome_ori
    1.62              delta = self.real_start - other.real_start   
    1.63              if chromosome_ori:
    1.64 -                self.group_start = other.group_start + delta
    1.65 +                self.group_real_start = other.group_real_start + delta
    1.66              else:
    1.67 -                self.group_start = other.group_start - delta
    1.68 +                self.group_real_start = other.group_real_start - delta
    1.69  
    1.70      def __repr__(self):
    1.71 -        if self.group_start != None:
    1.72 -            return "%s: [%i(%i), %i(%i))" % (self.chromosome, self.real_start, self.group_start, self.real_end, self.group_end)
    1.73 +        if self.group_real_start != None:
    1.74 +            return "%s: [%i(%i), %i(%i))" % (self.chromosome, self.real_start,
    1.75 +                    self.group_real_start, self.real_end, self.group_real_end)
    1.76          else:
    1.77              return "%s: [%i, %i)" % (self.chromosome, self.real_start, self.real_end)
    1.78  
    1.79 +    def __str__(self):
    1.80 +        ori = 1 if self.ori else -1
    1.81 +        if self.group_real_start != None:
    1.82 +            group_ori = 1 if self.group_ori else -1
    1.83 +            return "%s %i %i %i %i %i %i" % (self.chromosome, self.start,
    1.84 +                    self.end, self.group_start, self.group_end, ori, group_ori)
    1.85 +        else:
    1.86 +            return "%s %i %i %i" % (self.chromosome, self.start,
    1.87 +                    self.end, ori)
    1.88 +
    1.89  class RepeatPair(tuple):
    1.90      """ (repeat, repeat) """
    1.91      def __init__(self, repeat1_repeat2):
    1.92 @@ -133,11 +160,11 @@
    1.93          self.start = 0
    1.94  
    1.95      def calc_start(self):
    1.96 -        """ shift all group_end to make min position zero """
    1.97 -        offset = -min(min(repeat.group_start, repeat.group_end) 
    1.98 +        """ shift all grou coordinates to make min position zero """
    1.99 +        offset = -min(min(repeat.group_real_start, repeat.group_real_end) 
   1.100                   for repeat in self)
   1.101          for repeat in self:
   1.102 -            repeat.group_start += offset
   1.103 +            repeat.group_real_start += offset
   1.104  
   1.105  class RepeatJoiner(dict):
   1.106      """ dictionary {<chromosome name>: chromosome} 
   1.107 @@ -197,7 +224,7 @@
   1.108          for repeat in self._repeats:
   1.109              if repeat not in used:
   1.110                  repeat.group_ori = True
   1.111 -                repeat.group_start = repeat.real_start
   1.112 +                repeat.group_real_start = repeat.real_start
   1.113                  repeat_group = RepeatGroup()
   1.114                  self.repeat_groups.append(repeat_group)
   1.115                  q = Queue.Queue()
     2.1 --- a/repeats/test.py	Sat Nov 27 18:47:13 2010 +0300
     2.2 +++ b/repeats/test.py	Sat Nov 27 19:21:17 2010 +0300
     2.3 @@ -18,17 +18,17 @@
     2.4          from2 = int(from2)
     2.5          to2 = int(to2) + 1
     2.6          
     2.7 -        RepeatPair([Repeat(rj, c1, from1, to1, ori1), Repeat(rj, c2, from2, to2, ori2)])
     2.8 +        r1 = Repeat(rj, c1, from1, to1, ori1)
     2.9 +        r2 = Repeat(rj, c2, from2, to2, ori2)
    2.10 +        RepeatPair([r1, r2])
    2.11  
    2.12  rj.build_groups()
    2.13  rj.repeat_groups.sort(key=lambda g: len(g), reverse=True)
    2.14 +
    2.15 +
    2.16  print "group\tchr\tchr_from\tchr_to\tgroup_from\tgroup_to\tori\tgroup_ori"
    2.17  for i, repeat_group in enumerate(rj.repeat_groups):
    2.18 -    repeat_group.sort(key=lambda r: min(r.group_start, r.group_end))
    2.19 -    # pprint.pprint(repeat_group)
    2.20 +    repeat_group.sort(key=lambda r: r.group_start)
    2.21      for repeat in repeat_group:
    2.22 -        ori = 1 if repeat.ori else -1
    2.23 -        group_ori = 1 if repeat.group_ori else -1
    2.24 -        print "%i\t%s\t%i\t%i\t%i\t%i\t%i\t%i" % (i, repeat.chromosome, repeat.start,
    2.25 -                repeat.end-1, repeat.group_start, repeat.group_end-1, ori, group_ori) 
    2.26 +        print "%i\t%s" % (i, str(repeat).replace(' ', '\t')) 
    2.27