Skip to content

feat: filter expressions in annotate command #24

@dlopez-bioinfo

Description

@dlopez-bioinfo

Motivación

Actualmente afquery annotate solo añade campos INFO (AFQUERY_AC, AFQUERY_AN, AFQUERY_AF) al VCF de salida. Para filtrar variantes raras, el usuario necesita un paso adicional con bcftools u otra herramienta.

Propuesta

Añadir un parámetro --filter-expr al comando annotate que permita evaluar expresiones booleanas/aritméticas sobre los campos anotados y filtrar variantes en el mismo paso.

Ejemplo de uso

afquery annotate --db ./db/ --input patient.vcf --output filtered.vcf \
    --filter-expr "AFQUERY_AF < 0.01 and AFQUERY_AN > 100"

Detalles de implementación

  • Evaluar la expresión después de calcular AC/AN/AF para cada variante
  • Las variantes que no cumplen la expresión se excluyen del VCF de salida (o se marcan en FILTER)
  • Se puede usar una librería ligera de evaluación de expresiones (e.g., simpleeval o asteval)
  • Soportar operadores: <, <=, >, >=, ==, !=, and, or, not

Beneficios esperados

  • Elimina la necesidad de un paso extra con bcftools para filtrado por frecuencia
  • Flujo de trabajo más sencillo para el usuario

Referencia

Inspirado en el sistema de expresiones de filtro de echtvar (usa fasteval).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions