簡體   English   中英

在 nextflow 腳本塊中導入自己的 python 模塊?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM