wyang17 / SQuIRE

Software for Quantifying Interspersed Repeat Expression
Other
49 stars 29 forks source link

Issue with squire Count: join: multi-character tab ‘-o’ #69

Open GimenaA opened 2 years ago

GimenaA commented 2 years ago

Hello, I'm trying to run squire Count, but it gives me the following error. Has anyone else encountered this error before and has a solution? Thank you for your help!

Creating temporary files2022-02-04 03:01:46.965990

Creating unique and multiple alignment bedfiles 2022-02-04 03:01:46.966187

Identifying properly paired reads 2022-02-04 03:01:46.966198

Intersecting bam files with TE bedfile 2022-02-04 03:03:21.196100

Splitting into read1 and read 2 2022-02-04 03:04:29.400540

Combining adjacent TEs with same read alignment 2022-02-04 03:04:50.744557

Getting genomic coordinates of read2022-02-04 03:08:29.343584

Identifying and labeling unique and multi reads2022-02-04 03:09:31.003050

Matching paired-end mates and merging coordinates2022-02-04 03:10:30.134429

join: multi-character tab ‘-o’ Traceback (most recent call last): File "/home/gimena/miniconda3/envs/squire/bin/squire", line 11, in load_entry_point('SQuIRE', 'console_scripts', 'squire')() File "/home/gimena/SQuIRE/squire/cli.py", line 156, in main subargs.func(args = subargs) File "/home/gimena/SQuIRE/squire/Count.py", line 1743, in main match_reads(paired_tempfile1_ulabeled,paired_tempfile2_ulabeled,strandedness,paired_matched_tempfile,paired_unmatched1, paired_unmatched2,debug) #match pairs between paired files File "/home/gimena/SQuIRE/squire/Count.py", line 494, in match_reads sp.check_call(["/bin/sh","-c",joincommand]) File "/home/gimena/miniconda3/envs/squire/lib/python2.7/subprocess.py", line 186, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['/bin/sh', '-c', "join -j 12 -t $(printf '\t') -o 1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,1.10,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,2.10 /home/gimena/simulation/test_squire/test_results2/sample_0/count_folder/sample_0_paired_ulabeled_1.tmpss_HWj_newread_v1 /home/gimena/simulation/test_squire/test_results2/sample_0/count_folder/sample_0_paired_ulabeled_2.tmpSEqE7c_newread_v1 > /home/gimena/simulation/test_squire/test_results2/sample_0/count_folder/sample_0_paired_matched.tmpyDeayp_10k_v1"]' returned non-zero exit status 1

crankycrank commented 2 years ago

I had a problem with this command on Debian, where /bin/sh is symlinked to dash instead of bash. For me changing the call to /bin/bash explicitly solved the problem. What is you sh symlinked to? Does it work for you with /bin/bash instead of sh? I submitted a pull request for this.

CWYuan08 commented 2 years ago

Hi I am experiencing a similar error as you, but for me it is join: multi-character tab ‘$\t’

have you resolved yours? Thank you very much!

crankycrank commented 2 years ago

Hi I am experiencing a similar error as you, but for me it is join: multi-character tab ‘$\t’

have you resolved yours? Thank you very much!

See my comment. Changing sh to bash solves it for me. What is your /bin/sh symlinked to? What is the output of ls -l /bin/bash

CWYuan08 commented 2 years ago

Thank you for replying! I am running it on a cluster, ls -l /bin/bash only gives me: -rwxr-xr-x 1 root root 1113504 Jun 6 2019 /bin/bash

crankycrank commented 2 years ago

Thank you for checking! Sorry, it was my fault, I meant to ask for the output of ls -l /bin/sh since sh is the interpreter. If you run SQuIRE using conda or container, activate them and run ls -l /bin/sh after that. What distribution do you use? Have you tried my fix with replacing sh with bash?

CWYuan08 commented 2 years ago

Hi, ls -l bin/sh gives me lrwxrwxrwx 1 root root 4 Aug 4 2020 /bin/sh -> dash

No I haven't tried, how should I change sh with bash? Many thanks!

crankycrank commented 2 years ago

This explains it (see my first comment). I submitted a pull request for this to the developers.

You need to replace /bin/sh with /bin/bash in the SQuIRE python scripts. For example, change sp.check_call(["/bin/sh","-c",joincommand]) to sp.check_call(["/bin/bash","-c",joincommand])

CWYuan08 commented 2 years ago

Thank you! Does this mean change all sp.check_call(["/bin/sh","-c",joincommand]) lines in the Count.py file?

crankycrank commented 2 years ago

Yes, this and other similar calls. I changed them all for consistency. Do you clone the SQuIRE repository before the installation? In this case you can clone from our lab's fork (https://github.com/mskgreenbaumlab/SQuIRE), it has the sh -> bash changes applied. Then repeat the installation process.

CWYuan08 commented 2 years ago

it worked, thank you very much!