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.
The tool is easily installable through pip
:
python3 -m pip install dafact
A more detailed usage guide can be found here.
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.
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.