mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge pull request #39 from mvdbeek/bam_unsorted
Fix tests and revert additional sorting of converters
This commit is contained in:
@@ -288,8 +288,8 @@
|
||||
<datatype extension="qual454" type="galaxy.datatypes.qualityscore:QualityScore454" display_in_upload="true"/>
|
||||
<datatype extension="roadmaps" type="galaxy.datatypes.assembly:Roadmaps" display_in_upload="false"/>
|
||||
<datatype extension="sam" type="galaxy.datatypes.tabular:Sam" display_in_upload="true">
|
||||
<converter file="sam_to_bam.xml" target_datatype="bam"/>
|
||||
<converter file="sam_to_bam_native.xml" target_datatype="bam_native"/>
|
||||
<converter file="sam_to_bam.xml" target_datatype="bam"/>
|
||||
<converter file="sam_to_bigwig_converter.xml" target_datatype="bigwig"/>
|
||||
</datatype>
|
||||
<datatype extension="scf" type="galaxy.datatypes.binary:Scf" mimetype="application/octet-stream" display_in_upload="true" description="A binary sequence file in 'scf' format with a '.scf' file extension. You must manually select this 'File Format' when uploading the file." description_url="https://wiki.galaxyproject.org/Learn/Datatypes#Scf"/>
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
<command><![CDATA[
|
||||
samtools view
|
||||
-b
|
||||
-h
|
||||
-@ \${GALAXY_SLOTS:-2}
|
||||
-o '${output}'
|
||||
'$input'
|
||||
|
||||
@@ -798,34 +798,19 @@ class Registry(object):
|
||||
tabular.CSV()
|
||||
]
|
||||
|
||||
def get_converters_by_datatype(self, ext, priority_formats=None):
|
||||
"""
|
||||
Returns available converters by source type.
|
||||
`priority_formats` will contain a list of format extensions that should
|
||||
be handled with priority. This means they will end up infront of the
|
||||
returned ordered dictionary.
|
||||
"""
|
||||
def get_converters_by_datatype(self, ext):
|
||||
"""Returns available converters by source type"""
|
||||
if ext not in self._converters_by_datatype:
|
||||
converters = odict()
|
||||
prio_converters = odict()
|
||||
source_datatype = type(self.get_datatype_by_extension(ext))
|
||||
for ext2, converters_dict in self.datatype_converters.items():
|
||||
converter_datatype = type(self.get_datatype_by_extension(ext2))
|
||||
if issubclass(source_datatype, converter_datatype):
|
||||
for k, v in converters_dict.items():
|
||||
if k in priority_formats:
|
||||
prio_converters[k] = v
|
||||
else:
|
||||
converters[k] = v
|
||||
converters.update(converters_dict)
|
||||
# Ensure ext-level converters are present
|
||||
if ext in self.datatype_converters.keys():
|
||||
for k, v in self.datatype_converters[ext].items():
|
||||
if k in priority_formats:
|
||||
prio_converters[k] = v
|
||||
else:
|
||||
converters[k] = v
|
||||
prio_converters.update(converters)
|
||||
self._converters_by_datatype[ext] = prio_converters
|
||||
converters.update(self.datatype_converters[ext])
|
||||
self._converters_by_datatype[ext] = converters
|
||||
return self._converters_by_datatype[ext]
|
||||
|
||||
def get_converter_by_target_type(self, source_ext, target_ext):
|
||||
@@ -837,10 +822,7 @@ class Registry(object):
|
||||
|
||||
def find_conversion_destination_for_dataset_by_extensions(self, dataset, accepted_formats, converter_safe=True):
|
||||
"""Returns ( target_ext, existing converted dataset )"""
|
||||
|
||||
converters = self.get_converters_by_datatype(dataset.ext, [k.file_ext for k in accepted_formats])
|
||||
|
||||
for convert_ext in converters:
|
||||
for convert_ext in self.get_converters_by_datatype(dataset.ext):
|
||||
convert_ext_datatype = self.get_datatype_by_extension(convert_ext)
|
||||
if convert_ext_datatype is None:
|
||||
self.log.warning("Datatype class not found for extension '%s', which is used as target for conversion from datatype '%s'" % (convert_ext, dataset.ext))
|
||||
|
||||
@@ -6,31 +6,41 @@
|
||||
#if $input1:
|
||||
samtools view
|
||||
-b
|
||||
-h
|
||||
-@ \${GALAXY_SLOTS:-2}
|
||||
-o '${output}'
|
||||
-o '$bam_native_output'
|
||||
'$input1'
|
||||
#else
|
||||
cp '$input2' '$output'
|
||||
#elif $input2:
|
||||
cp '$input2' '$bam_native_output'
|
||||
#elif $input3:
|
||||
cp '$input3' '$bam_output'
|
||||
#end if
|
||||
]]>
|
||||
</command>
|
||||
<inputs>
|
||||
<param name="input1" type="data" format="sam" label="SAM file" optional="true"/>
|
||||
<param name="input2" type="data" format="bam_native" label="Unsorted BAM file" optional="true"/>
|
||||
<param name="input3" type="data" format="bam" label="Sorted BAM file" optional="true"/>
|
||||
</inputs>
|
||||
<outputs>
|
||||
<data name="output" format="bam_native"/>
|
||||
<data name="bam_native_output" format="bam_native"/>
|
||||
<data name="bam_output" format="bam"/>
|
||||
</outputs>
|
||||
<tests>
|
||||
<!-- Test that bam native output won't be sorted-->
|
||||
<test>
|
||||
<param name="input1" value="sam_with_header.sam" ftype="sam"/>
|
||||
<output name="output" file="bam_native_from_sam.bam" ftype="bam_native"/>
|
||||
<output name="bam_native_output" file="bam_native_from_sam.bam" ftype="bam_native"/>
|
||||
</test>
|
||||
<!-- Test that sam input is properly converted to bam native -->
|
||||
<test>
|
||||
<param name="input2" value="sam_with_header.sam" ftype="sam"/>
|
||||
<output name="output" file="bam_native_from_sam.bam" ftype="bam_native"/>
|
||||
<output name="bam_native_output" file="bam_native_from_sam.bam" ftype="bam_native"/>
|
||||
</test>
|
||||
<!-- Test that sam input is properly converted to bam -->
|
||||
<test>
|
||||
<param name="input3" value="sam_with_header.sam" ftype="sam"/>
|
||||
<output name="bam_output" file="bam_from_sam.bam" ftype="bam"/>
|
||||
</test>
|
||||
</tests>
|
||||
<help>
|
||||
|
||||
Reference in New Issue
Block a user