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

allpy

changeset 590:8a81996f8bda

structure.py: add join parameter to pair_cores_parts() with join parameter all parts are joined to intersecting parts
author boris (kodomo) <bnagaev@gmail.com>
date Sat, 26 Mar 2011 01:24:21 +0300
parents ab37134638b4
children 49582a92418a
files allpy/structure.py
diffstat 1 files changed, 16 insertions(+), 3 deletions(-) [+]
line diff
     1.1 --- a/allpy/structure.py	Sat Mar 26 01:15:35 2011 +0300
     1.2 +++ b/allpy/structure.py	Sat Mar 26 01:24:21 2011 +0300
     1.3 @@ -376,13 +376,15 @@
     1.4  
     1.5      def pair_core_parts(self, max_delta=config.delta,
     1.6      timeout=config.timeout, min_width=config.min_width,
     1.7 -    min_core_size=config.min_core_size):
     1.8 +    min_core_size=config.min_core_size, join=True):
     1.9          """ Return list of continuous parts of gc for each sequence pair
    1.10  
    1.11          part is block
    1.12 +
    1.13 +        * join -- join parts from all alternative cores
    1.14          """
    1.15          column2pos = self.column2pos()
    1.16 -        parts = []
    1.17 +        result = []
    1.18          for i, seq1 in enumerate(self.sequences):
    1.19              for j, seq2 in enumerate(self.sequences):
    1.20                  if i < j:
    1.21 @@ -391,12 +393,23 @@
    1.22                      cores = block.geometrical_cores(max_delta=max_delta,
    1.23                          timeout=timeout, minsize=min_core_size,
    1.24                          ac_new_atoms=0.0, ac_count=0)
    1.25 +                    parts = []
    1.26                      for core in cores:
    1.27                          core_block = copy(block)
    1.28                          core_block.columns = sorted(core,
    1.29                              key=column2pos.get)
    1.30                          parts += core_block.continuous_blocks(min_width)
    1.31 -        return parts
    1.32 +                    if join:
    1.33 +                        columns = set()
    1.34 +                        for part in parts:
    1.35 +                            columns |= set(part.columns)
    1.36 +                        join_block = copy(block)
    1.37 +                        join_block.columns = sorted(columns,
    1.38 +                            key=column2pos.get)
    1.39 +                        result += join_block.continuous_blocks()
    1.40 +                    else:
    1.41 +                        result += parts
    1.42 +        return result
    1.43  
    1.44      def blocks3d(self, max_delta=config.delta,
    1.45      timeout=config.timeout, timeout_2=config.timeout_2,