Skip to main content

Encodes data as ASP facts.

Project description

dafact

Encodes data as ASP facts.

dafact solves the reiterative task of encoding a dataset into a set of Answer Set Programming facts. The resulting ASP program, which can be partially personalized, can be encoded as python clingo objects directly or as plain text, and it handles floating point numbers automatically.

Data can be fed into dafact through CSV files, numpy arrays, pandas DataFrames and other typical formats.

It can be used both as a python library and as a command line tool.

Installation

The tool is easily installable through pip:

python3 -m pip install dafact

Short usage

A more detailed usage guide can be found here.

Python

Dafacter python class provides all the funcionality. Once fed with data, a Dafacter object provides two main methods for obtaining a logic program:

from dafact import Dafacter
dafacter = Dafacter("data/haberman.csv", have_names=True) # Fed data into the object
clingo_facts = dafacter.as_clingo_facts()  # Returns a list of clingo.Function objects
program_text = dafacter.as_program_string()  # Returns the program as plain text

The following piece of code loads the haberman dataset from a csv file and encodes it as a logic program.

# examples/usage_csv.py
from dafact import Dafacter

dafacter = Dafacter("data/haberman.csv", have_names=True)
print(dafacter.as_program_string())

The result of that code would be:

feature("age"). feature("op_year"). feature("nodes"). feature("survival").
instance(0). value(0,"age",30). value(0,"op_year",64). value(0,"nodes",1). value(0,"survival",1).
instance(1). value(1,"age",30). value(1,"op_year",62). value(1,"nodes",3). value(1,"survival",1).
(. . .)

The encoded style can also be tweaked easily, and it accepts different kind of data sources from numpy arrays to pandas DataFrames. A more detailed guide on usage of the python library can be found in examples folder.

Command line tool

Once installed through pip users can use dafact for directly obtain a logic program from csv files through the use of the command line tool. The usage of the tool is the same to the use of the Dafacter python class for csv files.

~/$ dafact --help
usage: dafact [-h] [--feature-names [FEATURE_NAMES [FEATURE_NAMES ...]]] [--factor FACTOR]
              [--numerical-columns [NUMERICAL_COLUMNS [NUMERICAL_COLUMNS ...]]] [--have-names] [--omit-names] [--delimiter DELIMITER]
              infile outfile

Dafact CLI Encodes data as ASP facts.

positional arguments:
  infile                Input csv file.
  outfile               Ouput ASP program.

optional arguments:
  -h, --help            show this help message and exit

Options:
  --feature-names [FEATURE_NAMES [FEATURE_NAMES ...]]
                        Feature names for the csv columns.
  --factor FACTOR       factor help
  --numerical-columns [NUMERICAL_COLUMNS [NUMERICAL_COLUMNS ...]]
                        Indexes for numerical columns.
  --have-names          Must be if csv have the name of the columns in the first line.
  --omit-names          Used together with --have-names for omitting the names in the file.
  --delimiter DELIMITER
                        Field delimiter for the csv file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

dafact-0.5-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file dafact-0.5-py3-none-any.whl.

File metadata

  • Download URL: dafact-0.5-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for dafact-0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f3fe3ee6cc16c9882bcf30840dfe3724a13d34d49ec6245daf390600635e40ed
MD5 8f0caef751160a64d0585dea875d9966
BLAKE2b-256 de652aba9d789694fabba3bc807c3b4b8500d7ab37bfe99e8af9d043b22a68bc

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page