Skip to content

Commit aba63b0

Browse files
authored
Add a file_dict method to the BamDirFmt and MultiBamDirFmt (#387)
* Add a file_dict method to the BamDirFmt and MultiBamDirFmt * Shorten long line
1 parent 8686840 commit aba63b0

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

q2_types/per_sample_sequences/_formats.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from q2_types.bowtie2 import Bowtie2IndexDirFmt
2525
from q2_types.feature_data import DNAFASTAFormat
2626
from ._util import _parse_sequence_filename, _manifest_to_df
27-
from .._util import FastqGzFormat
27+
from .._util import FastqGzFormat, FileDictMixin
2828
from ._util import validate_paired_ends_equal_record_count
2929

3030

@@ -708,15 +708,20 @@ def _validate_(self, level):
708708

709709

710710
# borrowed from q2-phylogenomics
711-
class BAMDirFmt(model.DirectoryFormat):
711+
class BAMDirFmt(model.DirectoryFormat, FileDictMixin):
712+
pathspec = r'.+\.bam$'
713+
suffixes = ['.bam']
712714
bams = model.FileCollection(r'.+\.bam', format=BAMFormat)
713715

714716
@bams.set_path_maker
715717
def bams_path_maker(self, sample_id):
716718
return '%s.bam' % sample_id
717719

718720

719-
class MultiBAMDirFmt(MultiDirValidationMixin, model.DirectoryFormat):
721+
class MultiBAMDirFmt(MultiDirValidationMixin, model.DirectoryFormat,
722+
FileDictMixin):
723+
pathspec = r'.+\.bam$'
724+
suffixes = ['.bam']
720725
bams = model.FileCollection(r'.+\/.+\.bam', format=BAMFormat)
721726

722727
@bams.set_path_maker

q2_types/per_sample_sequences/tests/test_formats.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -858,6 +858,13 @@ def test_bam_dirmt(self, p):
858858

859859
format.validate()
860860

861+
file_dict = format.file_dict(relative=True)
862+
863+
assert file_dict == {
864+
"sample1": "sample1.bam",
865+
"sample2": "sample2.bam",
866+
}
867+
861868
@patch('subprocess.run', return_value=Mock(returncode=3))
862869
def test_bam_dirmt_invalid(self, p):
863870
# this patch is not ideal but samtools' installation sometimes can
@@ -877,6 +884,19 @@ def test_multibam_dirmt(self, p):
877884

878885
format.validate()
879886

887+
file_dict = format.file_dict(relative=True)
888+
889+
assert file_dict == {
890+
"sample1": {
891+
"map1": "sample1/map1.bam",
892+
"map2": "sample1/map2.bam",
893+
},
894+
"sample2": {
895+
"map1": "sample2/map1.bam",
896+
"map2": "sample2/map2.bam",
897+
},
898+
}
899+
880900

881901
if __name__ == "__main__":
882902
unittest.main()

0 commit comments

Comments
 (0)