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

Я немного умею складывать, но от вычитания у меня всегда кружится голова

Карта Солнечной системы 1849 года

Между Солнцем и Венерой — планета Вулкан.

Между Марсом и Юпитером — четыре планеты: Веста, Юнона, Церера и Паллада.

Указана правильная длительность венерианский суток — 224 земных дня.
(Это в 1849 году, причем сейчас Венера покрыта плотной непроницаемой для оптики атмосферой!)


Подсказал тг «Эпоха недоверия».

Очень кратко о JSON Lines

jsonlines.org

Джисон-лайнс состоит из строк, разделенных символом новой строки \n.

Каждая строка является отдельным объектом джисон.

Джисон-лайнс можно обрабатывать построчно,
это основное достоинство формата.

jsonl — расширение файлов джисон-лайнс.


JSON

Один файл — один объект; каждая строка — элемент этого объекта; пока не загрузится весь файл, доступа к строкам не будет.

[
  {"id": 1, "position": [{"x": 17, "y": 256}], "status": "grow"},
  {"id": 2, "position": [{"x": 78, "y": 341}], "status": "sleep"},
  {"id": 3, "position": [{"x": 45, "y": 650}], "status": "moved"},
  ...
]

JSON Lines

Каждая строка — отдельный объект джисон; можем читать файл построчно.

{"id": 1, "position": [{"x": 17, "y": 256}], "status": "grow"},
{"id": 2, "position": [{"x": 78, "y": 341}], "status": "sleep"},
{"id": 3, "position": [{"x": 45, "y": 650}], "status": "moved"},
...

Карта названий Севастопольских бухт

Нашел у себя в запастниках карту с названиями Севастопольских бухт. Рисовал сам. К сожалению карта только в виде растра, вектор потерялся.

Если найду или сделаю вектор, поделюсь.

Справочник по УДК

Нашел неплохой справочник по УДК

https://perviy-vestnik.ru/udc/

Достоинство — динамический поиск: набрал текст — увидел результат.

Недостаток — УРЛ странички статичен, не меняется при переходе к разделу справочника, и не удобно скакать по разделам.



УРЛ все время такой:

  • /perviy-vestnik.ru/udc/

Хочется, чтобы было так:

  • /perviy-vestnik.ru/udc/004.6/ — и ты в разделе о «Данных».
  • /perviy-vestnik.ru/udc/004.94/ — и ты в разделе о «Компьютерном моделировании».
  • /perviy-vestnik.ru/udc/57.02/ — и ты в разделе «Биологические и этологические процессы: механизмы, взаимодействие с окружением».

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

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

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


В аннотации к статье Tyree et al. (2020) Reduction of taxonomic bias in diatom species data приведена следующая рекомендация:

«postcount identification and documentation of taxa (as opposed to an approach in which analysts assign names while they enumerate)».

Полностью она звучит так:
Precount voucher floras. [...] Each analyst was instructed to provide the project leader with a digital image of a representative specimen for all taxa that made up 5% or more of an individual count. [...] Multiple images were collected to document the size and morphological range of each taxon, which were then assigned aunique mOTU code. The images were assembled into image catalogs, or precount voucher floras, and made available to analysts. Analysts then had the opportunity to comment and reformulate mOTUs and their member images before the formal analysis began. Once analysis of microslides started, newly encountered taxa were photographed, assigned a code, added to the flora, and made available to project analysts for use throughout the analysis period.


Это натолкнуло меня на мысль о порядке определения видов диатомовых. Он подходит только для определения видов по фотографиям.

(1) Сначала объединяем фотографии особей в группы по схожести видимых признаков, невзирая на таксономическую принадленость изображенных организмов.

Фактически, на первом этапе мы выделяем морфотаксоны.

(2) После, пересматриваем организмы группы. Если какой-то организм из группы чем-то значимо отличается от остальных организмов этой группы, переносим его в другой морфотаксон.

На втором шаге присваиваем имена морфотаксонам.

(3) В финале, определяем видовую принадлежность организмов группы и называем виды, либо оставляем название морфотаксона, если вид определить не удалось.


Такой же алгоритм упомянут на сайте diatoms.org:

Steps to Eliminate Taxonomic Bias

  1. A priori, images are collected and organized into morphological OTUs.
  2. Each OTU is assigned a provisional name (GOM01, GOM02, etc.)
  3. Taxonomists add images to the voucher flora, when new taxa are encountered during analysis.
  4. Identification of species is delayed, until the final step of analysis.
  5. The voucher publicly available and serves as a permanent record of the study.
  6. Permanent slides are deposited in a public herbarium to support the voucher.



Tyree et al. (2020) дает рекомендации по именованию морфотаксонов:

Formal scientific names. [...] analysts [...] enumerated taxa based on the mOTU codes from the shared voucher floras. When analyses were completed, mOTU codes were reconciled, and formal scientific names were assigned during collaborative workshops. During the workshops, project analysts [...] assigned scientific names to mOTUs. For each scientific name assigned, analysts recorded their initials and the taxonomic concept reference used when identifying the taxon. Any mOTU that did not correspond with a validly published species was referenced by its project-specific code (e. g. “Achnanthidium sp. 1 SESQA”). Such names were entered into [...] Taxonomic Database [...] as a bench name, with the voucher flora serving as the image representation of the name.

Изображения диатомовых сгруппированные по морфотаксонам. Bishop et al., 2017



Последовательность шагов для определения диатомовых выглядит так:

  • Делим изображения на морфотаксоны
  • Корректируем состав морфотаксонов
  • Идентифицируем виды, относящиеся к морфотаксонам
  • Соотносим с морфотаксоном валидное видовое название или оставляем рабочее название морфотаксона
  • Заносим результаты в таксономическую базу данных


Эта последовательность подходит для идентификации других групп организмов.



В предыдущих сериях:


Викиданные и Викибаза

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

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

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

Викибаза — это набор программ, позволяющие извлекать и работать с данными из Викиданных.


Все это открыто и бесплатно. Ну то есть поддержка софта, базы и серверов оплачивается специальными фондами (там ах-ные суммы), а все, кто данные вносят, делают это открыто и бесплатно)

Символизм: пчела — лилия

Лилия — это замаскированная пчела.

Пчела — это символ одного из ответвлений суфизма, из которого вышли массоны — вольные каменщики.

* * *

Информация из интервью уважаемой АсСалам.

Добавляем рисунки к листьям дендрограммы. 1 часть: используем ggtree

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

В конце заметки — финальный код на R


Эта красочная дендрограмма содержит 38 листьев и разделена на 19 классов. На листьях дендрограммы написаны названия видов плоских паразитических червей из класса моногеней. Собираюсь показать вместо них изображения прикрепительных органов этих паразитов


Для работы понадобятся

Знание языка Эр.

Установленный пакет ggtree.

Создаю изображения объектов

Каждому листу дендрограммы сопоставлю маленький рисунок объекта. Для этого буду использовать два набора изображений: один — для тестирования, другой — для финальной отрисовки.

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

Вот код для генерации 99-ти пнг-файлов размером 20×20 пикселей. Имя файла с изображением совпадает с нарисованым номером.

imgs_path = "img_indexed/"

for (i in 1:99) {
  # Создаю новый пнг-файл img_{i}.png с нулевыми отступами
  png(file = paste0(imgs_path, "img_", i, ".png"), width = 20, height = 20)
  par(mar = c(0, 0, 0, 0))
  
  # Созданию рисунок числа
  plot(0, 0, type = "n", xlim = c(0, 1), ylim = c(0, 1), xlab = "", ylab = "", axes = FALSE)
  text(0.5, 0.5, i, cex = 1)
  
  # Сохраняю пнг-файл
  dev.off()
}

Вот сами изображения.

Вод код для их загрузки.

imgs_indexed = c()
imgs_path = "imgs_indexed/"

for(i in 1:75) {
  imgs_indexed = c(imgs_indexed, paste0(imgs_path, "img_", i, ".png"))
}

Изображения объектов

Изображение объекта — это уменьшенный рисунок прикрепительного крючка паразитического червя (моногенеи). Вот они все:

Общая картинка создана с помощью Имедж-меджик: montage -tile 20x2 -geometry +0+0 *.png all-anchors.png

Название файла с крючком совпадает с наванием вида. Эти названия храню списком в текстовом файле labels.txt. Для загрузки изображений объектов использую следующий код.

imgs_path = "img_objects/"
# Загружаем имена меток
img_objects <- readLines("labels.txt")
# и добавляем расширение '.png'
img_objects <- paste0(imgs_path, img_objects, ".png")

Изображения готовы, перейдем к дереву.

Строю дерево с картинками, используя ggtree

В книге «Data integration, manipulation and visualization of phylogenetic trees» описано, как прикрутить картинки к дендрограмме с помощью ggtree.

К сожалению, приведнный в книге код у меня не заработал. Он подразумевает, что мы загружаем филодерево из файла. А я строю дерево при помощи иерархической кластеризации и преобразую ее в объект дендрограммы.

data — это матрица данных: в ее строках — объекты, в столбцах — признаки.

# Выполняю иерархический кластерный анализ
dist <- dist(data)
hc   <- hclust(dist, method = "complete") 

library(dendextend)

# Преобразую результат в дендрограмму
dend <- as.dendrogram(hc)

Из дендрограммы делаю филодерево.

library(ggtree)

phylo <- as.phylo(dend)

Рисую дерево.

ggtree(phylo)

И получаю пустой каркас.

R: ggtree(∙)

Строю дендрограмму с текстовыми листьями

Добавлю к листьям каркаса текстовые подписи при помощи функции geom_tiplab(∙). Чтобы подписи поместились на канве, оставлю пустое место справа при помощи xlim(∙).

ggtree(phylo) + xlim(0, 0.7) + geom_tiplab(geom="label", size=2.2)
R: ggtree(∙) + xlim(∙) + geom_tiplab(label)

Получилось так себе: текст мелкий и бесит рамка вокруг него, но как от нее избавиться — не понял.

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

Рисую картинки на дендрограмме

У функции geom_tiplab(∙) есть параметр geom, задающий тип метки:

one of ’text’, ’label’, ’shadowtext’, ’image’ and ’phylopic’.

При помощи опции ’image’, можно на месте листьев нарисовать картинки.

На нашей дендрограмме 38 листьев. Значит передадим ей массив из 38 тестовых изображений: imgs_indexed[1:38].

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

ggtree(phylo) + geom_tiplab(geom="image", aes(image=imgs_indexed[1:38]), size=.03)

В результате выполнения кода получил ошибку:

Error in `label_geom()`:
! Problem while computing aesthetics.
i Error occurred in the 3rd layer.
Caused by error in `check_aesthetics()`:
! Aesthetics must be either length 1 or the same as the data (75)
x Fix the following mappings: `image`

После длительного анализа определил, что массив изображений должен состоять из 75 элементов, что написано в сообщении об ошибке. (75 = 38 листьев * 2 − 1.) Но код все равно использует только 38 первых изображений. (Это хорошо.)

ggtree(phylo) + geom_tiplab(geom="image", aes(image=imgs_indexed[1:75]), size=.03)

Вуаля.

R: ggtree(∙) + xlim(∙) + geom_tiplab(image)

Подставлю сюда изображения объектов.

ggtree(phylo) + geom_tiplab(geom="image", aes(image=img_objects[1:75]), size=.03)

Цель достигнута.

Финальный код

library(ggplot2)
library(ggtree)

# Формируем массив с названиями файлов с рисунками объектов.
imgs_path = "img_objects/"
img_objects <- readLines("labels.txt")
img_objects <- paste0(imgs_path, img_objects, ".png")

# Выполняю иерархический кластерный анализ
dist <- dist(data)
hc   <- hclust(dist, method = "complete") 

# Преобразую результат в филодерево
phylo <- as.phylo(dend)

# Рисую дерево с картинками
ggtree(phylo) + geom_tiplab(geom="image", aes(image=img_objects[1:75]), size=.03)

Итог

Результат не нравится.

Дендрограмма вверху заметки — красивая, а эта — средненькая. Поэтому в следующий раз покажу, как сделать красивую дендрограмму с картинками при помощи пакета dendextend.



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

Переносим пакеты R из одного каталога в другой (под Виндоус)

Рассказываю, что делать, если ваш каталог с пакетами Эр закрыт для записи

Установка пакетов Эр в каталог по-умолчанию равносильно ношению корсета: внешне красиво, а внутри — тяжелые последствия. Источник.

Эр работает со множеством вспомогательных пакетов. Для этого Эр скачивает пакеты в специальный каталог на компьютере.

Пакеты Эр установленные на моей машине

По-умолчанию Эр помещает пакеты в системный каталог Виндоус. Обычно — это каталог текущего пользователя. Например, у меня на Виндоус 10 — это:

C:\User\Anton\AppData\Local\R\win-library\4.3\

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

Чтобы исправить это досадное недоразумение, создадим новый каталог и укажем Эр, что теперь пакеты нужно устанавливать в него.

  1. Создадим новый каталог для пакетов Эр. Например:
    C:\User\R\packages
  1. Откроем переменные среды текущего пользователя.
  1. Найдем переменную R_LIB_PATH или создадим ее.
  1. Запишем в эту переменную название каталога с пакетами Эр.
  2. Перезапустите Эр. Теперь новые пакеты будут установлены в указанный каталог.




Первоисточник.
How do I change the default library path for R packages.

Доп. чтение:
Migrating R libraries

R Installation and Administration. 6 Add-on packages
Painless way to install a new version of R?




—-

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

Десять принципов Артема Горбунова

Артем Горбунов — дизайнер, основатель и руководитель Бюро Горбунова.

Вот его жизненные принципы.

  1. Прямо сейчас. Если перед вами стоит сложная задача и вы не знаете, как к ней подступиться, задайте себе вопрос: Что мне мешает достичь цели прямо сейчас? При таком подходе вы начинаете думать о главной проблеме, которая мешает добиться результата.
  2. Не авось. Если сделать что-то на авось, есть два варианта развития событий. Старший товарищ заметит вашу ошибку и наругает вас. Или, что ещё хуже, вы сделаете проект, запустите его, он начнёт работать и что-то в нём пойдёт не так. Поэтому не полагайтесь на авось.
  3. Я виноват. Когда что-то идёт не так, хочется обвинять других. Но в этом случае вы перекладываете ответственность на обстоятельства. Если вы признаёте вину, то можете влиять ни происходящее.
  4. Не ной. Нытьё дискредитирует вас в глазах окружающих, и они будут считать, что на вас нельзя положиться.
  5. Не бери деньги у мудаков. Деньги всегда связаны с доверием и создают ожидания. Поэтому не берите деньги у клиентов, которым вы не доверяете.
  6. Учись.
  7. Не ссы. Меняйте профессию, открывайте собственный бизнес и заводите детей даже тогда, когда кажется, что уже слишком поздно
  8. Путешествуй.
  9. Помни. Человеческая память ограничена, поэтому чтобы сохранить воспоминания, используйте подручные приспособления. Например, ведите записи, сохраняйте важную переписку, переносите данные из старого компьютера на новый
  10. Мечтай. Делите свои мечты с другими людьми: путешествуйте с ними, делайте совместные проекты. Тогда ваша мечта станет мечтой тех, с кем вы ею поделились.

Это полная запись выступления.

Вырезаем из большой дендрограммы маленькую веточку с помощью R

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

Нужно оставить только отмеченные ветви


Примечание. Размер шрифта на денрограмме уменьшил при помощи R-кода ↓.

# Размер подписей на оси
par(cex.axis=0.8)
# Размер подписей листьев
dend <- set(dend, "labels_cex", 0.9)
# Рисует дендрограмму
plot(dend)

В R (вроде бы пока еще) нет специальной процедуры для вырезания ветвей. Зато в пакете dendextend есть функция prune.

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

dend_pruned <- prune(dend, c("L_grandis__da", "L_kedahensis__TG__da", "L_chabaudi__da", "L_fenestrum__KM221913__da"))
plot(dend_pruned)
Отмеченные ветви удалены

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

«Пусть потеет машина», гласит дизайнерская мудрость. Поручим компьютеру сделать необходимые перестроения.

Для этого предлагаю функцию invert_prune. Она получает на вход список листьев, которые нужно оставить в дендрограмме, и возвращает список листьев, которые должна обрезать функция prune.

invert_prune <- function(dend, remained_leaves) {
  setdiff( labels(dend), remained_leaves )
}

Пользуемся ею так:

dend_pruned <- prune(dend, 
invert_prune(dend, c("L_grandis__da", "L_kedahensis__TG__da", "L_chabaudi__da", "L_fenestrum__KM221913__da"))
)

plot(dend_pruned)

Вуаля, и все нужные ветки остались.


Учите R.


—-

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

Сила сознания


«Сознание не только позволяет видеть призраков, но может и создавать предметы из ничего и ввергать их обратно в небытие. Например, в темноте человек видит змею, а при включенном свете понимает, что принял за змею обычную веревку — змея ещё секунду назад была невероятно реальна, а вот её уже нет. Сознание обладает такой невероятной силой, что даже может изменять прошлое и будущее. Вот вы смотрите на прошлое своей страны одним способом, а после прочтения книги оно видится уже совершенно другим. Смотрите на свое будущее — и оно кажется неопределенным безрадостным, а, например, поставили цели и составили планы на следующий месяц, и очертания будущего стали более чёткими, а его восприятие заметно улучшилось. Факты не изменились, изменилась лишь интерпретация — и вот изменились прошлое и будущее, так как они существуют лишь у нас в уме.»


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


Источник на Хабре: Как управлять Вселенной, не покидая психиатрической лечебницы.


Выбор за тобой

«Ведь человек в этом мире — свободен. Хочешь — обжирайся и напивайся, хочешь — развлекай себя нейростимуляторами, хочешь — предавайся персональному мазохизму. Но, с другой-то стороны: хочешь учиться — учись; хочешь читать — читай, все что угодно и сколько угодно; хочешь самосовершенствоваться — пожалуйста; хочешь, в конце концов, чистить и улучшать свой мир, хочешь драться за достоинство человека — ради бога! — это отнюдь никем не запрещено, действуй, и дай тебе бог удачи! Ты волен в этом мире стать таким, каким сможешь и захочешь. Выбор за тобой. Действуй.»

Воспоминания Бориса Стругацкого о повести «Хищные вещи века».

Хорошее определение термина trait (экопризнак) с примером для диатомовых: очень кратко

Нашел хорошее определние английского термина trait.


Eng
Traits are defined as “any morphological, physiological or phenological measurable feature at the individual level” [Violle et al., 2007] and are more tightly linked to ecosystem functioning than species; thus, their study provides a more integrative ecological assessment potential at the ecosystem level [Tapolczai et al., 2016].

Traits described in benthic diatoms are cell size, ecological guilds and life forms, and have been successfully related to environmental stressors (i.e., pesticides—herbicides, heavy metals, nutrients and organic pollution).


Violle et al., 2007


По русски trait переводится как признак. Но признак — общее понятие, которое включает как диагностические признаки, так и просто любые признаки объекта. А trait-based approach подразумевает признаки, связанные с экологией организма, с его функционированием в экосистеме, а не с его таксономическим положением. Поэтому trait перевожу как экопризнак.


Trait — Экопризнак
Trait-based approach — Анализ экопризнаков


Ru

Экопризнак — это «любая морфологичекая, физиологическая или фенологичсекая характеристика, измеряемая на индивидуальном уровне» [Violle 2007]. Экопризнаки боле тесно связаны с функционированием экосистемы. Поэтому их изучение обеспечивает более комплексный потенциал экологической оценки на уровне экосистем [Tapolczai, 2016].

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

Экопризнаки бентосных диатомовых и факторы, с которыми они связаны [Tapolczai et al., 2016]


Подробнее здесь:

Как связаны обилие и таксономическое разнообразие диатомовых с загрязнениями

Цит. [Pandey et al., 2017]:

Ответ: явная связь отсутствует

Diatom diversity indices and their relative abundance in the diatom communities are widely used to indicate the presence and extent of organic and inorganic contaminants in fluvial ecosystems. In most studies,

these routinely used indices provide a statistically weak relationship between diatom diversity and pollutants.

Thus, in the light of this result,

there is an urgent need to incorporate new types of diatom-based indices

(e. g., a taxonomic composition based index), which can provide reliable information using statistical tools. Improvement in taxonomic resolution of diatom species, use of composite indices (richness, evenness, diversity and dominance), increased cell counting (3000-8000 valves) and simultaneous use of several indices to detect and evaluate the huge spectrum of potential pollutants have been proposed to improve the efficacy of diatom-based ecotoxicological assessments [Blanco and Becares, 2010; Stevenson et al., 2010; Rimet and Bouchez, 2011].

Нет прямого влияния химических загрязнений на разнообразие диатомовых

Analysis of available literature does not support a direct causeeffect relationship between chemical pollution and diatom diversity.

In general,

the relationship between diversity and chemical contamination is not always a simple linear positive/negative association and results are not always strong enough to indicate a management approach that would most effectively conserve the health of the ecosystem.

<...>

These biodiversity parameters are regularly used but sometimes do not provide consistent information about the known impairment of waterbodies [Blanco et al., 2012].

<...>

Other studies showed mixed responses of diatoms against different types of stresses.

<...>

This inconsistency of diatom diversity indices and lack of significant correlations between diversity, evenness and environmental variables is in accordance with the “Intermediate Disturbance Hypothesis”, which assumes a parabolic relation between diversity and water quality, with the highest diatom diversity at intermediate pollution levels [Van de Vijver and Beyens, 1998; Hirst et al., 2002].

Как выявить потенциальную взаимосвязь

Используйте несколько индексов разнообразия

Ricciardi et al. (2009) reviewed the status of biological communities in rivers in relation to chemical contamination and reported two major constrains in diversity and pollution studies.

  • First, they found that the use of a single diversity index or small number of diversity indices was inadequate. The different biodiversity indices assess different types of information and using only one of these indices (types of information) is not enough to adequately define biological diversity. Multivariate-analysis studies that combine both conventional and taxonomy-based indices and possibly different trophic levels provide a more comprehensive view of the diversity status of an ecosystem and its potential response to pollutants.
  • Second, they advocated the use of coupled chemical and biological analyses to evaluate water-quality status and the effect of chemicals on fluvial biological diversity, thus promoting a multidisciplinary approach.
  • Further, they recommended incorporating a variety of types of biodiversity indices, especially when using algae (diatoms) for assessing the chemical status of aquatic systems.

According to Stevenson et al. (2010), composite indices that incorporate both the richness and evenness elements of diversity are needed to characterize the kind and severity of pollution in fluvial ecosystems. Similarly, Blanco and Becares (2010) found that the simultaneous use of several diatom indices is required to detect and evaluate the huge spectrum of potential pollutants in river basins.

Применяйте методы понижения размерности

Relative abundance data can become informative through the use of ordination, clustering and similarity indices [Stevenson et al., 2010].

More specifically, ordination-based multivariate analysis (e. g., correspondence analysis, detrended correspondence analysis, non-metric multidimensional scaling, principal component analysis and distance-based redundancy analysis) was developed to relate community composition to measured variation in the environment.

  • Ordination plots obtained in the analyses are linear combinations of environmental variables, along which the relative distributions of species assemblages.
  • Ordination plots help in visualizing the pattern of community variation, distributions of species and assemblages among environmental variations, and can be used for indicating species-environment relationships. (ter Braak, 1986; ter Braak, 1987; ter Braak and Smilauer, 2002).
  • Furthermore, ordination and clustering can be used to show assemblages that differ from other assemblages, which may be caused by anthropogenic impacts (e. g. Chessman, 1986; Stevenson and White, 1995).

Thus, incorporation of these analyses (any one) provides a simple, easy-to-understand description of the percent change in species relative abundances between assemblages at assessed and reference sites.

Процитирован

Pandey L. K., Bergey E. A., Lyu J., Park J., Choi S., Lee H., Depuydt S., Oh Y.-T., Lee S.-M., Han T. (2017) The use of diatoms in ecotoxicology and bioassessment: Insights, advances and challenges. Water Research. 118: 39-58.

Шпаргалки по пакетам R

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

Пакеты R позволяют пользователям расширять функциональность языка R, добавлять новые методы анализа данных, реализовывать свои алгоритмы и многое другое. Они часто распространяются через специальный репозиторий CRAN (Comprehensive R Archive Network), что делает установку и использование пакетов простым и удобным процессом.

Чат-джи-пи-ти.


Шпаргалки по пакетам R на гитхабе.


Пример шпаргалки для пакета stringr, который сильно упрощает работу со строками.

Оригинал stingr шпаргалки.

Покажите улучшение градиентом

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

Широтный градиент распределения окраски птиц. Cooney et al., 2002, fig. 2

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

Для примера на рисунке ниже ↓ изображено, как улучшается форма биологических объектов при использовании все большего и большего числа параметров — гармоник эллиптического преобразования Фурье.

Самый светлый серый цвет раскрашивает примитивные эллиптические формы, восстановленные из одной гармоники (второй ряд), а насыщенный черный (последний ряд) — наилучшие формы, восстановленные из 32 гармоник, которые практически не отличаются от исходных. Градиент серого иллюстрирует поэтапное восстановление исходных форм.

А на следующем рисунке ↓ изображен тот же процесс, но без использования градиента.

Очевидно, что градиент лучше передает динамику процесса.

Двойная дуга в СВГ пути

Это короткая техническая заметка о декодировании СВГ тега path.

Я — ретроград и у меня есть Дельфи-библиотека для загрузки СВГ графики. Она хорошо работала до тех пор, пока в теге path не встретился такой набор команд:

... a25.35,25.35,0,0,0-.32,8.58,32.42,32.42,0,0,0,1.53,6.3 ...

По спецификации a — рисует дугу и содержит семь параметров (семь чисел). А здесь их четырнадцать.

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

... a25.35,25.35,0,0,0-.32,8.58 a32.42,32.42,0,0,0,1.53,6.3 ...

Учту это правило в библиотеке.

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

Где-то в крымском лесу

Это продолжение серии заметок об анализе биологических данных.


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

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


Бутстреп

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

Немного о бустрепе.

Уникальные выборки

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

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

Хеш

Для создания хеша объединим все элементы выборки (их значения, идентификаторы или названия) в одну строку и вычислим хеш строки. Затем проверим, встречался ли такой хеш ранее (в массиве сохраненных хешей). Если его там нет, значит выборка уникальная.

Вот как можно составить строку для хеширования из данных.

  • Если данные — это символы, например названия, тогда объединяем их в одну строку:
  • ’ellipse’ + ’convex’ + ’square’ + ’curve’ → ’ellipseconvessquarecurve’.
  • Если данные — это числа, то считаем их строками и тоже объединяем в одну строку:
  • 17.5 + 21.1 + 33.333 + 77.00098 + 1 + 0.008 → ’17.521.133.33377.0009810.008’

Алгоритмов хеширования много. Среди них наиболее распространены: MD5, SHA-1, SHA-2, SHA-256. Используйте любой.

Вот хеши SHA-256 двух вышенаписанных строк:

  • ellipseconvessquarecurve → 6d80b7d933b69b974189bd2a61b90a05f050c62afa055fb5a033f36114d360a2
  • 17.521.133.33377.0009810.008 → d1a728197a46f18060a0c2533938c881b0d48e8e65358f21f1d86dd0f5f1612b

Успехов в анализе данных.

Ранее Ctrl + ↓