Невозможно превратить пустой массив в граф в SageMath - PullRequest
0 голосов
/ 13 июня 2018

После загрузки testnb.sws, следуя инструкциям на сайте
https://sourceforge.net/p/networksym/code/ci/master/tree/
Я попытался запустить его в устаревшей «Записной книжке мудреца» (а не в записной книжке Jupyter) следующим образом:

  • открыть Sage Notebook
  • нажмите «Загрузить»
  • нажмите «Обзор»
  • выберите testnb.sws
  • нажмите «Загрузить рабочий лист»
  • нажмите «Evaluate»

При оценке ячейки кода в этой рабочей таблице возникает следующая ошибка:

ValueError: This input cannot be turned into a graph

Похоже, в Sage, np.array () недопустим.

Однако, когда я использую

Aij32 = ([[0,1,0],[1,0,1],[0,1,0]])

вместо

Aij32 = np.array([[0,1,0],[1,0,1],[0,1,0]])

, он показывает

AttributeError: 'list' object has no attribute 'copy'

Как преодолеть эту проблему?

1 Ответ

0 голосов
/ 14 июня 2018

Превратить числовой массив в граф

Если a - числовой массив, представляющий матрицу смежности для графа, то вместо

Graph(a)

можно использовать

Graph(matrix(a))

для построения соответствующего графика.

Исправление для рабочего листа, указанного в вопросе

В рабочем листе testnb.sws, указанном в вопросе, заменив этот блок

# get clusters
print "the orbits are:"
print data32.get_orbits()

в следующем блоке

def get_orbits(a):
    r"""
    Return the orbits as a list of lists
    """
    if a._orbits is None:
        a._group, a._orbits = sg.Graph(
            matrix(a.get_adjacency_matrix())
            ).automorphism_group(orbits=True)
    return sg.copy(a._orbits)

# get clusters
print "the orbits are:"
print get_orbits(data32)

заставляет все работать хорошо.

...