Я хочу создать неориентированный граф размером 3 из заданного набора данных (файл .tsv).Я сделал это в R, но я не могу сделать это на Python, и мой гид настаивал на том, чтобы сделать это на Python, так как это более популярный язык.Небольшая помощь будет высоко оценена.
Пытался использовать этот код, который я нашел здесь в stackoverflow, но не работал вообще.Код:
import networkx as nx
import pandas as pd
from itertools import chain
adj_matrix = [
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 1, 0, 0, 1, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
]
df = pd.DataFrame(adj_matrix)
G = nx.from_pandas_adjacency(df)
# filter components of size 3
triplets = [c for c in nx.connected_components(G) if len(c) == 3]
Мой код до сих пор
a_col=length(adj[1,])
a_row=length(adj[,1])
trip=NULL #NULL matrix to store triplet values
for(i in 1:a_row)
{
for(j in 1:a_col)
{
if(adj[i,j]==1)
{
for(k in (j+1):a_col)
{
if(adj[i,k]==1)
{
cat("\nTriplets: ",i,j,k)
trip<-rbind(trip,c(i,j,k))
}
}
for(l in (i+1):a_row)
{
if(adj[l,j]==1)
{
cat("\nTriplets: ",i,j,l)
trip<-rbind(trip,c(i,j,l))
}
}
}
}
}
Набор данных, который я использовал:
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 1 0 0
0 0 0 0 0 0 0 0 1 1
0 0 1 0 0 1 0 0 1 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 1 1 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
Ожидаемые триплеты:
3 5 8
3 5 6
3 5 9
4 9 10
4 9 5