9. 列数据函数与等式¶
9.1. 列公式¶
简介¶
列可以包含按需计算并产生结果值的公式。
语法¶
基本语法¶
公式始终以等号“=”开头。这表示表格单元格中的值是一个公式。
示例: =ABS($otherColumn + LOG(10.2))
公式返回值的类型必须与列类型匹配,或者可以轻松转换为列类型。例如,如果公式在字符串列中返回数值,则数值将转换为字符串。但是,如果公式在数值列中返回字符串值,则该字符串无法自动转换为数字,因此会导致显示错误。
对于布尔(或逻辑)列数据,所有数值都将被接受,其中非零值将被解释为 true,零被解释为 false。浮点值将按照 Excel(tm) 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”的函数,带有三个参数: IF(condition, a, b)。如果条件评估为真,则返回 a 参数的值,否则返回 b 参数的值。
示例: IF($x = $y, “equal”, “different”)
支持的函数¶
目前我们支持以下函数
Cytoscape 特有的网络函数¶
Degree – 节点的度,即连接到该节点的边数。
InDegree – 节点的入度。
IsDirected – 如果此边是有向的则返回 true,否则返回 false。
OutDegree – 节点的出度。
SourceID – 边的源节点 ID。
TargetID – 边的目标节点 ID。
数值函数¶
Abs – 返回数字的绝对值。
ACos – 返回数字的反余弦值。
ASin – 返回数字的反正弦值。
ATan2 – 返回两个数字 x 和 y 的反正切值。
Average – 返回一组数字的平均值。
Combin – 返回从 n 个对象中取 k 个对象的组合数。
Cos – 返回以弧度为单位的角的余弦值。
Cosh – 返回其参数的双曲余弦值。
Degrees – 将参数从弧度转换为度。
Exp – 返回 e 的指定次方。
GeoMean – 一组数字的几何平均值。
HarMean – 一组数字的调和平均值。
Ln – 返回数字的自然对数。
Log – 返回以指定底数的数字的对数。
Max – 返回一组数字的最大值。
Median – 返回数字列表的中位数。
Min – 返回一组数字的最小值。
Mod – 计算数字的模数。
Mode – 一组数字的众数。
NormDist – 返回正态分布的 PDF 或 CDF。
Permut – 返回给定对象数量的排列数。
Pi – 返回圆周率 p 的近似值。
Product – 返回给定数字的乘积。
Radians – 将参数从度转换为弧度。
Round – 将数字四舍五入到指定的小数位数。
Sign – 实现符号函数。根据数字是负数、零还是正数返回 -1、0 或 +1。
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。可以选择多个节点表列进行映射,从而在边表中生成多组源节点和目标节点列。
要关闭自动映射,请转到 Edit → Properties → Cytoscape Preferences,然后从下拉菜单中选择 mapSourceAndTarget。将 autoMap 属性的值更改为 FALSE。
下图显示了使用节点列 COMMON 进行的源节点和目标节点列映射。

9.2. 公式构建器¶
为了简化公式的创建并促进对内置函数的发现,我们在表格面板(Table Panel)中提供了公式构建器(Formula Builder)。点击
按钮即可打开公式构建器。
这应该会调出公式构建器,其外观如下所示:

顶部是一个名为公式编辑器(Formula Editor)的文本区域。公式文本可以直接输入到此区域中。文本区域的右上角有撤消和重做按钮。
公式准备好后,点击插入公式(Insert Formula)按钮将其插入到表格中。根据组合框中的选择,公式可以仅插入到所选单元格、整列,或仅插入到当前选定的节点/边对应的单元格中。如果公式中存在语法错误,点击插入公式按钮时会立即报告。
通常,公式是按需重新计算的。例如,如果公式包含对另一列的属性引用,并且该列中的值发生变化,则公式会重新计算。这种重新计算有时会有缺点,例如对于非常大的网络,重新计算有时会很慢。您可以点击评估并插入结果(Evaluate and Insert Result)按钮,而不是直接插入公式本身。这将立即计算公式并将结果插入到所选单元格中。
公式编辑器下方是一个用于文档说明的区域。
函数区域列出了所有可用函数。点击函数名称可查看关于该函数的作用及使用方法的文档。点击文档区域中的 insert 链接,即可在光标所在位置将函数插入到公式编辑器中。
属性区域列出了当前表格中所有可从公式引用的可用列。点击文档区域中的 insert 链接,即可在光标所在位置将属性引用插入到公式编辑器中。
语法区域提供了有关公式语法的文档。
9.3. 写给应用开发者的提示¶
添加自己的内置公式函数相对简单。一个简单的函数可能在 15 到 20 分钟内就能实现。然后可以通过解析器进行注册,并立即对用户可用。它将在公式构建器中显示。