~mrol-dev/mrol/trunk

« back to all changes in this revision

Viewing changes to mrol_mapping/occupiedlist.py

  • Committer: Vikas Dhiman
  • Date: 2012-11-14 00:20:26 UTC
  • Revision ID: vikasdhi@buffalo.du-20121114002026-e4rbu85n6ekroafk
Removed unnecessary term from compile.sh

Show diffs side-by-side

added added

removed removed

Lines of Context:
55
55
    ol.add_points(xyzs[:, 0:3])
56
56
    return ol
57
57
 
58
 
def pointstovoxels(X, resolution, pose=None, latticetype='cubic', out=None):
 
58
def pointstovoxels(X, resolution=None, pose=None, latticetype='cubic', out=None):
59
59
    '''Converts a list of points to integer voxel indices. Optionally
60
60
    transforming by pose as well for speed.'''
61
61
    # Possible lattice types currently include cubic, bcc and fcc.
70
70
    # combines transformation and scaling into one operation for speed
71
71
    X, pose = poseutil.transformPoints(X, pose, scale=1.0/resolution)
72
72
    #out[:, :3] = np.round(X)
73
 
    # out[:, :3] = X + 0.5 # this does not work quite right
74
 
    # out[:, :3] = np.floor(X) # without multi-resolution offsets
75
 
    out[:, :3] = np.floor(X + 0.5) # with multi resolution offsets but they do not seem to help that much
 
73
    out[:, :3] = X + 0.5
 
74
    #out[:, :3] = np.floor(X+0.5)
 
75
 
76
76
    return out
77
77
 
78
78
def voxelstopoints(A, resolution):
79
79
    """ Converts an array of integers voxel indices to an array of points """
80
80
    # TODO make this work for alternative lattices
81
81
    return A*resolution
82
 
    #return (A + 0.5)*resolution # without multi-resolution offsets
83
82
 
84
83
def dilate(voxels):
85
84
    '''Add adjacent voxels, effectively blurring or smearing occupied voxel 
119
118
    ids.  the last column are zeros.'''
120
119
    assert inds.dtype == np.int16, 'inds needs to be np.int16'
121
120
    assert inds.shape[1] == 4 
122
 
    assert not np.isfortran(inds), 'Incorrect array memory layout'
123
121
 
124
122
    inds.dtype = np.int64
125
123
    inds.shape = -1
157
155
        return np.all(self.bloomtable == bf.bloomtable)
158
156
 
159
157
    def djbhash(self, i):
160
 
        '''Hash function from D J Bernstein'''
 
158
        """Hash function from D J Bernstein"""
161
159
        h = 5381L
162
160
        t = (h * 33) & 0xffffffffL
163
161
        h = t ^ i
164
162
        return h
165
163
 
166
164
    def fnvhash(self, i):
167
 
        '''Fowler, Noll, Vo Hash function'''
 
165
        """Fowler, Noll, Vo Hash function"""
168
166
        h = 2166136261
169
167
        t = (h * 16777619) & 0xffffffffL
170
168
        h = t ^ i
176
174
        # Need a hash function that that can generate multiple hashes for given 
177
175
        # input and over a specified range
178
176
        inds = np.empty((2, ids.shape[0]), np.int64)
179
 
        # use id values themselves as hash dangerous and quicker but when benchmarked seemed to make little difference
180
 
        # inds[0] = ids 
181
177
        inds[0] = self.fnvhash(ids)
182
178
        inds[1] = self.djbhash(ids)
183
179
        S = self.size