vector_of_kll_floats_sketches.get_quantiles() returns wrong values with float32
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
Comienza con la reproducción de Python proporcionada usando vector_of_kll_floats_sketches.get_quantiles() y compara los arrays de rangos float32 y float64. Rastrea el manejo de los rangos float32 y añade una prueba de regresión que cubra rangos cercanos a 0 y 1; se considera terminado cuando float32 y float64 devuelven cuantiles equivalentes para el ejemplo.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
#!/usr/bin/env python3
"""
Minimal example: vector_of_kll_floats_sketches.get_quantiles() returns WRONG VALUES with float32
"""
import numpy as np
from datasketches import vector_of_kll_floats_sketches
# Create test data: 1000 samples between -100 and -10
np.random.seed(42)
test_data = np.random.uniform(-100, -10, size=(1000, 1)).astype(np.float32)
print("Test data: 1000 samples between -100 and -10")
print(f"True min: {test_data.min():.2f}, True max: {test_data.max():.2f}")
# Create sketch and add data
kll = vector_of_kll_floats_sketches(200, 1)
kll.update(test_data)
# Request p0.0001 (should be ~-100) and p0.9999 (should be ~-10)
ranks_list = [0.0001, 0.9999]
ranks_array32 = np.array(ranks_list, dtype=np.float32)
ranks_array64 = np.array(ranks_list, dtype=np.float64)
print("\n" + "="*60)
print("BUG: numpy array with dtype=np.float32 returns WRONG quantiles")
print("="*60)
quants_array = kll.get_quantiles(ranks_array32)
print(f"\nWith numpy array with dtype=np.float32: {ranks_array32}")
print(f" p0.0001 = {quants_array[0][0]:.2f} (expected: ~-100)")
print(f" p0.9999 = {quants_array[0][1]:.2f} (expected: ~-10)")
print(f" ✗ WRONG: Both values near minimum!")
quants_array64 = kll.get_quantiles(ranks_array64)
print(f"\nWith numpy array with dtype=np.float64: {ranks_array64}")
print(f" p0.0001 = {quants_array64[0][0]:.2f} (expected: ~-100)")
print(f" p0.9999 = {quants_array64[0][1]:.2f} (expected: ~-10)")
print(f" ✓ CORRECT")
Test data: 1000 samples between -100 and -10
True min: -99.58, True max: -10.03
============================================================
BUG: numpy array with dtype=np.float32 returns WRONG quantiles
============================================================
With numpy array with dtype=np.float32: [1.000e-04 9.999e-01]
p0.0001 = -98.69 (expected: ~-100)
p0.9999 = -99.50 (expected: ~-10)
✗ WRONG: Both values near minimum!
With numpy array with dtype=np.float64: [1.000e-04 9.999e-01]
p0.0001 = -99.50 (expected: ~-100)
p0.9999 = -10.28 (expected: ~-10)
✓ CORRECT
- Lenguaje dominante
- Jupyter Notebook
- Estrellas
- 46
- Forks
- 9
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
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 apache/datasketches-python
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
apache/datasketches-python#65 · 3 reacciones ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 55/100
apache/datasketches-python#46 · 2 comentarios ·
-
Vectorize update() Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
apache/datasketches-python#21 · 2 comentarios ·
Todos los issues de apache/datasketches-python
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
TauricResearch/TradingAgents#1397 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
TencentCloud/Octop#1085 · 1 comentario ·
-
Sandy macrofaunal assemblages adjacent to rocky reefs on São Miguel Island (Azores, NE Atlantic) Abiertodataset
Dificultad 1/5 Menos de una hora Aptitud para principiantes 80/100
iobis/obis-network-datasets#909 ·
-
Copy cohorts to keep old cohorts Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
OHDSI/CohortConstructor#774 ·