opengene / mutscan Goto Github PK
View Code? Open in Web Editor NEWDetect and visualize target mutations by scanning FastQ files directly
License: MIT License
Detect and visualize target mutations by scanning FastQ files directly
License: MIT License
When running mutscan with the -t options, some executions can lead to deadlock at the end.
On a 4-core processor, I ran i=0; while : ; do i=$((i+1)); echo ============ $i =========== ; ../mutscan -1 R1.fq -2 R2.fq -t 4 ; done
with the provided example files. In less than 10 iterations, I generally observe a deadlock.
Looking with gdb give me:
(gdb) t a all bt
Thread 3 (Thread 0x7fffd3be9640 (LWP 635589) "mutscan"):
#0 0x00007ffff7f5f0fa in __futex_abstimed_wait_common64 (futex_word=futex_word@entry=0x7fffffffd75c, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0, cancel=cancel@entry=true) at ../sysdeps/nptl/futex-internal.c:74
#1 0x00007ffff7f5f15b in __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x7fffffffd75c, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ../sysdeps/nptl/futex-internal.c:123
#2 0x00007ffff7f58c30 in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x7fffffffd6b0, cond=0x7fffffffd730) at pthread_cond_wait.c:504
#3 __pthread_cond_wait (cond=0x7fffffffd730, mutex=0x7fffffffd6b0) at pthread_cond_wait.c:619
#4 0x00007ffff7e0bcf0 in __gthread_cond_wait (__mutex=<optimized out>, __cond=0x7fffffffd730) at /build/gcc-11-y1lmfE/gcc-11-11.2.0/build/x86_64-linux-gnu/libstdc++-v3/include/x86_64-linux-gnu/bits/gthr-default.h:865
#5 std::__condvar::wait (__m=..., this=0x7fffffffd730) at /build/gcc-11-y1lmfE/gcc-11-11.2.0/build/x86_64-linux-gnu/libstdc++-v3/include/bits/std_mutex.h:155
#6 std::condition_variable::wait (this=this@entry=0x7fffffffd730, __lock=...) at ../../../../../src/libstdc++-v3/src/c++11/condition_variable.cc:41
#7 0x0000555555592820 in PairEndScanner::consumePack (this=0x7fffffffd5d0) at src/pescanner.cpp:245
#8 0x0000555555592a2d in PairEndScanner::consumerTask (this=0x7fffffffd5d0) at src/pescanner.cpp:330
#9 0x00007ffff7e118f4 in std::execute_native_thread_routine (__p=0x5555555ddd90) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:82
#10 0x00007ffff7f52d80 in start_thread (arg=0x7fffd3be9640) at pthread_create.c:481
#11 0x00007ffff7c58bdf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 2 (Thread 0x7fffd4beb640 (LWP 635587) "mutscan"):
#0 0x00007ffff7f5f0fa in __futex_abstimed_wait_common64 (futex_word=futex_word@entry=0x7fffffffd75c, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0, cancel=cancel@entry=true) at ../sysdeps/nptl/futex-internal.c:74
#1 0x00007ffff7f5f15b in __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x7fffffffd75c, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ../sysdeps/nptl/futex-internal.c:123
#2 0x00007ffff7f58c30 in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x7fffffffd6b0, cond=0x7fffffffd730) at pthread_cond_wait.c:504
#3 __pthread_cond_wait (cond=0x7fffffffd730, mutex=0x7fffffffd6b0) at pthread_cond_wait.c:619
#4 0x00007ffff7e0bcf0 in __gthread_cond_wait (__mutex=<optimized out>, __cond=0x7fffffffd730) at /build/gcc-11-y1lmfE/gcc-11-11.2.0/build/x86_64-linux-gnu/libstdc++-v3/include/x86_64-linux-gnu/bits/gthr-default.h:865
#5 std::__condvar::wait (__m=..., this=0x7fffffffd730) at /build/gcc-11-y1lmfE/gcc-11-11.2.0/build/x86_64-linux-gnu/libstdc++-v3/include/bits/std_mutex.h:155
#6 std::condition_variable::wait (this=this@entry=0x7fffffffd730, __lock=...) at ../../../../../src/libstdc++-v3/src/c++11/condition_variable.cc:41
#7 0x0000555555592820 in PairEndScanner::consumePack (this=0x7fffffffd5d0) at src/pescanner.cpp:245
#8 0x0000555555592a2d in PairEndScanner::consumerTask (this=0x7fffffffd5d0) at src/pescanner.cpp:330
#9 0x00007ffff7e118f4 in std::execute_native_thread_routine (__p=0x5555555cbc60) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:82
#10 0x00007ffff7f52d80 in start_thread (arg=0x7fffd4beb640) at pthread_create.c:481
#11 0x00007ffff7c58bdf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 1 (Thread 0x7ffff7a14740 (LWP 635585) "mutscan"):
#0 0x00007ffff7f5f0fa in __futex_abstimed_wait_common64 (futex_word=futex_word@entry=0x7fffd4beb910, expected=635587, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=128, cancel=cancel@entry=true) at ../sysdeps/nptl/futex-internal.c:74
#1 0x00007ffff7f5f15b in __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x7fffd4beb910, expected=<optimized out>, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=128) at ../sysdeps/nptl/futex-internal.c:123
#2 0x00007ffff7f54274 in __pthread_clockjoin_ex (threadid=140736762656320, thread_return=0x0, clockid=0, abstime=0x0, block=<optimized out>) at pthread_join_common.c:102
#3 0x00007ffff7e11b37 in __gthread_join (__value_ptr=0x0, __threadid=<optimized out>) at /build/gcc-11-y1lmfE/gcc-11-11.2.0/build/x86_64-linux-gnu/libstdc++-v3/include/x86_64-linux-gnu/bits/gthr-default.h:669
#4 std::thread::join (this=0x55555cc05b20) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:112
#5 0x0000555555593459 in PairEndScanner::scan (this=this@entry=0x7fffffffd5d0) at src/pescanner.cpp:80
#6 0x000055555558d3a6 in MutScan::scan (this=this@entry=0x7fffffffdb30) at src/mutscan.cpp:24
#7 0x000055555555f1fd in main (argc=<optimized out>, argv=<optimized out>) at src/main.cpp:103
(gdb)
A fix is proposed in #14
Hi, Shifu @sfchen
html
and the json
format are good , but the tsv
format output could be a charming option when performing parsing for the downstream analysis.
In addition, can you add the coverage info to the output so that we can have a quick look at the validation assay?
Qi
Hi,
Thanks for providing mutscan, which is fast enough to generally find the mutations.
However, I find it hard to display the variants that are already observed in IGV, mapped using raw reads. There are 10000x reads for wild-type, and 11 (6+, 5-) for mutant allele.
It will be great if you can share some experience.
Thanks
As main html file(coloRectS2.mutscan.html)'s code show:
src='/home/foo/Work/Project/bar/coloRectS2.mutscan.html.files/index.html'
So, I can only use current directory as output directory?
Could you trim the header of the html report file path in main html's src code?
Thanks!
After compiling MutScan from source, I have not been able to run it successfully on the test data provided in the repository. I ran the command in the README, which gave the following output:
testdata$ mutscan -1 R1.fq.gz -2 R2.fq.gz
MutScan didn't find any mutation
mutscan -1 R1.fq.gz -2 R2.fq.gz
Mutscan v1.14.0, time used: 1 seconds
Am I doing something wrong?
when use fastp
+ gencore
, can not use GATK SamToFastq
.
gencore
copy the flag of R1 reads as R2 reads (or R2 as R1)?
For example,
Before gencore
A00877:990:HL5F3DSX3:4:2111:6361:29731:UMI_CCCTGAGTGT 1187 chr1 27023101 60 2S111M = 27023101 111 GCGGGAAAGGAGCTGCAGGACGGGGCCGAGAGCAATGGGGGTGGCGGCGGCGGCGGAGCCGGCAGCGGCGGCGGGCCCGGCGCGGAGCCGGACCTGAAGAACTCGAACGGGAA FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFFFFF: NM:i:0 MD:Z:111 MC:Z:2S111M AS:i:111 XS:i:20 RG:Z:M30713-3MJ15_M30713-3MJ15_llluma_L4
A00877:990:HL5F3DSX3:4:2111:6361:29731:UMI_CCCTGAGTGT 1107 chr1 27023101 60 2S111M = 27023101 -111 GCGGGAAAGGAGCTGCAGGACGGGGCCGAGAGCAATGGGGGTGGCGGCGGCGGCGGAGCCGGCAGCGGCGGCGGGCCCGGCGCGGAGCCGGACCTGAAGAACTCGAACGGGAA FFFFFF,FFFFF::FFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFF NM:i:0 MD:Z:111 MC:Z:2S111M AS:i:111 XS:i:20 RG:Z:M30713-3MJ15_M30713-3MJ15_llluma_L4
After gencore
A00877:990:HL5F3DSX3:4:2111:6361:29731:UMI_CCCTGAGTGT 1187 chr1 27023101 60 2S111M = 27023098 111 GCGGGAAAGGAGCTGCAGGACGGGGCCGAGAGCAATGGGGGTGGCGGCGGCGGCGGAGCCGGCAGCGGCGGCGGGCCCGGCGCGGAGCCGGACCTGAAGAACTCGAACGGGAA FFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NM:i:0 MD:Z:12G2G17T24G8G11G1G18T1G8 MC:Z:3M1D110M AS:i:66 XS:i:22 RG:Z:M30713-3MJ15_M30713-3MJ15_llluma_L4 FR:i:3
A00877:990:HL5F3DSX3:4:2111:6361:29731:UMI_CCCTGAGTGT 1187 chr1 27023101 60 2S111M = 27023101 111 GCGGGAAAGGAGCTGCAGGACGGGGCCGAGAGCAATGGGGGTGGCGGCGGCGGCGGAGCCGGCAGCGGCGGCGGGCCCGGCGCGGAGCCGGACCTGAAGAACTCGAACGGGAA FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF: NM:i:0 MD:Z:111 MC:Z:2S111M AS:i:111 XS:i:20 RG:Z:M30713-3MJ15_M30713-3MJ15_llluma_L4 FR:i:3
Am I making a mistake, or is there some other solution。
I want run fastp
with the ConsensusReads.
Thank you for your great work!
When i compile it, the error arises.
$make
g++ -std=c++11 -g -Wall -I./inc -O3 -c src/common.cpp -o obj/common.o
cc1plus: error:Unable to identify the command-line options“-std=c++11”
make: *** [obj/common.o] error 1
Hi,
We are overall very happy with MutScan, but It seems some reads are missed when --simplified
is on
:
R1.fastq :
@NL500104:785:HCMC2AFX5:1:11303:22509:17003 1:N:0:ACAGTGAC+CAGTGACA
GGAAAGGGAAGGACTGGGAGAGACACAAAGACCAGAGCCAGCCTCAGGGACAAGAGATTCCAGTTTTAGGCCTTT
+
AAAAAEEEE6EEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEE//EEAEEEEEEEEE/EEE/EEEE<EEEEE/<<E
R2.fastq :
@NL500104:785:HCMC2AFX5:1:11303:22509:17003 2:N:0:ACAGTGAC+CAGTGACA
TTCCCTCGTTGAACATGCTGTCAAACCAGGACACTGGCTCCAGCTTGTGTTTCTGTTCTTGACCATCGTCTGGGA
+
AAAAAEEEEEEE6EEEEEEAEAAEEEEEAEEEEEEEEEEEEEEAAEAE<EEEE/EAEEEEE/EEEEEEEEAEE/E
design.conf :
#name, left_seq_of_mutation_point, mutation_seq, right_seq_of_mutation_point, chromosome
rs8017_C, CCAGGACACTGGCTCCAGCTTGTGTTTCTG, C, TCTTGGCCATCGTCTGGGAGTGGACATGCA, chr16
rs8017_T, CCAGGACACTGGCTCCAGCTTGTGTTTCTG, T, TCTTGGCCATCGTCTGGGAGTGGACATGCA, chr16
mutscan --read1 R1.fastq --read2 R2.fastq --support 0 --html mutscan.html --mutation design.conf --simplified on
---------------
rs8017_C CCAGGACACTGGCTCCAGCTTGTGTTTCTG C TCTTGGCCATCGTCTGGGAGTGGACATGCA chr16
---------------
rs8017_T CCAGGACACTGGCTCCAGCTTGTGTTTCTG T TCTTGGCCATCGTCTGGGAGTGGACATGCA chr16
/usr/local/bin/mutscan --read1 R1.fastq --read2 R2.fastq --support 0 --html mutscan.html --mutation design.conf --simplified on
Mutscan v1.14.1, time used: 0 seconds
mutscan --read1 R1.fastq --read2 R2.fastq --support 0 --html mutscan.html --mutation design.conf
---------------
rs8017_C CCAGGACACTGGCTCCAGCTTGTGTTTCTG C TCTTGGCCATCGTCTGGGAGTGGACATGCA chr16
---------------
rs8017_T CCAGGACACTGGCTCCAGCTTGTGTTTCTG T TCTTGGCCATCGTCTGGGAGTGGACATGCA chr16
1, pos: 55, distance: 1, forward
@NL500104:785:HCMC2AFX5:1:11303:22509:17003 2:N:0:ACAGTGAC+CAGTGACA
TTCCCTCGTTGAACATGCTGTCAAA CCAGGACACTGGCTCCAGCTTGTGTTTCTG T TCTTGACCATCGTCTGGGA
+
AAAAAEEEEEEE6EEEEEEAEAAEE EEEAEEEEEEEEEEEEEEAAEAE<EEEE/E A EEEEE/EEEEEEEEAEE/E
/usr/local/bin/mutscan --read1 R1.fastq --read2 R2.fastq --support 0 --html mutscan.html --mutation design.conf
Mutscan v1.14.1, time used: 0 seconds
Command example with vep-annotated VCF as input:
mutscan -1 R1.fq.gz -2 R2.fq.gz -m VEP.vcf -r ref.a
outputs:
No mutation to be scanned
Your VCF contains no valid records
So I conclude that there must be something is wrong. However, when raw vcf is used, no such warning but empty results.
Is it possible to get a list of readids that support (or not support) a list of known mutations? I have a bunch of T>C mutations from 4sU seq and would like to separate newly generated transcripts (with mutations) from older transcripts (without mutations).
Hello!
I have "chr pos gene ref and alt "and so on ,but I have no "cosmic,STRAND and CNT".How I should do to make a VCF-format mutation file ?
Thank you for your help!
../mutscan -1 R1.fq.gz -2 R2.fq.gz -r tinyref.fa -m tinyvcf.vcf
No mutation to be scanned
Your VCF contains no valid records
Hi,
Do you have a manuscript describing the method? I'd prefer to read about how it works rather than dig directly into the code if possible. And it seems that this manuscript is entirely unrelated.
Thank you!
Att.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.