YeoLab / outrigger

Create a *de novo* alternative splicing database, validate splicing events, and quantify percent spliced-in (Psi) from RNA seq data
http://yeolab.github.io/outrigger/
BSD 3-Clause "New" or "Revised" License
61 stars 22 forks source link

Database locked when detecting de novo exons after no novel exons found on a chromosome #100

Open QuentinLetourneur opened 4 years ago

QuentinLetourneur commented 4 years ago

Description

Hi, I've encountered this error during test and this execution. It seem to trigger when there are novel exons found on a chromosome but are already present in the database or can't be added.

I came to this conclusion because I ran a test on a sample and it worked. I then wanted to analyse other close samples with the same gtf database and I came accrose the same error than shown below. In the present case what confuse me is that the database is created, it found novel exons but they aren't added.

I'm not familiar with sqlite but it seem that the connection to the databse is not closed correctly when catching the ValueError in detect_exons_from_junctions that could lead to a locked database the next time the program try to access it.

Here is the copy of the end of the log : 2020-08-06 12:15:11 Writing ./outrigger_output/junctions/reads.csv ...

2020-08-06 12:17:22 Done. 2020-08-06 12:17:22 Filtering for only junctions with minimum 10 reads ... 2020-08-06 12:19:26 441895/2713719 junctions remain after filtering out 2271824 junctions with < 10 reads. 2020-08-06 12:19:26 Done. 2020-08-06 12:19:27 Creating splice junction metadata of merely where junctions start and stop 2020-08-06 12:19:37 Done. 2020-08-06 12:19:37 Writing metadata of junctions to ./outrigger_output/junctions/metadata.csv ... 2020-08-06 12:19:38 Found GTF file in /SCVOL01/Workspace/Letourneur/Refs/Homo_sapiens.hg38/TCGA/gencode.v22.annotation.gtf 2020-08-06 12:19:38 Creating a "gffutils" database ./outrigger_output/index/gtf/gencode.v22.annotation.gtf.db ... 2020-08-06 12:38:52 Done. 2020-08-06 12:38:53 Looking up which exons are already defined ... 2020-08-06 12:39:10 Done. 2020-08-06 12:39:10 Detecting de novo exons based on gaps between junctions ... 2020-08-06 12:39:12 Finding all exons on chromosome chr1 ... 2020-08-06 19:04:56 Done. 2020-08-06 19:04:56 Filtering for only novel exons on chromosome chr1 ... 2020-08-06 19:04:56 Done. 2020-08-06 19:04:56 Creating gffutils.Feature objects for each novel exon, plus potentially its overlapping gene 2020-08-06 19:06:00 Done. 2020-08-06 19:06:00 Updating gffutils database with 3945 novel exons on chromosome chr1 ... 2020-08-06 19:06:01 No novel exons found on chromosome chr1 2020-08-06 19:06:01 Done. 2020-08-06 19:06:01 Finding all exons on chromosome chr10 ... 2020-08-06 20:04:36 Done. 2020-08-06 20:04:36 Filtering for only novel exons on chromosome chr10 ... 2020-08-06 20:04:36 Done. 2020-08-06 20:04:36 Creating gffutils.Feature objects for each novel exon, plus potentially its overlapping gene Traceback (most recent call last): File "/opt/python/bin/outrigger", line 11, in load_entry_point('outrigger==1.1.1', 'console_scripts', 'outrigger')() File "/opt/python/lib/python2.7/site-packages/outrigger/commandline.py", line 1071, in main cl = CommandLine(sys.argv[1:]) File "/opt/python/lib/python2.7/site-packages/outrigger/commandline.py", line 344, in init self.args.func() File "/opt/python/lib/python2.7/site-packages/outrigger/commandline.py", line 348, in index index.execute() File "/opt/python/lib/python2.7/site-packages/outrigger/commandline.py", line 755, in execute metadata, db) File "/opt/python/lib/python2.7/site-packages/outrigger/commandline.py", line 619, in make_exon_junction_adjacencies exon_junction_adjacencies.detect_exons_from_junctions() File "/opt/python/lib/python2.7/site-packages/outrigger/index/adjacencies.py", line 208, in detect_exons_from_junctions for x in novel_exons] File "/opt/python/lib/python2.7/site-packages/outrigger/io/gtf.py", line 249, in location_to_feature for g in overlapping_genes: File "/opt/python/lib/python2.7/site-packages/gffutils/interface.py", line 699, in region c.execute(query, tuple(args)) sqlite3.OperationalError: database is locked

Steps to Reproduce

  1. Launch outrigger on a sample
  2. Lauch it on another sample with the same reference using the existing gtf.db

Versions

I'm using the latest version of outrigger 1.1.1 that I downloaded a month ago. I work on Centos 7

Thank you for your help, Quentin