Математик среди биологов

Пишу о геометрии живого, таксономических базах данных, определителях и родном крае

Жизнь в ИМБИ. 1. Ведущие инженеры.

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

И так ежедневно. Охуели совсем.

Мало того, что они ничего не делают за хорошую зарплату. Они ничего не умеют, не хотят учиться, и, самое главное, мешают работать.

Что самое интересное — их никто никогда не уволит.

Приятно, что такие инженеры есть не во всех отделах ИМБИ. В остальных отделах института инженеры — это работающие, много знающие и много умеющие люди. В ОБЭ — друзья пиров.

Вырезаем пиксельную графику из СВГ

Столкнулся с задачей.

Есть фотография большого размера (более 4 тыс. пикселей по ширине), на которой запечатлены части живых организмов.

Большая фотография с прикрепительными структурами плоского паразитического червя

Организмы — это паразиты. Мизерные примитивные червячки из класса Моногеней, живущие на жабрах рыб. К жабрам они крепятся при помощи крючков.

Рисунок головы кефали из работы Световидова (1964); рисунок жабр и сидящего на них паразита из работы Лопеса-Беленгуэра с сотоварищами (2015)

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

Метод главных компонент описывает разнообразие форм прикрепительных крючков разных родов моногеней. График из статьи Вигнона (2011)

Для выполнения морфометрического анализа мы оцифровываем форму крючков. Загружаем фотографию в Инскейп, обводим кривыми и сохраняем результат в СВГ.

Проблема в том, что готовый файл слишком много «весит». Исходный джипег размером 800 Кб, после обводки и сохранения в СВГ, толстеет до 12 Мб. В результате мне присылают мегатонные свгешки с внедренной графикой, которые надо разместить на сервере, а он не резиновый.

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

Я несколько часов пытался уменьшить размер свг-файла с графикой без потери качества. Попробовал уменьшить в Инскейпе, не получилось — размеры фотографии и свг-файла остались огромными. Потом разобрался с форматом и нашел решение.

Формат СВГ поддерживает два способа хранения изображений.

Первый, когда графический файл внедрен в СВГ. Это не оптимальный способ, потому что файл не сжат. Изображение состоит из последовательности символов в позиционной системе счисления с основанием 64 (base64). Отсюда 800 Кб превращаются в 12 Мб.

Фотография, внедренная внутрь свг-файла, занимает очень много места

Второй, когда СВГ хранит ссылку на внешний графический файл. Тогда СВГ содержит только описание кривых, а фотография хранится отдельно. Размер свг-файла становится маленьким.

Отделил «мух» от «котлет»

Второй вариант подошел.

Если бы файлов было мало, я бы все переконвертировал вручную. Но файлов много — несколько сотен.

В результате написал скрипт на ПХП. Он извлекает из СВГ фотографию, сохраняет ее в виде отдельного джипега и вставляет в СВГ ссылку на этот джипег. Джипег хранится локально и называется так же, как и свг-файл.

Скрипт умный. Если в разных файлах используется одна и та же фотография, скрипт сохранит ее всего один раз и во всех файлах будет правильно на нее ссылаться. Это экономит место.

Скрипт для всех.

Эта заметка описывает этап создания виртуальной коллекции паразитов рыб Мирового океана

СВГ Клинер — утилита, которая очищает СВГ от мусора

СВГ Клинер помогает очистить СВГ-файл от мусора и без потерь уменьшить его размер.

Без потерь значит, что утилита не разрушает СВГ. Она сохраняет векторные объекты и:

  • удаляет данные, которые внедряют в файл векторные редакторы, не нужные для отображения свг-файла;
  • оптимизирует структуру СВГ;
  • удаляет невидимые или неиспользуемые элементы.

Проект на Гитхабе. Есть версия с графическим интерфейсом.

Что в сухом остатке?

Ну и что в сухом остатке? Уволили и не взяли на работу фитопланктонолога. Нового — нет. Часть исследований выпала.

Ушли ушлые, но что-то генерирующие люди. Замены — нет.

Назначили необразованную девочку мат-ответственной. Мат есть, а подбора приборов-материалов нет. Ее основная занятость: поход на рынок со второй Б, долгие обеды с третьей и четвертой (кстати, что они делают?), рулеж какой-то частью податливых и обсер прочих. Делать то нехуй, а выпендрится хочется. Нормально работать в таких условиях невозможно.

Между прочим, девочки-инженеры, а ни карты построить, ни в экселе что-то посчитать не умеют. И учится не планируют.

В сухом остатке: когда эта хня закончится, направление зачахнет. Пока все идет к этому.

Модульные системы с открытым исходным кодом — зло

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

Функциональность вместе с навязанным дизайном — злейшее зло.

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

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

Крымский южнобережный хаос напоминает модульную систему с открытым кодом

Работать в такой системе не интересно и очень трудно.

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

Грустно.

Если денег нет, но очень хочется автоматической системы, умеющую петь, помешивать кашу и решать дифференциальные уравнения, надо:

  • после установки системы избавиться от навязанного дизайна, оставив только функциональность;
  • поставить перед студетом-администратором-суперпользователем интересную, сложную, посильную задачу о превращении системы из «Лады Самары», купленной для поездки на дачу, в «Тяжелого сокола» для полетов на Марс.

Если постараться, получится.

Как не нужно делать поиск таксонов: пример Микобанка

Микобанк — база данных с научными названиями грибов.

В конце 2015 года база содержала более 360 тыс. видовых, около 50 тыс. внутривидовых и свыше 3 тыс. названий высших таксонов.

Круговые диаграммы здесь не нужны — достаточно написать число таксонов

Что имеем

Простая функция перечисления всех названий видов грибов в Микобанке отсутствует. Если вы не знаете вида гриба — вы не узнаете ничего. База для гиков-микологов.

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

Простой поиск сложен. Пробую найти информацию о белом грибе с установленным флажком семейства — система ничего не находит.

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

После праздников промахиваюсь и пишу название вида в поле для идентификатора записи базы данных. Система ничего не находит.

В продвинутом поиске число полей в 1,5 раза больше. Ухожу с сайта.

Как надо

Для поиска достаточно оставить одно поле, а разбор запроса передать системе.

Воображаемый поиск в Микобанке

Так программировать сложно, но чтобы расти, этому надо учиться.

На чем учиться

Микобанк разрешает скачать список научных названий грибов (25 Мбт). Это большой интересный набор данных. С его помощью вы разберетесь с названиями таксонов, научитесь строить таксономическую базу данных и прокачаете навыки разработки интерфейсов.

О достижениях пишите.

Спасибо Бюро Артема Горбунова за принцип «Интерфейс — зло».

Как не нужно поздравлять своих подписчиков

Снега нет, и поздравления сыпятся в ящик. Вот рождественское поздравление из Международного института океана, расположенного на Мальте.

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

Я тронут.

По моему Де Стафф просто бездушно напомнил о своем существовании. Он даже не знает, что я мужчина, и не помнит моего имени.

Так делать не нужно.

Люда Сарычева хорошо рассказала об убедительном поздравлении. А Максим Ильяхов дал совет, вообще не писать поздравления малознакомому человеку.

Дорогие сотрудники и сотрудницы Международного института океана, не надо больше писать такие письма.

Где не надо публиковаться: список журналов, которые за деньги опубликуют любой бред

Potential, possible, or probable predatory scholarly open-access publishers.

Список обновляется. Подробности описаны на Гиктаймс: «Лженаука и аферисты. Фальшивые научные журналы».

В таких журналах публиковаться не надо.

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

Если писать хорошо не получается, тренируйтесь и читайте Максима Ильяхова.

Сколько людей отдыхало на пляже?

Около Балаклавы (Севастополь) есть пляж «Васили». Его любят местные жители и приезжие за обособленность, чистую воду и красивые окрестности.

Фото Ирины Агарковой

Коллеги решили провести исследование: собрать данные о числе отдыхающих на пляже в течение летнего сезона. Это нужно для оценки рекреационной нагрузки. К сожалению у них не вышло приходить на пляж каждый день. Даже не получилось бывать каждую неделю. И наблюдения захватывали только часть дня. В результате данных собрали очень мало.

Меня попросили хоть что-то сделать с данными.

Для начала разделил день на три периода. Потому что утром и вечером на пляж обычно приходят люди, избегающие солнца — они приходят поплавать и не будут сидеть на пляже весь день. Их надо учесть отдельно. Днем, наоборот, на пляже отдыхают любители солнечных ванн и ожогов. Без солнца пляж им не интересен.

Потом выстроил данные по времени. Получилась длинная шкала дней.

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

Отдыхающие на «Василях» в 2016 году

Сделал закономерные выводы:

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

Если бы данных было больше, выводы стали бы интереснее.

Ставьте ясные задачи и четко планируйте исследования.

Если кто-то захочет использовать полученные данные или график, пишите.

Ctrl + ↓ Ранее