Новый формат (стиль) будущих графиков PCA

Всю прошедшую неделю колдовал над графическим оформлением результатов анализа главных компонентов генетического разнообразия в своей коллекции геномов древних людей. Анализ был проведен в стиле лаборатории Давида Рейха из Гарварда — я взял набор референсных популяций современных людей и с помощью особой функции в программе smartpca (пакет EIGENSOFT) вычислил эйгенвекторы 9 главных компонентов.

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

Пришлось изучить синтаксис и семантику ggplot — пакета графической грамматики, написанной на языке R. По задумке авторов, четкое определение правил и грамматики, описывающей элементы графического изображения наподобие грамматическим правилом натуральных языков, обеспечивает максимальный скриптовый контроль над получаемым графиком. Основная проблема заключилась в том что легенда графика отображает только 1-2 эстетик, отображающих некоторые статистические закономерности изучаемых данных. Если используется два различных набора данных — референсный и анализируемый — то отобразить их на двух независмых легендах к графику просто не получится.
Пришлось придумывать обходных трюки и читать литературы/тематические форумы. Спустя неделю проб и ошибок, написал скрипт, дающий на выходе картинку, близкую к тому что мы видим в профессиональных журналах.
Затем я разбил коллекцию древних геномов на 20 условных групп и сгенерировал скриптом графики.
Похоже, мотор скрипта работает на ура. Остался вопрос доводки красивости изображения за счет изменения элемента стиля (верхнюю панель лучше перенести вниз, поиграться с цифровой палитрой пакета RColorBrewer и еще пару доводок).

Внизу примеры визуализации

 

Оставьте комментарий