Моделирование негативного эффекта или конкурирующего поведения в двудольных сетях - PullRequest
0 голосов
/ 31 октября 2018

Мы хотели бы отслеживать изменения в сети при изменении узла. (поставщик против покупателя, ток против сопротивления в электрической цепи, микроРНК против гена, хозяин против патогена и т. д.).

Например, предположим, что система включает двух разных паразитов и их общих и разных хозяев. Если популяция одного из отдельных хозяев увеличивается, популяция паразитов имеет тенденцию быть эффективной в отношении увеличения хозяина. В результате этого отрицательное влияние паразита на других хозяев уменьшается, а затем увеличивается популяция других хозяев. Эту ситуацию можно объяснить с помощью общих хостов и паразитов в сети.

Мы хотим использовать этот подход для объяснения взаимодействия между микроРНК и генами. Пожалуйста, не пугайтесь биологии в этом примере, это общая проблема .

Мы пытаемся создать модель для взаимодействия микроРНК и гена, когда экспрессия гена увеличивается, он привлекает больше микроРНК, тем самым уменьшая общее количество микроРНК, чтобы воздействовать на оставшиеся гены, следовательно, вызывая повышение уровней оставшихся генов.

Модель может быть объяснена следующим образом: (см. Анимированный GIF для кадров)

  • Frame1: данные «выборки» включают 2 микроРНК (предполагается, что это постоянный уровень) и 6 генов (отрицательно регулируемых) Эту фазу можно считать устойчивой.
  • Frame2: В стационарном состоянии микроРНК воздействует на каждый ген в соответствии с пропорциональным значением в общих мишенях. Например, G1 и G4 имеют одинаковое значение выражения, поэтому M1 одинаково влияет на эти цели.
  • Frame3: выражение G2 увеличено (1000-> 2000)
  • Frame4: теперь G2 тянет 444 единицы M1. Оставшиеся 556 юнитов M1 атакуют G1, G3 и G4 пропорционально их уровням. Значения серого указывают на предыдущие единицы M1.
  • Frame5: Для интеракторов M1 мы вычислили разницу единиц M1 (предыдущая - текущая) и добавили ее к уровням G1, G2, G3 и G4. Из-за изменения уровня G4, теперь подсеть M2 взволнована, она тянет еще 3 единицы M2.
  • Frame6: В подсети M2 небольшие изменения происходят в распределении M2 (значения Серого цвета указывают на предыдущие единицы M2). В подсети M1 из-за изменений в уровнях G1-4, распределение M1 обновляется и, следовательно, уровни G1-G4 еще раз.

animated gif of changes in network

Вот код R для генерации сети

# sample data
library(tidygraph)
sample_data <- data.frame(genes = c("G1", "G2", "G3", "G4", "G4", "G5", "G6"),
       mirna = c("M1", "M1","M1", "M1", "M2", "M2", "M2"),
       Geneexpression = c(10000, 10000, 5000, 10000, 10000, 5000, 10000),
       mirnaexpression = c(1000, 1000, 1000, 1000, 2000, 2000, 2000), stringsAsFactors = FALSE)
sample_graph <- as_tbl_graph(sample_data)

В настоящее время мы проходим сложные и неэффективные шаги для расчета результатов. Код доступен в этом гисте . Мы искали лучший подход.

Ранее мы задавали аналогичный вопрос SO link и не получили ответа, поэтому мы улучшили его и задали его снова

...