The simplest way to workaround this is using something like this:
```
__main__.deduction_formula = deduction_formula
```
deduction_formula should be imported before.

The more accurate way is using name of the module as a prefix in 
GroundedSchemaNode name. To do this your function should be a member of the 
some Python module:
```
GroundedSchemaNode('py: mymodule.deduction_formula'),
```
You can look at examples at: 
https://github.com/opencog/atomspace/blob/master/examples/python/ground/ground.py

Best regards,
Vitaly

On Tuesday, January 21, 2020 at 1:37:54 AM UTC+3, Alexander Gabriel wrote:
>
> There was an error in the log saying that the function couldn't be found 
> [2020-01-20 17:45:13:345] [ERROR] Python function 'deduction_formula' not 
> found in module '__main__'! (/home/rasberry/git/atomspace/opencog/cython/
> PythonEval.cc:1003)
>
> that was a helpful hint
>
> (I had stopped looking at it as most of the earlier problems didn't result 
> in log entries)
>
> Thanks again :)
>
> Am Montag, 20. Januar 2020 22:28:49 UTC schrieb linas:
>>
>> Well, OK, I'm not sure if that's a bug or not, and at any rate, there 
>> should be some error message that would make this clear for the next 
>> person.  Anatoly, Vitaly, opinions?  Can you fix this so that this kind of 
>> user-error is easier to track down?
>>
>> --linas
>>
>> (I can't cc Anatoly, can't find his email.)
>>
>> On Mon, Jan 20, 2020 at 4:18 PM Alexander Gabriel <goo...@4d6.de> wrote:
>>
>>> Thanks!
>>>
>>> what I found out is: the function needs to be defined in the python file 
>>> that is actually run, not any of those that are imported, even if all the 
>>> rest of the interaction happens in imported modules and files.
>>>
>>>
>>> Am Montag, 20. Januar 2020 22:07:04 UTC schrieb linas:
>>>>
>>>> It goes here:
>>>>
>>>>
>>>> https://github.com/opencog/atomspace/blob/873431bdae3b3f44ed26c47993fee8b2979d7cf9/opencog/atoms/execution/ExecutionOutputLink.cc#L202-L211
>>>>
>>>> and then into here
>>>>
>>>>
>>>> https://github.com/opencog/atomspace/blob/873431bdae3b3f44ed26c47993fee8b2979d7cf9/opencog/cython/PythonEval.cc#L995
>>>>
>>>> and dives into cython code.   But really, all this should work quite 
>>>> well, its tested in assorted unit tests ... so the root cause is ... well 
>>>> I 
>>>> don't know where. Since you're having trouble with this, the fix might be 
>>>> better error detection, better error logging .. finding the problem should 
>>>> not require a dive into the bowels of teh code.   Triple-check your error 
>>>> logs ...
>>>>
>>>> --linas
>>>>
>>>> On Mon, Jan 20, 2020 at 3:03 PM Alexander Gabriel <goo...@4d6.de> 
>>>> wrote:
>>>>
>>>>> Hiya,
>>>>>
>>>>> with your help I got most of my reasoning running in a test setting, 
>>>>> running it under my ROS node though, fails due to the python function 
>>>>> (which calculates truth values) not being called.
>>>>>
>>>>> Does anyone have a clue how the code searches for the function name 
>>>>> when we call it like so:
>>>>>         deduction_rule = BindLink(
>>>>>             VariableList(
>>>>>                 TypedVariableLink(
>>>>>                     VariableNode('$A'),
>>>>>                     TypeNode('ConceptNode')),
>>>>>                 TypedVariableLink(
>>>>>                     VariableNode('$B'),
>>>>>                     TypeNode('ConceptNode')),
>>>>>                 TypedVariableLink(
>>>>>                     VariableNode('$C'),
>>>>>                     TypeNode('ConceptNode'))),
>>>>>             AndLink(
>>>>>                 ImplicationLink(
>>>>>                     VariableNode('$A'),
>>>>>                     VariableNode('$B')),
>>>>>                 ImplicationLink(
>>>>>                     VariableNode('$B'),
>>>>>                     VariableNode('$C')),
>>>>>                 NotLink(
>>>>>                     EqualLink(
>>>>>                         VariableNode('$A'),
>>>>>                         VariableNode('$C')))),
>>>>>             ExecutionOutputLink(
>>>>>                 GroundedSchemaNode('py: deduction_formula'),
>>>>>                 ListLink(
>>>>>                     ImplicationLink(
>>>>>                         VariableNode('$A'),
>>>>>                         VariableNode('$C')),
>>>>>                     ImplicationLink(
>>>>>                         VariableNode('$A'),
>>>>>                         VariableNode('$B')),
>>>>>                     ImplicationLink(
>>>>>                         VariableNode('$B'),
>>>>>                         VariableNode('$C')))))
>>>>>
>>>>> I tried to define the deduction formula as the member of the same 
>>>>> class in which this happens, as a standalone function at the toplevel of 
>>>>> the file as well as an import from another module, none of which was 
>>>>> successful.
>>>>>
>>>>> Best,
>>>>> Alex
>>>>>
>>>>> -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "opencog" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to ope...@googlegroups.com.
>>>>> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/opencog/8078db0b-aee3-4d57-8319-50e76ad60003%40googlegroups.com
>>>>>  
>>>>> <https://groups.google.com/d/msgid/opencog/8078db0b-aee3-4d57-8319-50e76ad60003%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>
>>>>
>>>> -- 
>>>> cassette tapes - analog TV - film cameras - you
>>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "opencog" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to ope...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/opencog/dd68bda3-746f-4206-a740-ba39f0f4058c%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/opencog/dd68bda3-746f-4206-a740-ba39f0f4058c%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>>
>> -- 
>> cassette tapes - analog TV - film cameras - you
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"opencog" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to opencog+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/opencog/ef15537d-9b32-48a0-9f64-ff06f616a565%40googlegroups.com.

Reply via email to