Построить матрицу из цв в python - PullRequest
2 голосов
/ 25 марта 2020

У меня есть файл .tsv, который выглядит следующим образом:

A               B               C
SRX479927.bed   SRX821810.bed   0.258912
SRX032890.bed   SRX821809.bed   0.161135
SRX660083.bed   SRX821816.bed   0.00379202
SRX821817.bed   SRX821818.bed   0.0902696
SRX660084.bed   SRX479928.bed   0.2671
SRX821806.bed   SRX821811.bed   0.458604
SRX476926.bed   SRX821806.bed   0.0303042
SRX196107.bed   SRX414970.bed   0.221135

Где A и B - файлы, а C - показатель сходства этих файлов. Я пытаюсь построить матрицу в python с A на оси Y и B на оси X, заполняя соответствующие значения. Я сделал это раньше для файлов .tsv с 2 столбцами (файлы и значения), но не может быть успешно с 3 столбцами. Кто-нибудь может предложить подход к решению этой проблемы? Мне жаль, если об этом спрашивали раньше, но я могу найти только вопросы о том, как построить матрицу из 2 столбцов.

1 Ответ

1 голос
/ 25 марта 2020

Вы можете загрузить его как фрейм данных, а затем установить A и B в качестве индекса, соответственно отсортировать и затем отсекивать индекс:

matrix = df.set_index(['A', 'B'])['C'].sort_index().unstack()

Если ваши данные не содержат сходства оценки для похожих файлов (т.е. сравнивая файл с самим собой), вы можете добавить их вручную. Если показатели симметричны c и присутствует только верхний треугольник матрицы, вы можете использовать numpy.triu_indices для построения матрицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...