Clarify or check Estimator input shapes
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Reproduce el ejemplo y comienza en pymare/estimators/estimators.py, siguiendo fit hasta la implementación del estimador y weighted_least_squares de pymare/stats.py. Determina cómo deben tratarse y y v 1D con respecto a X y, después, asegúrate de que la validación o documentación elegida explicite estos requisitos y evite el confuso error de einsum.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I was trying to run one of the Estimators using weighted_least_squares without initializing a Dataset and was getting confusing errors from numpy.einsum before I realized that inputs need to be 2D no matter what. We can coerce 1D inputs to 2D with a new Estimator._validate_inputs() method, or we can just update the docstrings to clarify requirements.
BTW, based on variable convention, I think it's reasonable to assume that X must be 2D, but it's not obvious that y, v, etc. should be 2D as well, and indeed, there's an obvious error about shape if X is 1D, but no shape check for y, v, etc.
To replicate:
y = np.random.random(10)
v = np.random.random(10) ** 2
X = np.random.random((10, 1))
est = pymare.estimators.DerSimonianLaird()
est.fit(y=y, v=v, X=X)
print(est.results.to_df())
Results in:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-4-41d64261b276> in <module>()
3 X = np.random.random((10, 1))
4 est = pymare.estimators.DerSimonianLaird()
----> 5 est.fit(y=y, v=v, X=X)
6 print(est.results.to_df())
~/Documents/tsalo/PyMARE/pymare/estimators/estimators.py in fit(self, dataset, **kwargs)
78 kwargs[name] = getattr(dataset, name)
79
---> 80 self.params_ = self._fit(**kwargs)
81 self.dataset_ = dataset
82
~/Documents/tsalo/PyMARE/pymare/estimators/estimators.py in _fit(self, y, v, X)
180
181 # Estimate initial betas with WLS, assuming tau^2=0
--> 182 beta_wls, inv_cov = weighted_least_squares(y, v, X, return_cov=True)
183
184 # Cochrane's Q
~/Documents/tsalo/PyMARE/pymare/stats.py in weighted_least_squares(y, v, X, tau2, return_cov)
24
25 # Einsum indices: k = studies, p = predictors, i = parallel iterates
---> 26 wX = np.einsum('kp,ki->ipk', X, w)
27 cov = wX.dot(X)
28
<__array_function__ internals> in einsum(*args, **kwargs)
~/anaconda/envs/python3/lib/python3.6/site-packages/numpy/core/einsumfunc.py in einsum(*operands, **kwargs)
1354 # If no optimization, run pure einsum
1355 if optimize_arg is False:
-> 1356 return c_einsum(*operands, **kwargs)
1357
1358 valid_einsum_kwargs = ['out', 'dtype', 'order', 'casting']
ValueError: einstein sum subscripts string contains too many subscripts for operand 1
- Lenguaje dominante
- Python
- Estrellas
- 58
- Forks
- 17
- Merge medio
- 2 h
- PR fusionados (30 d)
- 2
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de neurostuff/PyMARE
-
enhancement: adding to condaAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
neurostuff/PyMARE#122 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 52/100
neurostuff/PyMARE#115 · 1 comentario ·
-
Merge `Estimator.summary()` and `Estimator.fit()`Posiblemente ocupada @JulioAPeraza la tomó hace 1521 días. Abiertobreaking-change enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
neurostuff/PyMARE#103 · 1 comentario ·
-
help wanted question
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
neurostuff/PyMARE#102 · 1 comentario ·
-
breaking-change enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
neurostuff/PyMARE#101 ·
Todos los issues de neurostuff/PyMARE
Issues similares
-
Admin member of a research group cannot see the HX2 allocation until they've been added to itAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
developmentseed/titiler-cmr#278 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 2 días