csv - 如何在 Nextflow 中访问/操作 splitCSV 运算符的输出?
问题描述
我使用 stdout 输出将数据从一个 python 脚本移动到另一个,以避免使用其中包含一个数字的文件。结果,我在 csv 字符串中传递了我的信息,即 [data_val1、data_val2 等...]。这很好,但我需要能够使用此信息启动两个单独的频道。这可以通过分支来完成。我的问题是处理 splitCsv 运算符的输出。
extracted_values
.splitCsv()
.branch{
meta_data: new Tuple(it[0],it[1])
other_data: it[2]
}
.set{script_output}
script_output.meta_data.view({"medata data is $it"})
script_output.other_data.view({"original height is $it"})
该运算符的文档非常短。这些数据如何返回以供后续操作?我想取前几个值并传递到一个通道并将其余的发送到另一个通道。如果我有一个具有数组但我没有的变量,这将是微不足道的。
任何想法将不胜感激。
解决方案
对于 nextflow 新手,我从 gitter 得到了一些帮助
关于处理在 groovy 闭包上读取的变量。如果未列出任何内容,则将您的变量称为它。
我的拆分解决方案如下
Channel
.from("val1,val2,val3")
.splitCsv()
.multiMap { it ->
foo: [it[0],it[1]]
bar: [it[2]]
}
.set{result}
result.foo.view()
result.bar.view()
推荐阅读
- android - 导航组件的多个容器
- java - 如何创建单例枚举映射?
- python - Python 调试器函数不存在
- java - 从其他线程访问while循环布尔,线程安全吗?
- matlab - 检查行是否满足Matlab中的要求
- arduino - 羽绒服 MQTT
- django - `{% include "blah.html" with x="..." only %}`,默认值为 x
- matlab-deployment - 强制编译 Matlab 应用程序以使用运行时而不是 Matlab 许可证
- c++ - 让一个`std::vector
` 从 `std::string` 窃取内存 - c# - 将表达式树从等于转换为包含