如何在Cytoscape中按氨基酸类型自动设置表格单元格背景色?
自动化设置Cytoscape表格单元格背景色(按氨基酸化学类型)
核心解决方案:Groovy脚本批量配置
由于py4cytoscape暂不支持表格样式配置,手动设置离散映射效率极低,可通过Cytoscape内置的Groovy脚本功能实现一键批量配置。
步骤1:编写Groovy脚本
打开Cytoscape的Tools > Script Editor,新建Groovy脚本,粘贴以下代码(可根据需求修改颜色映射和目标列规则):
// 定义氨基酸类型与背景色的映射(十六进制颜色码可自行调整) def aaColorMap = [ // 芳香族(F/Y/W) 'F': '#FF6B6B', 'Y': '#FF6B6B', 'W': '#FF6B6B', // 碱性(H/K/R) 'H': '#4ECDC4', 'K': '#4ECDC4', 'R': '#4ECDC4', // 酸性(D/E) 'D': '#FFE66D', 'E': '#FFE66D', // 脂肪族疏水(A/G/I/L/M/P/V) 'A': '#C4C4C4', 'G': '#C4C4C4', 'I': '#C4C4C4', 'L': '#C4C4C4', 'M': '#C4C4C4', 'P': '#C4C4C4', 'V': '#C4C4C4', // 极性不带电(S/T) 'S': '#95E1D3', 'T': '#95E1D3', // 酰胺类(C/N/Q) 'C': '#F38181', 'N': '#F38181', 'Q': '#F38181' ] // 获取当前节点表(若需处理边表,替换为cyTableView.model.edgeTable) def tableView = cytoscape.tableViewManager.currentTableView def targetColumns = tableView.model.table.columns.findAll { // 匹配所有以Col开头的列,可根据实际列名规则修改 it.name.startsWith('Col') } // 为每个目标列设置离散背景色映射 targetColumns.each { column -> def discreteMapping = new org.cytoscape.view.vizmap.mappings.DiscreteMapping(String, column) aaColorMap.each { aa, hexColor -> // 将十六进制颜色转为AWT Color对象 def color = java.awt.Color.decode(hexColor) discreteMapping.putMapValue(aa, color) } // 应用背景色映射到列 tableView.setVisualProperty( org.cytoscape.view.table.CyTableVisualManager.CELL_BACKGROUND_PAINT, discreteMapping, column ) } // 刷新表格视图 tableView.updateView()
步骤2:运行脚本
点击脚本编辑器的Run按钮,脚本会自动遍历所有目标列,为每个氨基酸类型设置对应的背景色。
额外提示
- 脚本可保存为
.groovy文件,后续在其他Cytoscape实例中直接导入运行,解决表格样式无法导出/导入的问题。 - 若目标列名不是以
Col开头,修改脚本中it.name.startsWith('Col')的判断规则即可(比如匹配包含Pos的列名)。 - 颜色码可根据个人喜好调整,确保同类型氨基酸颜色统一即可。
内容的提问来源于stack exchange,提问作者Brandon
相关产品推荐
相关产品推荐

