Beispiel #1
0
    def distances(self):
        """
        Squared distances
        """
        if self._distances is None:
            self._distances = distance_matrix(self.data, self.params.X)**2

        return self._distances
Beispiel #2
0
def find_TADs_py(x, a, cutoff, offset):
    d = distance_matrix(x)
    c = cgen_ss(d, a, cutoff, offset)
    j = np.arange(len(x))
    counts = np.array([c[:i, :i].sum() + c[i:, i:].sum() for i in j])
    areas = j**2 + (len(x) - j)**2

    return np.argmax(counts.astype('d') / areas)
 def find_TADs(x, cutoff=1.5, offset=(3,10)[1]):
     d = distance_matrix(x)
     a = p['smooth_steepness'].value
     c = cgen_ss(d, a, cutoff, offset)
     j = np.arange(len(x))
     counts = np.array([c[:i,:i].sum() + c[i:,i:].sum() for i in j])
     areas  = j**2 + (len(x) - j)**2
     
     return np.argmax(counts.astype('d') / areas)
Beispiel #4
0
    def testDistanceMatrix(self):
        d = cbu.distance_matrix(X1)

        s2 = 2.0**0.5
        d_test = [
            [ 0., 1., 1. ],
            [ 1., 0., s2 ],
            [ 1., s2, 0. ]]
        self.assertArrayEqual(d, d_test)
Beispiel #5
0
    def average_distances(self, burnin=0, thining=1):
        
        d = 0.
        n = 0
        for x in self.samples[burnin::thining]:
            d += distance_matrix(x)
            n += 1
        d/= n

        return d
Beispiel #6
0
    for i, j in pairs:
        c[i,j] = 1
        c[j,i] = 1

    return c

if __name__ == '__main__':

    n_particles = 1000
    box_length  = 10 / 2.1

    cellsize   = 2. / 10 * box_length
    n_cells    = 500
    n_per_cell = 500

    coords     = np.random.rand(n_particles,3) * box_length
    nblist     = isdhic.NBList(cellsize, n_cells, n_per_cell, n_particles)
    universe   = isdhic.Universe(n_particles)
    universe.coords[...] = coords

    pairs = nblist_pairs(nblist, universe)

    d = distance_matrix(universe.coords)
    A = pairs_to_matrix(pairs, n_particles)
    B = pairs_to_matrix(kd_pairs(coords, cellsize), n_particles)

    print 'Are contact matrices identical? ---',
    print np.all(squareform(A,checks=False) ==
                 squareform((d<nblist.cellsize).astype('i'),checks=False))

Beispiel #7
0
if False:
    ## create data by adding Gaussian noise
    g = MultivariateGaussian(mu=coords.ravel(), sigma=sigma * numpy.eye(n_beads*3))
    ensemble1 = g.random(size=ensemble_size).reshape(ensemble_size, n_beads, 3)
    g = MultivariateGaussian(mu=coords2.ravel(), sigma=sigma * numpy.eye(n_beads*3))
    ensemble2 = g.random(size=ensemble_size).reshape(ensemble_size, n_beads, 3)
    dms1 = numpy.array(map(distance_matrix, ensemble1))
    dms2 = numpy.array(map(distance_matrix, ensemble2))
    frequencies1 = numpy.sum(dms1 < cutoff, 0)
    frequencies2 = numpy.sum(dms2 < cutoff, 0)
    summed_frequencies = frequencies1 + frequencies2

if False:
    ## create Poisson-distributed data
    dm1 = distance_matrix(coords)
    dm2 = distance_matrix(coords2)
    cs1 = ensemble_size * (dm1 < cutoff)
    cs2 = ensemble_size * (dm2 < cutoff)
    summed_frequencies = numpy.random.poisson(cs1 + cs2)

if True:
    ## create Poisson-distributed data based on probabilites obtained form
    ## non-central Maxwell distribution
    sys.path.append(os.path.expanduser('~/projects/hic/py/'))
    from maxwell import prob_contact
    from scipy.spatial.distance import pdist

    probs1 = numpy.zeros((len(coords), len(coords)))
    probs2 = numpy.zeros((len(coords), len(coords)))
    dm1 = distance_matrix(coords)