Создавайте новые планеты с помощью Python и Planetoid API

Занимаясь data science, мы уделяем большое внимание моделям и алгоритмам, фреймворкам и техникам. Иными словами, теми вещами, которые заставляют нас думать: “Блин, это круто! Как я могу это использовать?”

Однако что-то, чего мне не хватает в нашей работе — это возможности посмотреть на вещи с творческой стороны.

Специализация Full-stack веб-разработчик на Python
Идет набор в группу 5 900₽ в месяц

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

То, что я обожаю в картографии — это то, что она часто описывается как искусство, наука и технология создания карт.

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

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

Так что я подумал: что я могу привнести в наше data science сообщество, чтобы дать возможность другим попробовать на вкус что такое картография с наименьшими трудозатратами?

Специализация «Frontend-разработчик»
Идет набор в группу 5900₽ в месяц

Planetoids — это высокоуровневый Python API для процедурной генерации интерактивных миров на основе данных из DataFrame из pandas.

Planetoids позволяет вам взять такие данные:

Набор данных MNIST представленный в двухмерном пространстве с помощью UMAP

И превратить их в это:

Скриншот планетоида, созданного на базе MNIST

И все это просто с помощью вызова .fit_terraform().

Как это работает?

На данный момент Planetoids может терраформировать планету из двумерных данных с опциональным атрибутом кластера. API все еще очень новый, и его возможности будут расширяться и дальше, но сейчас библиотека при терраформировании нового мира может следующее:

  • Генерировать пространство для рендеринга планетоида
  • Генерировать экологию, базируясь на статистике входных данных (экологию при желании можно задать и вручную)
  • Генерировать области суши с топографическими деталями (контурами) и деталями рельефа (градиентами) 
  • Генерировать световые эффекты в зависимости от рельефа

У вас, как у пользователя, есть контроль над уровнем детализации в сгенерированном планетоиде, и вы можете выбрать что будет отрисовано в интерактивном графике. Всю документацию по API можно найти здесь.

Для имплементации рендеринга планетоидов я использую plotly. В данный момент в трассировке ScatterGeo, которую я использую, не определены z-значения, и она может работать только с векторными данными, так что мне пришлось придумывать другие способы создать иллюзию глубины, примерно как это делается в бумажных картах.

Установка производится просто через pip install planetoids. Кроме того, я создал проект с Travis-CI для автоматического тестирования и Codacy для автоматического ревью кода и аналитики, чтобы другим заинтересованным в этом проекте было проще присоединиться. Я также создал список возможных задач для всех, кто захочет помочь мне расширить проект.

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

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

Я надеюсь, что вы получите столько же удовольствия, работая с библиотекой, сколько получил его я, работая над созданием Planetoids. Удачного терраформирования!

Текст: Terraform Planets with the Planetoid API Package in Python

Перевод: Ухарова Елена

Поделиться:
Опубликовано в рубрике PythonTagged ,

SkillFactory.Рассылка