Цели исследования: Выращивание A. mexicanus на альтернативном корме: [1] Сравните скорость роста и выживаемость между контроль и лечение. [2] Сравните плодовитость эмбрионов между контролем и лечением.

Используемые методы:визуализация данных, статистические t-тесты, анализ выживаемости, корреляция

Используемые инструменты:RStudio

Github: Сравнение Mysis-Dry

2.0 Введение

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

Использование модельных организмов для исследований интересно, но сопряжено с большой ответственностью. Направление № 1 в исследованиях и разработках — улучшение благополучия организма, Astyanax mexicanus. Стресс является основной переменной при использовании биологических образцов. Это может повлиять на обмен веществ, циклы сна, агрессию и многие другие функции. Помимо исследований, наша работа как опекунов и попечителей этих животных заключается в обеспечении наилучшего возможного благополучия.

Когда я читал Рыбки данио в лаборатории (Лоуренс и др., 2015), меня поразила убедительная цитата о рационе животных, особенно рыбы.

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

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

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

Вызывает беспокойство не только питательный профиль, но и процесс размораживания и выдачи корма Mysis отнимал много времени у команды. Это отличный кандидат для НИОКР!

3.0 Проведение эксперимента

Возвращаясь к цитате Лоуренса и др. В 2015 году я решил использовать в качестве зависимых переменных три основных показателя производительности: рост, выживание и воспроизводство. Если я смогу улучшить любую из этих черт, не жертвуя остальными, это будет огромным преимуществом для лаборатории.

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

Я разделил эксперимент на две отдельные фазы: рост и размножение. На этапе 1 я измерил рост и выживаемость контрольной группы (Mysis) по сравнению с экспериментальной группой (Gemma). На этапе 2 я измерил плодовитость контрольной и экспериментальной групп во время размножения. Плодовитость измеряется как общим количеством собранных эмбрионов, так и количеством «жизнеспособных» эмбрионов.

Данные фазы 1 собирались примерно каждые 40 дней со 100 по 365 день после оплодотворения. После того, как рыбкам исполнился год, мы провели учет и идентификацию пола. Затем эти рыбы были рандомизированы в свои группы и помещены в новые аквариумы с равным количеством и соотношением. Сбор эмбрионов происходил каждые 4 недели, в два отдельных дня подряд в течение этой недели размножения.

4.0 Обработка данных

4.1 Загрузка данных

Процесс превращения файла Excel во фрейм данных в R очень прост. Используя openxlsxlibrary, мы можем читать отдельные листы Excel как фреймы данных. Это также преобразует любые даты через detectDates=T.

Прежде чем двигаться дальше с фреймами данных, я всегда проверяю правильность импорта, используя head() и summary().

4.2 Очистка данных

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

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

Первый — это использование функций применения, в моем случае lapply() и sapply().

lapply()принимает функцию, в моем случае factor, и применяет функцию к списку. По сути, это интересная версия цикла! Здесь я использую список столбцов, которые хочу превратить в фактор, а затем использую lapply() для перезаписи одного столбца за раз во фрейме данных. Очень удобно, если нужно много переодеться!

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

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

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

Вот ресурс tidyverse, если вы хотите узнать больше.

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

mutate() позволяет пользователю изменять, создавать или удалять столбцы. Это очень хороший инструмент, если честно. Мы используем его здесь, чтобы изменить столбец Tank.

Я изменил фактические значения с помощью recode(). Эта функция позволяет вам заменять числа, коэффициенты или символы другим значением, при условии, что это тот же тип данных. Обычно это делается путем установки одного значения равным другому в функции перекодирования (например, recode(df, a = 'apple')). Однако мы хотим заменить весь список строк другим списком строк в зависимости от их положения в векторе. К сожалению, recode работает не так хорошо. Здесь в игру вступает !!!setNames(). Для тех из вас, кто не знаком с оператором сплайсинга !!!, вот отличный ресурс: https://rlang.r-lib.org/reference/splice-operator.html

Этот оператор позволяет нам настроить функцию до того, как R ее обработает. Важно знать, что setNames() создает для нас «именованный» список. В этом случае именованный список, в котором новые метки резервуаров являются объектами, а старые метки резервуаров являются именами, присвоенными каждому объекту. Это очень важно для понимания того, как взаимодействуют !!! и recode().

Использование !!!позволяет recode() перебирать именованное значение в списке, который мы создали с помощью setNames()по одному, поскольку он перекодирует каждое имя с объектом. Например, 7.C.4 = ‘7.E.3-4' является первым значением в нашем списке, это будет вторым аргументом функции recode().

df_growth <- df_growth %>%
  mutate(Tank = recode(Tank, '7.C.4' = '7.E.3-4'))

Затем процесс продолжится с каждым именованным объектом в нашем списке!

Теперь, когда все четыре фрейма данных очищены, мы можем начать исследование!

Приходите посмотреть Часть 2, где я начинаю исследовательский анализ данных.

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

В обеих кормовых группах наблюдается аналогичный перекос вправо, но в контрольной группе (Mysis) есть набор выпадающих островов от шести до двенадцати месяцев. Кроме того, экспериментальная группа (Джемма) имеет гораздо более плавный наклон хвоста. Узнайте, как я интерпретирую это в Части 2!

Кроме того, если вам понравился мой первый пост, связанный с данными, нажмите на аплодисменты, поделитесь им в социальных сетях или, что еще лучше,… пообщайтесь со мной! Я здесь, чтобы учиться и делиться, поэтому любой разговор приветствуется.

Мой взгляд на этот блог.