Библиотека сайта rus-linux.net
Обработка больших объемов данных в биоинформатике
Глава 12 из книги "Производительность приложений с открытым исходным кодом".
Оригинал: Working with Big Data in Bioinformatics
Авторы: Eric McDonald, C. Titus Brown
Перевод: А.Панин
Заключение
Набор утилит khmer является движущейся целью. Новые возможности добавляются в него регулярно и мы работаем над его интеграцией в различные программные стеки, используемые участниками сообщества исследователей, работающих в области биоинформатики. Как и в случае многих академических программных разработок, его существование началось в качестве поясняющего приемы программирования примера, который впоследствии эволюционировал до исследовательского кода. Корректность работы утилит была и остается основной целью проекта. Хотя производительность и возможность масштабирования не могут в реальности рассматриваться как второстепенные цели, они делают приоритетными целями корректную работу и простоту применения компонентов набора. Тем не менее, наша работа по улучшению возможностей масштабирования и производительности утилит завершилась с хорошими результатами, причем отдельно следует отметить ускорение при работе в однопоточном режиме и возможность значительного сокращения общего времени работы утилит благодаря применению многопоточной модели исполнения. Размышления о проблемах производительности и масштабирования привели нас к необходимости повторного проектирования таких программных компонентов, как поставщик данных и система их разбора. В будущем эти программные компоненты смогут использовать преимущества не только масштабирования, но и улучшенной поддержки и расширенных возможностей.
Направления будущего развития
Если посмотреть в будущее, то после рассмотрения базовых вопросов производительности, мы будем по большей части заинтересованы в дополнении API для разработчиков, предоставлении тщательно протестированных примеров использования и документации, а также в предоставлении тщательно разделенных компонентов для их интеграции в конвейеры большего размера. В более широком смысле, нам хотелось бы воспользоваться преимуществами теории структур данных с малым использованием памяти для упрощения определенных случаев использования утилит, а также мы заинтересованы в исследовании распределенных алгоритмов для обработки некоторых сложных наборов данных, с которыми мы столкнемся в ближайшем будущем.
Некоторые дополнительные аспекты предстоящего процесса разработки khmer заключаются в расширении вариантов хэширования с целью предоставления возможности использования различных хэш-функций для работы с одноцепочечными ДНК и в добавлении итеративной хэш-функции (rolling hash function) для получения возможности использования значений k > 32.
Мы с нетерпением ждем возможности продолжения разработки этого программного обеспечения и надеемся, что повлияем на решение задачи обработки больших объемов данных, с которой сталкиваются молекулярные биологи и биоинформатики. Мы надеемся, что вам было интересно читать о путях повышения производительности программного обеспечения с открытым исходным кодом, которое используется учеными.
Благодарности
Мы благодарим Alexis Black-Pyrkosz и Rosangela Canino-Koning за их комментарии и участие в обсуждении.
Ссылки
[1] Различные авторы, "big data." http://en.wikipedia.org/w/index.php?title=Big_data&oldid=521018481.
[2] C. T. Brown и др., "khmer: genomic data filtering and partitioning software." http://github.com/ged-lab/khmer.
[3] Различные авторы, "Bloom filter." http://en.wikipedia.org/w/index.php?title=Bloom_filter&oldid=520253067.
[4] Участники сообщества разработчиков, "OpenMP." http://openmp.org.
[5] A. D. Malony и др., "TAU: Tuning and Analysis Utilities." http://www.cs.uoregon.edu/Research/tau/home.php.
[6] Различные авторы, "profile-guided optimization." http://en.wikipedia.org/w/index.php?title=Profile-guided_optimization&oldid=509056192.
[7] J. Seward и др.., "Valgrind." http://valgrind.org/.
[8] Различные авторы, "memory barrier." http://en.wikipedia.org/w/index.php?title=Memory_barrier&oldid=517642176.
[9] Различные авторы, "atomic operations." http://en.wikipedia.org/w/index.php?title=Linearizability&oldid=511650567.
[10] Разработчики сервиса bit.ly, "dablooms: a scalable, counting Bloom filter." http://github.com/bitly/dablooms.
[11] Различные авторы, "Amdahl's Law." http://en.wikipedia.org/w/index.php?title=Amdahl%27s_law&oldid=515929929.
Вернуться к началу статьи.