LOAD CSV WITH HEADERS FROM "file:///node1.csv" AS line MERGE (z:概念1{name:line.node1})
LOAD CSV WITH HEADERS FROM "file:///node2.csv" AS line MERGE (z:概念2{name:line.node2})
LOAD CSV WITH HEADERS FROM "file:///tup.csv" AS line match (from:概念1{name:line.node1}),(to:概念2{name:line.node2}) merge (from)-[r:关联{name:line.link}]->(to)
导入并创建节点和关系
1 2 3 4
LOAD CSV FROM 'file:///tup.csv' AS line CREATE (:Map { linkID: line[0], nod1: line[1], link: line[2], nod2:line[3] });
LOAD CSV FROM 'file:///tup.csv' AS line CREATE (line[1])-[r:line[2]]->(line[3]);
显示所有关系
1 2 3 4 5
MATCH (n) RETURN (n)
MATCH (n:概念1{name:"细胞"}) RETURN n
MATCH (n:概念1{name:"细胞"})-[]-() RETURN n
利用apoc创建三元图
apoc是一个插件,需要先安装,然后才能调用。
创建概念1节点
1 2 3
LOAD CSV WITH HEADERS FROM "file:///node1.csv" AS line call apoc.create.node(["Concept1",line.node1],{name:line.node1}) yield node return node
创建概念2节点
1 2 3
LOAD CSV WITH HEADERS FROM "file:///node2.csv" AS line call apoc.create.node(["Concept2",line.node2],{name:line.node2}) yield node return node
创建关联
1 2 3 4
LOAD CSV WITH HEADERS FROM "file:///tup.csv" AS line match (c1:Concept1{name:line.node1}),(c2:Concept2{name:line.node2}) call apoc.create.relationship(c1,line.link,line{.type},c2) yield rel return rel
清除重复节点和关系
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
MATCH (n:Tag) WITH n.name AS name, COLLECT(n) AS nodelist, COUNT(*) AS count WHERE count > 1 CALL apoc.refactor.mergeNodes(nodelist) YIELD node RETURN node
MATCH (n:Concept2) WITH n.name AS name, COLLECT(n) AS nodelist, COUNT(*) AS count WHERE count > 1 CALL apoc.refactor.mergeNodes(nodelist) YIELD node RETURN node
MATCH (a:Concept1)-[r]-(b:Concept2) WITH a, b, collect(r) as rels CALL apoc.refactor.mergeRelationships(rels,{properties:"combine"}) YIELD rel RETURN count(rel)
LOAD CSV WITH HEADERS FROM "file:///relation.csv" AS line call apoc.create.node(["Concept",line.hc],{name:line.hc}) yield node return node
LOAD CSV WITH HEADERS FROM "file:///relation.csv" AS line call apoc.create.node(["Concept",line.tc],{name:line.tc}) yield node return node
去除重复节点
1 2 3 4 5
MATCH (n:Concept) WITH n.name AS name, COLLECT(n) AS nodelist, COUNT(*) AS count WHERE count > 1 CALL apoc.refactor.mergeNodes(nodelist) YIELD node RETURN node
添加链接
1 2 3 4
LOAD CSV WITH HEADERS FROM "file:///relation.csv" AS line match (c1:Concept{name:line.hc}),(c2:Concept{name:line.tc}) call apoc.create.relationship(c1,line.link,line{.role},c2) yield rel return rel
查看效果
1 2 3 4 5 6 7
MATCH p=()-->() RETURN p LIMIT 100
MATCH p=(:Concept{name:"细胞"})-[]->(:Concept{name:"蛋白质"}) RETURN p
MATCH p=(:Concept{name:"细胞"})-[*]->(:Concept{name:"蛋白质"}) RETURN p
显示结果如下:
修改和完善图谱
增加节点
1 2 3
CREATE (n:Person {name:'John'}) RETURN n
CREATE (n:Concept {name:'细胞呼吸'}) RETURN n
增加链接
1 2 3 4 5 6 7 8 9 10 11 12 13 14
MATCH (a:Person {name:'Liz'}), (b:Person {name:'Mike'}) MERGE (a)-[:FRIENDS]->(b)
MATCH (a:Concept {name:'光合作用'}), (b:Concept {name:'光反应'}) MERGE (a)-[:包含]->(b)
MATCH (a:Concept {name:'光合作用'}), (b:Concept {name:'暗反应'}) MERGE (a)-[:包含]->(b)
MATCH p=(:Concept{name:"光合作用"})-[*..3]->() RETURN p LIMIT 100
hexo g #完整命令为hexo generate,用于生成静态文件 hexo s #完整命令为hexo server,用于启动服务器,主要用来本地预览 hexo d #完整命令为hexo deploy,用于将本地文件发布到github上 hexo n #完整命令为hexo new,用于新建一篇文章 hexo g -d #两个命令的合成,一般在修改或者添加博文后直接使用这个命令
-c ./Modules/pwdmodule.c -o Modules/pwdmodule.o ./Modules/posixmodule.c:8210:15: error: implicit declaration of function 'sendfile' is invalid in C99 [-Werror,-Wimplicit-function-declaration] ret = sendfile(in, out, offset, &sbytes, &sf, flags); ^ ./Modules/posixmodule.c:10432:5: warning: code will never be executed [-Wunreachable-code] Py_FatalError("abort() called from Python code didn't abort!"); ^~~~~~~~~~~~~ 1 warning and 1 error generated. make: *** [Modules/posixmodule.o] Error 1 make: *** Waiting for unfinished jobs....
# libraries import pandas as pd import numpy as np import networkx as nx import matplotlib.pyplot as plt
导入相应的库,python就一个优点,库多,没有找不到的,只有你想不到的,扩张了:)。
1 2
df = pd.read_csv('map.csv') #print df[1]
使用pd阅读csv文件,确保文件与程序文件在相同目录。
1
df=df.fillna(np.random.rand()*0.1)
填充缺省值,数据表中很多数据缺失,这里使用了一个小于0.1的随机数进行替换。
1
print(df.loc[0,:])
检测一下数据是否成功获取
1 2 3 4 5 6
# Calculate the correlation between individuals. We have to transpose first, because the corr function calculate the pairwise correlations between columns. corr = df.corr()
# Transform it in a links data frame (3 columns only): links = corr.stack().reset_index() links.columns = ['var1', 'var2', 'value']
计算相关系数,并把计算结果储存在links中
1 2
# Keep only correlation over a threshold and remove self correlation (cor(A,A)=1) links_filtered=links.loc[ (links['value'] > 0.1) & (links['var1'] != links['var2']) ]
筛选相关系数大于特点临界值的关联。
1 2 3 4
# Build your graph G=nx.from_pandas_edgelist(links_filtered, 'var1', 'var2') # Plot the network: nx.draw(G, with_labels=True, node_color='orange', node_size=400, edge_color='black', linewidths=1, font_size=10)