Source code for site_type_spaces

"""
Site-type fitness matrices are intended as site-types over rows and amino acids over columns
"""

import numpy

[docs]class MirroringSiteTypeSpace(): """ This class models site-types in one-to-one correspondence with amino acids as according to the published models of Ardell and Sella. >>> aa = amino_acid_spaces.RingAminoAcidSpace(num_aas = 5) >>> dm = aa.get_distance_matrix() >>> dm.round(3) array([[ 0. , 0.219, 0.443, 0.424, 0.205], [ 0.219, 0. , 0.224, 0.357, 0.424], [ 0.443, 0.224, 0. , 0.133, 0.352], [ 0.424, 0.357, 0.133, 0. , 0.219], [ 0.205, 0.424, 0.352, 0.219, 0. ]]) >>> st = MirroringSiteTypeSpace(aa,phi = 0.96) >>> fm = st.get_fitness_matrix() >>> fm.round(3) array([[ 1. , 0.991, 0.982, 0.983, 0.992], [ 0.991, 1. , 0.991, 0.986, 0.983], [ 0.982, 0.991, 1. , 0.995, 0.986], [ 0.983, 0.986, 0.995, 1. , 0.991], [ 0.992, 0.983, 0.986, 0.991, 1. ]]) """ def __init__(self, amino_acids, phi, weights = None): self.phi = phi self.aas = amino_acids ## weights not implemented yet self.num_site_types = amino_acids.num_aas self.num_aas = amino_acids.num_aas self.fitness_matrix = phi ** amino_acids.get_distance_matrix() if weights: self.site_type_weights = numpy.fromiter(weights,numpy.float) else: self.site_type_weights = numpy.ones(self.num_site_types)
[docs] def get_fitness_matrix(self): return self.fitness_matrix.copy()
[docs] def get_site_type_weights(self): return self.site_type_weights.copy()
if __name__ == "__main__": import doctest import amino_acid_spaces doctest.testmod()