我在bin/
目录中创建了一个名为utilities.py
的python脚本:
#!/usr/bin/env python3
import numpy as np
import pandas as pd
from datetime import datetime
import io
def print_info(in_df, fname_base):
buffer = io.StringIO()
df = in_df.copy()
df.info(buf=buffer)
s = buffer.getvalue()
with open(fname_base+"_info.txt", "w", encoding="utf-8") as f:
f.write(s)
def print_desc(in_df, fname_base):
df = in_df.copy()
desc = df.describe()
desc.to_csv(fname_base+"_desc.tsv", sep = 't')
def print_data(in_df, fname_base):
df = in_df.copy()
print_info(df, fname_base)
print_desc(df, fname_base)
df.to_csv(fname_base+".tsv", sep = 't')
并使其能够用CCD_ 3执行。我想在工作流中的各个流程中的几个脚本块中使用这些函数。当前,当我尝试从实用程序模块导入函数时:
#!/bin/bash nextflow
process transform_data {
input:
path(data)
output:
path("out.tsv"), emit: out_data
script:
"""
#!/usr/bin/env python3
import pandas as pd
import io
from utilities import print_info
"""
}
我得到以下错误:
Traceback (most recent call last):
File ".command.sh", line 4, in <module>
from utilities import print_info
ModuleNotFoundError: No module named 'utilities'
可以用这种方式导入自己的模块吗?
您正在使用哪个版本的Nextflow?我测试了v22.04.5和以下作品:
我的设置有点不同,我没有指定#!/usr/bin/env python3
,而是直接调用了一个包含from utilities import print_info
的python脚本(test.py
),它运行得很好。
script:
"""
test.py
"""
请注意,以下内容不起作用:from .utilities import print_info
。因此,您可以使用Nextflow导入自定义Python模块。