Skip to content

Crash when chopping #53

Closed
Closed
@Yquetzal

Description

@Yquetzal

When I ask for a chop operation, I get a crash over a KeyError.

I copy paste the crash details below, but if you want the full structure that causes the crash I can export it just before the crash.

some chop operation works, so I assume it is a particular case that causes the crash. For now I'll manually recreate a tree, but of course it is highly inefficient.

Otherwise, wonderful work, thank you so much!

Traceback (most recent call last):
Node<1353592980.0, depth=6, balance=1>
File "/Users/remy/Dropbox/python3CLEAN/lib/python3.5/site-packages/intervaltree/node.py", line 245, in remove_interval_helper
Interval(1353592980.0, 1353593000.0, frozenset({'626', '698'}))
Interval(1353592980.0, 1353593000.0, frozenset({'616', '683'}))
<: Node<1353592880.0, depth=4, balance=-1>
Interval(1353592880.0, 1353592900.0, frozenset({'667', '683'}))
Interval(1353592880.0, 1353592900.0, frozenset({'613', '661'}))
Interval(1353592880.0, 1353592900.0, frozenset({'626', '698'}))
Interval(1353592880.0, 1353592920.0, frozenset({'616', '683'}))
Interval(1353592880.0, 1353592920.0, frozenset({'627', '635'}))
<: Node<1353592820.0, depth=3, balance=0>
Interval(1353592800.0, 1353592840.0, frozenset({'683', '644'}))
Interval(1353592800.0, 1353592880.0, frozenset({'628', '667'}))
Interval(1353592820.0, 1353592840.0, frozenset({'627', '635'}))
Interval(1353592820.0, 1353592840.0, frozenset({'667', '609'}))
Interval(1353592820.0, 1353592840.0, frozenset({'1613', '1492'}))
Interval(1353592820.0, 1353592840.0, frozenset({'667', '692'}))
Interval(1353592820.0, 1353592860.0, frozenset({'636', '635'}))
<: Node<1353592800.0, depth=2, balance=-1>
Interval(1353592780.0, 1353592820.0, frozenset({'663', '686'}))
Interval(1353592800.0, 1353592820.0, frozenset({'831', '860'}))
Interval(1353592800.0, 1353592820.0, frozenset({'616', '683'}))
Interval(1353592800.0, 1353592820.0, frozenset({'683', '635'}))
<: Node<1353592780.0, depth=1, balance=0>
Interval(1353592780.0, 1353592800.0, frozenset({'667', '696'}))
Interval(1353592780.0, 1353592800.0, frozenset({'694', '635'}))
Interval(1353592780.0, 1353592800.0, frozenset({'1660', '1662'}))
Interval(1353592780.0, 1353592800.0, frozenset({'696', '663'}))
>: Node<1353592840.0, depth=2, balance=1>
Interval(1353592840.0, 1353592860.0, frozenset({'626', '698'}))
Interval(1353592840.0, 1353592860.0, frozenset({'616', '683'}))
Interval(1353592840.0, 1353592860.0, frozenset({'636', '627'}))
Interval(1353592840.0, 1353592880.0, frozenset({'658', '623'}))
Interval(1353592840.0, 1353592880.0, frozenset({'661', '644'}))
>: Node<1353592860.0, depth=1, balance=0>
Interval(1353592860.0, 1353592880.0, frozenset({'1613', '1492'}))
Interval(1353592860.0, 1353592880.0, frozenset({'628', '692'}))
Interval(1353592860.0, 1353592880.0, frozenset({'696', '648'}))
>: Node<1353592920.0, depth=2, balance=0>
Interval(1353592920.0, 1353592940.0, frozenset({'683', '692'}))
Interval(1353592920.0, 1353592940.0, frozenset({'616', '623'}))
Interval(1353592920.0, 1353592960.0, frozenset({'663', '686'}))
<: Node<1353592900.0, depth=1, balance=0>
Interval(1353592900.0, 1353592920.0, frozenset({'1613', '1492'}))
Interval(1353592900.0, 1353592920.0, frozenset({'683', '654'}))
>: Node<1353592940.0, depth=1, balance=0>
Interval(1353592940.0, 1353592960.0, frozenset({'667', '644'}))
Interval(1353592940.0, 1353592960.0, frozenset({'666', '644'}))
Interval(1353592940.0, 1353593000.0, frozenset({'1613', '1492'}))

: Node<1353593220.0, depth=5, balance=-1>
Interval(1353593220.0, 1353593240.0, frozenset({'661', '817'}))
<: Node<1353593120.0, depth=4, balance=-1>
Interval(1353593100.0, 1353593140.0, frozenset({'1613', '1492'}))
Interval(1353593120.0, 1353593140.0, frozenset({'1671', '1632'}))
<: Node<1353593080.0, depth=3, balance=-1>
Interval(1353593080.0, 1353593100.0, frozenset({'690', '627'}))
<: Node<1353593040.0, depth=2, balance=-1>
Interval(1353593040.0, 1353593080.0, frozenset({'623', '666'}))
Interval(1353593040.0, 1353593080.0, frozenset({'1613', '1492'}))
<: Node<1353593020.0, depth=1, balance=0>
Interval(1353593020.0, 1353593040.0, frozenset({'601', '626'}))
>: Node<1353593100.0, depth=1, balance=0>
Interval(1353593100.0, 1353593120.0, frozenset({'616', '683'}))
Interval(1353593100.0, 1353593120.0, frozenset({'661', '817'}))
>: Node<1353593140.0, depth=2, balance=1>
Interval(1353593140.0, 1353593180.0, frozenset({'616', '683'}))
>: Node<1353593200.0, depth=1, balance=0>
Interval(1353593200.0, 1353593220.0, frozenset({'1613', '1492'}))
Interval(1353593200.0, 1353593220.0, frozenset({'833', '609'}))
>: Node<1353593260.0, depth=3, balance=1>
Interval(1353593240.0, 1353593280.0, frozenset({'651', '648'}))
Interval(1353593260.0, 1353593280.0, frozenset({'803', '849'}))
<: Node<1353593240.0, depth=1, balance=0>
Interval(1353593240.0, 1353593260.0, frozenset({'1613', '1492'}))
>: Node<1353593360.0, depth=2, balance=1>
Interval(1353593360.0, 1353593380.0, frozenset({'690', '635'}))
Interval(1353593360.0, 1353593380.0, frozenset({'627', '635'}))
Interval(1353593360.0, 1353593400.0, frozenset({'661', '635'}))
>: Node<1353593380.0, depth=1, balance=0>
Interval(1353593380.0, 1353593400.0, frozenset({'690', '661'}))
Interval(1353593380.0, 1353593400.0, frozenset({'1613', '1170'}))

self.s_center.remove(interval)

KeyError: Interval(1353592940.0, 1353593000.0, frozenset({'1613', '1492'}))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/remy/GitHub/DCD/UsefulFunction.py", line 32, in
SocioPatternClasses.readGeneric(file,inputSNinfos,format="SP")
File "/Users/remy/GitHub/DCD/utilsConverter/DyNoHandler.py", line 114, in readGeneric
self.readSPformat(inputFile,SNinfo,removeInactiveNodes=removeInactiveNodes)
File "/Users/remy/GitHub/DCD/utilsConverter/DyNoHandler.py", line 197, in readSPformat
self.truncate(0, 1)
File "/Users/remy/GitHub/DCD/utilsConverter/DyNoHandler.py", line 382, in truncate
self.edges.conserveBetween(start,end)
File "/Users/remy/GitHub/DCD/utilsConverter/Tools/IntervalStruct.py", line 94, in conserveBetween
self.chop(1353283620,self.end())
File "/Users/remy/Dropbox/python3CLEAN/lib/python3.5/site-packages/intervaltree/intervaltree.py", line 508, in chop
self.remove_envelop(begin, end)
File "/Users/remy/Dropbox/python3CLEAN/lib/python3.5/site-packages/intervaltree/intervaltree.py", line 486, in remove_envelop
self.remove(iv)
File "/Users/remy/Dropbox/python3CLEAN/lib/python3.5/site-packages/intervaltree/intervaltree.py", line 361, in remove
self.top_node = self.top_node.remove(interval)
File "/Users/remy/Dropbox/python3CLEAN/lib/python3.5/site-packages/intervaltree/node.py", line 211, in remove
return self.remove_interval_helper(interval, done, should_raise_error=True)
File "/Users/remy/Dropbox/python3CLEAN/lib/python3.5/site-packages/intervaltree/node.py", line 270, in remove_interval_helper
self[direction] = self[direction].remove_interval_helper(interval, done, should_raise_error)
File "/Users/remy/Dropbox/python3CLEAN/lib/python3.5/site-packages/intervaltree/node.py", line 270, in remove_interval_helper
self[direction] = self[direction].remove_interval_helper(interval, done, should_raise_error)
File "/Users/remy/Dropbox/python3CLEAN/lib/python3.5/site-packages/intervaltree/node.py", line 270, in remove_interval_helper
self[direction] = self[direction].remove_interval_helper(interval, done, should_raise_error)
File "/Users/remy/Dropbox/python3CLEAN/lib/python3.5/site-packages/intervaltree/node.py", line 270, in remove_interval_helper
self[direction] = self[direction].remove_interval_helper(interval, done, should_raise_error)
File "/Users/remy/Dropbox/python3CLEAN/lib/python3.5/site-packages/intervaltree/node.py", line 270, in remove_interval_helper
self[direction] = self[direction].remove_interval_helper(interval, done, should_raise_error)
File "/Users/remy/Dropbox/python3CLEAN/lib/python3.5/site-packages/intervaltree/node.py", line 270, in remove_interval_helper
self[direction] = self[direction].remove_interval_helper(interval, done, should_raise_error)
File "/Users/remy/Dropbox/python3CLEAN/lib/python3.5/site-packages/intervaltree/node.py", line 270, in remove_interval_helper
self[direction] = self[direction].remove_interval_helper(interval, done, should_raise_error)
File "/Users/remy/Dropbox/python3CLEAN/lib/python3.5/site-packages/intervaltree/node.py", line 248, in remove_interval_helper
raise KeyError(interval)
KeyError: Interval(1353592940.0, 1353593000.0, frozenset({'1613', '1492'}))

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions