griffithlab / pVACtools

http://www.pvactools.org
BSD 3-Clause Clear License
141 stars 59 forks source link

[PVA-Seq] incorrect number of arguments & __init__() missing 1 required positional argument: 'cmd' #295

Closed tdw1221 closed 5 years ago

tdw1221 commented 5 years ago

Hi I've succeeded in running PVA-Seq on a few individual samples until I reach the following error (detailed error message in at the end):

  1. The first error seems to be related to pymp module, and actually it seems to only happen when running netMHC on certain allele and the program is able to skip the error and continues. *predict_binding.py: error: incorrect number of arguments CRITICAL:pymp:An exception occured in thread 0: (<class 'subprocess.CalledProcessError'>, Command '/bin/bash -c "source activate pvactools_py27; python /ysm-gpfs/pi/zhao/dt485/immumutation/IEDB/mhc_i/src/predict_binding.py ann HLA-A01:01 10 /home/dt485/scratch/immumutation/vcf/skcm_somatic_varscan2/0005541d-87de-4b0d-ad34-0138d9617b95/MHC_Class_I/tmp/TUMOR_21.fa.split_1-200"' returned non-zero exit status 2).**

2.The second error basically kills my program: CRITICAL:pymp:An exception occured in thread 0: (<class 'TypeError'>, init() missing 1 required positional argument: 'cmd').

My code is as follow, #######

!/bin/bash

filename='/home/dt485/scratch/immumutation/vcf/skcm_varscan2_name_clean_200.txt' pre='/home/dt485/scratch/immumutation/vcf/skcm_somatic_varscan2/' int='/' post='.vep.vcf' k=1 q="q;d"

while read p; do

tcga_name=$(cat $"$pre$p$int$p$post"|grep "##INDIVIDUAL"| sed -e 's/.NAME=(\S)\,.*/\1/g') hlat=$(sed $"$k$q" /home/dt485/scratch/immumutation/hla_clean.csv)

pvacseq run \ $"$pre$p$int$tcga_name$post" \ ##construct file name TUMOR \ $hlat \ ##echo hla type NetMHC \ $"$pre$p$int" \
-e 8,9,10,11 \ --iedb-install-directory /ysm-gpfs/pi/zhao/dt485/immumutation/IEDB \ -t 1

k=$((k+1))

done < $filename #######

I'm iterating over a folder which contains >400 annotated vcf files, and the error occurrs on the very first sample whose alleles are: HLA-A01:01 , HLA-A11:01 , HLA-B08:01 , HLA-B40:02 , HLA-C07:01 , HLA-C15:02. From the error message there's really no clue on what's going on so I'm quite confused.

Thank you very much!

Below is ERROR message

**

Executing MHC Class I predictions Converting .vcf to TSV Completed Splitting TSV into smaller chunks Splitting TSV into smaller chunks - Entries 1-100 Splitting TSV into smaller chunks - Entries 101-200 Splitting TSV into smaller chunks - Entries 201-300 Splitting TSV into smaller chunks - Entries 301-375 Completed Generating Variant Peptide FASTA and Key Files Generating Variant Peptide FASTA and Key Files - Entries 1-200 Generating Variant Peptide FASTA and Key Files - Entries 201-400 Generating Variant Peptide FASTA and Key Files - Entries 401-600 Generating Variant Peptide FASTA and Key Files - Entries 601-750 Completed Processing entries for Allele HLA-B40:02 and Epitope Length 8 - Entries 1-200 Processing entries for Allele HLA-A01:01 and Epitope Length 8 - Entries 1-200 Processing entries for Allele HLA-B40:02 and Epitope Length 10 - Entries 1-200 Processing entries for Allele HLA-A01:01 and Epitope Length 10 - Entries 1-200 Running IEDB on Allele HLA-B40:02 and Epitope Length 10 with Method NetMHC - Entries 1-200 Running IEDB on Allele HLA-A01:01 and Epitope Length 8 with Method NetMHC - Entries 1-200 Running IEDB on Allele HLA-A01:01 and Epitope Length 10 with Method NetMHC - Entries 1-200 Running IEDB on Allele HLA-B40:02 and Epitope Length 8 with Method NetMHC - Entries 1-200 Usage: predict_binding.py method allele or [options] arg length

Following are the available choices - method: ann, comblib_sidney2008, consensus, IEDB_recommended, netmhcpan, smm, smmpmbec, pickpocket, netmhccons, netmhcstabpan allele: an allele name length: a length

predict_binding.py: error: incorrect number of arguments CRITICAL:pymp:An exception occured in thread 0: (<class 'subprocess.CalledProcessError'>, Command '/bin/bash -c "source activate pvactools_py27; python /ysm-gpfs/pi/zhao/dt485/immumutation/IEDB/mhc_i/src/predict_binding.py ann HLA-A01:01 10 /home/dt485/scratch/immumutation/vcf/skcm_somatic_varscan2/0005541d-87de-4b0d-ad34-0138d9617b95/MHC_Class_I/tmp/TUMOR_21.fa.split_1-200"' returned non-zero exit status 2). Running IEDB on Allele HLA-A01:01 and Epitope Length 8 with Method NetMHC - Entries 1-200 - Completed Parsing IEDB Output for Allele HLA-A01:01 and Epitope Length 8 - Entries 1-200 Running IEDB on Allele HLA-B40:02 and Epitope Length 10 with Method NetMHC - Entries 1-200 - Completed Parsing IEDB Output for Allele HLA-B40:02 and Epitope Length 10 - Entries 1-200 Running IEDB on Allele HLA-B40:02 and Epitope Length 8 with Method NetMHC - Entries 1-200 - Completed Parsing IEDB Output for Allele HLA-B40:02 and Epitope Length 8 - Entries 1-200 Parsing IEDB Output for Allele HLA-A01:01 and Epitope Length 8 - Entries 1-200 - Completed Processing entries for Allele HLA-A01:01 and Epitope Length 9 - Entries 1-200 Running IEDB on Allele HLA-A01:01 and Epitope Length 9 with Method NetMHC - Entries 1-200 Parsing IEDB Output for Allele HLA-B40:02 and Epitope Length 10 - Entries 1-200 - Completed Processing entries for Allele HLA-B40:02 and Epitope Length 11 - Entries 1-200 Running IEDB on Allele HLA-B40:02 and Epitope Length 11 with Method NetMHC - Entries 1-200 Parsing IEDB Output for Allele HLA-B40:02 and Epitope Length 8 - Entries 1-200 - Completed Processing entries for Allele HLA-B40:02 and Epitope Length 9 - Entries 1-200 Running IEDB on Allele HLA-B40:02 and Epitope Length 9 with Method NetMHC - Entries 1-200 Running IEDB on Allele HLA-A01:01 and Epitope Length 9 with Method NetMHC - Entries 1-200 - Completed Parsing IEDB Output for Allele HLA-A01:01 and Epitope Length 9 - Entries 1-200 Running IEDB on Allele HLA-B40:02 and Epitope Length 9 with Method NetMHC - Entries 1-200 - Completed Parsing IEDB Output for Allele HLA-B40:02 and Epitope Length 9 - Entries 1-200 Parsing IEDB Output for Allele HLA-A01:01 and Epitope Length 9 - Entries 1-200 - Completed Parsing IEDB Output for Allele HLA-B40:02 and Epitope Length 9 - Entries 1-200 - Completed CRITICAL:pymp:An exception occured in thread 1: (<class 'TypeError'>, init() missing 1 required positional argument: 'cmd'). Running IEDB on Allele HLA-B40:02 and Epitope Length 11 with Method NetMHC - Entries 1-200 - Completed Parsing IEDB Output for Allele HLA-B40:02 and Epitope Length 11 - Entries 1-200 Parsing IEDB Output for Allele HLA-B40:02 and Epitope Length 11 - Entries 1-200 - Completed Processing entries for Allele HLA-C07:01 and Epitope Length 8 - Entries 1-200 Processing entries for Allele HLA-C07:01 and Epitope Length 10 - Entries 1-200 Running IEDB on Allele HLA-C07:01 and Epitope Length 8 with Method NetMHC - Entries 1-200 Running IEDB on Allele HLA-C07:01 and Epitope Length 10 with Method NetMHC - Entries 1-200 Running IEDB on Allele HLA-C07:01 and Epitope Length 10 with Method NetMHC - Entries 1-200 - Completed Parsing IEDB Output for Allele HLA-C07:01 and Epitope Length 10 - Entries 1-200 Running IEDB on Allele HLA-C07:01 and Epitope Length 8 with Method NetMHC - Entries 1-200 - Completed Parsing IEDB Output for Allele HLA-C07:01 and Epitope Length 8 - Entries 1-200 Parsing IEDB Output for Allele HLA-C07:01 and Epitope Length 10 - Entries 1-200 - Completed Processing entries for Allele HLA-C07:01 and Epitope Length 11 - Entries 1-200 Running IEDB on Allele HLA-C07:01 and Epitope Length 11 with Method NetMHC - Entries 1-200 Parsing IEDB Output for Allele HLA-C07:01 and Epitope Length 8 - Entries 1-200 - Completed Processing entries for Allele HLA-C07:01 and Epitope Length 9 - Entries 1-200 Running IEDB on Allele HLA-C07:01 and Epitope Length 9 with Method NetMHC - Entries 1-200 Running IEDB on Allele HLA-C07:01 and Epitope Length 9 with Method NetMHC - Entries 1-200 - Completed Parsing IEDB Output for Allele HLA-C07:01 and Epitope Length 9 - Entries 1-200 Parsing IEDB Output for Allele HLA-C07:01 and Epitope Length 9 - Entries 1-200 - Completed Running IEDB on Allele HLA-C07:01 and Epitope Length 11 with Method NetMHC - Entries 1-200 - Completed Parsing IEDB Output for Allele HLA-C07:01 and Epitope Length 11 - Entries 1-200 Parsing IEDB Output for Allele HLA-C07:01 and Epitope Length 11 - Entries 1-200 - Completed Processing entries for Allele HLA-C15:02 and Epitope Length 8 - Entries 1-200 Processing entries for Allele HLA-C15:02 and Epitope Length 10 - Entries 1-200 Running IEDB on Allele HLA-C15:02 and Epitope Length 8 with Method NetMHC - Entries 1-200 Running IEDB on Allele HLA-C15:02 and Epitope Length 10 with Method NetMHC - Entries 1-200 Running IEDB on Allele HLA-C15:02 and Epitope Length 10 with Method NetMHC - Entries 1-200 - Completed Parsing IEDB Output for Allele HLA-C15:02 and Epitope Length 10 - Entries 1-200 Running IEDB on Allele HLA-C15:02 and Epitope Length 8 with Method NetMHC - Entries 1-200 - Completed Parsing IEDB Output for Allele HLA-C15:02 and Epitope Length 8 - Entries 1-200 Parsing IEDB Output for Allele HLA-C15:02 and Epitope Length 10 - Entries 1-200 - Completed Processing entries for Allele HLA-C15:02 and Epitope Length 11 - Entries 1-200 Running IEDB on Allele HLA-C15:02 and Epitope Length 11 with Method NetMHC - Entries 1-200 Parsing IEDB Output for Allele HLA-C15:02 and Epitope Length 8 - Entries 1-200 - Completed Processing entries for Allele HLA-C15:02 and Epitope Length 9 - Entries 1-200 Running IEDB on Allele HLA-C15:02 and Epitope Length 9 with Method NetMHC - Entries 1-200 Running IEDB on Allele HLA-C15:02 and Epitope Length 9 with Method NetMHC - Entries 1-200 - Completed Parsing IEDB Output for Allele HLA-C15:02 and Epitope Length 9 - Entries 1-200 Parsing IEDB Output for Allele HLA-C15:02 and Epitope Length 9 - Entries 1-200 - Completed Running IEDB on Allele HLA-C15:02 and Epitope Length 11 with Method NetMHC - Entries 1-200 - Completed Parsing IEDB Output for Allele HLA-C15:02 and Epitope Length 11 - Entries 1-200 Parsing IEDB Output for Allele HLA-C*15:02 and Epitope Length 11 - Entries 1-200 - Completed CRITICAL:pymp:An exception occured in thread 0: (<class 'TypeError'>, init() missing 1 required positional argument: 'cmd'). CRITICAL:pymp:An exception occured in thread 0: (<class 'TypeError'>, init() missing 1 required positional argument: 'cmd'). Traceback (most recent call last): File "/home/dt485/.local/lib/python3.5/site-packages/lib/pipeline.py", line 506, in call_iedb_and_parse_outputs split_parsed_output_files.append(split_parsed_file_path) File "/home/dt485/.local/lib/python3.5/site-packages/pymp/init.py", line 148, in exit raise exc_t(exc_val) TypeError: init() missing 1 required positional argument: 'cmd'

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/dt485/.local/lib/python3.5/site-packages/lib/pipeline.py", line 506, in call_iedb_and_parse_outputs split_parsed_output_files.append(split_parsed_file_path) File "/home/dt485/.local/lib/python3.5/site-packages/pymp/init.py", line 148, in exit raise exc_t(exc_val) TypeError: init() missing 1 required positional argument: 'cmd'

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/dt485/.local/bin/pvacseq", line 11, in sys.exit(main()) File "/home/dt485/.local/lib/python3.5/site-packages/tools/pvacseq/main.py", line 99, in main args[0].func.main(args[1]) File "/home/dt485/.local/lib/python3.5/site-packages/tools/pvacseq/run.py", line 171, in main pipeline.execute() File "/home/dt485/.local/lib/python3.5/site-packages/lib/pipeline.py", line 318, in execute split_parsed_output_files = self.call_iedb_and_parse_outputs(chunks) File "/home/dt485/.local/lib/python3.5/site-packages/lib/pipeline.py", line 506, in call_iedb_and_parse_outputs split_parsed_output_files.append(split_parsed_file_path) File "/home/dt485/.local/lib/python3.5/site-packages/pymp/init.py", line 148, in exit raise exc_t(exc_val) TypeError: init() missing 1 required positional argument: 'cmd' **

susannasiebert commented 5 years ago

Hi, I'm currently working on a new hotfix release that will go live either later today or tomorrow. I would kindly ask you to retry your run with that upcoming version. I'm not 100% positive that it will fix your issue but it will help me narrow down the source of the problem.

I will let you know once the hotfix release is live.

tdw1221 commented 5 years ago

Thanks Susanna, I'd be glad to try on the new version and let you know how it goes

susannasiebert commented 5 years ago

1.3.1 is now live. Please give it a try and let me know if that fixes this problem.

tdw1221 commented 5 years ago

@susannasiebert Thank you Susanna, I ran my tasks again last nigh and here are my findings:

  1. When running a separate script for each of my sample, the updated code works perfect (no "transcript level filtering" error anymore)
  2. I'm still running into error when looping over all my sample and run pvaseq in each loop, the error first came with a function usage guidance:

########### Usage: predict_binding.py method allele or [options] arg length

Following are the available choices - method: ann, comblib_sidney2008, consensus, IEDB_recommended, netmhcpan, smm, smmpmbec, pickpocket, netmhccons, netmhcstabpan allele: an allele name length: a length ###########

Then throws out the error exactly like before in the above thread: ########### CRITICAL:pymp:An exception occured in thread 0: (<class 'TypeError'>, init() missing 1 required positional argument: 'cmd'). CRITICAL:pymp:An exception occured in thread 0: (<class 'TypeError'>, init() missing 1 required positional argument: 'cmd'). Traceback (most recent call last): File "/home/dt485/.local/lib/python3.5/site-packages/lib/pipeline.py", line 506, in call_iedb_and_parse_outputs split_parsed_output_files.append(split_parsed_file_path) File "/home/dt485/.local/lib/python3.5/site-packages/pymp/init.py", line 148, in exit raise exc_t(exc_val) TypeError: init() missing 1 required positional argument: 'cmd'

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/dt485/.local/lib/python3.5/site-packages/lib/pipeline.py", line 506, in call_iedb_and_parse_outputs split_parsed_output_files.append(split_parsed_file_path) File "/home/dt485/.local/lib/python3.5/site-packages/pymp/init.py", line 148, in exit raise exc_t(exc_val) TypeError: init() missing 1 required positional argument: 'cmd'

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/dt485/.local/bin/pvacseq", line 11, in sys.exit(main()) File "/home/dt485/.local/lib/python3.5/site-packages/tools/pvacseq/main.py", line 99, in main args[0].func.main(args[1]) File "/home/dt485/.local/lib/python3.5/site-packages/tools/pvacseq/run.py", line 171, in main pipeline.execute() File "/home/dt485/.local/lib/python3.5/site-packages/lib/pipeline.py", line 318, in execute split_parsed_output_files = self.call_iedb_and_parse_outputs(chunks) File "/home/dt485/.local/lib/python3.5/site-packages/lib/pipeline.py", line 506, in call_iedb_and_parse_outputs split_parsed_output_files.append(split_parsed_file_path) File "/home/dt485/.local/lib/python3.5/site-packages/pymp/init.py", line 148, in exit raise exc_t(exc_val) TypeError: init() missing 1 required positional argument: 'cmd' ###########

I basically got my job done by avoiding the loop, and it seems to me that this error has something to do with the shell/subshell coordination, just FYI and thanks for fixing the bug!!

ZJURenyi commented 1 year ago

@susannasiebert Thank you Susanna, I ran my tasks again last nigh and here are my findings:

  1. When running a separate script for each of my sample, the updated code works perfect (no "transcript level filtering" error anymore)
  2. I'm still running into error when looping over all my sample and run pvaseq in each loop, the error first came with a function usage guidance:

########### Usage: predict_binding.py method allele or [options] arg length

Following are the available choices - method: ann, comblib_sidney2008, consensus, IEDB_recommended, netmhcpan, smm, smmpmbec, pickpocket, netmhccons, netmhcstabpan allele: an allele name length: a length ###########

Then throws out the error exactly like before in the above thread: ########### CRITICAL:pymp:An exception occured in thread 0: (<class 'TypeError'>, init() missing 1 required positional argument: 'cmd'). CRITICAL:pymp:An exception occured in thread 0: (<class 'TypeError'>, init() missing 1 required positional argument: 'cmd'). Traceback (most recent call last): File "/home/dt485/.local/lib/python3.5/site-packages/lib/pipeline.py", line 506, in call_iedb_and_parse_outputs split_parsed_output_files.append(split_parsed_file_path) File "/home/dt485/.local/lib/python3.5/site-packages/pymp/init.py", line 148, in exit raise exc_t(exc_val) TypeError: init() missing 1 required positional argument: 'cmd'

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/dt485/.local/lib/python3.5/site-packages/lib/pipeline.py", line 506, in call_iedb_and_parse_outputs split_parsed_output_files.append(split_parsed_file_path) File "/home/dt485/.local/lib/python3.5/site-packages/pymp/init.py", line 148, in exit raise exc_t(exc_val) TypeError: init() missing 1 required positional argument: 'cmd'

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/dt485/.local/bin/pvacseq", line 11, in sys.exit(main()) File "/home/dt485/.local/lib/python3.5/site-packages/tools/pvacseq/main.py", line 99, in main args[0].func.main(args[1]) File "/home/dt485/.local/lib/python3.5/site-packages/tools/pvacseq/run.py", line 171, in main pipeline.execute() File "/home/dt485/.local/lib/python3.5/site-packages/lib/pipeline.py", line 318, in execute split_parsed_output_files = self.call_iedb_and_parse_outputs(chunks) File "/home/dt485/.local/lib/python3.5/site-packages/lib/pipeline.py", line 506, in call_iedb_and_parse_outputs split_parsed_output_files.append(split_parsed_file_path) File "/home/dt485/.local/lib/python3.5/site-packages/pymp/init.py", line 148, in exit raise exc_t(exc_val) TypeError: init() missing 1 required positional argument: 'cmd' ###########

I basically got my job done by avoiding the loop, and it seems to me that this error has something to do with the shell/subshell coordination, just FYI and thanks for fixing the bug!!

Hi, thanks for the suggestion. In deed, if I loop a few samples into pvacseq , this error occurs. But if I run them one by one manually, no error happens.

Just an add-on, for loop seems to work, but while loop will cause error. For example,

for sample in $(cat sample_list)
do pvacseq run $sample ....
done

works

cat sample_list | while read sample
do pvacseq run $sample ....
done

doesn't work