Description
The full pipeline & API for ranking should be created. It should be handled by a separate library, depending on the draco
and draco-web
modules.
Requirements
Additional Context
The VIS tasks and their associated ranking logic must be declarative and easily modifiable. This is absolutely necessary to be able to enhance the tool from a domain POV without making significant changes to the codebase.
Ranking Approach
The proposed ranking algorithm has two main pillars:
- Data-oriented: obtained from
draco
by reading the cost of a model for an ASP
- Task-oriented: "hard-coded" based on relevant literature, by declaring how useful a given encoding is for a specified task
Non-exhaustive list of used literature:
The recommendations are generated as vega-lite
, hence, the used marks need to be matched using its schema.
Currently, the following marks are specified in the schema:
"Mark": {
"description": "All types of primitive marks.",
"enum": [
"arc",
"area",
"bar",
"image",
"line",
"point",
"rect",
"rule",
"text",
"tick",
"trail",
"circle",
"square",
"geoshape"
],
"type": "string"
},
In a very high-level overview, the steps to take are:
- Let
draco
process the raw data with its wisdom collected as .lp
files as a part of uwdata/draco#51 and uwdata/draco#52, and save the SolutionSet
output.
- Iterate through the
SolutionSet
, and assign a VIS-task-based weight to each solution per VIS task. After this, given that we have $n$ VIS tasks at hand, we can generate $n$ composite costs per recommendation by summing the data-based cost with the VIS-task-based cost.
- Clients of the library can further process these details and use them for representation