ValueError: указанное расширение взаимодействия шире, чем те, которые уже присутствуют для указанных узлов - PullRequest
0 голосов
/ 01 апреля 2020

Я работаю над динамическим c графом с помощью dynetx, но я получаю эту ошибку каждый раз, когда пытаюсь загрузить моментальные снимки из файла, как решить эту ошибку? ниже приведен код, который я пишу

g = dn.read_snapshots('times2.txt', nodetype=int, timestamptype=int)

пример набора данных

469 2153 10
469 2153 5
469 2153 5
469 2153 5
469 2153 5
469 2153 5
469 2153 5
469 2153 6
469 2153 6
469 2154 10
469 2154 7
469 2155 10
469 2155 7
469 2156 10
469 2156 7
469 2157 10
469 2157 7
469 2158 10
Thank you

ошибка

valueError                                Traceback (most recent call last)
<ipython-input-365-4dbae894b502> in <module>
----> 1 g = dn.read_snapshots('times2.txt', nodetype=int, timestamptype=int)

<C:\Users\user\Anaconda3\lib\site-packages\decorator.py:decorator-gen-888> in read_snapshots(path, comments, directed, delimiter, nodetype, timestamptype, encoding, keys)

~\Anaconda3\lib\site-packages\dynetx\utils\decorators.py in _open_file(func, *args, **kwargs)
    192         # Finally, we call the original function, making sure to close the fobj.
    193         try:
--> 194             result = func(*new_args, **kwargs)
    195         finally:
    196             if close_fobj:

~\Anaconda3\lib\site-packages\dynetx\readwrite\edgelist.py in read_snapshots(path, comments, directed, delimiter, nodetype, timestamptype, encoding, keys)
    255 
    256     return parse_snapshots(lines, comments=comments, directed=directed, delimiter=delimiter,  nodetype=nodetype,
--> 257                            timestamptype=timestamptype, keys=ids)
    258 
    259 

~\Anaconda3\lib\site-packages\dynetx\readwrite\edgelist.py in parse_snapshots(lines, comments, directed, delimiter, nodetype, timestamptype, keys)
    230             if e is not None:
    231                 e = keys[e]
--> 232         G.add_interaction(u, v, t=t, e=e)
    233     return G
    234 

~\Anaconda3\lib\site-packages\dynetx\classes\dyngraph.py in add_interaction(self, u, v, t, e)
    374             else:
    375                 if t[0] < app[-1][0]:
--> 376                     raise ValueError("The specified interaction extension is broader than "
    377                                      "the ones already present for the given nodes.")
    378 

ValueError: The specified interaction extension is broader than the ones already present for the given nodes.

1 Ответ

1 голос
/ 02 апреля 2020

С помощью предоставленной вами информации я могу восстановить ошибку и сузить ее до следующего значения:

Ваши наблюдения не упорядочены по времени, и у вас есть несколько наблюдений для некоторых узлов (в dynetx это создает дополнительные данные, см. ниже). Чтобы решить вашу проблему, вам нужно сначала отсортировать данные по времени (и удалить дублирующиеся строки).

Небольшой пример для создания вашей ошибки:

from dynetx import DynGraph()

dyngraph = DynGraph()

# works
snapshots = [
    [469, 2153, 5],
    [469, 2153, 5],
    [469, 2153, 10],
]

# does not work
#snapshots = [
#    [469, 2153, 10],
#    [469, 2153, 5],
#]

for u, v, t in snapshots:
    dyngraph.add_interaction(u, v, t)

    print(dyngraph.edges(data=True))
# [(469, 2153, {'t': [[5, 5]]})]
# [(469, 2153, {'t': [[5, 5], [5, 5]]})] -> is this really wanted by you?
# [(469, 2153, {'t': [[5, 5], [5, 5], [10, 10]]})]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...