Book design is the art of incorporating the content, style, format, design, and sequence of the various components of a book into a coherent whole. In the words of Jan Tschichold, "Methods and rules that cannot be improved upon have been developed over centuries. To produce perfect books, these rules must be revived and applied." The front matter, or preliminaries, is the first section of a book and typically has the fewest pages.
Устанавливаем Python
Заходим на сайт Python по ссылке, скачиваем и устанавливаем интерпретатор. Я установил версию 3.13.15 для Windows. В окне установки будут две галочки:
Add python.exe to PATH - галочку ставим обязательно. Иначе терминал Windows не будет «видеть» Python.
Use admin privileges when installing py.exe - поставить галочку желательно. Она даёт права администратора для установки py.exe — утилиты, которая помогает запускать разные версии Python на одном компьютере. Можно её не устанавливать - Python будет работать и так, но в дальнейшем могут быть проблемы с запуском Python из-под учётной записи администратора. Я эту галочку поставил.
После нажимаем "Install Now", дожидаемся завершения установки и закрываем окно установщика.
Готово! У нас на борту новый мощный инструмент. Проверим, что он действительно с нами и всё с ним в порядке. Запустим терминал Windows (в окне поиска системы введём "Терминал" и на вот эту иконку):
В появившемся окне Windows PowerShell введём код
python --version
и нажмём Enter. Если всё получилось, нам вернётся версия Python. Вот пример, когда всё прошло удачно:
Мы сделали большое дело.
Установка зависимостей для gedcom2gexf
Сам скрипт gedcom2gexf — это часть набора gedcomTools. Для его работы нужны дополнительные библиотеки. Основные из них — networkx, gedcompy и six. Вот как их можно установить:
Скачайте gedcomTools. Перейдите на страницу проекта на GitHub по ссылке, и скачайте его как ZIP-архив, затем распакуйте в удобную папку (запомните, куда распаковали!)
Чтобы скачать zip-архив, найдите зелёную кнопку <>Code, нажмите на неё, а в выпадающем меню выберите "Download ZIP"
Теперь нужно перейти в папку с проектом (перейдите к распакованной из архива папке) и скопируйте путь к ней из адресной строки. У меня этот путь выглядит вот так:
Вновь возвращаемся к окну терминала и вводим команду cd, а за ней - скопированный на предыдущем шаге :
cd C:\Users\User\Documents\gedcomTools-master
Если в пути есть пробелы (например, C:\Мои документы\gedcomTools), путь нужно брать в кавычки, например
cd "C:\Мои документы\gedcomTools"
Теперь текущая рабочая директория - та, что нам нужна.
Синим цветом подчеркнут адрес рабочей директории по умолчанию, красным - адрес рабочей директории после его смены.
Далее вводим в терминале
python -m pip install -r requirements.txt
после чего нажимаем Enter. Если рабочая директория указана верно, то Python "подхватит" данные из текстового документа requirements.txt и сам установит все требуемые библиотеки (gedcompy, networkx и six), а в терминале появится сообщение об успешной установке "Successfully Installed" примерно такого вида:
Запускаем скрипт
После установки зависимостей вы можете запустить скрипт для преобразования GEDCOM в gexf. Для этого в терминале нужно такую команду (вводим всё там же, в терминале):
Здесь вместо "ваш_файл.ged" укажите имя вашего GEDCOM-файла; вместо "результат.gexf" - желаемое имя выходного файла. У меня эта команда имеет такой вид:
Если всё ОК, то в рабочей директории появится новый файлик с расширением gexf. С ним и будем работать дальше.
Устанавливаем Gephi
О, это не программа, а настоящая сказка. Спецы создают в ней какие-то нереальные вещи:
Но мы пока просто учимся, поэтому с порога звёзд с неба хватать не будем. Скачаем программу с официального сайта (он здесь), устанавливаем в удобную директорию и запускаем. Дальше - как и везде, в верхнем меню выбираем "Файл" -> "Открыть" -> находим сгенерированный на предыдущем шаге gexf-файл и открываем его.
Важно! В окне отчёта об импорте установите там графа на "Неориентированный". Древо — это по сути неориентированный граф, и алгоритмы работают с ним лучше:
Файл откроется, после чего все узлы (персоны) соберутся в этакий чёрный квадрат в прямом смысле слова. Это отображение по умолчанию: раскладка пока не выполнена, а имена узлов (то есть по сути, имена персон) не отображаются. Покажем их. Для этого на нижней панели Gephi найдём кружок с маленькой буквой "а" и нажмём на него.
Готово! Если всё сделано правильно, около узлов появятся их названия. Приблизим квадрат, и проверим, всё ли получилось:
Имена на месте!
Теперь попробуем применить раскладку.
Подготовка
Уберите «висячие» узлы. В правой панели "Фильтры" разверните блок "Топология", здесь найдите Giant Component (в русской версии называется "Гигантская связанная компонента") иперетащите её вниз в поле «Запросы» и нажмите «Отфильтровать». Это оставит только самую большую связанную часть дерева, убрав одинокие персоны, у которых нет связей. Для генеалогического графа это критически важно: без этого шага алгоритм будет долго и безуспешно пытаться разместить изолированные узлы.
На всякий случай убедитесь, что граф неориентированный. Это должно быть показано в окне «Контекст» в правом верхнем углу:
Сохраните файл (Ctrl+S) перед запуском тяжелых вычислений.
Строим граф
Рекомендую начать с раскладки Yifan Hu — она даст быстрый результат, чтобы оценить общую картину. Затем, если захочется более наглядных кластеров, можно «дожать» граф с помощью ForceAtlas2.
Настройки для Yifan Hu: Выберите Yifan Hu в панели «Раскладка» (Layout), нажмите «Свойства» (Properties) и установите:
Optimal Distance: 50 — для 10–15 тысяч узлов это хороший старт. Если граф выглядит слишком плотным, можно увеличить до 80.
Relative Strength: 0.2 — значение по умолчанию, оставьте его. Оно дает баланс между притяжением и отталкиванием.
Theta: 0.8 — тоже стандарт. Это компромисс между скоростью и точностью.
Step Ratio: 0.7 — чуть меньше стандартного (0.9), чтобы движение было более плавным и стабильным.
Initial Step Size: 1.0 — уменьшите с 2.0, чтобы узлы не «разлетались» слишком резко в начале.
Convergence Threshold: 1.0E-3 — для больших графов это нормально, алгоритм остановится раньше, но результат будет достаточно хорошим.
Теперь пробуем то же в yEd
Запускаем yEd Graph Editor. После загрузки graphml файла мы увидим... Один узел! На самом деле это нормально: остальные спрятаны за ним. По умолчанию весь граф собран в одну точку. Как видите, имена узлов отсутствуют. Дело в том, что Gephi и yEd по-разному хранят имена узлов в формате graphml. Gephi записывает их в атрибут label, а yEd ожидает их в специальном теге <y:NodeLabel>, который Gephi не создаёт.
Как это исправить
Самый простой путь - использовать «Properties Mapper». Это встроенный инструмент yEd, который может автоматически превратить атрибут label из Gephi в подпись узла. В верхнем меню yEd выберем Edit - > Properties Mapper.
В открывшемся окне нажмем на синий плюсик в блоке "Configurations", а в выпадающем меню выберем "New Configuration for Nodes" чтобы создать новую конфигурацию для узлов:
Теперь нажмём на синий плюсик в блоке "Selected Configurations". В столбце Data Source (слева) выберите label. В столбце Map To (в центре) выберите Label Text.
Нажмите Apply и OK. Имена должны появиться на узлах. Результат будет выглядеть немного странно, примерно как на картинке внизу. Но это нормально.