[英]Import own python modules in nextflow script block?
我在bin/
目錄中創建了一個名為 utility.py 的utilities.py
腳本:
#!/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')
並使用chmod +x
使其可執行。 我想在我的工作流程的各個流程中的多個腳本塊中使用這些功能。 目前,當我嘗試從我的實用程序模塊導入 function 時:
#!/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
,而是直接調用了一個 python 腳本( test.py
),其中包含from utilities import print_info
,它工作正常。
script:
"""
test.py
"""
請注意,以下內容不起作用: from.utilities import print_info
。 因此,您可以使用 Nextflow 導入自定義 Python 模塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.