CausalDiscoveryToolbox icon indicating copy to clipboard operation
CausalDiscoveryToolbox copied to clipboard

[BUG] IAMB algorithm modifies input data

Open caph1993 opened this issue 4 years ago • 1 comments

Describe the bug

The IAMB algorithm is modifying the input data when predict is called. It shouldn't.

I am running the following code in Python 3.8.10 with cdt 0.5.23, and 0 GPUs:

import networkx as nx
from cdt.causality.graph import IAMB
from cdt.data import load_dataset

data, graph = load_dataset("sachs")
print(data.columns)

for method in ['no-graph', 'digraph', 'undigraph']:
    print(f'Running {method}...')
    obj = IAMB()
    if method=='no-graph':
        output = obj.predict(data)
    elif method=='undigraph':
        output = obj.predict(data, nx.Graph(graph))
    elif method=='digraph':
        output = obj.predict(data, graph)
    else:
        raise Exception(method)
    print(data.columns)

The 'digraph' case modifies data.columns, and causes the subsequent case to raise an Exception. The code above prints:

No GPU automatically detected. Setting SETTINGS.GPU to 0, and SETTINGS.NJOBS to cpu_count.
Index(['praf', 'pmek', 'plcg', 'PIP2', 'PIP3', 'p44/42', 'pakts473', 'PKA',
       'PKC', 'P38', 'pjnk'],
      dtype='object')
Running no-graph...
Index(['praf', 'pmek', 'plcg', 'PIP2', 'PIP3', 'p44/42', 'pakts473', 'PKA',
       'PKC', 'P38', 'pjnk'],
      dtype='object')
Running digraph...
The algorithm is ran on the skeleton of the given graph.
Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype='int64')
Running undigraph...

R Python Error Output 
-----------------------

[Errno 2] No such file or directory: '/tmp/cdt_bnlearn_e391065c-4c2e-4a03-bd58-28731f3aca79/result.csv'
... (long traceback) ...

caph1993 avatar Oct 18 '21 20:10 caph1993

Hello ! Thanks for the feedback, I look into this !

diviyank avatar Nov 12 '21 08:11 diviyank