кратчайшие длины путей в .off файле с python - PullRequest
0 голосов
/ 14 мая 2018

Я имею дело с набором трехмерных фигур в формате .off (ModelNet10 http://3dshapenets.cs.princeton.edu/),, то есть у меня в основном есть доступ к массиву N x 3 для (x,y,z) координат для вершин и другого N x 3 массив граней, говорящий мне, что грани [i,j,k] принадлежат фигуре (100 i,j,k - индексы вершин), в частности ребра [i,j], [i,k], [j,k] принадлежат базовому графу (одномерный скелет).

IИнтересно, каков наилучший способ получить матрицу геодезических (кратчайших путей) расстояний с такими фигурами, по сути, используя Python3 (или другой стандартный язык, такой как C ++ или R, но тогда потребуется некоторая помощь). Здесь «лучший» в идеале означает «optmized для трехмерных треугольных форм ", но" это эффективно работает "также было бы удовлетворительным.

В настоящее время моя идея состоит в том, чтобы построить базовый (ненаправленный, взвешенный) график для данной формы. Тогда я мог бы использовать scipycsgraph (https://docs.scipy.org/doc/scipy/reference/sparse.csgraph.html). Это может звучать очень просто, но я пока не нашел библиотеки, которая бы делала это для меня. Я мог бы реализовать это сам, но мне нужно что-тонемного оптимизирован и предпочел бы полагаться на некоторый проверенный временем код.

Мои текущие попытки:

  • Использование PyMesh (https://pymesh.readthedocs.io/en/latest/) для загрузки моих файлов .off (получение двух N x 3)массивы, упомянутые выше). Я думаю, что PyMesh предлагает способ просто построить соответствующий график, но пока не нашел его.

  • Еще одно испытание: использование гудхи (http://gudhi.gforge.inria.fr/python/latest/)которые позволяют загрузить симплекс_дерево (с dim = 1 в моем случае) из файла .off. Может быть простой способ построить матрицу (геодезических?) расстояний из этого (или прокормить scipy этим), но этомне тоже немного не по себе.

  • Возможно, что-то с networkx (https://networkx.github.io/documentation/stable/index.html), но, опять же, мне не ясно, как заставить эту библиотеку взаимодействовать с другими.

Конечно, может быть какая-то библиотека, о которой я не знаю, или которая могла бы хорошо взаимодействовать с вышеупомянутыми.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...