JonJala / mama

MIT License
13 stars 4 forks source link

mama.py TypeError: expected string or bytes-like object #17

Closed maxzylam closed 3 years ago

maxzylam commented 3 years ago

Hi Grant and Jon,

I've been testing mama.py on my own data and it appears the sniffer did not like the input file format. I tested it with the toy data provided and came up with the same issue.

<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> <> <> MAMA: Multi-Ancestry Meta-Analysis <> Version: 1.0.0 <> (C) 2020 Social Science Genetic Association Consortium (SSGAC) <> MIT License <> <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> <> Software-related correspondence: grantgoldman0@gmail.com or jjala.ssgac@gmail.com <> All other correspondence: paturley@broadinstitute.org <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> See full log at: /home/mlam/mama/tutorial/BMI_MAMA.log Program executed via: /home/mlam/mama/mama.py \ --sumstats /home/mlam/mama/tutorial/EAS_BMI.txt.gz,EAS,BMI /home/mlam/mama/tutorial/EUR_BMI.txt.gz,EUR,BMI \ --input-sep \t \ --ld-scores /home/mlam/mama/tutorial/LDSC_input/chr22_ale_mind02_geno02_maf01_EAS_EUR.l2.ldscore.gz \ --out /home/mlam/mama/tutorial/BMI_MAMA \ --add-a1-col-match EA \ --add-a2-col-match OA ERROR: expected string or bytes-like object Traceback (most recent call last): File "/home/mlam/mama/mama.py", line 809, in main_func iargs = validate_inputs(parsed_args, user_args) File "/home/mlam/mama/mama.py", line 745, in validate_inputs pd.read_csv(ld_score_file, sep=None, engine='python', nrows=1, comment="#").columns) File "/home/mlam/anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py", line 676, in parser_f return _read(filepath_or_buffer, kwds) File "/home/mlam/anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py", line 448, in _read parser = TextFileReader(fp_or_buf, kwds) File "/home/mlam/anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py", line 880, in init self._make_engine(self.engine) File "/home/mlam/anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py", line 1126, in _make_engine self._engine = klass(self.f, self.options) File "/home/mlam/anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py", line 2275, in init self._make_reader(f) File "/home/mlam/anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py", line 2404, in _make_reader sniffed = csv.Sniffer().sniff(line) File "/home/mlam/anaconda3/lib/python3.7/csv.py", line 182, in sniff self._guess_quote_and_delimiter(sample, delimiters) File "/home/mlam/anaconda3/lib/python3.7/csv.py", line 223, in _guess_quote_and_delimiter matches = regexp.findall(data) TypeError: expected string or bytes-like object

ggoldman1 commented 3 years ago

Hey Max,

Can you try putting the \t in quotes ("\t")? Also, did you set up a virtualenv? I'm not able to reproduce this error with or without the virtualenv, but presumably we have different versions of pandas installed.

maxzylam commented 3 years ago

Hi Grant - I figured out what went wrong

This was the original command

/home/mlam/anaconda3/bin/python3 /home/mlam/mama/mama.py --sumstats "/home/mlam/mama/tutorial/EAS_BMI.txt.gz,EAS,BMI" "/home/mlam/mama/tutorial/EUR_BMI.txt.gz,EUR,BMI" --input-sep "\t" --ld-scores "/home/mlam/mama/tutorial/LDSC_input/chr22_ale_mind02_geno02_maf01_EAS_EUR.l2.ldscore.gz" --out "/home/mlam/mama/tutorial/BMI_MAMA" --add-a1-col-match "EA" --add-a2-col-match "OA"

This was the command that worked

/home/mlam/anaconda3/envs/mama/bin/python /home/mlam/mama/mama.py --sumstats "/home/mlam/mama/tutorial/EAS_BMI.txt.gz,EAS,BMI" "/home/mlam/mama/tutorial/EUR_BMI.txt.gz,EUR,BMI" --input-sep "\t" --ld-scores "/home/mlam/mama/tutorial/LDSC_input/chr22_ale_mind02_geno02_maf01_EAS_EUR.l2.ldscore.gz" --out "/home/mlam/mama/tutorial/BMI_MAMA" --add-a1-col-match "EA" --add-a2-col-match "OA"

I've forgotten to reference the virtualenv in the path.

ggoldman1 commented 3 years ago

Great! Thanks Max!