以下のようなCSVファイルからデータをダウンロードし、
一定距離内にある原子(ノード)をエッジでつなぎ、
それをnetworkxからdglへと変換する過程においてエラーが発生しました。
#読み込んだデータ
pandas.read_csvを用いて以下のようなデータをロードしました。
python
1 Xnm Ynm Znm Mass element Cluster 20 23.481321 -7.134153 -39.491711 11.996704 0 1 31 23.853514 -7.915858 -39.470348 11.994069 0 1 42 24.003975 -7.988654 -39.413750 13.089952 0 1 53 22.822966 -7.829986 -39.594307 13.992764 1 1 64 21.998539 -7.488298 -39.792698 14.035108 1 1 7... ... ... ... ... ... ... 891324 -6.768085 -11.560308 33.360088 12.003025 0 1000 991325 -9.146031 -10.729319 33.862568 12.499396 0 1000 1091326 -11.821389 -11.540415 34.308655 12.985589 0 1000 1191327 -13.612114 -9.707627 35.039318 14.013540 1 1000 1291328 -7.447951 -10.075975 33.741989 12.998513 0 1000
#実装内容
python
1dgl_graph_data = [] 2nx_graph_data =[] 3cutoff =1.30 4 5for l in range(1000): 6 df1 = df[df["Cluster"]==l+1].reset_index(drop=True)#クラスター番号を抽出 7 G = nx.Graph() 8 for i in range(len(df1)-2): 9 x = df1.loc[i,"Xnm"] 10 y = df1.loc[i,"Ynm"] 11 z = df1.loc[i,"Znm"] 12 element = df1.loc[i,"element"] 13 G.add_node(i,Xnm=x,Ynm=y,Znm=z,Element=element) 14 nx.draw(G) 15 16 df2 = df1.loc[i+1,"Xnm":"Znm"]- df1.loc[i,"Xnm":"Znm"] 17 df3 = df2*df2 18 df4 = np.sqrt(df3.sum(axis=0)) 19 df5 = df4[df4<cutoff] #原子間の距離を判定 20 for j in df5.index: 21 G.add_edge(i,j) 22 H = dgl.from_networkx(G,node_attrs=["Xnm","Ynm","Znm","Element"]) 23 dgl_graph_data.append(H) 24 nx_graph_data.append(G)
#エラー内容
python
1KeyError Traceback (most recent call last) 2<ipython-input-34-f103bb7d2140> in <module>() 3 21 for j in df5.index: 4 22 G.add_edge(i,j) 5---> 23 H = dgl.from_networkx(G,node_attrs=["Xnm","Ynm","Znm","Element"]) 6 24 dgl_graph_data.append(H) 7 25 nx_graph_data.append(G) 8 9/usr/local/lib/python3.6/dist-packages/dgl/convert.py in from_networkx(nx_graph, node_attrs, edge_attrs, edge_id_attr_name, idtype, device) 10 1003 for nid in range(g.number_of_nodes()): 11 1004 for attr in node_attrs: 12-> 1005 attr_dict[attr].append(nx_graph.nodes[nid][attr]) 13 1006 for attr in node_attrs: 14 1007 g.ndata[attr] = F.copy_to(_batcher(attr_dict[attr]), g.device) 15 16KeyError: 'Xnm'
一体、どのようにすればnetworkxからdgl形式へと変換することができますか。
回答1件
あなたの回答
tips
プレビュー