>

간단한 예제로 데모를하겠습니다. plink 형식 인 a.map과 a.ped라는 두 개의 파일이 있습니다. 먼저 두 파일을 사용하여 첫 번째 bfile 형식으로 변환하고 두 번째 명령을 원시 형식으로 변환하고 싶습니다.

내 파일 : a.map, a.ped :

> $ cat a.map
1 snp1 0 1
1 snp2 0 2
1 snp3 0 3

> $ cat a.ped 
1 1 0 0 1  0  1 1  2 2  1 1
1 2 0 0 2  0  2 2  0 0  2 1
1 3 1 2 1  2  0 0  1 2  2 1
2 1 0 0 1  0  1 1  2 2  0 0
2 2 0 0 2  2  2 2  2 2  0 0
2 3 1 2 1  2  1 1  2 2  1 1

첫 번째 명령 :

plink --file a --out b

그리고 네 개의 파일이 있습니다 : b.bed b.bam b.fam b.log

(base) [dengfei@localhost plink-test]$ ls b*
b.bed  b.bim  b.fam  b.log

두 번째 명령 :

plink --bfile b --out c --recodeA

그리고 나는 두 개의 파일을 얻는다 :

c.log  c.raw

내 질문은 다음과 같습니다. 첫 번째 명령에서 plink use --out   b.bim, b.bed,b.fam 를 생성 하지만 snakemake의 두 번째 명령에서 이름을 사용할 수 없습니다.

내 주먹 스네이크 파일 :

rule bfile:
params:
    a1 = "a",
    a2 = "b"
shell:"plink --file {params.a1} --out {params.a2}"

잘 작동합니다.

   (base) [dengfei@localhost plink-test]$ snakemake -s test1.py 
Provided cores: 1
Rules claiming more threads will be scaled down.
Job counts:
    count   jobs
    1   bfile
    1
rule bfile:
    jobid: 0
PLINK v1.90b6.5 64-bit (13 Sep 2018)           www.cog-genomics.org/plink/1.9/
(C) 2005-2018 Shaun Purcell, Christopher Chang   GNU General Public License v3
Logging to b.log.
Options in effect:
  --file a
  --out b
63985 MB RAM detected; reserving 31992 MB for main workspace.
.ped scan complete (for binary autoconversion).
Performing single-pass .bed write (3 variants, 6 people).
--file: b.bed + b.bim + b.fam written.
Finished job 0.
1 of 1 steps (100%) done

뱀 명령에 다른 규칙을 추가하여 두 번째 명령을 실행하면 내 Snakefile이 잘못되었습니다.

rule all:
    input:
        "c.log","c.raw"
rule bfile:
    params:
        a1 = "a",
        a2 = "b"
    shell:"plink --file {params.a1} --out {params.a2}"
rule cfile:
    params:
        aa1 = "b",
    aa2 = "c"
    shell:"plink --bfile {params.aa1} --out {params.aa2} --recodeA"

c.log와 c.raw 누락 된 입력을 보여줍니다

MissingInputException in line 1 of /home/dengfei/test/snakemake/plink-test/test1.py:
Missing input files for rule all:
c.log
c.raw

두 규칙을 연결하는 방법을 모르겠습니다. 어떤 제안이라도 좋을 것입니다! 대단히 감사합니다.


  • 답변 # 1

    Snakemake는 input 를 사용합니다  그리고 output  파일을 통해 워크 플로의 종속성을 식별하고 규칙에서 누락되었습니다. input 정의  그리고 output  두 규칙 bfile 에 대한 파일  그리고 cfile rule all 에서 워크 플로우의 최종 파일 (또는 예상되는 아웃 파일)을 정의하십시오. .

    rule all:
        input:
            "c.log","c.raw"
    rule bfile:
        input:
            "input files of rule bfile here"
        output:
            "output files of rule bfile here"
        params:
            a1 = "a",
            a2 = "b"
        shell:
            "plink --file {params.a1} --out {params.a2}"
    rule cfile:
        input:
            "rule bfile outfiles"
        output:
            "c.log", "c.raw"
        params:
            aa1 = "b",
            aa2 = "c"
        shell:
            "plink --bfile {params.aa1} --out {params.aa2} --recodeA"
    
    

    snakemake 튜토리얼을 통해 작업하는 것이 좋습니다.

  • 답변 # 2

    JeeYem의 도움으로 올바른 코드는 다음과 같습니다.

    rule all:
        input:
            "c.log","c.raw"
    rule bfile:
        input:
            "a.map","a.ped"
        output:
            "b.bed","b.bim","b.fam"
        params:
            a1 = "a",
            a2 = "b"
        shell:
            "plink --file {params.a1} --out {params.a2}"
    rule cfile:
        input:
            "b.bed","b.bim","b.fam"
        output:
            "c.log", "c.raw"
        params:
            aa1 = "b",
            aa2 = "c"
        shell:
            "plink --bfile {params.aa1} --out {params.aa2} --recodeA"
    
    

    그리고 snakemake를 실행하면 원하는 결과를 얻을 수 있습니다 :

    Provided cores: 1
    Rules claiming more threads will be scaled down.
    Job counts:
        count   jobs
        1   all
        1   bfile
        1   cfile
        3
    rule bfile:
        input: a.map, a.ped
        output: b.bed, b.bim, b.fam
        jobid: 2
    PLINK v1.90b6.5 64-bit (13 Sep 2018)           www.cog-genomics.org/plink/1.9/
    (C) 2005-2018 Shaun Purcell, Christopher Chang   GNU General Public License v3
    Logging to b.log.
    Options in effect:
      --file a
      --out b
    63985 MB RAM detected; reserving 31992 MB for main workspace.
    .ped scan complete (for binary autoconversion).
    Performing single-pass .bed write (3 variants, 6 people).
    --file: b.bed + b.bim + b.fam written.
    Finished job 2.
    1 of 3 steps (33%) done
    rule cfile:
        input: b.bed, b.bim, b.fam
        output: c.log, c.raw
        jobid: 1
    PLINK v1.90b6.5 64-bit (13 Sep 2018)           www.cog-genomics.org/plink/1.9/
    (C) 2005-2018 Shaun Purcell, Christopher Chang   GNU General Public License v3
    Note: --recodeA flag deprecated.  Use 'recode A ...'.
    Logging to c.log.
    Options in effect:
      --bfile b
      --out c
      --recode A
    63985 MB RAM detected; reserving 31992 MB for main workspace.
    3 variants loaded from .bim file.
    6 people (4 males, 2 females) loaded from .fam.
    3 phenotype values loaded from .fam.
    Using 1 thread (no multithreaded calculations invoked).
    Before main variant filters, 4 founders and 2 nonfounders present.
    Calculating allele frequencies... done.
    Total genotyping rate is 0.777778.
    3 variants and 6 people pass filters and QC.
    Among remaining phenotypes, 3 are cases and 0 are controls.  (3 phenotypes are
    missing.)
    --recode A to c.raw ... done.
    Finished job 1.
    2 of 3 steps (67%) done
    localrule all:
        input: c.log, c.raw
        jobid: 0
    Finished job 0.
    3 of 3 steps (100%) done
    
    
    

  • 이전 Excel에서 VBA를 사용하여 Outlook Mail msg 파일 열기
  • 다음 이 Visual Studio 빌드 후 이벤트가 실행되지 않는 이유는 무엇입니까?