Выйти из зоны комфорта и попробовать новую прикладную науку с языком Джулии.

Julia - отличный язык программирования, который обычно ассоциируется с его мощным статистическим анализом и возможностями машинного обучения. Однако многие люди могут знать, что у Джулии действительно есть довольно зрелая и устоявшаяся группа пакетов для других прикладных наук. Некоторые известные примеры включают Yao.jl для квантового моделирования, JuliaAstro.jl для астрономии (я действительно хочу проверить и этот), количественную экономику с QuantEcon.jl и даже квантовую физику с QuantumBFS.jl и QuantumOptics.jl. Благодаря этой богатой экосистеме для научных вычислений с Джулией легко понять, почему многие ученые являются юлианцами либо по хобби, либо по работе.

Эта экосистема пакетов вызвала у меня интерес, поэтому я решил погрузиться в один из них, используя все свободное время, которое у меня было в последнее время из-за вируса. В конце концов, это прекрасное время, чтобы заняться чем-то продуктивным, например, изучить новую прикладную науку с помощью моего любимого языка программирования; как я считаю это весьма продуктивным. Также, возможно, это наиболее подходящий момент, чтобы узнать больше о биологии и секвенировании генома. Чтобы быть ясным, у меня нет каких-либо знаний в области биоинформатики, но я ищу в ней точку опоры, которую я смогу улучшить со временем с практикой и исследованиями. Мне также интересно узнать, как я могу применить машинное обучение и статистику к биологии с Джулией и скрестить две прикладные науки, которые меня очень интересуют.

Добавление пакетов

Чтобы использовать пакеты BioJulia, нам, конечно же, нужно будет их добавить. Для своего выбора я в основном зашел в BioJulia’s Github и выбрал несколько интересных репозиториев. В своем подходе я не осознавал, что у BioJulia на самом деле есть собственный реестр пакетов. Вместо того, чтобы добавлять пакеты по отдельности через Pkg REPL и Github, я решил, что лучше всего использовать реестр. Из Pkg REPL мы можем добавить реестр BioJulia с помощью этой команды:

registry add https://github.com/BioJulia/BioJuliaRegistry.git

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

  • BioSequences.jl
  • GenomeGraphs.jl
  • BioSymbols.jl

Однако этот опыт в конечном итоге был немного меньше похож на то, что я добавляю пакеты, о которых я ничего не знаю, и немного больше похож на ребенка в кондитерской ... Я также решил выбрать XAM.jl и BigBed.jl. Нам также понадобится BioCore.jl, и я пошел дальше и взял BioGenerics.jl (не уверен, нужен он мне или нет). К концу у меня открылась довольно большая группа страниц Github. К счастью, в моем Google Chrome включена экспериментальная группировка вкладок.

Мне нравится эта функция.

pkg> add BioCore
pkg> add BioSymbols
pkg> add GenomeGraphs
pkg> add BioGenerics
pkg> add BigBed
pkg> add BioSequences
pkg> add XAM

Удивительно, но мой список пакетов по-прежнему выглядит неплохо!

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

Но я готов!

Я наткнулся на это видео, если вы хотите его проверить:

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

№1: Основы программирования

  • Способности к статистическому языку программирования. (Python, R, Джулия) ✔
  • Будьте знакомы с Bash. ✔
  • Уметь читать данные на выбранном вами языке программирования. ✔
  • Уметь выполнять базовые статистические тесты (например, T-тест, тест chi², F-тест) ✔

№2: Сделай проект

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

Вот веб-сайт, который она предложила для получения данных:



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

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

№3: Возьмите инструмент Safari

(Я вроде уже делал это, люблю сафари)

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

№4: повторить шаги 2 и 3.

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

Мой первый проект

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

Мне удалось получить некоторые данные о панголинах, которые, как мне показалось, выглядели круто на этом веб-сайте. Это было немного странно, так как вы попадаете на страницу html без стилей с 30-минутным разговором о том, как получить файл с помощью wget ... Это было определенно странно и заставляло искать ftp: // или http: // ссылку действительно сложно. Вот тот, который я в итоге использовал:

wget --timestamping 
        'ftp://hgdownload.cse.ucsc.edu/goldenPath/manPen1/bigZips/*'

Забавная история, на моем диске NVME емкостью 512 ГБ очень мало места для хранения, потому что я храню данные, поэтому я очень боялся, что могу заполнить остальную часть моего SSD этими данными и мне придется заняться очисткой. Вы знаете, что мне действительно нужно?

NAS.

Вот файлы, которые я собрал из репозитория с помощью wget:

Теперь я собираюсь создать в этом каталоге сервер записной книжки.

cd ~/Projects/bioproject
jupyter-notebook

Это огромное количество данных, поэтому первое, что я решил попытаться получить в Джулии, - это manPen1.2bit. Это потому, что, хотя я точно не знаю, как считывать эти данные в Джулию, я знаю, что у меня есть пакет, который может это сделать. Внутри BioSequences.jl есть 2-битный ридер, и вы можете найти документацию здесь:



BioSequences.jl имеет тип, хранящийся в подмодуле под названием TwoBit. Однако у меня возникла проблема, когда я попытался импортировать его ...

«TwoBit не определен»

Имея это в виду, я решил проверить, какая у меня версия BioSequences.jl:

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

pkg> add TwoBit

Теперь мы можем импортировать его в Julia и создать нашу читалку:

using TwoBit
reader = TwoBit.Reader(open("manPen1.2bit", "r"))

Теперь мы можем просмотреть последовательности генома, которые мы только что прочитали, используя метод seqnames () на нашем ридере:

sequences = TwoBit.seqnames(reader)

И теперь у нас есть BioData!

Вывод

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

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