7 支持的网络文件格式
Cytoscape可以读取一下格式的文件,这些文件实际是提供了cytoscape和其他一些工具的接口。
- Simple interaction file (SIF or .sif format)
- Nested network format (NNF or .nnf format)
- Graph Markup Language (GML or .gml format)
- XGMML (extensible graph markup and modelling language).
- SBML
- BioPAX
- PSI-MI Level 1 and 2.5
- GraphML
- Delimited text
- Excel Workbook (.xls, .xlsx)
- Cytoscape.js JSON
SIF格式只限定nodes和相互作用。其他的格式会储存关于网络展示,和其他网络数据交换等一系列的额外信息。典型的,SIF文件,适用于第一次建立一个网络文件。因为这非常容易在文本编辑器或电子表格里创建。一旦这个相互作用被加载,网络可视化执行的话,这个网络就可以被储存为XGMML或XGMML格式,就可以和其他系统进行焦糊了。所有的文件类型(除了Excel)都是text文件,你可以在普通的txt文件编辑器中查看。
7.1 SIF格式
如果从一系列相互作用中构建一个图的话,那么简单的相互作用格式非才便利。这也是使得把不同的相互作用合并成一个大网络也容易多了,当然也可以方便的把一个新作用加到已经存在的数据里。最大的缺点是,这种格式不包括任何的展示信息。这会使cytoscape每次加载的时候,重新计算一个新的网络输出。
SIF中的line限定一个source node,一个关系类型(或叫edge type),一个或多个target nodes
第一行定义了两个nodes,分别是node1和node2,还有一个node1和node2之间的单独关系类型:type A。
第二行定义了三个新nodes,3,4,5.这里node2和第一行里的node2是一样的。第二行也定义了三种关系,都是typeB,node2是source,而3,4,5是targets。第二种格式是定义同种类型的多个关系,而他们有同一个source node的简写。
第三行显示了如何定义一个和其他nodes没关系的节点。这种形式对有连接关系的节点并不必要。因为这种关系的定义暗含了节点的识别。
重复录入被忽略。同样的nodes之间的多个边一定有不同的边的类型。例如,下面这个例子定义了同一对nodes的2个边。一个是typexx一个是typeyy
如果一个node想和它自己建立一个edge也是允许的(self-edges)
Node1 xx node1
Cytoscape中的每一个node和edge都有一个列名。对于SIF格式定义的网络,node的名字应是唯一的,被指定同一名字的node会作为一个nodes。每一个node的名字也会是这个file的默认名字(厨房其他的字符串使用style匹配于node)。这将会在STYLE部分讨论。每一个edge的名字会从source 的名字,target nodes加相互作用类型形成,例如
sourceName(edge Type)targetName
标签可以是任何字符串。全名或连接词都可以用于定语关系的类型。比如,geneFusion,coglnference,pullsdown,activates,degrades,inactivate,inhibits,phosphorylates,upregulate等。
在系统生物学中使用的一些普通的关系类型如下
PP-protein-protein interaction
PD-protein-DNA
(像转录因子结合在调节基因的上游)。
一些不怎么常见的作用类型是
pr .................. protein -> reaction
rc .................. reaction -> compound
cr .................. compound -> reaction
gl .................. genetic lethal relationship
pm .................. protein-metabolite interaction
mp .................. metabolite-protein interaction
分隔符
空格或制表符是简单的交互文件格式中最简单的分隔符号。然而,在一些实际例子中,空格可能会是一些node的名字或边的类型。这个 标准是,如果这个文件包含任何制表符,那么制表符用来划定范围和空格被认为是name的一部分。如果文件没有制表符,那么任何空格都是分别名字的分隔符,(名字不能有空格)。
如果你的网络没有看起来想edge名字的边和node名字,这也许意味着你的文件含有stray tab 蒙骗了parser。另一方面,如果你的网络中有全名一半的名字,那么你或许得用tabs分隔含空格的node 名字。
简单的交互作用文件储存在.SIF扩展名的文件中,并且cytoscape会识别这种扩展名。
7.2 NNF
NNF格式是一种非常简单的格式,不像SIF格式那样需要可选择的对每个node 的单个嵌套网络进行指派。不需要其他的node 列被定义。只有2种可能的line格式
A一个node“node”包含在一个网络中
Network node
B,2个nodes联系在一起包含在一个网络中
Network node1 interaction node2
如果一个网络名字(first entry on a line)看起来想一个node name (第2列或第4列),这个网络将会以同样的名字嵌套。如果一个名字之前已经被定义为一个网络(在第一列已经被定义),后来作为一个node name显示(第2列或第4列),那么之前定义的网络将会以同样的名字在这个node中被嵌套。综合来说,任何时候一个名字都被使用两次,一个网络名字,一个node 名字。这暗含了,这个网络将被嵌套在同样名字的node中。另外,comments或将被包含在所有line中。
注释开始的标志是#,并继续到line 结尾。尾端注释(data line后面)和完全空白lines是被允许的。一定注意,如果你加载了多个NNF文件,他们会被认为是一个长的成串的NNF 文件。如果你想在一个名字里嵌入空格,制表符或反斜杠,你得通过前面价格反斜杠退出,这样依赖,一个嵌套的反斜杠变成了两个,一个嵌套的空格跟着一个反斜杠。
例子
示例1
7.3GML格式
和SIF格式相比,GML是一种非常丰富的图表格式语言,可以被很多其他的网络可视化包支持。GML文件格式说明可以看下面的
http://www.infosun.fmi.uni-passau.de/Graphlet/GML/
通常情况下,修改GML file的内容是不必须的。一旦一个网络在SIF格式下被创建,被输出,那么这个layout就被保存到GML。GML中的特性将会导致当GML文件加载的时候,新的style名字为Filename.style。
7.4 XGMML 格式
这种格式是GML的XML演化。除了网络数据,XGMML包含node,edge,network列的数据。XGMML文件格式可以见下地址
http://cgi5.cs.rpi.edu/research/groups/pb/punin/public_html/XGMML/
XGMML现在比GML更胜一筹,因为它与所有XML文件类型联系更加容易。如果你不确定使用什么,那就选择XGMML.
有一个JAVA系统特性(cytoscape.xgmml.repair.bare.ampersands)可以被设置为“true“,如果你咋读取旧文件有问题时。当XGMML文件或会话不能被正确读取时,你可以用这个功能。这会拖慢读取过程,但是你想视图修补这种文件时,还是可行的。
7.5 SBML (Systems Biology Markup Language) Format
The Systems Biology Markup Language (SBML) is an XML format to describe biochemical networks. SBML file format specification is available at:
http://sbml.org/documents/
7.6. BioPAX (Biological PAthways eXchange) Format
BioPAX is an OWL (Web Ontology Language) document designed to exchange biological pathways data. The complete set of documents for this format is available at:
http://www.biopax.org/
7.7. PSI-MI Format
The PSI-MI format is a data exchange format for protein-protein interactions. It is an XML format used to describe PPI and associated data. PSI-MI XML format specification is available at:
http://psidev.sourceforge.net/mi/xml/doc/user/
7.8. GraphML
GraphML is a comprehensive and easy-to-use file format for graphs. It is based on XML. The complete set of documents for this format is available at:
http://graphml.graphdrawing.org/
7.9 delimited text table 和excel工作表(分隔的文本文件和excel工作表)
Cytoscape可以本地支持MS excel files(.xls,xlsx)和分隔的文本文件。这些文件中的表格可以有网络数据,边列,用户可以定义含有source nodes,targets nodes,作用类型的列,还有边列。一些网络分析工具想igraph((http://cneurocvs.rmki.kfki.hu/igraph/),可以把graph文件以简单的文本文件形式输出。cytoscape可以读取这些text文件,并且从他们建立网络,想获取更多细节,请阅读creating network部分。
8.node和edge列数据
相互作用网络作为独立的模型是非常有用的。但是,但是他们和其他信息整合的时候对解决科学问题是极其有力的。Cytoscape允许用户添加任意的node,edge和网络信作为node,edge和网络数据列,添加到cytoscape。这可以包括,比如,在PP交互作用中添加一个基因的注释数据或置信度。这些列数据可以以用户自定义的方式可视化,这可以通过通过设置一个从列到网络特性(颜色,形状等)的匹配。这部分将在STYLES部分进行详细讨论。http://manual.cytoscape.org/en/3.4.0/Styles.html#styles#(13部分)
8.1 输入数据列表文件
Cytoscape提供了从分格的文本文件和excel数据表格输入数据的支持
Sample data table 1
这个表格文件应该包含一个最主要的关键列和至少一个数据列。数据列的最大数目不限。Alias列是一个可选择的特征,使用数据的第一行作为列名。也可以从File-import-table-file定义每一列的名字。
基本操作
- 1.file-import-table-file
- 2选择一个datafile,可以是text可以是excel
- 3在Target table data里,选择把数据输入哪里去,这可以选择已经存在的网络集,一个特别的网络,或者可以选择输入数据到一个Unassigned table(一会说这个)
- 4.依赖于你选择把数据输入哪里,你下一步可以选择一个网络集或具体的网络。你也需要选择输入类型,data是node,edge还是网络列。
- 5如果表格之前没分隔好,可以在Advanced options面板进行设置。默认的分格是tab。这一步对excel工作表来说非必须。
- 6.默认,第一列是最主要的key列,必要的时候可以改变
- 7.点击OK即可输入
什么是未指定列表Unassigned table
对于cytoscape3.1,没有指派他们到已经存在的网络就输入数据是可以的,这意味着这些数据和当前已经载入的任何nodes和edge都没有关系。如果一个数据表被指定输入,并且一个网络后来被输入匹配和nodes和edge 有关的数据,这些数据之间会自动联系。这对输入一个非常大的文件(比如表达数据),对定义网络中的可视化数据的风格style及后来载入单个网络可视化这些数据都非常有用。比如对一个在线数据库,这些特征允许这些数据自动连接到可应用的任何网络,而不必载入每个网络的数据。
8.2 legacy cytoscape 属性格式
除了表格数据,当前cytoscape版本仍然可以使用之前的一些文件格式。Node和edge数据文件简单格式了:
node 数据文件以第一行列的名字开始(注意不能包含空格)。每个接下来的行包含node名字,接下来有等于符号和数据值。数字和文本仍然是最主要的数据类型。所有给定的列值必须有相同的类型。例如
FunctionalCategory
YAL001C = metabolism
YAR002W = apoptosis
YBL007C = ribosome
Edge数据文件
有相同的结构。除了边的名字(source node name),接着是带括号的相互作用类型,再接着是target node name。方向计数,所以转向source和target会指不同的边(或许这个边也不存在),边数据文件例子如下
InteractionStrength
YAL001C (pp) YBR043W = 0.82
YMR022W (pd) YDL112C = 0.441
YDL112C (pd) YMR022W = 0.9013
因为cytoscape把边数据当作有方向的,第二和第三跳变数据值指向2个不同的边(source和target相反,虽然nodes是相同的)。
每个数据列储存在分开的文件。节点和边数据文件使用同样的格式,并且后缀都是“.attrs”.
Node和edge数据通过file-import-table菜单,输入,就像data table文件一样。
当表达数据以表达矩阵上传的时候,会自动作为node data载入,除非有特别说明。
Node和edge数据列属于noes和edge,所以也是独立于网络的。给定的node和edge数据值会被应用于这些node和edge所有的复制本,不管这个数据文件或网络文件是否第一次输入。
Detailed file format(advanced users)
每个数据文件有一个行(header line),命名了数据的列的名字。另外,可选择性的可以有其他的meta-信息相关的数据列。格式如下
columnName (class=JavaClassName)
第一片领地总是列的名字:不能包含空格。If present, the class field defines the name of the class of the data values。举例,java.lang.string或string for strings,Java.lang.double或double for floating point values,java.lang.integer或integer for integer values,等。如果这些值是一个值的列表,这个类应该是列表中objiects 的类型。如果在headerline中没有类别被定义,cytoscape会试图从第一个值猜测类型。如果第一个值包含数字以floating point 的格式,那么cytoscape会认为是java.lang.double.,如果第一个值仅仅包含数字而没有小数点,cytoscape会认为是java.lang.integer,若都不是那cytoscape会认为是java.lang.string(字符串)。注意到第一个值可能会误导。例如
floatingPointDataColumn
firstName = 1
secondName = 2.5
这个例子中,第一个值cytoscape会认为这个值是整数型,而实际上是浮点数据。最安全的就是详细说明值的类型以防混淆。更好的格式是
floatingPointDataColumn (class=Double)
firstName = 1
secondName = 2.5
或者
floatingPointDataColumn
firstName = 1.0
secondName = 2.5
Every line past the first line identifies the name of an object (a node in a node data file or an edge in a edge data file) along with the String representation of the data value.
每一行下面的一行(?)确定了一个目标的名字(目标是node文件中的node或edge文件中的edge)还有这个数据值的字符串代表。分隔符总是一个等号。等会前或后的空格(空格和或tabs)会被忽略。这意味着你的名字和值可以包含空格,但是object名字不能包含等号并且,没有追踪空格的保证。Object名字一定是nodeID或Edge ID,就像在table panel最左边看到的。这些名字一定被精确复制,否则会匹配不上。
Edge names是下列格式
sourceName (edgeType) targetName
具体来说,是
sourceName space openParen edgeType closeParen space targetName
注意:制表符在edge names不允许有。Tabs可以用来从“=”分隔边name,但是不能存在于边名字本身。要注意到,这个格式不同于SIF文件格式中相互作用的类型。具体来说,SIF看起来是
sourceName edgeType targetName
或者
sourceName whiteSpace edgeType whiteSpace targetName
为说明值列表,可以使用下列句法
listDataColumnName (class=java.lang.String)
firstObjectName = (firstValue::secondValue::thirdValue)
secondObjectName = (onlyOneValue)
这个例子展示了一个数据,其值作为文本字符串列表被定义。第一个object有3个字符串,它的列表中有3个元素,然而第二个object只有一个元素。在一个列表的例子中,每个数据值使用列表语法(比如圆括号),每个原始有同样类型。另外,如果header line没有被定义,那么这个类型(class)会被推测。列表不被styles支持,病变不能匹配到网络特性。
Newline feature新行的特征
有时数据值断行是必要的,因为有时node labels可能会花草过两行,这可以通过插入数据值才完成,比如
newlineDataColumn
YJL157C = This is a long\nline for a label.
Table Panel
Cytoscape启动时,Table panel就会在主窗口的有下部显示。这个视窗可以通过使用F5键隐藏和重现,也可以使用VIEW-show/hide table panel菜单实现。想其他面板一样,通过点击这个视窗右上角的图标可以对它进行漂浮设置。
使用视窗下面的三个标签项node table,edge table,network table可以在他们之间进行转换。默认,table panel 显示的是选择网络的所有nodes和edges的显示列。为了只显示选择的nodes和edges,可以点击左上角Change Table Mode 按钮
。可以通过
改变展示的列,并展示自己选择的列(点击他们选择不同的列,点击屏幕其他地方可以关闭列表)。
大部分列的值通过双击相应的cell可以编辑(只有ID不能)。新行特点可以通过Enter或“\n”插入。一旦完成编辑,点击面板外的编辑框外的区域,或者摁Shift-enter可以保存编辑结果。Esc退出,撤销改变。
Panel中的行可以以字母顺序排序,通过点击列的头名字。一个新列也可以创建,方法是使用Create new column。并且新列必须是以下四种类型之一:整数型,字符串,真数字(浮点数字)或布尔向量。通过Delete columns也可以删除列。注意:删除的列不仅从table panel删除,也会从cytoscape删除!而从panel remove并没有删除,仅仅是没有选择而已。
8.3 从外部公共数据库输入数据列表
从外部公共数据库输入node data columns也是可行的
比如BioMart(http://www.biomart.org).
基本操作
- 1.加载网络文件,比如galFfiltered.sif
- 2.file-import-table-public databases
-
3.第一次会有web services的选框,对这个例子来说,我们选择ENSEMBLE GENES 73(SANGER UK)
In the Import Data Table from Web Services dialog, select a Data Source. Since galFiltered.sif is a yeast network, select ENSEMBL GENES - SACCHAROMYCES CEREVISIAE.
For Key Column in Cytoscape, select shared name for Column and Ensembl Gene ID for Data Type.
The type of identifier selected under Data Type must match what is used in the selected Column in the network.
Select the data columns you want to import.
Select Import.
When import is complete, you can see the newly imported data columns in the Table Panel.
9 本体论和注释输入
Cytoscape中的注释储存在一系列本体论文件中(比如Gene ontology,或GO).一个本体论包含一系列受控词汇条目用来注释objects。例如,使用基因本体论,酿酒酵母CDC55基因有一个生物学功能是“protein biosynthesis”,GO为它指定了一个数字或GO ID:6412
GO 8150 biological_process
GO 7582 physiological processes
GO 8152 metabolism
GO 44238 primary metabolism
GO 19538 protein metabolism
GO 6412 protein biosynthesis
6412:蛋白质生物合成的可视化图形是
Cytoscape可以使用DAG(Directed Acyclic Graph有向无环图)注释网络中的目标。Ontology服务器地址( http://www.ncbi.nlm.nih.gov/pubmed/12066840)”)是允许你加载,搜寻和指定注释条目到网络中的节点或edge的。Cytoscape2.4现在有一个加强的GUI来家长本体论和相联系的注释,允许你本地或远程加载.
9.1本体论和注释文件的格式
Cytoscape本体论服务标准的文件格式是OBO和gene association。下面这个网站对格式做了详细解释
本体论和定义http://www.geneontology.org/GO.downloads.shtml#ont
当前的注释地址http://www.geneontology.org/GO.current.annotations.shtml
9.2本体论的默认list
Cytoscape提供了一系列OBO格式的本体论列表。如果可以联网,cytoscape可以直接加载本体论和注释文件,下面这个表列举了所包含的内容
虽然cytoscape可以家长所有种类的OBO格式的本体论文件,但是注释文件只和某一种特定类型的联系。因此,你需要提供争取的注释文件来注释nodes,edges,networks。例如,当你你可以用human gene association 的GO Full 本体论注释人类网络数据,但你不能不能联合使用人类疾病ontology file和human gene association file。因为,gene association文件只和GO兼容。
9.3 gene注释文件
Gene association文件只为gene ontology提供注释。这是一个物种特意的GO 条目注释文件。Gene assosiation文件只和基因本体论注释文件关联。
Sample gene association file(gene_association.sgd - annotation file for yeast):
9.4 加载ontology和注释
Cytoscape提供了一个图形界面供用户可以同时输入本体论和注释文件。
注意:所有数据源都是联网的,也就是用的话得保证网络通畅。
File-import-ontology and annotation从下拉菜单,选择gene association file 例如,如果你想注释这个酵母网络,那就选择“Gene Association file for Saccharomyces cerevisiae”.
上图下拉列表选择ontology data(OBO文件)。如果这个文件没有被加载,会显示红色。前三个文件是gene ontology files。你也可以加载其他的ontologies,但是你需要你自己的注释文件可以注释网络。
一旦点击了import,cytoscape会开始加载OBO和gene association文件。如果你选择GO full那可能需要的时间长些,因为这个文件太大了。
注意:当cytoscape完成加载后,加载窗口会自动关闭。所有匹配这个功能的列都有个前缀“annotation”,看起来是:annotation[column_name]
Note:cytoscapezhichi OBO格式的version1.0 1.2
10 列数据功能和方程
10.1列公式
介绍
列数据值可以公式化。典型的例子是=ABS($othercolumn+LOG(10.2))
公式模仿了excel但只能支持同一个网络,node和edge的其他列参考。因为cytoscape的列名可能包含空格,可选择性的括号,例如¥{a name with spaces}.反斜杠,左大括号和am{p\le would have to be written as am{p\le}.
字符串的内容写在双引号””里。为了潜入一个双引号或反斜杠,也不得不用另外一个反斜杠退出。因此,“\”要写为”\‘或“\”.公式的结果一定要和他们指定的列的类型匹配。规则还是很宽松的。例如,任何类型都能被字符串解释,所有数值型可以被布尔向量接受。不是0的TRUE,0是faulse。对于整数型数值列,浮点数据值会被转换,使用excel 的INT功能。圆括号可以用了组合,还有改变评价顺序。运算符优先顺序和标准的数学运算一样。
运算符
当前支持的是四种基本数学运算符^幂运算符(右运算符),+-*/左运算符。字符串连接符是&。支持的布林或逻辑运算符是比较运算符<,>,<=,>=,=,<>(不等于)。
支持的功能
Degree – the degree of a node.
InDegree – the indegree of a node.
OutDegree – the outdegree of a node.
SourceID – the ID of the source node of an edge.
TargetID – the ID of the target of an edge.
Numeric Functions
Abs – Returns the absolute value of a number.绝对值
ACos – Returns the arccosine of a number.反余弦
ASin – Returns the arcsine of a number.反正弦
ATan2 – Returns the arctangent of two numbers x and y.反正切
Average – Returns the average of a group of numbers.平均值
Cos – Returns the cosine of an angle given in radians.余弦
Cosh – Returns the hyperbolic sine of its argument.正弦
Count – Returns the number of numeric values in a list.计数
Degrees – Returns its argument converted from radians to degrees.
Exp – Returns e raised to a specified number.(期望值?)
Ln – Returns the natural logarithm of a number.自然对数
Log – Returns the logarithm of a number to a specified base.对数
Max – Returns the maximum of a group of numbers.最大值
Median – Returns the median of a list of numbers.中位数
Min – Returns the minimum of a group of numbers.最小值
Mod – Calculates the modulus of a number.模数
Pi – Returns an approximation of the value of p. p值
Radians – Returns its argument converted from degrees to radians.弧度
Round – Rounds a number to a specified number of decimal places.小数点位数
Sin – Returns the sine of an angle given in radians.正弦
Sinh – Returns the hyperbolic sine of its argument.双曲线正弦
Sqrt – Calculates the square root of a number.平方根
Tan – returns the tangent of its argument in radians.
Tanh – returns the hyperbolic tangent of its argument in radians.
Trunc – Truncates a number.
字符串功能
Concatenate – Concatenates two or more pieces of text.连接
Left – Returns a prefix of s string.
Len – Returns the length of a string.长度
Lower – Converts a string to lowercase.变小写
Mid – Selects a substring of some text.
Right – Returns a suffix of a string.
Substitute – Replaces some text with other text.替代
Text – Format a number using the Java DecimalFormat class’ conventions.本文化
Upper – Converts a string to uppercase.大写
Value – Converts a string to a number. As.numeric
逻辑值功能
And – Returns the logical conjunction of any number of boolean values.
Not – Returns the logical negation of a boolean value.
Or – Returns the logical disjunction of any number of boolean values.
列表功能List Functions
First – Returns the first entry in a list.
Last – Returns the last entry in a list.
Nth – Returns the n-th entry in a list.
统计功能Statistical Functions
Largest – the kth largest value in a list.
GeoMean – the geometric mean of a set of numbers.
HarMean – the harmonic mean of a set of numbers.
Mode – the mode of a set of numbers.
NormDist – Returns the pdf or CDF of the normal distribution.
Permut – Returns the number of permutations for a given number of objects.
StDev - sample standard deviation.
Var – sample variance.
混合复杂功能Miscellaneous Functions
Combin - Returns the number of combinations for a given number of objects.
If – Returns one of two alternatives based on a boolean value.
ListToString – Returns a string representation of a list.
Now – Returns a string representation of the current date and time.
Today – returns a string representation of the current date.
陷阱pitfalls
最大的问题是有的列有空值null values。这不被允许会 报错。为了解决这个问题,我们支持下面的语句:${columnName:defaultValue}.意思是:如果columnName是null,那么缺省值就被使用,否则,推荐的值就呼被替代。指定的列一定被定义的列而不是随意的名字。另外一个潜在的问题是当有The other potential problem is when there are circular column reference dependencies. Circular dependencies will be detected at formula evaluation time and lead to a run-time error
有用的一个提示
当使用公式的时候,打开开发者log console会非要有用。公式查错会显示出来。
10.2公式建立
在table panel,选择一个非列表列单元格后,点击就可以了。
在上图左侧选择一个功能,这里我们选择ABS,这列表的右边,可以定义一个或多个arguments,可以应用于一列也可以一个cell。如果选择的一列,这一列的值会被运用这个公式,并且结果值会动态更新。点击ADD可以增加一个内容,可以增加一个或多个,这要看functions接受多少条件了。对话的底部是当前公式的预览。Applyto可以选择应用公式的对象。点击OK就可以了。