列数据函数和方程¶
列公式¶
简介¶
列可以包含需要计算产生结果的公式。
语法¶
基本语法¶
公式总是以 = 开头。 这表示表格单元格中的值是一个公式。
例如:=ABS($otherColumn + LOG(10.2))
公式返回值的类型必须与列类型匹配,或者可以容易地转换为列类型。例如,如果字符串列中公式返回一个数值,则该数值将转换为字符串。但是,如果数值列中公式返回一个字符串值,则该字符串无法自动转换为数字,因此会导致显示错误。
对于布尔(或逻辑)列数据,所有数值都将被接受,其中非零数据表示 true,零表示 false。浮点值将使用 Excel INT 函数的规则进行转换。括号可用于分组和更改执行顺序。
函数¶
Cytoscape 提供了一组执行特定任务和计算的函数。函数写成函数名,然后是左括号 (,然后是可选的逗号分隔的参数列表,然后是右括号 )。
例如:=MAX(10, 20)
例如:=IF($otherColumn, "UP", "DOWN")
例如:=NOW()
属性¶
属性是对与公式相同的表中其他列的命名引用,并取得相同节点、边或网络的列单元格的值。
通过将列名放在美元符号 $ 之后来引用属性。
例如:$columnName
如果列名称包含空格、特殊字符或命名空间标识符,则名称必须放在大括号之间。
例如:${column name with spaces}
例如:${namespace::columnName}
逗号等特殊字符必须使用反斜杠进行转义。
例如:${name with \, comma}
如果列值为空,你可以提供默认值。在列名后放置一个冒号 : 和默认值。
例如:${columnName:0.0}
最后,列名是区分大小写的。
运算符¶
运算符写在两个操作数之间。
例如:=$x + 1
数字运算符:+ 加法、- 减法、* 乘法、/ 除法、^ 取幂
文本运算符:& 字符串连接
逻辑运算符(对布尔值 true/false 进行操作):< 小于、> 大于、>= 大于或等于、<= 小于或等于、= 等于、<> 不等于
运算符优先级规则遵循标准算术的优先级规则。
字面值¶
字符串(文本)文字在双引号之间,例如:"abc"。
数字文字,例如:123
浮点文字,例如:123.45
布尔(逻辑)文字:true, false
为了在字符串中嵌入双引号或反斜杠,它们必须用反斜杠进行转义,因此字符串 "\ 必须写为 "\"\\"。
条件值¶
条件值写成一个带有三个参数的 IF 函数:IF(condition, a, b)。如果条件计算结果为真,则返回参数 a 的值,否则返回参数 b 的值。
例如:IF($x = $y, "equal", "different")
支持的函数¶
当前支持的函数包括:
Cytoscape 特定网络函数¶
Degree:节点的度InDegree:节点的入度IsDirected:是否为有向图OutDegree:节点的出度SourceID:边的源节点 IDTargetID:边的目标节点 ID
数值运算函数¶
Abs:绝对值ACos:反余弦ASin:反正弦ATan2:\(\dfrac{y}{x}\) 的反正切Average:平均值Combin:组合数Cos:余弦Cosh:双曲余弦Count:计数Degrees:弧度转角度Exp:\(e\) 指数GeoMean:几何平均数HarMean:调和平均数Ln:自然对数Log:对数Max:最大值Median:中位数Min:最小值Mod:取余Mode:众数NormDist:正态分布的概率密度函数或累计密度函数Permut:排列数Pi:\(\pi\)Product:乘积Radians:角度转弧度Round:四舍五入为整数Sign:符号函数Sin:正弦Sinh:双曲正弦Sqrt:平方根StDev:样本标准差Sum:加和Tan:正切Tanh:双曲正切Trunc:截断Var:样本方差
字符串运算函数¶
Concatenate:字符串拼接Left:返回左侧部分Len:字符串长度Listtostring列表转字符串Lower:转小写Mid:返回中间部分Right:返回右侧部分Split:分割字符串Substitute:替换文本Text:使用 Java 的DecimalFormat将数值转换为文本Upper:转大写Value:文本转换为数字
列表运算函数¶
Blist:返回布尔型列表Count:返回列表中数值元素的个数First:返回列表的第一个元素Flist:返回浮点型列表Ilist:返回整型列表Largest返回列表中的前 \(K\) 个最大值Last:返回列表的最后一个元素Len:返回字符串长度或列表元素个数Nth:返回列表的第 \(N\) 个元素Slist:返回字符型列表
逻辑运算函数¶
And:逻辑与If:条件操作Not:逻辑非Or:逻辑或
日期时间函数¶
Now:当前日期时间Today:当前日期
其他运算函数¶
Booleantablecell:返回列中指定 SUID 的值Doubletablecell:返回列中指定 SUID 的值Error:抛出运行时异常Integertablecell:返回列中指定 SUID 的值Longtablecell:返回列中指定 SUID 的值Stringtablecell:返回列中指定 SUID 的值
映射源节点和目标节点¶
默认情况下,Cytoscape 使用公式将源节点和目标节点的列添加到 Edge Table 中。这个映射会在打开网络是自动执行,shared name 列用于存储映射。但是,选择使用哪个 Node Table 列是可自定义的。
通过 Apps -> mapSourceAndTarget 可以更新映射。可以选择多个 Node Table 列进行映射,这会导致 Edge Table 中存在多组源节点列和目标节点列。
通过 Edit -> Properties -> Cytoscape Preferences,在下拉列表中选择 mapSourceAndTarget,将 autoMap 属性更改为 FALSE 可以关闭自动映射。
如下截图显示了使用 COMMON 节点列的源节点和目标节点映射。

公式构造器¶
为了简化公式的构造以及便于发现内置函数,程序在 表格面板 中提供了一个 公式构造器。通过单击
按钮打开 公式构造器。
这应该会显示 公式构造器,如下所示:

顶部的文本区域称之为 Formula Editor。可以在这个区域直接输入公式本文。文本区域右上角为撤销和重做按钮。
公式准备好后,单击 Insert Formula 按钮将公式插入到表格中。根据在组合框中选择的内容,公式可以仅插入选定的单元格、整列或仅插入当前选定的节点/边的单元格。如果公式中有语法错误,当点击 Insert Formula 按钮时会立即报告。
通常在需要时公式会重新计算。例如,如果公式包含对另一列的属性引用,并且该列中的值发生变化,则会重新计算公式。这种重新计算有时也会有缺点,例如,对于非常大的网络,重新计算有时会很慢。你可以单击 Evaluate and Insert Result 按钮,而不是插入公式本身。这将立即计算公式并将结果插入到所选单元格。
Formula Editor 下方为文档区域。
Functions区域列出了所有可用的功能。单击函数名称可查看有关该函数的用途和使用方式文档。单击文档区域中的插入链接,将函数插入到Formula Editor的光标位置。Attributes区域列出了当前表格中可以在公式中引用的所有可用列。单击文档区域中的插入链接,将属性引用插入到Formula Editor的光标位置。Syntax区域提供有关公式语法的文档。
APP 开发者提示¶
构建自己的内置公式相对容易。一个简单的函数通常可以在 15 至 20 分钟内实现。通过解析器进行注册后,可以立即对用户可用,同时也会显示在 Formula Builder 中。