ValueError: Invalid file path or buffer object type: <class 'snakemake.io.Namedlist'>
0
0
Entering edit mode
3.1 years ago
Kaya_Lena • 0

Hi! I just started using Snakemake and am struggeling to figure whats wrong with my Snakefile or code. The rules get_pheno and get_var work fine. However, the rule merge_pheno_var generates the following error message. I appreciate any help and general advice!

Traceback (most recent call last):
  File "/Users/../Desktop/00_get_variables/.snakemake/scripts/tmpyt17geyr.merge.py", line 10, in <module>
    df.to_csv(snakemake.output.out, sep='\t', index=False)
  File "/Users/../opt/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py", line 3402, in to_csv
    storage_options=storage_options,
  File "/Users/../opt/anaconda3/lib/python3.7/site-packages/pandas/io/formats/format.py", line 1083, in to_csv
    csv_formatter.save()
  File "/Users/../opt/anaconda3/lib/python3.7/site-packages/pandas/io/formats/csvs.py", line 234, in save
    storage_options=self.storage_options,
  File "/Users/../opt/anaconda3/lib/python3.7/site-packages/pandas/io/common.py", line 563, in get_handle
    storage_options=storage_options,
  File "/Users/../opt/anaconda3/lib/python3.7/site-packages/pandas/io/common.py", line 371, in _get_filepath_or_buffer
    raise ValueError(msg)
ValueError: Invalid file path or buffer object type: <class 'snakemake.io.Namedlist'>

Here my Snakefile:

configfile: 'config.yaml'

rule all:
    input:
        expand('results/{name}{key}.txt', name=config["names"], key=config["keys"])

rule get_pheno:
    input: 
        "data/pws_all_subs.phenpt", 
    output: 
        temp(expand('results/{name}{key}_temp.txt', name=config["names"], key=config["keys"]))
    conda: 
        'envs/env.yaml'
    script: 
        'scripts/get_pheno.py'


rule get_var:
    input:
        'data/02_var_movement.txt', 
        'data/pca_results.eigenvec',
        'results/pws_m_temp.txt'
    output:
        'results/var_pws_cd_ld.txt'
    conda:
        'envs/env.yaml'
    script:
        'scripts/get_var.py'


rule merge_pheno_var:
    input:
        'results/var_pws_cd_ld.txt',
        expand('results/{name}{key}_temp.txt', name=config["names"], key=config["keyes"])
    output:
        out = expand('results/{name}{key}.txt', name=config["names"], key=config["keyes"])
    conda:
        'envs/env.yaml'
    script:
        'scripts/merge.py'

My config file:

names:
 - cd_
 - ls_
 - pws_
keys:
 - hs
 - nb
 - dg
 - wp
 - m

And code of the rule merge_pheno_var:

import pandas as pd
covs = pd.read_csv(snakemake.input[0], sep='\t')
pheno = pd.read_csv(snakemake.input[1], sep='\t')
df = pd.merge(covs, pheno, on='IID', suffixes=(None, '_'))
df = df[['FID', 'IID','Pheno']]
df.to_csv(snakemake.output.out, sep='\t', index=False)
Snakemake • 4.7k views
ADD COMMENT

Login before adding your answer.

Traffic: 2239 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6