Я из компьютерной науки. фон, но теперь я делаю геномику.
Мои проекты включают в себя много биоинформатики, которые обычно включают в себя: выравнивание последовательностей, сравнение перекрытия и т.д. между последовательностями и различными функциями аннотации генома, из разных классов биологических образцов, данных временного курса, microarray, высокопроизводительная последовательность (последовательность следующего поколения, хотя это текущее поколение на самом деле) данных, такого рода вещи.
Рабочий процесс с таким анализом сильно отличается от того, что я испытал во время учебы в области компьютерных наук: нет UML и тщательно продуманных объектов, сияющих с возвышенной элегантностью, без управления версиями, без надлежащей документации (часто без документации), нет разработки программного обеспечения вообще.
Вместо этого все, что делают в этой области, взламывают один Perl- script или AWK -one-liner после другие, обычно для разового использования.
Я думаю, причина в том, что входные данные и форматы меняются так быстро, на вопросы нужно ответить так скоро (сроки!), что, похоже, нет времени для организации проекта.
Один пример, чтобы проиллюстрировать это: пусть говорят, что вы хотите написать raytracer. Вначале вы, вероятно, приложите много усилий для разработки программного обеспечения. Затем запрограммируйте его, наконец, в некоторой высокооптимизированной форме. Потому что вы использовали бы бесчисленное множество raytracer с различными входными данными и вносили изменения в исходный код в течение долгих лет. Так что хорошая разработка программного обеспечения имеет первостепенное значение при кодировании серьезного raytracer с нуля. Но представьте, что вы хотите написать raytracer, где вы уже знаете, что будете использовать его для поиска одного, единственного рисунка. И эта картина имеет отражающую сферу над клетчатым полом. В этом случае вы как-то просто взломали его. Биоинформатика похожа на последний случай.
В итоге вы получите целые деревья каталогов с той же информацией в разных форматах, пока не достигнете одного конкретного формата, необходимого для следующего шага, и дюжины файлов с именами типа "tmp_SNP_cancer_34521_unique_IDs_not_Chimp.csv", где у вас нет малейшая идея на следующий день, почему вы создали этот файл и что это такое.
Некоторое время я использовал MySQL, который помог, но теперь скорость создания новых данных и изменения форматов такова что невозможно сделать правильный дизайн базы данных.
Мне известно об одной публикации, посвященной этим вопросам (Noble, W. S. (2009, июль). Краткое руководство по организации проектов вычислительной биологии. PLoS Comput Biol 5 (7), e1000424 +). Автор суммирует цель довольно хорошо:
Основной руководящий принцип прост: Кто-то, кто не знаком с вашим проектом должны быть в состоянии компьютерные файлы и подробно о том, что вы сделали и почему.
Хорошо, это то, что я хочу, тоже! Но я уже придерживаюсь той же практики, что и этот автор, и я считаю, что это абсолютно недостаточно.
Документирование каждой команды, которую вы выдаете в Bash, комментируя ее, почему именно вы это сделали и т.д., просто утомительно и подвержены ошибкам. Шаги во время рабочего процесса слишком мелкие. Даже если вы это сделаете, может оказаться очень утомительной задачей выяснить, для чего был создан каждый файл, и в какой момент был прерван определенный рабочий процесс и по какой причине и где вы продолжили.
(Я не использую слово "рабочий процесс" в смысле "Таверна", по рабочему процессу я имею в виду только шаги, команды и программы, которые вы выбираете для достижения определенной цели).
Как вы организуете проекты по биоинформатике?