У меня есть data.frame с корреляциями между OTU и генами. Эти корреляции позволят мне построить геномы. Этот data.frame имеет 1105854 строк.
var1 var2 corr
1 OTU3978 UniRef90_A0A010P3Z8 0.846
2 OTU4011 UniRef90_A0A010P3Z8 0.855
3 OTU4929 UniRef90_A0A010P3Z8 0.829
4 OTU4317 UniRef90_A0A011P550 0.850
5 OTU4816 UniRef90_A0A011P550 0.807
6 OTU3902 UniRef90_A0A011QPQ2 0.836
7 OTU3339 UniRef90_A0A011RKI6 0.835
8 OTU1359 UniRef90_A0A011RLA7 0.801
9 OTU2085 UniRef90_A0A011RLA7 0.843
10 OTU3542 UniRef90_A0A011RLA7 0.866
11 OTU0473 UniRef90_A0A011TDE1 0.807
Я использую библиотеку igraph для построения графического объекта.
g<-graph.data.frame(df)
Затем я хочу извлечь компоненты этого графа для построения геномов: я имею в виду, один компонент будет соответствовать одному геному.
Я попробовал эту команду: genomes<-split(names(V(g)),components(g)$membership)
Он возвращает мне несколько компонентов, например:
> genomes[[4]]
[1] "OTU2417" "UniRef90_A0A076H0Q4" "UniRef90_A0A2E8T3F8"
[4] "UniRef90_G5ZY43"
Я проверяю OTU и различные гены каждого компонента благодаря моей таблице OTU и благодаря базе данных EMBL-EBI для генов. Я могу определить, имеет ли смысл каждый реконструированный геном.
Я также проверил документацию и обнаружил много других методов обнаружения сообщества: edge -weenness, louvain, multi-level ... Я хотел бы знать, в чем главное отличие командной строки, которую я использовал (которая дает мне обратно довольно значимые компоненты) и эти алгоритмы (которые также дают мне компоненты)?
Спасибо