Клетка в Blender

С помощью Blender’а я смоделировала схематичную животную клетку. Результат рендера:

Изначально я решила сделать только митохондрию. С моделированием внутренней мембраны возникли проблемы, очевидного для меня способа сделать ровные складки не было. Решение я нашла на YouTube: складки можно сделать из кривой Безье.

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

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

Следующий шаг – добавление модификатора “Screw”. В параметрах устанавливаем угол в -180 градусов и ось Y:

Далее конвертируем объект в mesh и добавляем модификатор “Solidify”, выставляем нужную толщину:

Теперь получившуюся мембрану можно согнуть. Для этого добавляем на сцену Plain Axes, перемещаем их в центр нашего объекта и поворачиваем на 90 градусов по оси X (в моем случае). После этого добавляем к мембране модификатор “SimpleDeform”, в параметрах в качестве “Origin” ставим Plain Axes, выбираем “Bend”, ось Y и выставляем нужные градусы:

Теперь форму мембраны можно вручную подредактировать в Edit Mode.

Остальные части митохондрии делаются несложно. Итоговый результат:

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

Я делала две соединенные между собой цистерны ЭПР, которые потом дуплицировала, в примере же буду использовать одну цистерну. Цистерну делаем из куба и применяем к нему модификацию “Bevel”:

Также нужно добавить большое количество Loop Cut’ов:

Добавляем на сцену Metaball, немного уменьшаем его и ставим разрешение 0.1. Добавляем систему частиц в ЭПР, в параметрах выбираем “Hair”, в окошко “Number” ставим число вершин нашего объекта. Выбираем “Render As Object” и в качестве “Instance Object” ставим Metaball:

Покрытие получилось неполным, так что я увеличила размер Metaball и увеличила количество частиц:

Конвертируем Metaball в Mesh, его теперь можно убрать через Edit Mode. Переходим в Sculpting и с помощью инструмента “Smooth” выравниваем поверхность со всех сторон:

Изначальную форму, на которую добавляли объем, можно убрать.

Получившуюся цистерну можно изогнуть. Для этого добавляем Lattice с большим разрешением (у меня 50 на 50) и применяем к ней модификатор “SimpleDeform” с параметром “Bend” по оси Z и большим углом (у меня 110 градусов). Далее добавляем модификатор “Lattice” к ЭПР, в качестве объекта выбираем нашу Lattice. Теперь, если двигать ЭПР в пределах Lattice, он будет изгибаться:

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

Такую методику я применяла для создания ЭПР и аппарата Гольджи.

Дальше я добавила в клетку цитоплазму – плоскости, для которых сделала текстуру воды. Конструкция для получения текстуры воды:

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

На поверхность цитоплазмы и части ЭПР добавила систему частиц для получения множества рибосом.

Итоговый результат с подписями органоидов:

Молекула ДНК в Blender

Я смоделировала две молекулы ДНК разной степени сложности и сделала их “рендеринг” в Blender. Первая, более простая и схематичная, создавалась с использованием Geometry Nodes, как в видео на YouTube. Geometry Nodes, в том числе, позволяют автоматизировать создание периодических структур. Получившееся изображение:

Более сложную молекулу я строила вручную, без использования Geometry Nodes. На первом этапе сделала компоненты ДНК: четыре азотистых основания, дезоксирибозу и фосфат:

Из этих частей я составила все возможные пары нуклеотидов (A-T, T-A, G-C, C-G), которые затем поставила друг над другом так, чтобы получились две нити ДНК. После этого перемещением и поворотами пар нуклеотидов выстроила спираль. Итоговый результат:

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

Флеш-карточки для подготовки к ЕГЭ по биологии

В 2021 году я сдала ЕГЭ по биологии на 100 баллов. Для успешной сдачи этого экзамена нужно запомнить очень большой пласт информации, что является довольно сложной задачей. Одной из основных техник, которые я использовала при подготовке, были флеш-карточки.

Каждый раз после того, как я прошла какую-то новую тему (прочитала весь материал из учебников, послушала лекции и написала конспект), я делала флеш-карточки по основным понятиям оттуда. Я нарезала из бумаги карточки размера 7,5 на 6 сантиметров, на одной стороне писала вопрос или подтему (например, “Функции митохондрий” или “Пищеварительная система земноводных”), а на другой стороне писала ответ – содержание подтемы, то, что нужно запомнить. Дальше эти карточки нужно повторять: смотреть на сторону с вопросом, вспоминать ответ и потом проверять себя по стороне с ответом. Лучше использовать интервальное повторение – повторение через определенные увеличивающиеся интервалы времени. У меня было шесть групп временных промежутков: повторение каждый день, через день, через неделю, две недели, месяц, два месяца. Сначала я повторяла новую колоду карточек каждый день, пока не запоминала полностью, потом эта колода переходила во вторую группу (повторение через день), и я повторяла эти карточки через день, пока не могла точно воспроизвести их, после чего колода переходила в третью группу и так далее. Я вела табличку, куда записывала даты повторения каждой колоды из каждой группы.

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

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

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

Визуализация молекул с помощью Blender

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


Специально для визуализации молекул существует add-on “Atomic Blender”, который позволяет импортировать в программу файлы с расширением .pdb и .xyz, которые описывают структуру молекул.
Add-on можно включить через настройки Blender (Edit -> Preferences), там он называется “Import-Export: Atomic Blender PDB/XYZ”.

Blender позволяет создавать красивые изображения молекул: можно выставлять определенное освещение, менять фон, цвета атомов, подсвечивать интересные части, проводить рендеринг с разных камер с разных сторон. Я использовала только файлы с расширением .pdb, которые брала с сайта RCSB PDB (Protein Data Bank). Если в файле указаны все атомы молекулы, то в Blender мы увидим их в виде шаров разных цветов, которые могут быть соединены связями. В примере ниже для визуализации выбран белок IRP1 в аконитазной форме.

С двух сторон от белка я поставила две пересекающиеся плоскости, а над белком – плоскость, к которой применила материал, испускающий свет. Получила вот такое изображение:

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

IRP регулируют экспрессию белков, участвующих в метаболизме железа, путем связывания со специфическими некодирующими последовательностями мРНК, известных как железо-чувствительные элементы (IRE). В условиях избытка железа IRP1 связывает железосерный кластер [4Fe-4S] и действует как цитозольная аконитаза. Регуляция баланса между двумя формами этого белка сложна и зависит не только от доступности железа.

Решение задачи о минимальном размере k-мера, которого нет в геноме, на Python

Задача:
При каком минимальном числе k существует нуклеотидная последовательность длины k, не встречающаяся в геноме человека? Сколько таких последовательностей при найденном k?

Подпоследовательности длины k, содержащиеся в биологической последовательности, в биоинформатике называют k-мерами (k-mers). Обычно этот термин используется в контексте вычислительной биологии и анализа последовательностей, в которых k-меры состоят из нуклеотидов. В данной задаче предлагается определить, при какой минимальной длине k-мера существуют k-меры, не встречающиеся в геноме человека.

Для решения использовался геном человека GRCh38, который предварительно был обработан через командную строку так, чтобы файл содержал только заглавные буквы A, T, G или C.

Код на Python, решающий задачу:

import time
from itertools import product
import re

seq = ''
with open('GRCh38_genome_new.fna', 'r') as file:
    # write the genome into a string, removing control characters
    seq=file.read().replace('\n', '').replace('\r', '')
   
print('The file has been read!')
                
for k in range(1, 16):
    print('Starting k: ', k)
    start = time.time()
    match = 0
    for word in product('ATGC', repeat=k): 
    # go through the k-mers that are generated using product
        a = re.search(''.join(word), seq) 
        # looking for k-mer in genome
        # move to the next iteration, if there is no match
        if a == None:
            continue
        # add 1 to counter, if there is a match
        match += 1

    # if there is no matches for al least one k-mer for this k, 
    # then we have found what we were looking for
    if match < 4**k:
        print('Min k:', k)
        print('The amount of missing k-mers:', 4**k - match)
        end = time.time()
        print('k =', k, ':', end - start)
        break
    end = time.time()