Как создать матрицу смежности для взаимодействия генов с генами из RNA-Seq (циклический ввод) - PullRequest
0 голосов
/ 03 апреля 2019

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

Я пытался использовать circlize для визуализации этих взаимодействий, делая chordDiagram, но для этого требуется матрица смежности в качестве входных данных, и я не понимаю, как создать матрицу.Матрица смежности должна показать силу отношений между любыми двумя генами в моей матрице.У меня есть 6 уникальных популяций клеток, которые могут экспрессировать любой из 485 лигандов / рецепторов, которые меня интересуют, и цель состоит в том, чтобы показать взаимодействия между этими популяциями через лиганды и рецепторы.

Я нашел инструмент для использования в RStudio, который называется BUS-gene.shoity: Рассчитать матрицу смежности для взаимодействия генов-генов.

Возможно, я просто неправильно использую BUS, но он говорит: Для данных по экспрессии генов с M генами и N экспериментами матрица смежности имеет размер MxM.Матрица смежности размером MxM со строками и столбцами, обозначающими гены.Элемент в строке i и столбце j указывает на сходство между геном i и геном j.

Итак, я создал матрицу, в которой каждый столбец представляет собой субпопуляцию, а каждый ряд представляет собой лиганд / рецептор, с которым я хочу показать взаимодействия.Ячейки имеют значения экспрессии, и это выглядит так:

> head(Test)
            A          B           C          D           E           F
Adam10 440.755990 669.875468 748.7313995 702.991422 1872.033343 2515.074366
Adam17 369.813134 292.625603 363.0301707 434.905968 1183.152694 1375.424034
Agt     12.676036  28.269671   9.2428034  19.920561  121.587010  168.116735
Angpt1  22.807415  42.350205  25.5464603  16.010813  194.620550   99.383567
Angpt2  92.492760 186.167844 819.3679836 852.666499  669.642441 1608.748788
Angpt4   3.327743   0.693985   0.8292746   1.112826    5.463647    5.826927

Где AF - мои популяции.Затем я передаю эту матрицу в BUS:

res<-gene.similarity(Test,measure="corr",net.trim="none")

Warning message:
In cor(mat) : the standard deviation is zero

Но выходной файл, который должен быть моей матрицей смежности, заполнен NA:

         Adam10 Adam17 
Adam10      1     NA
Adam17     NA     1       

Я подумал, что моя матрица слишкомсложный, поэтому я сравнил только 2 клеточные популяции с моими лигандами / рецепторами, но я получил точно такой же результат.

Я ожидал получить что-то вроде:

         A:Adam10 A:Adam17 
C:Adam10     6       1 
E:Adam17     2      10 

Но даже еслиобъект res дал мне числа вместо NA, он не поддерживает идентичность популяции при установлении связей между генами, поэтому он все равно не даст ожидаемого результата.

Мне не нужно использовать BUS для создания матрицы, поэтому мне не обязательно нужна помощь в устранении неисправностей этого кода, мне просто нужен НЕКОТОРЫЙ способ сделать матрицу смежности.

Я имеюникогда раньше не использовал Cirlize или Circos, поэтому я прошу прощения, если мой вопрос глуп.

1 Ответ

0 голосов
/ 18 апреля 2019

Похоже, вам нужно немного изменить свою матрицу.
Вы можете создать новую матрицу, которая имеет размер (nrow (Test) x ncol (Text)) x (nrow (Test) x ncol (Text)), поэтому в приведенном вами примере новая матрица будет 36x36, а имена и имена строк будут такими же, как A_Adam10, A_Adam17, ..., A_Angpt4, B_Adam10, ..., F_Angpt4.
С помощью цикла вы можете загрузить сходство каждой пары в новую матрицу, и теперь вы можете построить матрицу. Это немного сложно, для запуска цикла требуется некоторое время, но оно интуитивно понятно.
Вы можете проверить мой репозиторий github , так как у меня была похожая проблема не так давно, и я разместил там подробный код. Я надеюсь, что это поможет вам

...