Пример #1
0
    def __read_members(self):
        """reads the membership from a fixed set based on halo_ratios5.tsv
        run with the R version"""
        with open('testdata/row_memb-49.tsv') as member_mapfile:
            member_lines = member_mapfile.readlines()
        row_members = {}
        for line in member_lines:
            row = line.strip().split(' ')
            gene = row[0].replace("\"", "")
            for col in range(1, len(row)):
                if gene not in row_members.keys():
                    row_members[gene] = []
                row_members[gene].append(int(row[col]))

        with open('testdata/col_memb-49.tsv') as member_mapfile:
            member_lines = member_mapfile.readlines()
        column_members = {}
        for line in member_lines:
            row = line.strip().split(' ')
            cond = row[0].replace("\"", "")
            for col in range(1, len(row)):
                if cond not in column_members.keys():
                    column_members[cond] = []
                column_members[cond].append(int(row[col]))

        return memb.OrigMembership(sorted(row_members.keys()),
                                   sorted(column_members.keys()), row_members,
                                   column_members, self.config_params)
Пример #2
0
 def test_free_slots_for_row(self):
     """Happy path for add_cluster_to_row()"""
     m = memb.OrigMembership(['R1', 'R2'], ['C1', 'C2'], {
         'R1': [1, 5],
         'R2': []
     }, {
         'C1': [3],
         'C2': []
     }, CONFIG_PARAMS)
     self.assertEquals(0, len(m.free_slots_for_row('R1')))
Пример #3
0
 def test_add_cluster_to_column_error_full(self):
     # full row memberships can not be added to in the normal case
     m = memb.OrigMembership(['R1', 'R2'], ['C1', 'C2'], {
         'R1': [1, 5],
         'R2': []
     }, {
         'C1': [3, 4, 5, 6, 7],
         'C2': []
     }, CONFIG_PARAMS)
     self.assertRaises(Exception, m.add_cluster_to_column, 'C1', 2)
Пример #4
0
 def test_replace_row_cluster(self):
     m = memb.OrigMembership(['R1', 'R2'], ['C1', 'C2'], {
         'R1': [1, 1],
         'R2': []
     }, {
         'C1': [3, 4, 3, 6, 7],
         'C2': []
     }, CONFIG_PARAMS)
     m.replace_row_cluster('R1', 1, 3)
     self.assertEquals({1, 3}, m.clusters_for_row('R1'))
     self.assertEquals({'R1'}, m.rows_for_cluster(3))
Пример #5
0
 def test_replace_column_cluster(self):
     m = memb.OrigMembership(['R1', 'R2'], ['C1', 'C2'], {
         'R1': [1, 5],
         'R2': []
     }, {
         'C1': [3, 4, 3, 6, 7],
         'C2': []
     }, CONFIG_PARAMS)
     m.replace_column_cluster('C1', 0, 1)
     self.assertEquals({1, 3, 4, 6, 7}, m.clusters_for_column('C1'))
     self.assertEquals({'C1'}, m.columns_for_cluster(1))
Пример #6
0
 def test_add_cluster_to_row_error_full_same_cluster(self):
     """add_cluster_to_row() will only work if there are enough 0-slots"""
     m = memb.OrigMembership(['R1', 'R2'], ['C1', 'C2'], {
         'R1': [1, 5],
         'R2': []
     }, {
         'C1': [3],
         'C2': []
     }, CONFIG_PARAMS)
     m.row_membs[1] = [2, 2]  # fill the spaces
     self.assertRaises(Exception, m.add_cluster_to_row, 'R2', 2)
Пример #7
0
 def test_add_cluster_to_column_full_force(self):
     # full col memberships can be added to if forced
     m = memb.OrigMembership(['R1', 'R2'], ['C1', 'C2'], {
         'R1': [1, 5],
         'R2': []
     }, {
         'C1': [3, 4, 5, 6, 7],
         'C2': []
     }, CONFIG_PARAMS)
     m.add_cluster_to_column('C1', 2, force=True)
     self.assertEquals({2, 3, 4, 5, 6, 7}, m.clusters_for_column('C1'))
     self.assertEquals({'C1'}, m.columns_for_cluster(2))
Пример #8
0
 def test_add_cluster_to_row_full_force(self):
     # full row memberships can be added to with the force switch
     m = memb.OrigMembership(['R1', 'R2'], ['C1', 'C2'], {
         'R1': [1, 5],
         'R2': []
     }, {
         'C1': [3],
         'C2': []
     }, CONFIG_PARAMS)
     m.add_cluster_to_row('R1', 3, True)
     self.assertEquals({1, 3, 5}, m.clusters_for_row('R1'))
     self.assertEquals({'R1'}, m.rows_for_cluster(3))
Пример #9
0
 def test_add_cluster_to_row_twice(self):
     """allow to add duplicate clusters"""
     m = memb.OrigMembership(['R1', 'R2'], ['C1', 'C2'], {
         'R1': [1, 5],
         'R2': []
     }, {
         'C1': [3],
         'C2': []
     }, CONFIG_PARAMS)
     m.add_cluster_to_row('R2', 1)
     m.add_cluster_to_row('R2', 1)
     self.assertEquals([1, 1], m.row_membs[1].tolist())
     self.assertEquals({1}, m.clusters_for_row('R2'))
     self.assertEquals(1, m.num_clusters_for_row('R2'))
Пример #10
0
 def test_add_cluster_to_column_twice(self):
     # allow to add duplicate clusters
     m = memb.OrigMembership(['R1', 'R2'], ['C1', 'C2'], {
         'R1': [1, 5],
         'R2': []
     }, {
         'C1': [3],
         'C2': []
     }, CONFIG_PARAMS)
     m.add_cluster_to_column('C1', 4)
     m.add_cluster_to_column('C1', 4)
     self.assertEquals([3, 4, 4, 0, 0], m.col_membs[0].tolist())
     self.assertEquals({3, 4}, m.clusters_for_column('C1'))
     self.assertEquals(2, m.num_clusters_for_column('C1'))
Пример #11
0
    def test_constructor(self):
        """verify initialization"""
        m = memb.OrigMembership(['R1', 'R2'], ['C1', 'C2'], {
            'R1': [1, 5],
            'R2': []
        }, {
            'C1': [3],
            'C2': []
        }, CONFIG_PARAMS)
        self.assertEquals(43, m.num_clusters())
        self.assertEquals(2, m.num_clusters_per_row())
        self.assertEquals(5, m.num_clusters_per_column())
        self.assertEquals(0.5, m.probability_seeing_row_change())
        self.assertEquals(1.0, m.probability_seeing_col_change())
        self.assertEquals(1, m.max_changes_per_row())
        self.assertEquals(5, m.max_changes_per_col())
        self.assertEquals(1, m.min_cluster_rows_allowed())
        self.assertEquals(5, m.max_cluster_rows_allowed())
        self.assertEquals(0, m.min_cluster_columns_allowed())

        self.assertEquals([1, 5], m.row_membs[0].tolist())
        self.assertEquals([0, 0], m.row_membs[1].tolist())
        self.assertEquals([3, 0, 0, 0, 0], m.col_membs[0].tolist())
        self.assertEquals([0, 0, 0, 0, 0], m.col_membs[1].tolist())

        self.assertEquals({1, 5}, m.clusters_for_row('R1'))
        self.assertEquals({3}, m.clusters_for_column('C1'))

        self.assertEquals(2, m.num_clusters_for_row('R1'))
        self.assertEquals(1, m.num_clusters_for_column('C1'))

        self.assertEquals({'R1'}, m.rows_for_cluster(1))
        self.assertEquals({'C1'}, m.columns_for_cluster(3))
        self.assertEquals(1, m.num_row_members(1))
        self.assertEquals(0, m.num_row_members(7))
        self.assertEquals(1, m.num_column_members(3))
        self.assertEquals(0, m.num_column_members(7))

        self.assertEquals([2, 3], m.clusters_not_in_row('R1', [1, 2, 3, 5]))
        self.assertEquals([1, 2, 5],
                          m.clusters_not_in_column('C1', [1, 2, 3, 5]))

        self.assertTrue(m.is_row_in_cluster('R1', 1))
        self.assertFalse(m.is_row_in_cluster('R1', 2))

        self.assertTrue(m.is_column_in_cluster('C1', 3))
        self.assertFalse(m.is_column_in_cluster('C1', 1))
Пример #12
0
    def test_add_cluster_to_column(self):
        # happy path for add_cluster_to_column()
        m = memb.OrigMembership(['R1', 'R2'], ['C1', 'C2'], {
            'R1': [1, 5],
            'R2': []
        }, {
            'C1': [3],
            'C2': []
        }, CONFIG_PARAMS)
        m.add_cluster_to_column('C1', 4)
        self.assertEquals({3, 4}, m.clusters_for_column('C1'))
        self.assertEquals(2, m.num_clusters_for_column('C1'))
        self.assertEquals({'C1'}, m.columns_for_cluster(4))

        m.add_cluster_to_column('C2', 3)
        self.assertEquals({'C1', 'C2'}, m.columns_for_cluster(3))
        self.assertEquals(2, m.num_column_members(3))
Пример #13
0
    def test_add_cluster_to_row(self):
        """Happy path for add_cluster_to_row()"""
        m = memb.OrigMembership(['R1', 'R2'], ['C1', 'C2'], {
            'R1': [1, 5],
            'R2': []
        }, {
            'C1': [3],
            'C2': []
        }, CONFIG_PARAMS)
        m.add_cluster_to_row('R2', 3)
        self.assertEquals({3}, m.clusters_for_row('R2'))
        self.assertEquals(1, m.num_clusters_for_row('R2'))
        self.assertEquals({'R2'}, m.rows_for_cluster(3))

        m.add_cluster_to_row('R2', 1)
        self.assertEquals({1, 3}, m.clusters_for_row('R2'))
        self.assertEquals(2, m.num_clusters_for_row('R2'))
        self.assertEquals({'R1', 'R2'}, m.rows_for_cluster(1))
        self.assertEquals(2, m.num_row_members(1))
Пример #14
0
    def __read_members(self):
        with open('testdata/row_membership.tsv') as member_mapfile:
            member_lines = member_mapfile.readlines()
        row_members = {}
        for line in member_lines:
            row = line.strip().split('\t')
            row_members[row[0]] = [int(row[1])]

        with open('testdata/column_membership.tsv') as member_mapfile:
            member_lines = member_mapfile.readlines()
        column_members = {}
        for line in member_lines:
            row = line.strip().split('\t')
            column_members[row[0]] = [int(cluster)
                                      for cluster in row[1].split(':')]
        return memb.OrigMembership(sorted(row_members.keys()),
                                   sorted(column_members.keys()),
                                   row_members, column_members,
                                   {'memb.num_clusters': 43,
                                    'memb.clusters_per_row': 2,
                                    'memb.clusters_per_col': 29 })