In the Python API documentation under "Tables of Data", the example for model.add_data() uses:
Smokes.name: {
Cancer.name: {
However, running this code raises:
TypeError: formula expected of type Formula, received str
It appears that .name returns a string, while model.add_data() expects a Formula object as the dictionary key.
Replacing:
Code Snippet:
from lnn import Fact
add data to the model
model.add_data({
Friends: {
('Anna', 'Bob'): Fact.TRUE,
('Bob', 'Anna'): Fact.TRUE,
('Anna', 'Edward'): Fact.TRUE,
('Edward', 'Anna'): Fact.TRUE,
('Anna', 'Frank'): Fact.TRUE,
('Frank', 'Anna'): Fact.TRUE,
('Bob', 'Chris'): Fact.TRUE},
Smokes.name: {
'Anna': Fact.TRUE,
'Edward': Fact.TRUE,
'Frank': Fact.TRUE,
'Gary': Fact.TRUE},
Cancer.name: {
'Anna': Fact.TRUE,
'Edward': Fact.TRUE}
})
model.print()
with:
Code Snippet:
from lnn import Fact
add data to the model
model.add_data({
Friends: {
('Anna', 'Bob'): Fact.TRUE,
('Bob', 'Anna'): Fact.TRUE,
('Anna', 'Edward'): Fact.TRUE,
('Edward', 'Anna'): Fact.TRUE,
('Anna', 'Frank'): Fact.TRUE,
('Frank', 'Anna'): Fact.TRUE,
('Bob', 'Chris'): Fact.TRUE},
Smokes : {
'Anna': Fact.TRUE,
'Edward': Fact.TRUE,
'Frank': Fact.TRUE,
'Gary': Fact.TRUE},
Cancer : {
'Anna': Fact.TRUE,
'Edward': Fact.TRUE}
})
model.print()
resolves the issue.
In the Python API documentation under "Tables of Data", the example for
model.add_data()uses:However, running this code raises:
TypeError: formula expected of type Formula, received str
It appears that
.namereturns a string, whilemodel.add_data()expects aFormulaobject as the dictionary key.Replacing:
Code Snippet:
from lnn import Fact
add data to the model
model.add_data({
Friends: {
('Anna', 'Bob'): Fact.TRUE,
('Bob', 'Anna'): Fact.TRUE,
('Anna', 'Edward'): Fact.TRUE,
('Edward', 'Anna'): Fact.TRUE,
('Anna', 'Frank'): Fact.TRUE,
('Frank', 'Anna'): Fact.TRUE,
('Bob', 'Chris'): Fact.TRUE},
Smokes.name: {
'Anna': Fact.TRUE,
'Edward': Fact.TRUE,
'Frank': Fact.TRUE,
'Gary': Fact.TRUE},
Cancer.name: {
'Anna': Fact.TRUE,
'Edward': Fact.TRUE}
})
model.print()
with:
Code Snippet:
from lnn import Fact
add data to the model
model.add_data({
Friends: {
('Anna', 'Bob'): Fact.TRUE,
('Bob', 'Anna'): Fact.TRUE,
('Anna', 'Edward'): Fact.TRUE,
('Edward', 'Anna'): Fact.TRUE,
('Anna', 'Frank'): Fact.TRUE,
('Frank', 'Anna'): Fact.TRUE,
('Bob', 'Chris'): Fact.TRUE},
Smokes : {
'Anna': Fact.TRUE,
'Edward': Fact.TRUE,
'Frank': Fact.TRUE,
'Gary': Fact.TRUE},
Cancer : {
'Anna': Fact.TRUE,
'Edward': Fact.TRUE}
})
model.print()
resolves the issue.