# Path: q2_types/plugin_setup.py

# 
# Path: q2_types/sample_data/_type.py

# 
# Path: q2_types/per_sample_sequences/_format.py
# class FastqAbsolutePathManifestFormatV2(model.TextFileFormat):
# class _SingleEndFastqManifestV2(FastqAbsolutePathManifestFormatV2):
# class SingleEndFastqManifestPhred33V2(_SingleEndFastqManifestV2):
# class SingleEndFastqManifestPhred64V2(_SingleEndFastqManifestV2):
# class _PairedEndFastqManifestV2(FastqAbsolutePathManifestFormatV2):
# class PairedEndFastqManifestPhred33V2(_PairedEndFastqManifestV2):
# class PairedEndFastqManifestPhred64V2(_PairedEndFastqManifestV2):
# class _FastqManifestBase(model.TextFileFormat):
# class FastqManifestFormat(_FastqManifestBase):
# class FastqAbsolutePathManifestFormat(_FastqManifestBase):
# class SingleEndFastqManifestPhred33(FastqAbsolutePathManifestFormat):
# class SingleEndFastqManifestPhred64(FastqAbsolutePathManifestFormat):
# class PairedEndFastqManifestPhred33(FastqAbsolutePathManifestFormat):
# class PairedEndFastqManifestPhred64(FastqAbsolutePathManifestFormat):
# class YamlFormat(model.TextFileFormat):
# class FastqGzFormat(model.BinaryFileFormat):
# class CasavaOneEightSingleLanePerSampleDirFmt(model.DirectoryFormat):
# class _SingleLanePerSampleFastqDirFmt(CasavaOneEightSingleLanePerSampleDirFmt):
# class SingleLanePerSampleSingleEndFastqDirFmt(_SingleLanePerSampleFastqDirFmt):
# class SingleLanePerSamplePairedEndFastqDirFmt(_SingleLanePerSampleFastqDirFmt):
# class CasavaOneEightLanelessPerSampleDirFmt(model.DirectoryFormat):
# class QIIME1DemuxFormat(model.TextFileFormat):
#     METADATA_COLUMNS = None
#     METADATA_COLUMNS = {'absolute-filepath': 'forward'}
#     METADATA_COLUMNS = {'forward-absolute-filepath': 'forward',
#                         'reverse-absolute-filepath': 'reverse'}
#     EXPECTED_HEADER = None
#     PATH_HEADER_LABEL = None
#     EXPECTED_HEADER = ['sample-id', 'filename', 'direction']
#     PATH_HEADER_LABEL = 'filename'
#     EXPECTED_HEADER = ['sample-id', 'absolute-filepath', 'direction']
#     PATH_HEADER_LABEL = 'absolute-filepath'
#     _CHECK_PAIRED = True
#     _REQUIRE_PAIRED = False
#     _CHECK_PAIRED = False
#     _REQUIRE_PAIRED = True
#     def _validate_(self, level):
#     def _check_n_records(self, root, n=None):
#     def _validate_(self, level):
#     def _validate_(self, level):
#     def sniff(self):
#     def _check_n_records(self, n=None):
#     def _validate_(self, level):
#     def sequences_path_maker(self, sample_id, barcode_id, lane_number,
#                              read_number):
#     def _find_duplicates(self, ids):
#     def manifest(self):
#         def munge_fn_closure(val):
#     def _validate_(self, level):
#     def sequences_path_maker(self, sample_id, barcode_id, read_number):
#     def sniff(self):
#     def _validate(self, filehandle, *, num_records):
#     def _parse_id(self, header):
#     def _validate_id(self, id):
#     def _validate_seq(self, seq):


from qiime2.plugin import SemanticType
from ..plugin_setup import plugin
from ..sample_data import SampleData
from . import (QIIME1DemuxDirFmt, SingleLanePerSampleSingleEndFastqDirFmt,
               SingleLanePerSamplePairedEndFastqDirFmt)
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file LICENSE, distributed with this software.
# ----------------------------------------------------------------------------




Sequences = SemanticType('Sequences', variant_of=SampleData.field['type'])
SequencesWithQuality = SemanticType(
    'SequencesWithQuality', variant_of=SampleData.field['type'])
PairedEndSequencesWithQuality = SemanticType(
    'PairedEndSequencesWithQuality', variant_of=SampleData.field['type'])
JoinedSequencesWithQuality = SemanticType(
    'JoinedSequencesWithQuality', variant_of=SampleData.field['type'])

plugin.register_semantic_types(Sequences, SequencesWithQuality,
                               PairedEndSequencesWithQuality,
                               JoinedSequencesWithQuality)

plugin.register_semantic_type_to_format(
    SampleData[Sequences],
    artifact_format=QIIME1DemuxDirFmt
)
plugin.register_semantic_type_to_format(
    SampleData[SequencesWithQuality],
    artifact_format=SingleLanePerSampleSingleEndFastqDirFmt
)
plugin.register_semantic_type_to_format(
    SampleData[JoinedSequencesWithQuality],

# Path: q2_types/plugin_setup.py

# 
# Path: q2_types/sample_data/_type.py

# 
# Path: q2_types/per_sample_sequences/_format.py
# class FastqAbsolutePathManifestFormatV2(model.TextFileFormat):
# class _SingleEndFastqManifestV2(FastqAbsolutePathManifestFormatV2):
# class SingleEndFastqManifestPhred33V2(_SingleEndFastqManifestV2):
# class SingleEndFastqManifestPhred64V2(_SingleEndFastqManifestV2):
# class _PairedEndFastqManifestV2(FastqAbsolutePathManifestFormatV2):
# class PairedEndFastqManifestPhred33V2(_PairedEndFastqManifestV2):
# class PairedEndFastqManifestPhred64V2(_PairedEndFastqManifestV2):
# class _FastqManifestBase(model.TextFileFormat):
# class FastqManifestFormat(_FastqManifestBase):
# class FastqAbsolutePathManifestFormat(_FastqManifestBase):
# class SingleEndFastqManifestPhred33(FastqAbsolutePathManifestFormat):
# class SingleEndFastqManifestPhred64(FastqAbsolutePathManifestFormat):
# class PairedEndFastqManifestPhred33(FastqAbsolutePathManifestFormat):
# class PairedEndFastqManifestPhred64(FastqAbsolutePathManifestFormat):
# class YamlFormat(model.TextFileFormat):
# class FastqGzFormat(model.BinaryFileFormat):
# class CasavaOneEightSingleLanePerSampleDirFmt(model.DirectoryFormat):
# class _SingleLanePerSampleFastqDirFmt(CasavaOneEightSingleLanePerSampleDirFmt):
# class SingleLanePerSampleSingleEndFastqDirFmt(_SingleLanePerSampleFastqDirFmt):
# class SingleLanePerSamplePairedEndFastqDirFmt(_SingleLanePerSampleFastqDirFmt):
# class CasavaOneEightLanelessPerSampleDirFmt(model.DirectoryFormat):
# class QIIME1DemuxFormat(model.TextFileFormat):
#     METADATA_COLUMNS = None
#     METADATA_COLUMNS = {'absolute-filepath': 'forward'}
#     METADATA_COLUMNS = {'forward-absolute-filepath': 'forward',
#                         'reverse-absolute-filepath': 'reverse'}
#     EXPECTED_HEADER = None
#     PATH_HEADER_LABEL = None
#     EXPECTED_HEADER = ['sample-id', 'filename', 'direction']
#     PATH_HEADER_LABEL = 'filename'
#     EXPECTED_HEADER = ['sample-id', 'absolute-filepath', 'direction']
#     PATH_HEADER_LABEL = 'absolute-filepath'
#     _CHECK_PAIRED = True
#     _REQUIRE_PAIRED = False
#     _CHECK_PAIRED = False
#     _REQUIRE_PAIRED = True
#     def _validate_(self, level):
#     def _check_n_records(self, root, n=None):
#     def _validate_(self, level):
#     def _validate_(self, level):
#     def sniff(self):
#     def _check_n_records(self, n=None):
#     def _validate_(self, level):
#     def sequences_path_maker(self, sample_id, barcode_id, lane_number,
#                              read_number):
#     def _find_duplicates(self, ids):
#     def manifest(self):
#         def munge_fn_closure(val):
#     def _validate_(self, level):
#     def sequences_path_maker(self, sample_id, barcode_id, read_number):
#     def sniff(self):
#     def _validate(self, filehandle, *, num_records):
#     def _parse_id(self, header):
#     def _validate_id(self, id):
#     def _validate_seq(self, seq):


# Path: q2_types/per_sample_sequences/_type.py
from qiime2.plugin import SemanticType
from ..plugin_setup import plugin
from ..sample_data import SampleData
from . import (QIIME1DemuxDirFmt, SingleLanePerSampleSingleEndFastqDirFmt,
               SingleLanePerSamplePairedEndFastqDirFmt)

# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file LICENSE, distributed with this software.
# ----------------------------------------------------------------------------




Sequences = SemanticType('Sequences', variant_of=SampleData.field['type'])
SequencesWithQuality = SemanticType(
    'SequencesWithQuality', variant_of=SampleData.field['type'])
PairedEndSequencesWithQuality = SemanticType(
    'PairedEndSequencesWithQuality', variant_of=SampleData.field['type'])
JoinedSequencesWithQuality = SemanticType(
    'JoinedSequencesWithQuality', variant_of=SampleData.field['type'])

plugin.register_semantic_types(Sequences, SequencesWithQuality,
                               PairedEndSequencesWithQuality,
                               JoinedSequencesWithQuality)

plugin.register_semantic_type_to_format(
    SampleData[Sequences],
    artifact_format=QIIME1DemuxDirFmt
)
plugin.register_semantic_type_to_format(
    SampleData[SequencesWithQuality],
    artifact_format=SingleLanePerSampleSingleEndFastqDirFmt
)
plugin.register_semantic_type_to_format(
    SampleData[JoinedSequencesWithQuality],

    artifact_format=SingleLanePerSampleSingleEndFastqDirFmt