MouseLand / rastermap

a visualization method for neural data
GNU General Public License v3.0
173 stars 42 forks source link

n_components>2 bug #14

Closed fcollman closed 1 year ago

fcollman commented 1 year ago

I was trying to fit a system which I designed to have a 3 dimensional latent space and got this error, trying to use n_components=3

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/var/folders/kx/xq42kw197c5_qw6kxgnr4nkr0000gq/T/ipykernel_27590/822647098.py in <module>
      3 model = Rastermap(n_components=3, n_X=30, nPC=200, init='pca')
      4 
----> 5 embedding=model.fit_transform(Wtotal)

/opt/anaconda3/envs/caveclient/lib/python3.9/site-packages/rastermap/mapping.py in fit_transform(self, X, u)
    588             Embedding of the training data in low-dimensional space.
    589         """
--> 590         self.fit(X, u)
    591         return self.embedding
    592 

/opt/anaconda3/envs/caveclient/lib/python3.9/site-packages/rastermap/mapping.py in fit(self, X, u, v, s)
    768         # now sort in X
    769         print(time.time() - t0)
--> 770         isort1, iclustup = self._map(self.u, self.n_components, self.n_X, xid, s)
    771         self.isort = isort1
    772         self.embedding = iclustup

/opt/anaconda3/envs/caveclient/lib/python3.9/site-packages/rastermap/mapping.py in _map(self, X, dims, nclust, xid, SALL)
    880                 self.embedding0 = iclustup
    881             else:
--> 882                 iclustup, cmax = upsample(np.sqrt(cmap), dims, nclust, 10)
    883             isort = np.argsort(iclustup[:,0])
    884             self.cmap = cmap

/opt/anaconda3/envs/caveclient/lib/python3.9/site-packages/rastermap/mapping.py in upsample(cmap, dims, nclust, upsamp)
    285     cmax = np.amax(upC, axis=1) + mu
    286     dxs = M1[:, xid]
--> 287     xs = (iclust + dxs[1::-1, :])/nclust
    288     #xs = xs%1.
    289     xs = xs.T

ValueError: operands could not be broadcast together with shapes (3,200) (2,200) 
carsen-stringer commented 1 year ago

Rastermap used to support 2 components, but now it's only a 1-dimensional embedding algorithm, so n_components=1 always (it is no longer a parameter)