mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-21 05:45:37 +08:00
Merge pull request #5512 from mvdbeek/fix_new_pysam
[18.01] Make galaxy compatible with pysam 0.14
This commit is contained in:
@@ -12,6 +12,7 @@ import sys
|
||||
import tarfile
|
||||
import tempfile
|
||||
import zipfile
|
||||
from collections import OrderedDict
|
||||
from json import dumps
|
||||
|
||||
import h5py
|
||||
@@ -234,10 +235,10 @@ class BamNative(Binary):
|
||||
# TODO: Reference names, lengths, read_groups and headers can become very large, truncate when necessary
|
||||
dataset.metadata.reference_names = list(bam_file.references)
|
||||
dataset.metadata.reference_lengths = list(bam_file.lengths)
|
||||
dataset.metadata.bam_header = bam_file.header
|
||||
dataset.metadata.bam_header = OrderedDict((k, v) for k, v in bam_file.header.items())
|
||||
dataset.metadata.read_groups = [read_group['ID'] for read_group in dataset.metadata.bam_header.get('RG', []) if 'ID' in read_group]
|
||||
dataset.metadata.sort_order = bam_file.header.get('HD', {}).get('SO', None)
|
||||
dataset.metadata.bam_version = bam_file.header.get('HD', {}).get('VN', None)
|
||||
dataset.metadata.sort_order = dataset.metadata.bam_header.get('HD', {}).get('SO', None)
|
||||
dataset.metadata.bam_version = dataset.metadata.bam_header.get('HD', {}).get('VN', None)
|
||||
except Exception:
|
||||
# Per Dan, don't log here because doing so will cause datasets that
|
||||
# fail metadata to end in the error state
|
||||
@@ -383,25 +384,12 @@ class Bam(BamNative):
|
||||
|
||||
def set_meta(self, dataset, overwrite=True, **kwd):
|
||||
# These metadata values are not accessible by users, always overwrite
|
||||
super(Bam, self).set_meta(dataset=dataset, overwrite=overwrite, **kwd)
|
||||
index_file = dataset.metadata.bam_index
|
||||
if not index_file:
|
||||
index_file = dataset.metadata.spec['bam_index'].param.new_file(dataset=dataset)
|
||||
pysam.index(dataset.file_name, index_file.file_name)
|
||||
dataset.metadata.bam_index = index_file
|
||||
# Now use pysam with BAI index to determine additional metadata
|
||||
try:
|
||||
bam_file = pysam.AlignmentFile(dataset.file_name, mode='rb', index_filename=index_file.file_name)
|
||||
# TODO: Reference names, lengths, read_groups and headers can become very large, truncate when necessary
|
||||
dataset.metadata.reference_names = list(bam_file.references)
|
||||
dataset.metadata.reference_lengths = list(bam_file.lengths)
|
||||
dataset.metadata.bam_header = bam_file.header
|
||||
dataset.metadata.read_groups = [read_group['ID'] for read_group in dataset.metadata.bam_header.get('RG', []) if 'ID' in read_group]
|
||||
dataset.metadata.sort_order = bam_file.header.get('HD', {}).get('SO', None)
|
||||
dataset.metadata.bam_version = bam_file.header.get('HD', {}).get('VN', None)
|
||||
except Exception:
|
||||
# Per Dan, don't log here because doing so will cause datasets that
|
||||
# fail metadata to end in the error state
|
||||
pass
|
||||
|
||||
def sniff(self, file_name):
|
||||
return super(Bam, self).sniff(file_name) and not self.dataset_content_needs_grooming(file_name)
|
||||
|
||||
@@ -11,7 +11,7 @@ mercurial==3.7.3; python_version < '3.0'
|
||||
pycrypto==2.6.1
|
||||
uWSGI==2.0.15
|
||||
# Flexible BAM index naming is new to core pysam
|
||||
pysam>=0.13
|
||||
pysam==0.14
|
||||
|
||||
# Install python_lzo if you want to support indexed access to lzo-compressed
|
||||
# locally cached maf files via bx-python
|
||||
|
||||
Reference in New Issue
Block a user