Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

`IndependentConfig` synthesis raises "Cliques must be unique."

Abierto Apto para principiantes
#2 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 2 días

Nadie ha tomado este issue todavía.

  • #4 de @gghatano — cerrado sin fusionar

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
82/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
pandas, python

Línea de trabajo

Comienza en dpsynth/discrete_mechanisms/independent.py en la línea 73 y ejecuta la reproducción proporcionada de pandas con IndependentConfig. Verifica que la ruta INDEPENDENT ya no genere el duplicate-clique ValueError, mientras que MST y AIM sigan funcionando y las entradas de estimación permanezcan sin cambios.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Summary

Calling dpsynth.generate(...) with discrete_config=IndependentConfig() fails
with a ValueError from mbi.CliqueVector.expand. MST and AIM work on the same
input; only INDEPENDENT is affected.

Environment

  • Linux, Python 3.12, current mbi (git+https://github.com/ryan112358/mbi.git)

Reproduction

import pandas as pd
import dpsynth
from dpsynth import domain, discrete_mechanisms as dm

df = pd.DataFrame({
    "a": ["x", "y", "x", "y"] * 50,
    "b": [0, 1, 1, 0] * 50,
})
domains = {
    "a": domain.CategoricalAttribute(possible_values=["x", "y"]),
    "b": domain.CategoricalAttribute(possible_values=[0, 1]),
}
dpsynth.generate(df, domains, epsilon=1.0, delta=1e-5,
                 discrete_config=dm.IndependentConfig())
ValueError: Cliques must be unique.
  File ".../dpsynth/discrete_mechanisms/independent.py", line 73, in run_mechanism
    potentials = potentials.expand([m.clique for m in measurements])
  File ".../mbi/clique_vector.py", line 55, in __attrs_post_init__
    raise ValueError("Cliques must be unique.")

Cause

In independent.run_mechanism, measurements starts from
initial_measurements — the one-way marginals that
data_generation_v2.generate always passes in — and then the loop appends a
freshly measured one-way marginal for every attribute. So measurements
contains each one-way clique twice.

When initial_potentials is not None (e.g. the empty CliqueVector returned by
constraints.get_initial_parameters even when there are no cross-attribute
constraints), line 73 calls
potentials.expand([m.clique for m in measurements]) with that duplicated
clique list. Current mbi requires unique cliques in expand, so it raises.

Suggested fix

De-duplicate the clique list (order-preserving) before calling expand. The
measurements passed to mirror_descent are left unchanged, so estimation and
privacy accounting are unaffected. PR attached.

Lenguaje dominante
Python
Estrellas
32
Forks
13
Merge medio
3 d 15 h
PR fusionados (30 d)
31

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de google/dpsynth

Todos los issues de google/dpsynth

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.