def describe_info(sec, actions, info):
    Distance = info['Distance']
    Distance_to_inverse = info['Distance_to_inverse']
    np.fill_diagonal(Distance, np.nan)
    np.fill_diagonal(Distance_to_inverse, np.nan)
    max_value = max(np.nanmax(Distance), np.nanmax(Distance_to_inverse))
    min_value = max(np.nanmin(Distance), np.nanmin(Distance_to_inverse))
    params = dict(filter='scale', filter_params={'min_value': min_value / 1.5,
                                            'max_value': max_value
                                            })

    sec.array_as_image('Distance', zoom(Distance), **params)
    sec.array_as_image('DistanceInv', zoom(Distance_to_inverse), **params)

    n = len(actions)
    actual_inverse = np.zeros((n, n))
    for i, j in itertools.product(range(n), range(n)):
        u_i = actions[i].original_cmd
        u_j = actions[j].original_cmd

        actual = np.allclose(u_i, -u_j)
        actual_inverse[i, j] = 1 if actual else 0

    sec.array_as_image('Actual', zoom(actual_inverse))

    sec.text('DistanceS', formatm('distance', Distance, format_str='%.3f'))
    sec.text('DistanceInvS',
             formatm('distance_inv', Distance_to_inverse, format_str='%.3f'))

    s = ""
    for action in actions:
        s += '%s\n' % action
    sec.text('list_of_actions', s)
Esempio n. 2
0
def describe_info(sec, actions, info):
    Distance = info['Distance']
    Distance_to_inverse = info['Distance_to_inverse']
    np.fill_diagonal(Distance, np.nan)
    np.fill_diagonal(Distance_to_inverse, np.nan)
    max_value = max(np.nanmax(Distance), np.nanmax(Distance_to_inverse))
    min_value = max(np.nanmin(Distance), np.nanmin(Distance_to_inverse))
    params = dict(filter='scale',
                  filter_params={
                      'min_value': min_value / 1.5,
                      'max_value': max_value
                  })

    sec.array_as_image('Distance', zoom(Distance), **params)
    sec.array_as_image('DistanceInv', zoom(Distance_to_inverse), **params)

    n = len(actions)
    actual_inverse = np.zeros((n, n))
    for i, j in itertools.product(range(n), range(n)):
        u_i = actions[i].original_cmd
        u_j = actions[j].original_cmd

        actual = np.allclose(u_i, -u_j)
        actual_inverse[i, j] = 1 if actual else 0

    sec.array_as_image('Actual', zoom(actual_inverse))

    sec.text('DistanceS', formatm('distance', Distance, format_str='%.3f'))
    sec.text('DistanceInvS',
             formatm('distance_inv', Distance_to_inverse, format_str='%.3f'))

    s = ""
    for action in actions:
        s += '%s\n' % action
    sec.text('list_of_actions', s)
Esempio n. 3
0
    def __init__(self,
                 id_dds,
                 dds,
                 ds,
                 collapse_threshold,
                 min_visibility=0.5,
                 debug_it=1000,
                 max_it=1000):
        '''
        
        :param id_dds:
        :param dds:
        :param ds:
        :param collapse_threshold: info distance for two plans to be the same node 
        :param debug_it: Number of iterations for drawing debug graph.
        '''
        WithInternalLog.__init__(self)
        self.collapse_threshold = collapse_threshold
        self.dds = dds
        self.ds = ds
        self.id_dds = id_dds
        self.debug_graph_iterations = debug_it
        self.max_it = max_it
        self.min_visibility = min_visibility
        from geometry import formatm
        self.info('Min_visibility: %s' % min_visibility)
        self.info('collapse_threshold: %s' % collapse_threshold)
        self.info(
            formatm('samew', self.ds.samew, 'oppow', self.ds.oppositew,
                    'swapw', self.ds.swappablew))

        GenericGraphSearch.__init__(self)
Esempio n. 4
0
 def __init__(self, id_dds, dds, ds, collapse_threshold, min_visibility=0.5,
              debug_it=1000, max_it=1000):
     '''
     
     :param id_dds:
     :param dds:
     :param ds:
     :param collapse_threshold: info distance for two plans to be the same node 
     :param debug_it: Number of iterations for drawing debug graph.
     '''
     WithInternalLog.__init__(self)
     self.collapse_threshold = collapse_threshold
     self.dds = dds
     self.ds = ds
     self.id_dds = id_dds
     self.debug_graph_iterations = debug_it
     self.max_it = max_it
     self.min_visibility = min_visibility
     from geometry import formatm
     self.info('Min_visibility: %s' % min_visibility)
     self.info('collapse_threshold: %s' % collapse_threshold)
     self.info(formatm('samew', self.ds.samew,
                         'oppow', self.ds.oppositew,
                         'swapw', self.ds.swappablew))
     
     GenericGraphSearch.__init__(self)
Esempio n. 5
0
    def from_matrices(labels, commute, inverse, same):
        logger.info('Creating PlanReducer from matrices:\n' + 
                    formatm('same', same, 'oppo', inverse, 'swap', commute))
        pr = PlanReducer()
        for i, j in iterate_indices(commute.shape):
            li = labels[i]
            lj = labels[j]
            if commute[i, j]:
                assert commute[j, i]
                pr.set_commute(li, lj)
        
            if same[i, j]:
                assert same[j, i]
                pr.set_same(li, lj)

            if inverse[i, j]:
                assert inverse[j, i]
                pr.set_inverse(li, lj)
        return pr
Esempio n. 6
0
    def from_matrices(labels, commute, inverse, same):
        logger.info('Creating PlanReducer from matrices:\n' +
                    formatm('same', same, 'oppo', inverse, 'swap', commute))
        pr = PlanReducer()
        for i, j in iterate_indices(commute.shape):
            li = labels[i]
            lj = labels[j]
            if commute[i, j]:
                assert commute[j, i]
                pr.set_commute(li, lj)

            if same[i, j]:
                assert same[j, i]
                pr.set_same(li, lj)

            if inverse[i, j]:
                assert inverse[j, i]
                pr.set_inverse(li, lj)
        return pr
Esempio n. 7
0
 def description(self):
     s = ""
     for i in range(self.k):
         s += formatm('M^s_v%d' % i, self.M[:, :, i])
         s += formatm('N^s_%d' % i, self.N[:, i])
     return s