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

allpy

changeset 723:7258c8782f7b

create_monomer_homology function is implemented in blocks_finder.
author Boris Burkov <BurkovBA@gmail.com>
date Fri, 08 Jul 2011 16:06:59 +0400
parents b71f9c1d1509
children fd531580b9af
files allpy/homology.py sequence_based_blocks_search/blocks_finder.py
diffstat 2 files changed, 36 insertions(+), 4 deletions(-) [+]
line diff
     1.1 --- a/allpy/homology.py	Wed Jul 06 22:28:11 2011 +0400
     1.2 +++ b/allpy/homology.py	Fri Jul 08 16:06:59 2011 +0400
     1.3 @@ -10,7 +10,7 @@
     1.4  
     1.5      DATA:
     1.6          monomer_ids = {monomer_id:class_id}
     1.7 -        classes     = {class_id:monomer_id)
     1.8 +        classes     = {class_id:[monomer_id1, monomer_id2]}
     1.9              monomer_id = (sequence_name, monomer_number) 
    1.10              class_id = string 
    1.11          columns = {class_id:column_number} optional
    1.12 @@ -19,7 +19,7 @@
    1.13  
    1.14      METHODS:
    1.15         + .read(file_name) 
    1.16 -       + .wright_monomer(file,monomer_id,monomer_homology_class_id)
    1.17 +       + .write_monomer(file,monomer_id,monomer_homology_class_id)
    1.18         + .write_class(file,list_of_monomer_ids,monomer_homology_class_id)
    1.19         + .write_block(file, block)
    1.20         + .compare_with(class)
     2.1 --- a/sequence_based_blocks_search/blocks_finder.py	Wed Jul 06 22:28:11 2011 +0400
     2.2 +++ b/sequence_based_blocks_search/blocks_finder.py	Fri Jul 08 16:06:59 2011 +0400
     2.3 @@ -3,6 +3,7 @@
     2.4  import sys
     2.5  sys.path.append("../")
     2.6  from allpy import protein
     2.7 +from allpy markups import *
     2.8  import copy
     2.9  import math
    2.10  from functional_groups import functional_groups
    2.11 @@ -306,6 +307,7 @@
    2.12                 
    2.13                  
    2.14  def find_connected_component(sequences, column):
    2.15 +    """output is a list of sequences"""
    2.16      #find one sequence that has blocks
    2.17      queue=[]
    2.18      output=[]
    2.19 @@ -334,9 +336,39 @@
    2.20  
    2.21  #[gblock for gblock in blocks_in_previous_column for gcolumn in gblock.columns if alignment.columns.index(gcolumn)==147]   
    2.22  
    2.23 -def create_table_of_homology(alignment, output_file_name):
    2.24 -    """"""
    2.25 +def create_monomer_homology(alignment):
    2.26 +    """returns MonomerHomology object, given alignment
    2.27 +    with links created by create_links function"""
    2.28 +    #creating markup
    2.29 +    for sequence in alignment:
    2.30 +        sim=SequenceIndexMarkup(sequence)
    2.31 +        sim.refresh()
    2.32 +    #inferring classes_of_equivalence = homologous monomers = connected_components from links
    2.33 +    output = MonomerHomology()
    2.34 +    class_number = 0
    2.35 +    for column in alignment.columns:
    2.36 +        remaining_sequences = copy.copy(column.sequences)
    2.37 +        while remaining_sequences!=0:
    2.38 +            connected_component = find_connected_component(remaining_sequences, column)
    2.39 +            if connected_component = []:
    2.40 +                #create class for each of the remaining monomers
    2.41 +                for sequence in remaining_sequences:
    2.42 +                    subset_of_sequences_in_column2monomer_homology_data(output, class_number, [sequence], column)
    2.43 +                    class_number+=1
    2.44 +                    remaining_sequences.remove(sequence)
    2.45 +            else:
    2.46 +                subset_of_sequences_in_column2monomer_homology_data(output, class_number, connected_component, column)
    2.47 +                class_number+=1
    2.48 +                for sequence in connected_component:
    2.49 +                    remaining_sequences.remove(sequence)
    2.50 +    return output
    2.51  
    2.52  
    2.53 +def subset_of_sequences_in_column2monomer_homology_data(monomer_homology, class_number, sequences, column):
    2.54 +    monomer_homology.classes[class_number] = []
    2.55 +    for sequence in sequences:
    2.56 +        monomer_homology.classes[class_number].append((sequence.name, column[sequence].index+1))
    2.57 +        monomer_homology.monomer_ids[(sequence.name, column[sequence].index+1)] = class_number
    2.58 +
    2.59  if __name__== '__main__':
    2.60      main(open(sys.argv[1]))