[med-svn] [python-pbcore] 01/03: Imported Upstream version 1.2.1+dfsg1

Afif Elghraoui afif-guest at moszumanska.debian.org
Tue Aug 4 09:43:41 UTC 2015


This is an automated email from the git hooks/post-receive script.

afif-guest pushed a commit to branch master
in repository python-pbcore.

commit 716f5d3b99efa4cdb9d0614e72ff4c74d869c840
Author: Afif Elghraoui <afif at ghraoui.name>
Date:   Mon Aug 3 23:35:48 2015 -0700

    Imported Upstream version 1.2.1+dfsg1
---
 .circleci/installHDF5.sh                           |    14 +
 .gitignore                                         |     8 +-
 CHANGELOG.org                                      |     9 +
 LICENSES.txt                                       |    27 +
 MANIFEST.in                                        |    15 +
 README.md                                          |    18 +-
 bin/dataset.py                                     |    62 +
 bin/updateXSDs.py                                  |    46 +
 circle.yml                                         |    17 +
 doc/conf.py                                        |     3 +-
 doc/index.rst                                      |     2 +
 doc/pacbio-theme/static/headerGradient.jpg         |   Bin 7099 -> 0 bytes
 doc/pacbio-theme/static/pacbio.css                 |   238 -
 doc/pacbio-theme/static/pacbioLogo.png             |   Bin 3128 -> 0 bytes
 doc/pacbio-theme/static/pygments.css               |    55 -
 doc/pacbio-theme/theme.conf                        |     4 -
 doc/pbcore.deprecated.rst                          |    30 -
 doc/pbcore.io.dataset.rst                          |   298 +
 pbcore/__init__.py                                 |     2 +-
 pbcore/data/Makefile                               |    37 +
 pbcore/data/__init__.py                            |     9 +-
 pbcore/data/aligned_reads_1.bam                    |   Bin 34798 -> 0 bytes
 pbcore/data/aligned_reads_1.bam.bai                |   Bin 160 -> 0 bytes
 pbcore/data/bam_mapping.bam                        |   Bin 172060 -> 0 bytes
 pbcore/data/bam_mapping.bam.bai                    |   Bin 112 -> 0 bytes
 pbcore/data/bam_mapping.bam.pbi                    |   Bin 41344 -> 0 bytes
 pbcore/data/cmph5_mapping.cmp.h5                   |   Bin 236542 -> 0 bytes
 pbcore/data/datasets/__init__.py                   |    58 +
 pbcore/data/datasets/alignment.dataset.xml         |    48 +
 pbcore/data/datasets/barcode.dataset.xml           |    11 +
 pbcore/data/datasets/ccsread.dataset.xml           |    15 +
 pbcore/data/datasets/contig.dataset.xml            |    18 +
 pbcore/data/datasets/fofn.fofn                     |     2 +
 pbcore/data/datasets/hdfsubread_dataset.xml        |    72 +
 pbcore/data/datasets/lambda.pbalign.xml            |     2 +
 pbcore/data/datasets/lambda.reference.xml          |     2 +
 pbcore/data/datasets/pbalchemysim.pbalign.xml      |     2 +
 pbcore/data/datasets/pbalchemysim0.bas.h5          |   Bin 0 -> 437818 bytes
 pbcore/data/datasets/pbalchemysim0.pbalign.bam     |   Bin 0 -> 303745 bytes
 pbcore/data/datasets/pbalchemysim0.pbalign.bam.bai |   Bin 0 -> 1352 bytes
 pbcore/data/datasets/pbalchemysim0.pbalign.bam.pbi |   Bin 0 -> 2115 bytes
 .../pbalchemysim0.pbalign.chunk0contigs.xml        |     2 +
 .../pbalchemysim0.pbalign.chunk1contigs.xml        |     2 +
 pbcore/data/datasets/pbalchemysim0.pbalign.xml     |     2 +
 pbcore/data/datasets/pbalchemysim0.reference.fasta |  1515 ++
 .../datasets/pbalchemysim0.reference.fasta.fai     |    59 +
 pbcore/data/datasets/pbalchemysim0.reference.xml   |     2 +
 pbcore/data/datasets/pbalchemysim0.subread.xml     |     2 +
 pbcore/data/datasets/pbalchemysim0.subreads.bam    |   Bin 0 -> 301012 bytes
 pbcore/data/datasets/pbalchemysim1.bas.h5          |   Bin 0 -> 420626 bytes
 pbcore/data/datasets/pbalchemysim1.pbalign.bam     |   Bin 0 -> 287718 bytes
 pbcore/data/datasets/pbalchemysim1.pbalign.bam.bai |   Bin 0 -> 1496 bytes
 pbcore/data/datasets/pbalchemysim1.pbalign.bam.pbi |   Bin 0 -> 2028 bytes
 pbcore/data/datasets/pbalchemysim1.pbalign.xml     |     2 +
 pbcore/data/datasets/pbalchemysim1.subread.xml     |     2 +
 pbcore/data/datasets/pbalchemysim1.subreads.bam    |   Bin 0 -> 284875 bytes
 pbcore/data/datasets/reference.dataset.xml         |    20 +
 pbcore/data/datasets/subread.dataset.xml           |   472 +
 pbcore/data/datasets/subreadSetWithStats.xml       |     2 +
 .../datasets/transformed_rs_subread.dataset.xml    |    72 +
 ...100569412550000001823090301191423_s1_p0.ccs.bam |   Bin 0 -> 280793 bytes
 ...69412550000001823090301191423_s1_p0.ccs.bam.bai |   Bin 0 -> 16 bytes
 ...00001823085912221377_s1_X0.aligned_subreads.bam |   Bin 0 -> 201867 bytes
 ...1823085912221377_s1_X0.aligned_subreads.bam.bai |   Bin 0 -> 112 bytes
 ...1823085912221377_s1_X0.aligned_subreads.bam.pbi |   Bin 0 -> 2521 bytes
 ...01823085912221377_s1_X0.aligned_subreads.cmp.h5 |   Bin 0 -> 297430 bytes
 ...4852550000001823085912221377_s1_X0.subreads.bam |   Bin 202934 -> 204413 bytes
 ...550000001823085912221377_s1_X0.subreads.bam.bai |   Bin 0 -> 16 bytes
 ...550000001823085912221377_s1_X0.subreads.bam.pbi |   Bin 0 -> 1314 bytes
 pbcore/io/FastaIO.py                               |    20 +-
 pbcore/io/__init__.py                              |     2 +
 pbcore/io/align/BamAlignment.py                    |   102 +-
 pbcore/io/align/BamIO.py                           |    70 +-
 pbcore/io/align/CmpH5IO.py                         |    25 +-
 pbcore/io/align/PacBioBamIndex.py                  |   126 +-
 pbcore/io/align/_BamSupport.py                     |    37 +-
 pbcore/io/align/__init__.py                        |     9 +-
 pbcore/io/align/_bgzf.py                           |   860 ++
 pbcore/io/base.py                                  |     8 +
 pbcore/io/dataset/DataSetIO.py                     |  2127 +++
 pbcore/io/dataset/DataSetMembers.py                |  1582 +++
 pbcore/io/dataset/DataSetReader.py                 |   304 +
 pbcore/io/dataset/DataSetValidator.py              |    53 +
 pbcore/io/dataset/DataSetWriter.py                 |   185 +
 pbcore/io/dataset/DataSetXsd.py                    | 13921 +++++++++++++++++++
 pbcore/io/dataset/EntryPoints.py                   |   170 +
 pbcore/io/dataset/__init__.py                      |    23 +
 pbcore/io/opener.py                                |    77 +-
 pbcore/sequence.py                                 |     8 +-
 requirements-dev.txt                               |     3 +
 requirements.txt                                   |     4 +
 setup.cfg                                          |     2 +
 setup.py                                           |    13 +-
 tests/test_pbcore_extract_bam_sequence.py          |    63 +
 tests/test_pbcore_io_AlnFileReaders.py             |   329 +-
 tests/test_pbcore_io_FastaIO.py                    |     6 -
 tests/test_pbcore_io_lossless_bam.py               |    59 +
 tests/test_pbcore_io_unaligned_bam.py              |     7 +
 tests/test_pbcore_util_sequences.py                |    12 +-
 tests/test_pbdataset.py                            |   844 ++
 tests/test_pbdataset_subtypes.py                   |   108 +
 101 files changed, 23766 insertions(+), 671 deletions(-)

diff --git a/.circleci/installHDF5.sh b/.circleci/installHDF5.sh
new file mode 100644
index 0000000..3e7ab39
--- /dev/null
+++ b/.circleci/installHDF5.sh
@@ -0,0 +1,14 @@
+set -x
+set -e
+if [ ! -e prefix/lib/libhdf5.so ]; then
+  wget https://www.hdfgroup.org/ftp/HDF5//releases/hdf5-1.8.12/src/hdf5-1.8.12.tar.gz
+  tar xzf hdf5-1.8.12.tar.gz
+  mkdir -p prefix
+  PREFIX=$PWD/prefix
+  cd hdf5-1.8.12
+  ./configure --prefix=$PREFIX
+  make
+  make install
+else
+    echo "HDF5 build/install already completed!"
+fi
diff --git a/.gitignore b/.gitignore
index a0638ec..94df9da 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,4 +4,10 @@ doc/_build
 *~
 *.pyc
 *.egg-info
-nosetests.xml
\ No newline at end of file
+nosetests.xml
+
+.circleci/prefix
+.circleci/hdf5-1.8.12.tar.gz
+.circleci/hdf5-1.8.12
+
+.vagrant
diff --git a/CHANGELOG.org b/CHANGELOG.org
index 2764237..46802d3 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -1,3 +1,12 @@
+* Version 1.2.0
+- Support for the new BGZF-based bam.pbi file format
+- Support for PacBio BAM spec version 3.0b7; previous versions are
+  rejected
+
+* Version 1.1.0
+- Added dataset functionality to pbcore.io
+- Added dataset.py tools for CLI manipulation of DataSet XML files
+
 * Version 1.0.0
 - BAM fixes
 - Better FOFN handling
diff --git a/LICENSES.txt b/LICENSES.txt
index 5360bf2..bd42c96 100644
--- a/LICENSES.txt
+++ b/LICENSES.txt
@@ -1,3 +1,6 @@
+PacBio "BSD clear" license:
+===========================
+
 Copyright (c) 2011-2015, Pacific Biosciences of California, Inc.
 
 All rights reserved.
@@ -30,3 +33,27 @@ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+BioPython license (for pbcore/io/align/_bgzf.py):
+=================================================
+
+                 Biopython License Agreement
+
+Permission to use, copy, modify, and distribute this software and its
+documentation with or without modifications and for any purpose and
+without fee is hereby granted, provided that any copyright notices
+appear in all copies and that both those copyright notices and this
+permission notice appear in supporting documentation, and that the
+names of the contributors or copyright holders not be used in
+advertising or publicity pertaining to distribution of the software
+without specific prior permission.
+
+THE CONTRIBUTORS AND COPYRIGHT HOLDERS OF THIS SOFTWARE DISCLAIM ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT
+OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
+OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..0a99a1e
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,15 @@
+include *.md
+include *.org
+include *.txt
+include *.yml
+include Makefile
+recursive-include bin *.py
+recursive-include doc *.conf
+recursive-include doc *.css
+recursive-include doc *.jpg
+recursive-include doc *.png
+recursive-include doc *.py
+recursive-include doc *.rst
+recursive-include doc Makefile
+recursive-include pbcore Makefile
+recursive-include tests *.py
diff --git a/README.md b/README.md
index 4ffa878..718c1a7 100644
--- a/README.md
+++ b/README.md
@@ -1,19 +1,13 @@
+# pbcore [![Circle CI](https://circleci.com/gh/PacificBiosciences/pbcore.svg?style=svg)](https://circleci.com/gh/PacificBiosciences/pbcore)
 
-The pbcore package provides Python APIs for interacting with PacBio
+The `pbcore` package provides Python APIs for interacting with PacBio
 data files and writing bioinformatics applications.
 
-Installation:
--------------
-    % pip install numpy
-    % pip install h5py
+## Installation:
+
+    % pip install -r requirements.txt
     % python setup.py install
 
-Requirements:
--------------
-- Python 2.7
-- h5py >= 2.0
-- numpy >= 1.6.0
+## Documentation:
 
-Documentation:
---------------
 http://pacificbiosciences.github.io/pbcore/
diff --git a/bin/dataset.py b/bin/dataset.py
new file mode 100755
index 0000000..5570603
--- /dev/null
+++ b/bin/dataset.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+
+import sys
+import argparse
+import logging
+import time
+from pbcore.io.dataset import EntryPoints
+from pbcore import __VERSION__
+
+
+LOG_FORMAT = "%(asctime)s [%(levelname)s] %(message)s"
+
+def _setup_logging():
+    log = logging.getLogger()
+    logging.Formatter.converter = time.gmtime
+    if not log.handlers:
+        logging.basicConfig(level=logging.WARN, format=LOG_FORMAT)
+    return log
+
+def get_subparsers():
+    sps = [('create', EntryPoints.create_options),
+           ('filter', EntryPoints.filter_options),
+           ('merge', EntryPoints.merge_options),
+           ('split', EntryPoints.split_options),
+           ('validate', EntryPoints.validate_options),
+           ('loadstats', EntryPoints.loadStatsXml_options),
+           ('consolidate', EntryPoints.consolidate_options)]
+    return sps
+
+def add_subparsers(parser, sps):
+    subparsers = parser.add_subparsers(
+        title='DataSet sub-commands', dest='subparser_name',
+        help="Type {command} -h for a command's options")
+    for command_name, func in sps:
+        subparser = subparsers.add_parser(command_name)
+        subparser = func(subparser)
+    return parser
+
+def get_parser():
+    description = 'Run dataset.py by specifying a command.'
+    parser = argparse.ArgumentParser(version=__VERSION__,
+            description=description)
+    parser.add_argument("--debug", default=False, action='store_true',
+                        help="Turn on debug level logging")
+    subparser_list = get_subparsers()
+    parser = add_subparsers(parser, subparser_list)
+    return parser
+
+def main(argv=sys.argv):
+    """Main point of Entry"""
+    log = _setup_logging()
+    log.info("Starting {f} version {v} dataset manipulator".format(
+        f=__file__, v=__VERSION__))
+    parser = get_parser()
+    args = parser.parse_args()
+    if args.debug:
+        log.setLevel(logging.DEBUG)
+    return args.func(args)
+    #return main_runner_default(argv[1:], get_parser(), log)
+
+if __name__ == '__main__':
+    sys.exit(main())
diff --git a/bin/updateXSDs.py b/bin/updateXSDs.py
new file mode 100755
index 0000000..ee5a126
--- /dev/null
+++ b/bin/updateXSDs.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python
+
+import argparse
+import tempfile
+import shutil
+import os
+import glob
+import subprocess
+import shlex
+
+
+def get_files(xsd_dir):
+    files = []
+    for path, subdirs, fns in os.walk(xsd_dir):
+        for fn in fns:
+            if fn.endswith('xsd'):
+                files.append(os.path.join(path, fn))
+    return files
+
+def copy_xsds(xsd, dest):
+    """Go ahead and copy all xsds, there will likely be many dependencies. If
+    not, xsds are small"""
+    files = get_files(os.path.dirname(xsd))
+    for fn in files:
+        shutil.copy(fn, dest)
+
+def generate_pyxb(xsd, module):
+    cmd = "pyxbgen -u {x} -m {m}".format(x=xsd, m=module)
+    print cmd
+    subprocess.call(shlex.split(cmd))
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser()
+    parser.add_argument("xsd", type=str,
+                        help="the XSD of interest")
+    parser.add_argument("--mod_dest", type=str,
+                        help=("the path to (and name of) the python module to "
+                              "be generated"),
+                        default='.')
+    args = parser.parse_args()
+    tempd = tempfile.mkdtemp(suffix='xsds')
+    copy_xsds(args.xsd, tempd)
+    xsd_name = os.path.basename(args.xsd)
+    generate_pyxb(os.path.join(tempd, xsd_name), args.mod_dest)
+    shutil.rmtree(tempd)
+
diff --git a/circle.yml b/circle.yml
new file mode 100644
index 0000000..b6275fc
--- /dev/null
+++ b/circle.yml
@@ -0,0 +1,17 @@
+machine:
+  python:
+    version: 2.7.6
+
+dependencies:
+  # We need to manually build (and cache) a more modern libhdf5 than
+  # ubuntu precise makes available via apt---there are bugs that
+  # affect us, in libhdf5 1.8.4
+  cache_directories:
+    - .circleci/prefix
+  pre:
+    - (cd .circleci && bash installHDF5.sh)
+    - HDF5_DIR=$PWD/.circleci/prefix pip install -r requirements-dev.txt
+    
+test:
+  override:
+    - make test # Run doctests in addition to the usual unit tests
diff --git a/doc/conf.py b/doc/conf.py
index 6f0945d..1b9dbfa 100755
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -32,7 +32,8 @@ __VERSION__ = globals["__VERSION__"]
 extensions = ['sphinx.ext.autodoc',
               'sphinx.ext.intersphinx',
               'sphinx.ext.todo',
-              'sphinx.ext.doctest']
+              'sphinx.ext.doctest',
+              'sphinx.ext.inheritance_diagram']
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
diff --git a/doc/index.rst b/doc/index.rst
index 1a4889a..5695dc1 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -10,6 +10,8 @@ Library API documentation
 
     :doc:`pbcore.io`: Classes for reading/writing PacBio data formats and essential common data formats
 
+    :doc:`pbcore.io.dataset`: Classes for reading/writing PacBio DataSet XML files
+
     :doc:`pbcore.model`: Common base classes
 
     :doc:`pbcore.util`: Utilities for building bioinformatics applications
diff --git a/doc/pacbio-theme/static/headerGradient.jpg b/doc/pacbio-theme/static/headerGradient.jpg
deleted file mode 100644
index 883f147..0000000
Binary files a/doc/pacbio-theme/static/headerGradient.jpg and /dev/null differ
diff --git a/doc/pacbio-theme/static/pacbio.css b/doc/pacbio-theme/static/pacbio.css
deleted file mode 100644
index b4ab87f..0000000
--- a/doc/pacbio-theme/static/pacbio.css
+++ /dev/null
@@ -1,238 +0,0 @@
-/**
- * Sphinx stylesheet -- default theme
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- */
- 
- at import url("basic.css");
- 
-/* -- page layout ----------------------------------------------------------- */
- 
-body {
-    font-family: Arial, sans-serif;
-    font-size: 100%;
-    background-color: #555;
-    color: #555;
-    margin: 0;
-    padding: 0;
-    min-width: 500px;
-    max-width: 956px;
-    margin: 0 auto;
-}
-
-div.documentwrapper {
-    float: left;
-    width: 100%;
-}
-
-div.bodywrapper {
-    margin: 0 0 0 230px;
-}
-
-hr{
-    border: 1px solid #B1B4B6;
-    
-}
- 
-div.document {
-    background-color: #eee;
-}
- 
-div.body {
-    background-color: #ffffff;
-    color: #3E4349;
-    padding: 30px 30px 30px 30px;
-    font-size: 0.8em;
-}
- 
-div.footer {
-    color: #555;
-	background-color: #fff;
-    padding: 13px 0;
-    text-align: center;
-    font-size: 75%;
-
-}
-div.footer a {
-    color: #444;
-    text-decoration: underline;
-}
- 
-div.related {
-    background: #fff url(headerGradient.jpg);
-    line-height: 80px;
-    color: #fff;
-    font-size: 0.80em;
-    height: 79px;
-    z-index: -1;
-}
-
-div.related ul {
-    background: url(pacbioLogo.png) 10px no-repeat;
-    padding: 0 0 0 200px;
-}
- 
-div.related a {
-    color: #E2F3CC;
-}
- 
-div.sphinxsidebar {
-    font-size: 0.75em;
-    line-height: 1.5em;
-}
-
-div.sphinxsidebarwrapper{
-    padding: 20px 0;
-}
- 
-div.sphinxsidebar h3,
-div.sphinxsidebar h4 {
-    font-family: Arial, sans-serif;
-    color: #222;
-    font-size: 1.2em;
-    font-weight: bold;
-    margin: 0;
-    padding: 5px 10px 0 10px;
-}
-
-div.sphinxsidebar h4{
-    font-size: 1.1em;
-}
- 
-div.sphinxsidebar h3 a {
-    color: #444;
-}
- 
- 
-div.sphinxsidebar p {
-    color: #888;
-    padding: 0px 20px;
-	margin-top: 5px;
-}
- 
-div.sphinxsidebar p.topless {
-}
- 
-div.sphinxsidebar ul {
-    margin: 5px 20px 10px 20px;
-    padding: 0;
-    color: #000;
-}
- 
-div.sphinxsidebar a {
-    color: #444;
-}
- 
-div.sphinxsidebar input {
-    border: 1px solid #ccc;
-    font-family: sans-serif;
-    font-size: 1em;
-}
-
-div.sphinxsidebar input[type=text]{
-    margin-left: 20px;
-}
- 
-/* -- body styles ----------------------------------------------------------- */
- 
-a {
-    color: #005B81;
-    text-decoration: none;
-}
- 
-a:hover {
-    color: #E32E00;
-    text-decoration: underline;
-}
- 
-div.body h1,
-div.body h2,
-div.body h3,
-div.body h4,
-div.body h5,
-div.body h6 {
-    font-family: Arial, sans-serif;
-    font-weight: bold;
-    color: #264868;
-    margin: 30px 0px 10px 0px;
-    padding: 5px 0 5px 0px;
-}
- 
-div.body h1 { border-top: 20px solid white; margin-top: 0; font-size: 180%; font-weight: normal; }
-div.body h2 { font-size: 125%; }
-div.body h3 { font-size: 110%; }
-div.body h4 { font-size: 100%; }
-div.body h5 { font-size: 100%; }
-div.body h6 { font-size: 100%; }
- 
-a.headerlink {
-    color: #c60f0f;
-    font-size: 0.8em;
-    padding: 0 4px 0 4px;
-    text-decoration: none;
-}
- 
-a.headerlink:hover {
-    background-color: #c60f0f;
-    color: white;
-}
- 
-div.body p, div.body dd, div.body li {
-    line-height: 1.5em;
-    font-size: 1em;
-}
- 
-div.admonition p.admonition-title + p {
-    display: inline;
-}
-
-div.highlight{
-    background-color: white;
-}
-
-div.note {
-    background-color: #eee;
-    border: 1px solid #ccc;
-}
- 
-div.seealso {
-    background-color: #ffc;
-    border: 1px solid #ff6;
-}
- 
-div.topic {
-    background-color: #eee;
-}
- 
-div.warning {
-    background-color: #ffe4e4;
-    border: 1px solid #f66;
-}
- 
-p.admonition-title {
-    display: inline;
-}
- 
-p.admonition-title:after {
-    content: ":";
-}
- 
-pre {
-    padding: 10px;
-    background-color: White;
-    color: #222;
-    line-height: 1.2em;
-    border: 1px solid #C6C9CB;
-    font-size: 1.2em;
-    margin: 1.5em 0 1.5em 0;
-    -webkit-box-shadow: 1px 1px 1px #d8d8d8;
-    -moz-box-shadow: 1px 1px 1px #d8d8d8;
-}
- 
-tt {
-    background-color: #ecf0f3;
-    color: #222;
-    padding: 1px 2px;
-    font-size: 1.2em;
-    font-family: monospace;
-}
-
diff --git a/doc/pacbio-theme/static/pacbioLogo.png b/doc/pacbio-theme/static/pacbioLogo.png
deleted file mode 100644
index b2e4887..0000000
Binary files a/doc/pacbio-theme/static/pacbioLogo.png and /dev/null differ
diff --git a/doc/pacbio-theme/static/pygments.css b/doc/pacbio-theme/static/pygments.css
deleted file mode 100644
index 4588cde..0000000
--- a/doc/pacbio-theme/static/pygments.css
+++ /dev/null
@@ -1,55 +0,0 @@
-.c { color: #999988; font-style: italic } /* Comment */
-.k { font-weight: bold } /* Keyword */
-.o { font-weight: bold } /* Operator */
-.cm { color: #999988; font-style: italic } /* Comment.Multiline */
-.cp { color: #999999; font-weight: bold } /* Comment.preproc */
-.c1 { color: #999988; font-style: italic } /* Comment.Single */
-.gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
-.ge { font-style: italic } /* Generic.Emph */
-.gr { color: #aa0000 } /* Generic.Error */
-.gh { color: #999999 } /* Generic.Heading */
-.gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
-.go { color: #111 } /* Generic.Output */
-.gp { color: #555555 } /* Generic.Prompt */
-.gs { font-weight: bold } /* Generic.Strong */
-.gu { color: #aaaaaa } /* Generic.Subheading */
-.gt { color: #aa0000 } /* Generic.Traceback */
-.kc { font-weight: bold } /* Keyword.Constant */
-.kd { font-weight: bold } /* Keyword.Declaration */
-.kp { font-weight: bold } /* Keyword.Pseudo */
-.kr { font-weight: bold } /* Keyword.Reserved */
-.kt { color: #445588; font-weight: bold } /* Keyword.Type */
-.m { color: #009999 } /* Literal.Number */
-.s { color: #bb8844 } /* Literal.String */
-.na { color: #008080 } /* Name.Attribute */
-.nb { color: #999999 } /* Name.Builtin */
-.nc { color: #445588; font-weight: bold } /* Name.Class */
-.no { color: #ff99ff } /* Name.Constant */
-.ni { color: #800080 } /* Name.Entity */
-.ne { color: #990000; font-weight: bold } /* Name.Exception */
-.nf { color: #990000; font-weight: bold } /* Name.Function */
-.nn { color: #555555 } /* Name.Namespace */
-.nt { color: #000080 } /* Name.Tag */
-.nv { color: purple } /* Name.Variable */
-.ow { font-weight: bold } /* Operator.Word */
-.mf { color: #009999 } /* Literal.Number.Float */
-.mh { color: #009999 } /* Literal.Number.Hex */
-.mi { color: #009999 } /* Literal.Number.Integer */
-.mo { color: #009999 } /* Literal.Number.Oct */
-.sb { color: #bb8844 } /* Literal.String.Backtick */
-.sc { color: #bb8844 } /* Literal.String.Char */
-.sd { color: #bb8844 } /* Literal.String.Doc */
-.s2 { color: #bb8844 } /* Literal.String.Double */
-.se { color: #bb8844 } /* Literal.String.Escape */
-.sh { color: #bb8844 } /* Literal.String.Heredoc */
-.si { color: #bb8844 } /* Literal.String.Interpol */
-.sx { color: #bb8844 } /* Literal.String.Other */
-.sr { color: #808000 } /* Literal.String.Regex */
-.s1 { color: #bb8844 } /* Literal.String.Single */
-.ss { color: #bb8844 } /* Literal.String.Symbol */
-.bp { color: #999999 } /* Name.Builtin.Pseudo */
-.vc { color: #ff99ff } /* Name.Variable.Class */
-.vg { color: #ff99ff } /* Name.Variable.Global */
-.vi { color: #ff99ff } /* Name.Variable.Instance */
-.il { color: #009999 } /* Literal.Number.Integer.Long */
-
diff --git a/doc/pacbio-theme/theme.conf b/doc/pacbio-theme/theme.conf
deleted file mode 100644
index dd24a1a..0000000
--- a/doc/pacbio-theme/theme.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-[theme]
-inherit = default 
-stylesheet = pacbio.css
-pygments_style = tango
diff --git a/doc/pbcore.deprecated.rst b/doc/pbcore.deprecated.rst
deleted file mode 100644
index 2141176..0000000
--- a/doc/pbcore.deprecated.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-pbcore.deprecated package
-=========================
-
-Submodules
-----------
-
-pbcore.deprecated.BasH5IO module
---------------------------------
-
-.. automodule:: pbcore.deprecated.BasH5IO
-    :members:
-    :undoc-members:
-    :show-inheritance:
-
-pbcore.deprecated.ReferenceEntry module
----------------------------------------
-
-.. automodule:: pbcore.deprecated.ReferenceEntry
-    :members:
-    :undoc-members:
-    :show-inheritance:
-
-
-Module contents
----------------
-
-.. automodule:: pbcore.deprecated
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/doc/pbcore.io.dataset.rst b/doc/pbcore.io.dataset.rst
new file mode 100644
index 0000000..acf2269
--- /dev/null
+++ b/doc/pbcore.io.dataset.rst
@@ -0,0 +1,298 @@
+pbcore.io.dataset
+=============================
+
+The Python DataSet XML API is designed to be a lightweight interface for
+creating, opening, manipulating and writing DataSet XML files. It provides both
+a native Python API and console entry points for use in manual dataset curation
+or as a resource for P_Module developers.
+
+The API and console entry points are designed with the set operations one might
+perform on the various types of data held by a DataSet XML in mind: merge,
+split, write etc. While various types of DataSets can be found in XML files,
+the API (and in a way the console entry point, dataset.py) has DataSet as its
+base type, with various subtypes extending or replacing functionality as
+needed.
+
+
+Console Entry Point Usage
+=============================
+The following entry points are available through the main script: dataset.py::
+
+    usage: dataset.py [-h] [-v] [--debug]
+                      {create,filter,merge,split,validate,loadstats,consolidate}
+                      ...
+
+    Run dataset.py by specifying a command.
+
+    optional arguments:
+      -h, --help            show this help message and exit
+      -v, --version         show program's version number and exit
+      --debug               Turn on debug level logging
+
+    DataSet sub-commands:
+      {create,filter,merge,split,validate,loadstats,consolidate}
+                            Type {command} -h for a command's options
+
+Create::
+
+    usage: dataset.py create [-h] [--type DSTYPE] [--novalidate] [--relative]
+                             outfile infile [infile ...]
+
+    Create an XML file from a fofn or bam
+
+    positional arguments:
+      outfile        The XML to create
+      infile         The fofn or BAM file(s) to make into an XML
+
+    optional arguments:
+      -h, --help     show this help message and exit
+      --type DSTYPE  The type of XML to create
+      --novalidate   Don't validate the resulting XML, don't touch paths
+      --relative     Make the included paths relative instead of absolute (not
+                     compatible with --novalidate)
+
+Filter::
+
+    usage: dataset.py filter [-h] infile outfile filters [filters ...]
+
+    Add filters to an XML file
+
+    positional arguments:
+      infile      The xml file to filter
+      outfile     The resulting xml file
+      filters     The values and thresholds to filter (e.g. rq>0.85)
+
+    optional arguments:
+      -h, --help  show this help message and exit
+
+Union::
+
+    usage: dataset.py union [-h] outfile infiles [infiles ...]
+
+    Combine XML (and BAM) files
+
+    positional arguments:
+      outfile     The resulting XML file
+      infiles     The XML files to merge
+
+    optional arguments:
+      -h, --help  show this help message and exit
+
+Validate::
+
+    usage: dataset.py validate [-h] infile
+
+    Validate ResourceId files (XML validation only available in testing)
+
+    positional arguments:
+      infile      The XML file to validate
+
+    optional arguments:
+      -h, --help  show this help message and exit
+
+Load PipeStats::
+
+    usage: dataset.py loadstats [-h] [--outfile OUTFILE] infile statsfile
+
+    Load an sts.xml file into a DataSet XML file
+
+    positional arguments:
+      infile             The XML file to modify
+      statsfile          The .sts.xml file to load
+
+    optional arguments:
+      -h, --help         show this help message and exit
+      --outfile OUTFILE  The XML file to output
+
+Split::
+
+    usage: dataset.py split [-h] [--contigs] [--chunks CHUNKS] [--subdatasets]
+                            [--outdir OUTDIR]
+                            infile ...
+
+    Split the dataset
+
+    positional arguments:
+      infile           The xml file to split
+      outfiles         The resulting xml files
+
+    optional arguments:
+      -h, --help       show this help message and exit
+      --contigs        Split on contigs
+      --chunks CHUNKS  Split contigs into <chunks> total windows
+      --subdatasets    Split on subdatasets
+      --outdir OUTDIR  Specify an output directory
+
+Consolidation requires in-depth filtering and BAM file manipulation.
+Implementation plans TBD.
+
+
+Usage Examples
+=============================
+
+Resequencing Pipeline (CLI version)
+-----------------------------------
+
+In this scenario, we have two movies worth of subreads in two SubreadSets that
+we want to align to a reference, merge together, split into DataSet chunks by
+contig, then send through quiver on a chunkwise basis (in parallel).
+
+1. Align each movie to the reference, producing a dataset with one bam file for
+   each execution::
+
+    pbalign movie1.subreadset.xml referenceset.xml movie1.alignmentset.xml
+    pbalign movie2.subreadset.xml referenceset.xml movie2.alignmentset.xml
+
+2. Merge the files into a FOFN-like dataset (bams aren't touched)::
+
+    # dataset.py merge <out_fn> <in_fn> [<in_fn> <in_fn> ...]
+    dataset.py merge merged.alignmentset.xml movie1.alignmentset.xml movie2.alignmentset.xml
+
+3. Split the dataset into chunks by contig (rname) (bams aren't touched). Note
+   that supplying output files splits the dataset into that many output files
+   (up to the number of contigs), with multiple contigs per file. Not supplying
+   output files splits the dataset into one output file per contig, named
+   automatically. Specifying a number of chunks instead will produce that many
+   files, with contig or even sub contig (reference window) splitting.::
+
+    dataset.py split --contigs --chunks 8 merged.alignmentset.xml
+
+4. Quiver then consumes these chunks::
+
+    variantCaller.py --alignmentSetRefWindows --referenceFileName referenceset.xml --outputFilename chunk1consensus.fasta --algorithm quiver chunk1contigs.alignmentset.xml
+    variantCaller.py --alignmentSetRefWindows --referenceFileName referenceset.xml --outputFilename chunk2consensus.fasta --algorithm quiver chunk2contigs.alignmentset.xml
+
+The chunking works by duplicating the original merged dataset (no bam
+duplication) and adding filters to each duplicate such that only reads
+belonging to the appropriate contigs are emitted. The contigs are distributed
+amongst the output files in such a way that the total number of records per
+chunk is about even.
+
+Tangential Information
+~~~~~~~~~~~~~~~~~~~~~~
+
+DataSet.refNames (which returns a list of reference names available in the
+dataset) is also subject to the filtering imposed during the split. Therefore
+you wont be running through superfluous (and apparently unsampled) contigs to
+get the reads in this chunk. The DataSet.records generator is also subject to
+filtering, but not as efficiently as readsInRange. If you do not have a
+reference window, readsInReference() is also an option.
+
+As the bam files are never touched, each dataset contains all the information
+necessary to access all reads for all contigs. Doing so on these filtered
+datasets would require disabling the filters first::
+
+    dset.disableFilters()
+
+Or removing the specific filter giving you problems::
+
+    dset.filters.removeRequirement('rname')
+
+Resequencing Pipeline (API version)
+-----------------------------------
+
+In this scenario, we have two movies worth of subreads in two SubreadSets that
+we want to align to a reference, merge together, split into DataSet chunks by
+contig, then send through quiver on a chunkwise basis (in parallel). We want to
+do them using the API, rather than the CLI.
+
+1. Align each movie to the reference, producing a dataset with one bam file for
+   each execution
+
+   .. code-block:: python
+
+    # CLI (or see pbalign API):
+    pbalign movie1.subreadset.xml referenceset.xml movie1.alignmentset.xml
+    pbalign movie2.subreadset.xml referenceset.xml movie2.alignmentset.xml
+
+2. Merge the files into a FOFN-like dataset (bams aren't touched)
+
+   .. code-block:: python
+
+    # API, filename_list is dummy data:
+    filename_list = ['movie1.alignmentset.xml', 'movie2.alignmentset.xml']
+
+    # open:
+    dsets = [AlignmentSet(fn) for fn in filename_list]
+    # merge with + operator:
+    dset = reduce(lambda x, y: x + y, dsets)
+
+    # OR:
+    dset = AlignmentSet(*filename_list)
+
+3. Split the dataset into chunks by contigs (or subcontig windows)
+
+   .. code-block:: python
+
+    # split:
+    dsets = dset.split(contigs=True, chunks=8)
+
+4. Quiver then consumes these chunks
+
+   .. code-block:: python
+
+    # write out if you need to (or pass directly to quiver API):
+    outfilename_list = ['chunk1contigs.alignmentset.xml', 'chunk2contigs.alignmentset.xml']
+    # write with 'write' method:
+    map(lambda (ds, nm): ds.write(nm), zip(dsets, outfilename_list))
+
+    # CLI (or see quiver API):
+    variantCaller.py --alignmentSetRefWindows --referenceFileName referenceset.xml --outputFilename chunk1consensus.fasta --algorithm quiver chunk1contigs.alignmentset.xml
+    variantCaller.py --alignmentSetRefWindows --referenceFileName referenceset.xml --outputFilename chunk2consensus.fasta --algorithm quiver chunk2contigs.alignmentset.xml
+
+    # Inside quiver (still using python dataset API):
+    aln = AlignmentSet(fname)
+    # get this set's windows:
+    refWindows = aln.refWindows
+    # gather the reads for these windows using readsInRange, e.g.:
+    reads = list(itertools.chain(aln.readsInRange(rId, start, end) for rId, start, end in refWindows))
+
+API overview
+=============================
+
+The chunking works by duplicating the original merged dataset (no bam
+duplication) and adding filters to each duplicate such that only reads
+belonging to the appropriate contigs/windows are emitted. The contigs are
+distributed amongst the output files in such a way that the total number of
+records per chunk is about even.
+
+DataSets can be created using the appropriate constructor (SubreadSet), or with
+the common constructor (DataSet) and later cast to a specific type
+(copy(asType="SubreadSet")). The DataSet constructor acts as a factory function
+(an artifact of early api Designs). The factory behavior is defined in the
+DataSet metaclass.
+
+.. inheritance-diagram:: pbcore.io.dataset.DataSetIO
+    :parts: 1
+
+.. automodule:: pbcore.io.dataset.DataSetIO
+    :members:
+    :special-members: __call__, __init__, __metaclass__, __repr__, __add__,
+                      __eq__, __deepcopy__
+    :show-inheritance:
+
+The operations possible between DataSets of the same and different types are
+limited, see the DataSet XML documentation for details.
+
+DataSet XML files have a few major components: XML metadata,
+ExternalReferences, Filters, DataSet Metadata, etc. These are represented in
+different ways internally, depending on their complexity. DataSet metadata
+especially contains a large number of different potential elements, many of
+which are accessible in the API as nested attributes. To preserve the API's
+ability to grant access to any DataSet Metadata available now and in the
+future, as well as to maintain the performance of dataset reading and writing,
+each DataSet stores its metadata in what approximates a tree structure, with
+various helper classes and functions manipulating this tree. The structure of
+this tree and currently implemented helper classes are available in the
+DataSetMembers module.
+
+.. inheritance-diagram:: pbcore.io.dataset.DataSetMembers
+    :parts: 1
+
+.. automodule:: pbcore.io.dataset.DataSetMembers
+    :members:
+    :special-members: __getitem__, __iter__, __repr__
+    :show-inheritance:
+    :undoc-members:
+
+
diff --git a/pbcore/__init__.py b/pbcore/__init__.py
index 394f477..78b5851 100644
--- a/pbcore/__init__.py
+++ b/pbcore/__init__.py
@@ -28,4 +28,4 @@
 # POSSIBILITY OF SUCH DAMAGE.
 #################################################################################
 
-__VERSION__ = "1.0.0"
+__VERSION__ = "1.2.1"
diff --git a/pbcore/data/Makefile b/pbcore/data/Makefile
new file mode 100644
index 0000000..002e84e
--- /dev/null
+++ b/pbcore/data/Makefile
@@ -0,0 +1,37 @@
+MOVIE1 := m140905_042212_sidney_c100564852550000001823085912221377_s1_X0
+
+all: $(MOVIE1).subreads.bam $(MOVIE1).aligned_subreads.cmp.h5 $(MOVIE1).aligned_subreads.bam testdata upstream_testdata
+
+$(MOVIE1).subreads.bam: $(MOVIE1).1.bax.h5
+	bax2bam $<
+	samtools index $@
+	pbindex $@
+
+$(MOVIE1).aligned_subreads.bam: $(MOVIE1).subreads.bam lambdaNEB.fa
+	pbalign $^ $@
+	samtools index $@
+	pbindex $@
+
+$(MOVIE1).aligned_subreads.cmp.h5: $(MOVIE1).1.bax.h5 lambdaNEB.fa
+	pbalign-2.3 --forQuiver --metrics IPD,DeletionQV,DeletionTag,InsertionQV,MergeQV,SubstitutionQV $^ $@
+
+testdata:
+	dataset.py create --type ReferenceSet --relative datasets/pbalchemysim0.reference.xml datasets/pbalchemysim0.reference.fasta
+	bax2bam datasets/pbalchemysim0.bas.h5 -o datasets/pbalchemysim0 --pulsefeatures DeletionTag,DeletionQV,InsertionQV,MergeQV,SubstitutionQV && \
+	dataset.py create --type SubreadSet --relative datasets/pbalchemysim0.subread.xml datasets/pbalchemysim0.subreads.bam
+	pbalign datasets/pbalchemysim0.subreads.bam datasets/pbalchemysim0.reference.fasta datasets/pbalchemysim0.pbalign.bam && \
+	dataset.py create --type AlignmentSet --relative datasets/pbalchemysim0.pbalign.xml datasets/pbalchemysim0.pbalign.bam
+	dataset.py split --contigs --chunks 2 datasets/pbalchemysim0.pbalign.xml
+	bax2bam datasets/pbalchemysim1.bas.h5 -o datasets/pbalchemysim1 --pulsefeatures DeletionTag,DeletionQV,InsertionQV,MergeQV,SubstitutionQV && \
+	dataset.py create --type SubreadSet --relative datasets/pbalchemysim1.subread.xml datasets/pbalchemysim1.subreads.bam
+	pbalign datasets/pbalchemysim1.subreads.bam datasets/pbalchemysim0.reference.fasta datasets/pbalchemysim1.pbalign.bam && \
+	dataset.py create --type AlignmentSet --relative datasets/pbalchemysim1.pbalign.xml datasets/pbalchemysim1.pbalign.bam
+	dataset.py create --type AlignmentSet --relative datasets/pbalchemysim.pbalign.xml datasets/pbalchemysim0.pbalign.bam datasets/pbalchemysim1.pbalign.bam
+
+upstream_testdata:
+	dataset.py create --type ReferenceSet --relative datasets/lambda.reference.xml lambdaNEB.fa
+	dataset.py create --type AlignmentSet --relative datasets/lambda.pbalign.xml $(MOVIE1).aligned_subreads.bam
+
+xsdupdate:
+	cp ../../../doc/FileFormats/examples/datasets/*.xml datasets/.
+
diff --git a/pbcore/data/__init__.py b/pbcore/data/__init__.py
index b00ce44..dbc4b19 100644
--- a/pbcore/data/__init__.py
+++ b/pbcore/data/__init__.py
@@ -68,6 +68,9 @@ def getBaxH5_v23():
 def getCCSH5():
     return _getAbsPath(MOVIE_NAME_CCS + '.1.ccs.h5')
 
+def getCCSBAM():
+    return _getAbsPath(MOVIE_NAME_CCS + '.ccs.bam')
+
 def getBcH5s():
     return [_getAbsPath('.'.join((MOVIE_NAME_BC, str(k), 'bc.h5')))
             for k in range(1,4)]
@@ -149,10 +152,10 @@ def getBcFofn():
 
 def getBamAndCmpH5():
     """
-    Get a "matched" BAM and cmp.h5 file
+    Get a "matched" (aligned) BAM and cmp.h5 file
     """
-    return (_getAbsPath("bam_mapping.bam"),
-            _getAbsPath("cmph5_mapping.cmp.h5"))
+    return (_getAbsPath("m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.aligned_subreads.bam"),
+            _getAbsPath("m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.aligned_subreads.cmp.h5"))
 
 def getBaxForBam():
     """
diff --git a/pbcore/data/aligned_reads_1.bam b/pbcore/data/aligned_reads_1.bam
deleted file mode 100644
index 3993fb0..0000000
Binary files a/pbcore/data/aligned_reads_1.bam and /dev/null differ
diff --git a/pbcore/data/aligned_reads_1.bam.bai b/pbcore/data/aligned_reads_1.bam.bai
deleted file mode 100644
index 81bc1ce..0000000
Binary files a/pbcore/data/aligned_reads_1.bam.bai and /dev/null differ
diff --git a/pbcore/data/bam_mapping.bam b/pbcore/data/bam_mapping.bam
deleted file mode 100644
index 6fcaa68..0000000
Binary files a/pbcore/data/bam_mapping.bam and /dev/null differ
diff --git a/pbcore/data/bam_mapping.bam.bai b/pbcore/data/bam_mapping.bam.bai
deleted file mode 100644
index d64c44d..0000000
Binary files a/pbcore/data/bam_mapping.bam.bai and /dev/null differ
diff --git a/pbcore/data/bam_mapping.bam.pbi b/pbcore/data/bam_mapping.bam.pbi
deleted file mode 100644
index b80e837..0000000
Binary files a/pbcore/data/bam_mapping.bam.pbi and /dev/null differ
diff --git a/pbcore/data/cmph5_mapping.cmp.h5 b/pbcore/data/cmph5_mapping.cmp.h5
deleted file mode 100644
index ae4b5e7..0000000
Binary files a/pbcore/data/cmph5_mapping.cmp.h5 and /dev/null differ
diff --git a/pbcore/data/datasets/__init__.py b/pbcore/data/datasets/__init__.py
new file mode 100755
index 0000000..87d8fd5
--- /dev/null
+++ b/pbcore/data/datasets/__init__.py
@@ -0,0 +1,58 @@
+"""Doctest resources"""
+
+import os
+from pkg_resources import Requirement, resource_filename
+
+XML_FILES = ["alignment.dataset.xml", #0
+             "barcode.dataset.xml",
+             "ccsread.dataset.xml",
+             "contig.dataset.xml",
+             "reference.dataset.xml", #4
+             "subread.dataset.xml",
+             "transformed_rs_subread_dataset.xml",
+             "hdfsubread_dataset.xml",
+             "pbalchemysim0.pbalign.xml",
+             "pbalchemysim0.reference.xml", #9
+             "pbalchemysim0.subread.xml",
+             "pbalchemysim1.pbalign.xml",
+             "pbalchemysim.pbalign.xml", # both 0 and 1 bam files
+             "pbalchemysim1.subread.xml",
+             "subreadSetWithStats.xml", #14 # TODO: replace w regenable+new XSD
+             "pbalchemysim0.pbalign.chunk0contigs.xml",
+             "pbalchemysim0.pbalign.chunk1contigs.xml",
+            ]
+BAM_FILES = ["pbalchemysim0.pbalign.bam",
+             "pbalchemysim1.pbalign.bam",
+             os.path.join('..', 'bam_mapping.bam')]
+STATS_FILES = [
+    "m150430_142051_Mon_p1_b25.sts.xml",
+    "m150616_053259_ethan_c100710482550000001823136404221563_s1_p0.sts.xml"]
+FOFN_FILES = ["fofn.fofn"]
+
+def _getAbsPath(fname):
+    return resource_filename(Requirement.parse('pbcore'),
+                             'pbcore/data/datasets/%s' % fname)
+
+def getXml(no=0):
+    return _getAbsPath(XML_FILES[no])
+
+def getXmlWithStats():
+    return _getAbsPath(XML_FILES[9])
+
+def getBam(no=0):
+    return _getAbsPath(BAM_FILES[no])
+
+def getStats(no=0):
+    return _getAbsPath(STATS_FILES[no])
+
+def getFofn(no=0):
+    return _getAbsPath(FOFN_FILES[no])
+
+def getRef():
+    return _getAbsPath(XML_FILES[9])
+
+def getSubreadSet():
+    return _getAbsPath(XML_FILES[5])
+
+def getHdfSubreadSet():
+    return _getAbsPath(XML_FILES[7])
diff --git a/pbcore/data/datasets/alignment.dataset.xml b/pbcore/data/datasets/alignment.dataset.xml
new file mode 100644
index 0000000..ceb7a1a
--- /dev/null
+++ b/pbcore/data/datasets/alignment.dataset.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<AlignmentSet xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" MetaType="PacBio.DataSet.AlignmentSet" Name="DataSet_AlignmentSet" Tags="barcode moreTags mapping mytags" UniqueId="b095d0a3-94b8-4918-b3af-a3f81bbe519c" Version="2.3.0" CreatedAt="2015-01-27T09:00:01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd">
+    <ExternalResources>
+        <ExternalResource Name="First Alignments BAM" Description="Points to an example Alignments BAM file." MetaType="PacBio.AlignmentFile.AlignmentBamFile" ResourceId="file:///mnt/path/to/alignments0.bam" Tags="Example">
+            <FileIndices>
+                <FileIndex MetaType="PacBio.Index.PacBioIndex" ResourceId="file:///mnt/path/to/alignments0.pbi"/>
+            </FileIndices>
+        </ExternalResource>
+        <ExternalResource Name="Second Alignments BAM" Description="Points to another example Alignments BAM file, by relative path." MetaType="PacBio.AlignmentFile.AlignmentBamFile" ResourceId="file:./alignments1.bam" Tags="Example">
+            <FileIndices>
+                <FileIndex MetaType="PacBio.Index.PacBioIndex" ResourceId="file:///mnt/path/to/alignments1.pbi"/>
+            </FileIndices>
+        </ExternalResource>
+    </ExternalResources>
+    <DataSets>
+        <DataSet UniqueId="ab95d0a3-94b8-4918-b3af-a3f81bbe519c" Version="2.3.0" Name="HighQuality Read Alignments">
+            <ExternalResources>
+                <ExternalResource/> <!-- This is a hack to make alignment set validate. Clearly the labelled subset needs a little more thought. -->
+            </ExternalResources>
+            <Filters> <!-- These Filters are in addition to those above. This provides a means to subset and label the parent DataSet further. -->
+                <Filter>
+                    <Properties>
+                        <Property Name="rq" Value="0.85" Operator=">"/>
+                    </Properties>
+                </Filter>
+            </Filters>
+        </DataSet>
+        <DataSet UniqueId="ac95d0a3-94b8-4918-b3af-a3f81bbe519c" Version="2.3.0" Name="Alignments to chromosome 1">
+            <ExternalResources>
+                <ExternalResource/>
+            </ExternalResources>
+            <Filters>
+                <Filter>
+                    <Properties>
+                        <Property Name="RNAME" Value="chr1" Operator="=="/>
+                    </Properties>
+                </Filter>
+            </Filters>
+        </DataSet>
+    </DataSets>
+    <DataSetMetadata>
+        <TotalLength>50000</TotalLength>
+        <NumRecords>5000</NumRecords>
+        <Provenance CreatedBy="AnalysisJob">
+            <ParentTool Name="pbalign" Version="0.1.0" Description="pbalign subreads.dataset.xml reference.dataset.xml"/>
+        </Provenance>
+    </DataSetMetadata>
+</AlignmentSet>
diff --git a/pbcore/data/datasets/barcode.dataset.xml b/pbcore/data/datasets/barcode.dataset.xml
new file mode 100644
index 0000000..a32acd3
--- /dev/null
+++ b/pbcore/data/datasets/barcode.dataset.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<BarcodeSet xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" MetaType="PacBio.DataSet.BarcodeSet" Name="DataSet_BarcodeSet" Tags="barcode moreTags mapping mytags" UniqueId="b095d0a3-94b8-4918-b3af-a3f81bbe519c" Version="2.3.0" CreatedAt="2015-01-27T09:00:01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd">
+	<ExternalResources>
+		<ExternalResource Name="First Barcodes FASTA" Description="Points to an example Barcodes FASTA file." MetaType="BarcodeFile.BarcodeFastaFile" ResourceId="file:///mnt/path/to/barcode.fasta" Tags="Example"/>
+	</ExternalResources>
+	<DataSetMetadata>
+		<TotalLength>400</TotalLength>
+		<NumRecords>30</NumRecords>
+		<BarcodeConstruction>paired</BarcodeConstruction>
+	</DataSetMetadata>
+</BarcodeSet>
diff --git a/pbcore/data/datasets/ccsread.dataset.xml b/pbcore/data/datasets/ccsread.dataset.xml
new file mode 100644
index 0000000..529a457
--- /dev/null
+++ b/pbcore/data/datasets/ccsread.dataset.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ConsensusReadSet xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" MetaType="PacBio.DataSet.ConsensusReadSet" Name="DataSet_ConsensusReadSet" Tags="barcode moreTags mapping mytags" UniqueId="b095d0a3-94b8-4918-b3af-a3f81bbe519c" Version="2.3.0" CreatedAt="2015-01-27T09:00:01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd">
+	<ExternalResources>
+		<ExternalResource Name="First ConsensusRead BAM" Description="Points to an example ConsensusRead BAM file." MetaType="PacBio.ConsensusReadFile.ConsensusReadBamFile" ResourceId="file:///mnt/path/to/ccsreads0.bam" Tags="Example">
+			<FileIndices>
+				<FileIndex MetaType="PacBio.Index.PacBioIndex" ResourceId="file:///mnt/path/to/ccsreads0.pbi"/>
+			</FileIndices>
+		</ExternalResource>
+		<ExternalResource Name="Second ConsensusRead BAM" Description="Points to another example ConsensusRead BAM file." MetaType="PacBio.ConsensusReadFile.ConsensusReadBamFile" ResourceId="file:///mnt/path/to/ccsreads1.bam" Tags="Example">
+			<FileIndices>
+				<FileIndex MetaType="PacBio.Index.PacBioIndex" ResourceId="file:///mnt/path/to/ccsreads0.pbi"/>
+			</FileIndices>
+		</ExternalResource>
+	</ExternalResources>
+</ConsensusReadSet>
diff --git a/pbcore/data/datasets/contig.dataset.xml b/pbcore/data/datasets/contig.dataset.xml
new file mode 100644
index 0000000..2995a82
--- /dev/null
+++ b/pbcore/data/datasets/contig.dataset.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ContigSet xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" MetaType="PacBio.DataSet.ContigSet" Name="DataSet_ContigSet" Tags="AHAcontigs" UniqueId="b095d0a3-94b8-4918-b3af-a3f81bbe519c" Version="2.3.0" CreatedAt="2015-01-27T09:00:01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd">
+	<ExternalResources>
+		<ExternalResource Name="First References FASTA" Description="Points to an example references FASTA file." MetaType="PacBio.ReferenceFile.ReferenceFastaFile" ResourceId="file:///mnt/path/to/reference.fasta" Tags="Example">
+			<FileIndices>
+				<FileIndex MetaType="PacBio.Index.SaWriterIndex" ResourceId="file:///mnt/path/to/reference.fasta.sa"/>
+				<FileIndex MetaType="PacBio.Index.SamIndex" ResourceId="file:///mnt/path/to/reference.fasta.fai"/>
+			</FileIndices>
+		</ExternalResource>
+	</ExternalResources>
+	<DataSetMetadata>
+		<TotalLength>5000000</TotalLength>
+		<NumRecords>500</NumRecords>
+		<Contigs>
+			<Contig Name="gi|229359445|emb|AM181176.4|" Description="Pseudomonas fluorescens SBW25 complete genome|quiver" Length="6722109" Digest="f627c795efad7ce0050ed42b942d408e"/>
+		</Contigs>
+	</DataSetMetadata>
+</ContigSet>
diff --git a/pbcore/data/datasets/fofn.fofn b/pbcore/data/datasets/fofn.fofn
new file mode 100644
index 0000000..fef9353
--- /dev/null
+++ b/pbcore/data/datasets/fofn.fofn
@@ -0,0 +1,2 @@
+pbalchemysim0.pbalign.xml
+pbalchemysim1.pbalign.bam
diff --git a/pbcore/data/datasets/hdfsubread_dataset.xml b/pbcore/data/datasets/hdfsubread_dataset.xml
new file mode 100644
index 0000000..42f518d
--- /dev/null
+++ b/pbcore/data/datasets/hdfsubread_dataset.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<HdfSubreadSet xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" MetaType="PacBio.DataSet.HdfSubreadSet" Name="DataSet_HdfSubreadSet" Tags="barcode moreTags mapping mytags" UniqueId="b095d0a3-94b8-4918-b3af-a3f81bbe519c" Version="2.3.0" CreatedAt="2015-01-27T09:00:01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd">
+	<ExternalResourcess>
+        <ExternalResource Name="First Subreads BAM" Description="Points to an example Subreads BAM file." MetaType="SubreadFile.SubreadBamFile" ResourceId="file:///mnt/path/to/subreads0.bam" Tags="Example">
+            <FileIndices>
+                <FileIndex ResourceId="file:///mnt/path/to/subreads0.pbi"/>
+            </FileIndices>
+		</ExternalResource>
+        <ExternalResource Name="Second Subreads BAM" Description="Points to another example Subreads BAM file." MetaType="SubreadFile.SubreadBamFile" ResourceId="file:///mnt/path/to/subreads1.bam" Tags="Example">
+            <FileIndices>
+                <FileIndex ResourceId="file:///mnt/path/to/subreads1.pbi"/>
+            </FileIndices>
+		</ExternalResource>
+	</ExternalResourcess>
+	<Filters>
+		<Filter>
+            <Parameters>
+                <Parameter Name="rq" Value="0.75" Operator=">" />
+            </Parameters>
+        </Filter>
+		<Filter>
+            <Parameters>
+                <Parameter Name="QNAME" Value="100/0/0_100" Operator="=" />
+            </Parameters>
+		</Filter>
+	</Filters>
+	<DataSetMetadata>
+		<TotalLength>500000</TotalLength>
+		<NumRecords>500</NumRecords>
+		<Collections>
+			<CollectionMetadata Context="m152720_092723_00114_c100480560100000001823075906281381_s1_p0" InstrumentName="RS2" InstrumentId="43210">
+				<InstCtrlVer>2.3.0.0.140640</InstCtrlVer>
+				<SigProcVer>NRT at 172.31.128.10:8082, SwVer=2300.140640, HwVer=1.0</SigProcVer>
+				<RunDetails>
+					<RunId>e903682f-e502-465c-a2b6-9dd77c9f43fc</RunId>
+					<Name>beta4_130726_biotin_DEV_vs_MFG_PB11K_9458p</Name>
+				</RunDetails>
+				<WellSample Name="Well Sample 1" UniqueId="aaa2df90-d44f-4a48-9f35-3b99473c68f5">
+					<PlateId>2014-12-24_141_NGAT_Igor_bisPNA Enrichment_Mag Bead Elution Buffers</PlateId>
+					<WellName>B01</WellName>
+					<Concentration>10</Concentration>
+					<SampleReuseEnabled>true</SampleReuseEnabled>
+					<StageHotstartEnabled>true</StageHotstartEnabled>
+					<SizeSelectionEnabled>true</SizeSelectionEnabled>
+					<UseCount>0</UseCount>
+					<Comments>Lorem ipsum</Comments>
+					<BioSamplePointers>
+						<BioSamplePointer>abc2df90-d44f-4a48-9f35-3b99473c68f5</BioSamplePointer>
+					</BioSamplePointers>
+				</WellSample>
+				<AutomationName>POC Protocol</AutomationName>
+				<CollectionNumber>0</CollectionNumber>
+				<CellIndex>0</CellIndex>
+				<CellPac Barcode="100480560100000001823075906281381"/>
+				<Primary>
+					<AutomationName>BasecallerV1</AutomationName>
+					<ConfigFileName>1-3-0_Standard_C2.xml</ConfigFileName>
+					<SequencingCondition/>
+					<ResultsFolder>Analysis_Results</ResultsFolder>
+					<CollectionPathUri>rsy://mp-rsync/vol56//RS_DATA_STAGING//2014-12-24_141_NGAT_Igor_bisPNA%20Enrichment_Mag%20Bead%20Elution%20Buffers_1094/B01_1</CollectionPathUri>
+					<CopyFiles>
+						<CollectionFileCopy>Fasta</CollectionFileCopy>
+					</CopyFiles>
+				</Primary>
+			</CollectionMetadata>
+		</Collections>
+		<BioSamples>
+			<BioSample UniqueId="abc2df90-d44f-4a48-9f35-3b99473c68f5" Name="consectetur purus" Description="Risus sit amet lectus vehicula vulputate quisque porta accumsan venenatis." CreatedAt="2015-01-20T13:27:23.9271737-08:00"/>
+		</BioSamples>
+	</DataSetMetadata>
+</HdfSubreadSet>
+<!-- TODO what do internal references look like?-->
diff --git a/pbcore/data/datasets/lambda.pbalign.xml b/pbcore/data/datasets/lambda.pbalign.xml
new file mode 100644
index 0000000..4e6b034
--- /dev/null
+++ b/pbcore/data/datasets/lambda.pbalign.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<AlignmentSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" CreatedAt="2015-07-09T17:04:42" MetaType="PacBio.DataSet.AlignmentSet" Name="" Tags="" UniqueId="6ed2c3bd-b54d-c6b2-0fac-b724ab4e60d4" Version="2.3.0" xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd"><ExternalResources><ExternalResource MetaType="PacBio.SubreadFile.SubreadBamFile" ResourceId="../m140905_042212_sidney_c100564852550000001823085 [...]
\ No newline at end of file
diff --git a/pbcore/data/datasets/lambda.reference.xml b/pbcore/data/datasets/lambda.reference.xml
new file mode 100644
index 0000000..7d297e6
--- /dev/null
+++ b/pbcore/data/datasets/lambda.reference.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<ReferenceSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" CreatedAt="2015-07-09T17:04:42" MetaType="PacBio.DataSet.ReferenceSet" Name="" Tags="" UniqueId="fd07c0d2-5f6e-67ac-646a-d200c03eacef" Version="2.3.0" xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd"><ExternalResources><ExternalResource MetaType="" ResourceId="../lambdaNEB.fa"><FileIndices><FileIndex MetaType="PacBio.Index.SamIndex" ResourceI [...]
\ No newline at end of file
diff --git a/pbcore/data/datasets/pbalchemysim.pbalign.xml b/pbcore/data/datasets/pbalchemysim.pbalign.xml
new file mode 100644
index 0000000..955343e
--- /dev/null
+++ b/pbcore/data/datasets/pbalchemysim.pbalign.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<AlignmentSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" CreatedAt="2015-07-09T17:04:36" MetaType="PacBio.DataSet.AlignmentSet" Name="" Tags="" UniqueId="ddc7ca6d-8a64-2375-3b65-626b11c3d560" Version="2.3.0" xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd"><ExternalResources><ExternalResource MetaType="PacBio.SubreadFile.SubreadBamFile" ResourceId="pbalchemysim0.pbalign.bam"><FileIndices><FileIndex [...]
\ No newline at end of file
diff --git a/pbcore/data/datasets/pbalchemysim0.bas.h5 b/pbcore/data/datasets/pbalchemysim0.bas.h5
new file mode 100644
index 0000000..63f3bec
Binary files /dev/null and b/pbcore/data/datasets/pbalchemysim0.bas.h5 differ
diff --git a/pbcore/data/datasets/pbalchemysim0.pbalign.bam b/pbcore/data/datasets/pbalchemysim0.pbalign.bam
new file mode 100644
index 0000000..b9d3997
Binary files /dev/null and b/pbcore/data/datasets/pbalchemysim0.pbalign.bam differ
diff --git a/pbcore/data/datasets/pbalchemysim0.pbalign.bam.bai b/pbcore/data/datasets/pbalchemysim0.pbalign.bam.bai
new file mode 100644
index 0000000..94af0ef
Binary files /dev/null and b/pbcore/data/datasets/pbalchemysim0.pbalign.bam.bai differ
diff --git a/pbcore/data/datasets/pbalchemysim0.pbalign.bam.pbi b/pbcore/data/datasets/pbalchemysim0.pbalign.bam.pbi
new file mode 100644
index 0000000..126ebb7
Binary files /dev/null and b/pbcore/data/datasets/pbalchemysim0.pbalign.bam.pbi differ
diff --git a/pbcore/data/datasets/pbalchemysim0.pbalign.chunk0contigs.xml b/pbcore/data/datasets/pbalchemysim0.pbalign.chunk0contigs.xml
new file mode 100644
index 0000000..ac10d5e
--- /dev/null
+++ b/pbcore/data/datasets/pbalchemysim0.pbalign.chunk0contigs.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<AlignmentSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" CreatedAt="2015-07-09T17:04:29" MetaType="PacBio.DataSet.AlignmentSet" Name="" Tags="" UniqueId="c35c10ea-504f-fc3f-ef9b-7f8934061c44" Version="2.3.0" xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd"><ExternalResources><ExternalResource MetaType="PacBio.SubreadFile.SubreadBamFile" ResourceId="/home/UNIXHOME/mdsmith/p4/mainline/software/smrtan [...]
\ No newline at end of file
diff --git a/pbcore/data/datasets/pbalchemysim0.pbalign.chunk1contigs.xml b/pbcore/data/datasets/pbalchemysim0.pbalign.chunk1contigs.xml
new file mode 100644
index 0000000..0b6aa73
--- /dev/null
+++ b/pbcore/data/datasets/pbalchemysim0.pbalign.chunk1contigs.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<AlignmentSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" CreatedAt="2015-07-09T17:04:29" MetaType="PacBio.DataSet.AlignmentSet" Name="" Tags="" UniqueId="02da8218-8636-10ae-89e9-413908e60b18" Version="2.3.0" xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd"><ExternalResources><ExternalResource MetaType="PacBio.SubreadFile.SubreadBamFile" ResourceId="/home/UNIXHOME/mdsmith/p4/mainline/software/smrtan [...]
\ No newline at end of file
diff --git a/pbcore/data/datasets/pbalchemysim0.pbalign.xml b/pbcore/data/datasets/pbalchemysim0.pbalign.xml
new file mode 100644
index 0000000..3f4838e
--- /dev/null
+++ b/pbcore/data/datasets/pbalchemysim0.pbalign.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<AlignmentSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" CreatedAt="2015-07-09T17:04:29" MetaType="PacBio.DataSet.AlignmentSet" Name="" Tags="" UniqueId="ece766a0-e7df-a647-ea6b-abaeaaad164c" Version="2.3.0" xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd"><ExternalResources><ExternalResource MetaType="PacBio.SubreadFile.SubreadBamFile" ResourceId="pbalchemysim0.pbalign.bam"><FileIndices><FileIndex [...]
\ No newline at end of file
diff --git a/pbcore/data/datasets/pbalchemysim0.reference.fasta b/pbcore/data/datasets/pbalchemysim0.reference.fasta
new file mode 100644
index 0000000..19562e7
--- /dev/null
+++ b/pbcore/data/datasets/pbalchemysim0.reference.fasta
@@ -0,0 +1,1515 @@
+>A.baumannii.1
+TTGAACGCTGGCGGCAGGCTTAACACATGCAAGTCGAGCGGGGGAAGGTAGCTTGCTACT
+GGACCTAGCGGCGGACGGGTGAGTAATGCTTAGGAATCTGCCTATTAGTGGGGGACAACA
+TCTCGAAAGGGATGCTAATACCGCATACGTCCTACGGGAGAAAGCAGGGGATCTTCGGAC
+CTTGCGCTAATAGATGAGCCTAAGTCGGATTAGCTAGTTGGTGGGGTAAAGGCCTACCAA
+GGCGACGATCTGTAGCGGGTCTGAGAGGATGATCCGCCACACTGGGACTGAGACACGGCC
+CAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGGACAATGGGGGGAACCCTGATCCAG
+CCATGCCGCGTGTGTGAAGAAGGCCTTATGGTTGTAAAGCACTTTAAGCGAGGAGGAGGC
+TACTTTAGTTAATACCTAGAGATAGTGGACGTTACTCGCAGAATAAGCACCGGCTAACTC
+TGTGCCAGCAGCCGCGGTAATACAGAGGGTGCGAGCGTTAATCGGATTTACTGGGCGTAA
+AGCGTGCGTAGGCGGCTTATTAAGTCGGATGTGAAATCCCCGAGCTTAACTTGGGAATTG
+CATTCGATACTGGTGAGCTAGAGTATGGGAGAGGATGGTAGAATTCCAGGTGTAGCGGTG
+AAATGCGTAGAGATCTGGAGGAATACCGATGGCGAAGGCAGCCATCTGGCCTAATACTGA
+CGCTGAGGTACGAAAGCATGGGGAGCAAACAGGATTAGATACCCTGGTAGTCCATGCCGT
+AAACGATGTCTACTAGCCGTTGGGGCCTTTGAGGCTTTAGTGGCGCAGCTAACGCGATAA
+GTAGACCGCCTGGGGAGTACGGTCGCAAGACTAAAACTCAAATGAATTGACGGGGGCCCG
+CACAAGCGGTGGAGCATGTGGTTTAATTCGATGCAACGCGAAGAACCTTACCTGGCCTTG
+ACATACTAGAAACTTTCCAGAGATGGATTGGTGCCTTCGGGAATCTAGATACAGGTGCTG
+CATGGCTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACC
+CTTTTCCTTACTTGCCAGCATTTCGGATGGGAACTTTAAGGATACTGCCAGTGACAAACT
+GGAGGAAGGCGGGGACGACGTCAAGTCATCATGGCCCTTACGGCCAGGGCTACACACGTG
+CTACAATGGTCGGTACAAAGGGTTGCTACACAGCGATGTGATGCTAATCTCAAAAAGCCG
+ATCGTAGTCCGGATTGGAGTCTGCAACTCGACTCCATGAAGTCGGAATCGCTAGTAATCG
+CGGATCAGAATGCCGCGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCACACCA
+TGGGAGTTTGTTGCACCAGAAGTAGCTAGCCTAACTGCAAAGAGGGCGGTTACCACGGTG
+TGGCCGATGACTGGGGTG
+>A.odontolyticus.1
+ACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAACGCTGAAGCCCAGCTTGCTGGG
+TGGATGAGTGGCGAACGGGTGAGTAACACGTGAGTAACCTGCCCCCTTCTTTGGGATAAC
+GCCCGGAAACGGGTGCTAATACTGGATATTCACTGATCTTCGCATGGGGGTTGGTGGAAA
+GGTTTTTTCTGGTGGGGGATGGGCTCGCGGCCTATCAGCTTGTTGGTGGGGTGATGGCCT
+ACCAAGGCTTTGACGGGTAGCCGGCCTGAGAGGGTGACCGGTCACATTGGGACTGAGATA
+CGGCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGCGAAAGCCTGA
+TGCAGCGACGCCGCGTGAGGGATGGAGGCCTTCGGGTTGTAAACCTCTTTCGCTCATGGT
+CAAGCCGCAACTCAAGGTTGTGGTGAGGGTAGTGGGTAAAGAAGCGCCGGCTAACTACGT
+GCCAGCAGCCGCGGTAATACGTAGGGCGCGAGCGTTGTCCGGAATTATTGGGCGTAAAGG
+GCTTGTAGGCGGTTGGTCGCGTCTGCCGTGAAATCCTCTGGCTTAACTGGGGGCGTGCGG
+TGGGTACGGGCTGACTTGAGTGCGGTAGGGGAGACTGGAACTCCTGGTGTAGCGGTGGAA
+TGCGCAGATATCAGGAAGAACACCGGTGGCGAAGGCGGGTCTCTGGGCCGTTACTGACGC
+TGAGGAGCGAAAGCGTGGGGAGCGAACAGGATTAGATACCCTGGTAGTCCACGCTGTAAA
+CGTTGGGCACTAGGTGTGGGGGCCACCCGTGGTTTCTGCGCCGTAGCTAACGCTTTAAGT
+GCCCCGCCTGGGGAGTACGGCCGCAAGGCTAAAACTCAAAGGAATTGACGGGGGCCCGCA
+CAAGCGGCGGAGCATGCGGATTAATTCGATGCAACGCGAAGAACCTTACCAAGGCTTGAC
+ATGCACGGCGGCACTGCAGAGATGTGGTGGCATTTAGTTGGTCGTGTGCAGGTGGTGCAT
+GGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTT
+GCCCTATGTTGCCAGCACGTGATGGTGGGGACTCGTGGGGGACTGCCGGGGTTAACTCGG
+AGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGTCTTGGGCTTCACGCATGCT
+ACAATGGCTGGTACAGAGGGTTGCGATACTGTGAGGTGGAGCGAATCCCTTAAAGCCAGT
+CTCAGTTCGGATTGGGGTCTGCAACTCGACCCCATGAAGGTGGAGTCGCTAGTAATCGCA
+GATCAGCAACGCTGCGGTGAATACGTTCTCGGGCCTTGTACACACCGCCCGTCACGTCAC
+GAAAGTTGGTAACACCCGAAGCCCATGGCCTAACCGCTTTGTGCGGGGGGAGTGGTCGAA
+GGTGGGATTGGCGATTGGGACG
+>B.cereus.1
+ATGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAGCGAATGGATTAAGAGCTTGCTC
+TTATGAAGTTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCCATAAGACTGGGA
+TAACTCCGGGAAACCGGGGCTAATACCGGATAACATTTTGAACTGCATGGTTCGAAATTG
+AAAGGCGGCTTCGGCTGTCACTTATGGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGG
+TAACGGCTCACCAAGGCAACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACACTGGG
+ACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCCGCAATGGACG
+AAAGTCTGACGGAGCAACGCCGCGTGAGTGATGAAGGCTTTCGGGTCGTAAAACTCTGTT
+GTTAGGGAAGAACAAGTGCTAGTTGAATAAGCTGGCACCTTGACGGTACCTAACCAGAAA
+GCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTATCCGGA
+ATTATTGGGCGTAAAGCGCGCGCAGGTGGTTTCTTAAGTCTGATGTGAAAGCCCACGGCT
+CAACCGTGGAGGGTCATTGGAAACTGGGAGACTTGAGTGCAGAAGAGGAAAGTGGAATTC
+CATGTGTAGCGGTGAAATGCGTAGAGATATGGAGGAACACCAGTGGCGAAGGCGACTTTC
+TGGTCTGTAACTGACACTGAGGCGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTG
+GTAGTCCACGCCGTAAACGATGAGTGCTAAGTGTTAGAGGGTTTCCGCCCTTTAGTGCTG
+AAGTTAACGCATTAAGCACTCCGCCTGGGGAGTACGGCCGCAAGGCTGAAACTCAAAGGA
+ATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAA
+CCTTACCAGGTCTTGACATCCTCTGACAACCCTAGAGATAGGGCTTCTCCTTCGGGAGCA
+GAGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCC
+GCAACGAGCGCAACCCTTGATCTTAGTTGCCATCATTCAGTTGGGCACTCTAAGGTGACT
+GCCGGTGACAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGACCT
+GGGCTACACACGTGCTACAATGGACGGTACAAAGAGCTGCAAGACCGCGAGGTGGAGCTA
+ATCTCATAAAACCGTTCTCAGTTCGGATTGTAGGCTGCAACTCGCCTACATGAAGCTGGA
+ATCGCTAGTAATCGCGGATCAGCATGCCGCGGTGAATACGTTCCCGGGCCTTGTACACAC
+CGCCCGTCACACCACGAGAGTTTGTAACACCCGAAGTCGGTGGGGTAACCTTTTGGAGCC
+AGCCGCCTAAGGTGGGACAGATGATTGGGGTG
+>B.cereus.2
+ATGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAGCGAATGGATTAAGAGCTTGCTC
+TTATGAAGTTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCCATAAGACTGGGA
+TAACTCCGGGAAACCGGGGCTAATACCGGATAACATTTTGAACCGCATGGTTCGAAATTG
+AAAGGCGGCTTCGGCTGTCACTTATGGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGG
+TAACGGCTCACCAAGGCAACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACACTGGG
+ACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCCGCAATGGACG
+AAAGTCTGACGGAGCAACGCCGCGTGAGTGATGAAGGCTTTCGGGTCGTAAAACTCTGTT
+GTTAGGGAAGAACAAGTGCTAGTTGAATAAGCTGGCACCTTGACGGTACCTAACCAGAAA
+GCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTATCCGGA
+ATTATTGGGCGTAAAGCGCGCGCAGGTGGTTTCTTAAGTCTGATGTGAAAGCCCACGGCT
+CAACCGTGGAGGGTCATTGGAAACTGGGAGACTTGAGTGCAGAAGAGGAAAGTGGAATTC
+CATGTGTAGCGGTGAAATGCGTAGAGATATGGAGGAACACCAGTGGCGAAGGCGACTTTC
+TGGTCTGTAACTGACACTGAGGCGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTG
+GTAGTCCACGCCGTAAACGATGAGTGCTAAGTGTTAGAGGGTTTCCGCCCTTTAGTGCTG
+AAGTTAACGCATTAAGCACTCCGCCTGGGGAGTACGGCCGCAAGGCTGAAACTCAAAGGA
+ATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAA
+CCTTACCAGGTCTTGACATCCTCTGACAACCCTAGAGATAGGGCTTCTCCTTCGGGAGCA
+GAGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCC
+GCAACGAGCGCAACCCTTGATCTTAGTTGCCATCATTCAGTTGGGCACTCTAAGGTGACT
+GCCGGTGACAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGACCT
+GGGCTACACACGTGCTACAATGGACGGTACAAAGAGCTGCAAGACCGCGAGGTGGAGCTA
+ATCTCATAAAACCGTTCTCAGTTCGGATTGTAGGCTGCAACTCGCCTACATGAAGCTGGA
+ATCGCTAGTAATCGCGGATCAGCATGCCGCGGTGAATACGTTCCCGGGCCTTGTACACAC
+CGCCCGTCACACCACGAGAGTTTGTAACACCCGAAGTCGGTGGGGTAACCTTTTTGGAGC
+CAGCCGCCTAAGGTGGGACAGATGATTGGGGTG
+>B.cereus.4
+ATGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAGCGAATGGATTAAGAGCTTGCTC
+TTATGAAGTTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCTATAAGACTGGGA
+TAACTCCGGGAAACCGGGGCTAATACCGGATAACATTTTGAACCGCATGGTTCGAAATTG
+AAAGGCGGCTTCGGCTGTCACTTATGGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGG
+TAACGGCTCACCAAGGCAACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACACTGGG
+ACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCCGCAATGGACG
+AAAGTCTGACGGAGCAACGCCGCGTGAGTGATGAAGGCTTTCGGGTCGTAAAACTCTGTT
+GTTAGGGAAGAACAAGTGCTAGTTGAATAAGCTGGCACCTTGACGGTACCTAACCAGAAA
+GCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTATCCGGA
+ATTATTGGGCGTAAAGCGCGCGCAGGTGGTTTCTTAAGTCTGATGTGAAAGCCCACGGCT
+CAACCGTGGAGGGTCATTGGAAACTGGGAGACTTGAGTGCAGAAGAGGAAAGTGGAATTC
+CATGTGTAGCGGTGAAATGCGTAGAGATATGGAGGAACACCAGTGGCGAAGGCGACTTTC
+TGGTCTGTAACTGACACTGAGGCGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTG
+GTAGTCCACGCCGTAAACGATGAGTGCTAAGTGTTAGAGGGTTTCCGCCCTTTAGTGCTG
+AAGTTAACGCATTAAGCACTCCGCCTGGGGAGTACGGCCGCAAGGCTGAAACTCAAAGGA
+ATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAA
+CCTTACCAGGTCTTGACATCCTCTGACAACCCTAGAGATAGGGCTTCTCCTTCGGGAGCA
+GAGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCC
+GCAACGAGCGCAACCCTTGATCTTAGTTGCCATCATTCAGTTGGGCACTCTAAGGTGACT
+GCCGGTGACAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGACCT
+GGGCTACACACGTGCTACAATGGACGGTACAAAGAGCTGCAAGACCGCGAGGTGGAGCTA
+ATCTCATAAAACCGTTCTCAGTTCGGATTGTAGGCTGCAACTCGCCTACATGAAGCTGGA
+ATCGCTAGTAATCGCGGATCAGCATGCCGCGGTGAATACGTTCCCGGGCCTTGTACACAC
+CGCCCGTCACACCACGAGAGTTTGTAACACCCGAAGTCGGTGGGGTAACCTTTTGGAGCC
+AGCCGCCTAAGGTGGGACAGATGATTGGGGTG
+>B.cereus.6
+ATGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAGCGAATGGATTAAGAGCTTGCTC
+TTATGAAGTTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCCATAAGACTGGGA
+TAACTCCGGGAAACCGGGGCTAATACCGGATAACATTTTGAACCGCATGGTTCGAAATTG
+AAAGGCGGCTTCGGCTGTCACTTATGGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGG
+TAACGGCTCACCAAGGCAACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACACTGGG
+ACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCCGCAATGGACG
+AAAGTCTGACGGAGCAACGCCGCGTGAGTGATGAAGGCTTTCGGGTCGTAAAACTCTGTT
+GTTAGGGAAGAACAAGTGCTAGTTGAATAAGCTGGCACCTTGACGGTACCTAACCAGAAA
+GCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTATCCGGA
+ATTATTGGGCGTAAAGCGCGCGCAGGTGGTTTCTTAAGTCTGATGTGAAAGCCCACGGCT
+CAACCGTGGAGGGTCATTGGAAACTGGGAGACTTGAGTGCAGAAGAGGAAAGTGGAATTC
+CATGTGTAGCGGTGAAATGCGTAGAGATATGGAGGAACACCAGTGGCGAAGGCGACTTTC
+TGGTCTGTAACTGACACTGAGGCGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTG
+GTAGTCCACGCCGTAAACGATGAGTGCTAAGTGTTAGAGGGTTTCCGCCCTTTAGTGCTG
+AAGTTAACGCATTAAGCACTCCGCCTGGGGAGTACGGCCGCAAGGCTGAAACTCAAAGGA
+ATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAA
+CCTTACCAGGTCTTGACATCCTCTGACAACCCTAGAGATAGGGCTTCTCCTTCGGGAGCA
+GAGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCC
+GCAACGAGCGCAACCCTTGATCTTAGTTGCCATCATTCAGTTGGGCACTCTAAGGTGACT
+GCCGGTGACAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGACCT
+GGGCTACACACGTGCTACAATGGACGGTACAAAGAGCTGCAAGACCGCGAGGTGGAGCTA
+ATCTCATAAAACCGTTCTCAGTTCGGATTGTAGGCTGCAACTCGCCTACATGAAGCTGGA
+ATCGCTAGTAATCGCGGATCAGCATGCCGCGGTGAATACGTTCCCGGGCCTTGTACACAC
+CGCCCGTCACACCACGAGAGTTTGTAACACCCGAAGTCGGTGGGGTAACCTTTTGGAGCC
+AGCCGCCTAAGGTGGGACAGATGATTGGGGTG
+>B.vulgatus.1
+ATGAACGCTAGCTACAGGCTTAACACATGCAAGTCGAGGGGCAGCATGGTCTTAGCTTGC
+TAAGACTGATGGCGACCGGCGCACGGGTGAGTAACACGTATCCAACCTGCCGTCTACTCT
+TGGACAGCCTTCTGAAAGGAAGATTAATACAAGATGGCATCATGAGTCCGCATGTTCACA
+TGATTAAAGGTATTCCGGTAGACGATGGGGATGCGTTCCATTAGATAGTAGGCGGGGTAA
+CGGCCCACCTAGTCTTCGATGGATAGGGGTTCTGAGAGGAAGGTCCCCCACATTGGAACT
+GAGACACGGTCCAAACTCCTACGGGAGGCAGCAGTGAGGAATATTGGTCAATGGGCGCAG
+GCCTGAACCAGCCAAGTAGCGTGAAGGATGACTGCCCTATGGGTTGTAAACTTCTTTTAT
+AAAGGAATAAAGTCGGGTATGGATACCCGTTTGCATGTACTTTATGAATAAGGATCGGCT
+AACTCCGTGCCAGCAGCCGCGGTAATACGGAGGATCCGAGCGTTATCCGGATTTATTGGG
+TTTAAAGGGAGCGTAGATGGATGTTTAAGTCAGTTGTGAAAGTTTGCGGCTCAACCGTAA
+AATTGCAGTTGATACTGGATATCTTGAGTGCAGTTGAGGCAGGCGGAATTCGTGGTGTAG
+CGGTGAAATGCTTAGATATCACGAAGAACTCCGATTGCGAAGGCAGCCTGCTAAGCTGCA
+ACTGACATTGAGGCTCGAAAGTGTGGGTATCAAACAGGATTAGATACCCTGGTAGTCCAC
+ACGGTAAACGATGAATACTCGCTGTTTGCGATATACGGCAAGCGGCCAAGCGAAAGCGTT
+AAGTATTCCACCTGGGGAGTACGCCGGCAACGGTGAAACTCAAAGGAATTGACGGGGGCC
+CGCACAAGCGGAGGAACATGTGGTTTAATTCGATGATACGCGAGGAACCTTACCCGGGCT
+TAAATTGCAGATGAATTACGGTGAAAGCCGTAAGCCGCAAGGCATCTGTGAAGGTGCTGC
+ATGGTTGTCGTCAGCTCGTGCCGTGAGGTGTCGGCTTAAGTGCCATAACGAGCGCAACCC
+TTGTTGTCAGTTACTAACAGGTTTCGCTGAGGACTCTGACAAGACTGCCATCGTAAGATG
+TGAGGAAGGTGGGGATGACGTCAAATCAGCACGGCCCTTACGTCCGGGGCTACACACGTG
+TTACAATGGGGGGTACAGAGGGCCGCTACCACGCGAGTGGATGCCAATCCCAAAAACCTC
+TCTCAGTTCGGACTGGAGTCTGCAACCCGACTCCACGAAGCTGGATTCGCTAGTAATCGC
+GCATCAGCCACGGCGCGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCAAGCCA
+TGGGAGCCGGGGGTACCTGAAGTGCGTAACCGCGAGGAGCGCCCTAGGGTAAAACTGGTG
+ACTGGGGCT
+>B.vulgatus.2
+ATGAACGCTAGCTACAGGCTTAACACATGCAAGTCGAGGGGCAGCATGGTCTTAGCTTGC
+TAAGGCCGATGGCGACCGGCGCACGGGTGAGTAACACGTATCCAACCTGCCGTCTACTCT
+TGGACAGCCTTCTGAAAGGAAGATTAATACAAGATGGCATCATGAGTCCGCATGTTCACA
+TGATTAAAGGTATTCCGGTAGACGATGGGGATGCGTTCCATTAGATAGTAGGCGGGGTAA
+CGGCCCACCTAGTCTTCGATGGATAGGGGTTCTGAGAGGAAGGTCCCCCACATTGGAACT
+GAGACACGGTCCAAACTCCTACGGGAGGCAGCAGTGAGGAATATTGGTCAATGGGCGAGA
+GCCTGAACCAGCCAAGTAGCGTGAAGGATGACTGCCCTATGGGTTGTAAACTTCTTTTAT
+AAAGGAATAAAGTCGGGTATGGATACCCGTTTGCATGTACTTTATGAATAAGGATCGGCT
+AACTCCGTGCCAGCAGCCGCGGTAATACGGAGGATCCGAGCGTTATCCGGATTTATTGGG
+TTTAAAGGGAGCGTAGATGGATGTTTAAGTCAGTTGTGAAAGTTTGCGGCTCAACCGTAA
+AATTGCAGTTGATACTGGATATCTTGAGTGCAGTTGAGGCAGGCGGAATTCGTGGTGTAG
+CGGTGAAATGCTTAGATATCACGAAGAACTCCGATTGCGAAGGCAGCCTGCTAAGCTGCA
+ACTGACATTGAGGCTCGAAAGTGTGGGTATCAAACAGGATTAGATACCCTGGTAGTCCAC
+ACGGTAAACGATGAATACTCGCTGTTTGCGATATACGGCAAGCGGCCAAGCGAAAGCGTT
+AAGTATTCCACCTGGGGAGTACGCCGGCAACGGTGAAACTCAAAGGAATTGACGGGGGCC
+CGCACAAGCGGAGGAACATGTGGTTTAATTCGATGATACGCGAGGAACCTTACCCGGGCT
+TAAATTGCAGATGAATTACGGTGAAAGCCGTAAGCCGCAAGGCATCTGTGAAGGTGCTGC
+ATGGTTGTCGTCAGCTCGTGCCGTGAGGTGTCGGCTTAAGTGCCATAACGAGCGCAACCC
+TTGTTGTCAGTTACTAACAGGTCATGCTGAGGACTCTGACAAGACTGCCATCGTAAGATG
+TGAGGAAGGTGGGGATGACGTCAAATCAGCACGGCCCTTACGTCCGGGGCTACACACGTG
+TTACAATGGGGGGTACAGAGGGCCGCTACCACGCGAGTGGATGCCAATCCCCAAAACCTC
+TCTCAGTTCGGACTGGAGTCTGCAACCCGACTCCACGAAGCTGGATTCGCTAGTAATCGC
+GCATCAGCCACGGCGCGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCAAGCCA
+TGGGAGCCGGGGGTACCTGAAGTGCGTAACCGCGAGGAGCGCCCTAGGGTAAAACTGGTG
+ACTGGGGCT
+>B.vulgatus.3
+ATGAACGCTAGCTACAGGCTTAACACATGCAAGTCGAGGGGCAGCATGGTCTTAGCTTGC
+TAAGGCCGATGGCGACCGGCGCACGGGTGAGTAACACGTATCCAACCTGCCGTCTACTCT
+TGGATAGCCTTCTGAAAGGAAGATTAATACAAGATGGCATCATGAGTCCGCATGTTCACA
+TGATTAAAGGTATTCCGGTAGACGATGGGGATGCGTTCCATTAGATAGTAGGCGGGGTAA
+CGGCCCACCTAGTCTTCGATGGATAGGGGTTCTGAGAGGAAGGTCCCCCACATTGGAACT
+GAGACACGGTCCAAACTCCTACGGGAGGCAGCAGTGAGGAATATTGGTCAATGGGCGAGA
+GCCTGAACCAGCCAAGTAGCGTGAAGGATGACTGCCCTATGGGTTGTAAACTTCTTTTAT
+AAAGGAATAAAGTCGGGTATGGATACCCGTTTGCATGTACTTTATGAATAAGGATCGGCT
+AACTCCGTGCCAGCAGCCGCGGTAATACGGAGGATCCGAGCGTTATCCGGATTTATTGGG
+TTTAAAGGGAGCGTAGATGGATGTTTAAGTCAGTTGTGAAAGTTTGCGGCTCAACCGTAA
+AATTGCAGTTGATACTGGATATCTTGAGTGCAGTTGAGGCAGGCGGAATTCGTGGTGTAG
+CGGTGAAATGCTTAGATATCACGAAGAACTCCGATTGCGAAGGCAGCCTGCTAAGCTGCA
+ACTGACATTGAGGCTCGAAAGTGTGGGTATCAAACAGGATTAGATACCCTGGTAGTCCAC
+ACGGTAAACGATGAATACTCGCTGTTTGCGATATACGGCAAGCGGCCAAGCGAAAGCGTT
+AAGTATTCCACCTGGGGAGTACGCCGGCAACGGTGAAACTCAAAGGAATTGACGGGGGCC
+CGCACAAGCGGAGGAACATGTGGTTTAATTCGATGATACGCGAGGAACCTTACCCGGGCT
+TAAATTGCAGATGAATTACGGTGAAAGCCGTAAGCCGCAAGGCATCTGTGAAGGTGCTGC
+ATGGTTGTCGTCAGCTCGTGCCGTGAGGTGTCGGCTTAAGTGCCATAACGAGCGCAACCC
+TTGTTGTCAGTTACTAACAGGTCATGCTGAGGACTCTGACAAGACTGCCATCGTAAGATG
+TGAGGAAGGTGGGGATGACGTCAAATCAGCACGGCCCTTACGTCCGGGGCTACACACGTG
+TTACAATGGGGGGTACAGAGGGCCGCTACCACGCGAGTGGATGCCAATCCCCAAAACCTC
+TCTCAGTTCGGACTGGAGTCTGCAACCCGACTCCACGAAGCTGGATTCGCTAGTAATCGC
+GCATCAGCCACGGCGCGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCAAGCCA
+TGGGAGCCGGGGGTACCTGAAGTGCGTAACCGCGAGGAGCGCCCTAGGGTAAAACTGGTG
+ACTGGGGCT
+>B.vulgatus.4
+ATGAACGCTAGCTACAGGCTTAACACATGCAAGTCGAGGGGCAGCATGGTCTTAGCTTGC
+TAAGGCCGATGGCGACCGGCGCACGGGTGAGTAACACGTATCCAACCTGCCGTCTACTCT
+TGGACAGCCTTCTGAAAGGAAGATTAATACAAGATGGCATCATGAGTCCGCATGTTCACA
+TGATTAAAGGTATTCCGGTAGACGATGGGGATGCGTTCCATTAGATAGTAGGCGGGGTAA
+CGGCCCACCTAGTCTTCGATGGATAGGGGTTCTGAGAGGAAGGTCCCCCACATTGGAACT
+GAGACACGGTCCAAACTCCTACGGGAGGCAGCAGTGAGGAATATTGGTCAATGGGCGAGA
+GCCTGAACCAGCCAAGTAGCGTGAAGGATGACTGCCCTATGGGTTGTAAACTTCTTTTAT
+AAAGGAATAAAGTCGGGTATGGATACCCGTTTGCATGTACTTTATGAATAAGGATCGGCT
+AACTCCGTGCCAGCAGCCGCGGTAATACGGAGGATCCGAGCGTTATCCGGATTTATTGGG
+TTTAAAGGGAGCGTAGATGGATATTTAAGTCAGTTGTGAAAGTTTGCGGCTCAACCGTAA
+AATTGCAGTTGATACTGGATATCTTGAGTGCAGTTGAGGCAGGCGGAATTCGTGGTGTAG
+CGGTGAAATGCTTAGATATCACGAAGAACTCCGATTGCGAAGGCAGCCTGCTAAGCTGCA
+ACTGACATTGAGGCTCGAAAGTGTGGGTATCAAACAGGATTAGATACCCTGGTAGTCCAC
+ACGGTAAACGATGAATACTCGCTGTTTGCGATATACTGCAAGCGGCCAAGCGAAAGCGTT
+AAGTATTCCACCTGGGGAGTACGCCGGCAACGGTGAAACTCAAAGGAATTGACGGGGGCC
+CGCACAAGCGGAGGAACATGTGGTTTAATTCGATGATACGCGAGGAACCTTACCCGGGCT
+TAAATTGCAGATGAATTACGGTGAAAGCCGTAAGCCGCAAGGCATCTGTGAAGGTGCTGC
+ATGGTTGTCGTCAGCTCGTGCCGTGAGGTGTCGGCTTAAGTGCCATAACGAGCGCAACCC
+TTGTTGTCAGTTACTAACAGGTTTTGCTGAGGACTCTGACAAGACTGCCATCGTAAGATG
+TGAGGAAGGTGGGGATGACGTCAAATCAGCACGGCCCTTACGTCCGGGGCTACACACGTG
+TTACAATGGGGGGTACAGAGGGCCGCTACCACGCGAGTGGATGCCAATCCCCAAAACCTC
+TCTCAGTTCGGACTGGAGTCTGCAACCCGACTCCACGAAGCTGGATTCGCTAGTAATCGC
+GCATCAGCCACGGCGCGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCAAGCCA
+TGGGAGCCGGGGGTACCTGAAGTGCGTAACCGCGAGGAGCGCCCTAGGGTAAAACTGGTG
+ACTGGGGCT
+>B.vulgatus.5
+ATGAACGCTAGCTACAGGCTTAACACATGCAAGTCGAGGGGCAGCATGGTCTTAGCTTGC
+TAAGGCCGATGGCGACCGGCGCACGGGTGAGTAACACGTATCCAACCTGCCGTCTACTCT
+TGGACAGCCTTCTGAAAGGAAGATTAATACAAGATGGCATCATGAGTCCGCATGTTCACA
+TGATTAAAGGTATTCCGGTAGACGATGGGGATGCGTTCCATTAGATAGTAGGCGGGGTAA
+CGGCCCACCTAGTCTTCGATGGATAGGGGTTCTGAGAGGAAGGTCCCCCACATTGGAACT
+GAGACACGGTCCAAACTCCTACGGGAGGCAGCAGTGAGGAATATTGGTCAATGGGCGAGA
+GCCTGAACCAGCCAAGTAGCGTGAAGGATGACTGCCCTATGGGTTGTAAACTTCTTTTAT
+AAAGGAATAAAGTCGGGTATGGATACCCGTTTGCATGTACTTTATGAATAAGGATCGGCT
+AACTCCGTGCCAGCAGCCGCGGTAATACGGAGGATCCGAGCGTTATCCGGATTTATTGGG
+TTTAAAGGGAGCGTAGATGGATGTTTAAGTCAGTTGTGAAAGTTTGCGGCTCAACCGTAA
+AATTGCAGTTGATACTGGATATCTTGAGTGCAGTTGAGGCAGGCGGAATTCGTGGTGTAG
+CGGTGAAATGCTTAGATATCACGAAGAACTCCGATTGCGAAGGCAGCCTGCTAAGCTGCA
+ACTGACATTGAGGCTCGAAAGTGTGGGTATCAAACAGGATTAGATACCCTGGTAGTCCAC
+ACGGTAAACGATGAATACTCGCTGTTTGCGATATACTGCAAGCGGCCAAGCGAAAGCGTT
+AAGTATTCCACCTGGGGAGTACGCCGGCAACGGTGAAACTCAAAGGAATTGACGGGGGCC
+CGCACAAGCGGAGGAACATGTGGTTTAATTCGATGATACGCGAGGAACCTTACCCGGGCT
+TAAATTGCAGATGAATTACGGTGAAAGCCGTAAGCCGCAAGGCATCTGTGAAGGTGCTGC
+ATGGTTGTCGTCAGCTCGTGCCGTGAGGTGTCGGCTTAAGTGCCATAACGAGCGCAACCC
+TTGTTGTCAGTTACTAACAGGTTCCGCTGAGGACTCTGACAAGACTGCCATCGTAAGATG
+TGAGGAAGGTGGGGATGACGTCAAATCAGCACGGCCCTTACGTCCGGGGCTACACACGTG
+TTACAATGGGGGGTACAGAGGGCCGCTACCACGCGAGTGGATGCCAATCCCCAAAACCTC
+TCTCAGTTCGGACTGGAGTCTGCAACCCGACTCCACGAAGCTGGATTCGCTAGTAATCGC
+GCATCAGCCACGGCGCGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCAAGCCA
+TGGGAGCCGGGGGTACCTGAAGTGCGTAACCGCGAGGAGCGCCCTAGGGTAAAACTGGTG
+ACTGGGGCT
+>C.beijerinckii.1
+ACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAGCGATGAAGCTCCTTCGGGAGTG
+GATTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCTCATAGAGGGGAATAGCCT
+TCCGAAAGGAAGATTAATACCGCATAAGATTGTAGTGCCGCATGGCATAGCAATTAAAGG
+AGTAATCCGTTATGAGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGGTAACGGCTCAC
+CAAGGCGACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACATTGGGACTGAGACACG
+GCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGGGAAACCCTGATG
+CAGCAACGCCGCGTGAGTGATGACGGTCTTCGGATTGTAAAGCTCTGTCTTCAGGGACGA
+TAATGACGGTACCTGAGGAGGAAGCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATAC
+GTAGGTGGCAAGCGTTGTCCGGATTTACTGGGCGTAAAGGGAGCGTAGGTGGATATTTAA
+GTGGGATGTGAAATACTCGGGCTTAACCTGGGTGCTGCATTCCAAACTGGATATCTAGAG
+TGCAGGAGAGGAAAGTAGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAA
+TACCAGTGGCGAAGGCGACTTTCTGGACTGTAACTGACACTGAGGCTCGAAAGCGTGGGG
+AGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTAAACGATGAATACTAGGTGTAGG
+GGTTGTCATGACCTCTGTGCCGCCGCTAACGCATTAAGTATTCCGCCTGGGGAGTACGGT
+CGCAAGATTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCAGCGGAGCATGTGGTT
+TAATTCGAAGCAACGCGAAGAACCTTACCTAGACTTGACATCTCCTGAATTACCCTTAAT
+CGGGGAAGCCCTTCGGGGCAGGAAGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGT
+GAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCTACCATTTAG
+TTGAGCACTCTAGCGAGACTGCCCGGGTTAACCGGGAGGAAGGTGGGGATGACGTCAAAT
+CATCATGCCCCTTATGTCTAGGGCTACACACGTGCTACAATGGCTGGTACAGAGAGATGC
+TAAACCGCGAGGTGGAGCCAAACTTTAAAACCAGTCTCAGTTCGGATTGTAGGCTGAAAC
+TCGCCTACATGAAGCTGGAGTTGCTAGTAATCGCGAATCAGAATGTCGCGGTGAATACGT
+TCCCGGGCCTTGTACACACCGCCCGTCACACCATGAGAGTTGGCAATACCCAAAGTTCGT
+GAGCTAACGCGTAAGCGAGGCAGCGACCTAAGGTAGGGTCAGCGATTGGGGTG
+>C.beijerinckii.2
+ACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAGCGATGAAGCTCCTTCGGGAGTG
+AATTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCTCATAGAGGGGAATAGCCT
+TCCGAAAGGAAGATTAATACCGCATAAGATTGTAGTGCCGCATGGCATAGCAATTAAAGG
+AGTAATCCGCTATGAGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGGTAACGGCTCAC
+CAAGGCGACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACATTGGGACTGAGACACG
+GCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGGGAAACCCTGATG
+CAGCAACGCCGCGTGAGTGATGACGGTCTTCGGATTGTAAAGCTCTGTCTTCAGGGACGA
+TAATGACGGTACCTGAGGAGGAAGCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATAC
+GTAGGTGGCAAGCGTTGTCCGGATTTACTGGGCGTAAAGGGAGCGTAGGTGGATATTTAA
+GTGGGATGTGAAATACTCGGGCTTAACCTGGGTGCTGCATTCCAAACTGGATATCTAGAG
+TGCAGGAGAGGAAAGTAGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAA
+TACCAGTGGCGAAGGCGACTTTCTGGACTGTAACTGACACTGAGGCTCGAAAGCGTGGGG
+AGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTAAACGATGAATACTAGGTGTAGG
+GGTTGTCATGACCTCTGTGCCGCCGCTAACGCATTAAGTATTCCGCCTGGGGAGTACGGT
+CGCAAGATTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCAGCGGAGCATGTGGTT
+TAATTCGAAGCAACGCGAAGAACCTTACCTAGACTTGACATCTCCTGAATTACCCTTAAT
+CGGGGAAGCCCTTCGGGGCAGGAAGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGT
+GAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCTACCATTTAG
+TTGAGCACTCTAGCGAGACTGCCCGGGTTAACCGGGAGGAAGGTGGGGATGACGTCAAAT
+CATCATGCCCCTTATGTCTAGGGCTACACACGTGCTACAATGGCTGGTACAAAGAGATGC
+TAAACCGCGAGGTGGAGCCAAACTTTAAAACCAGTCTCAGTTCGGATTGTAGGCTGAAAC
+TCGCCTACATGAAGCTGGAGTTGCTAGTAATCGCGAATCAGAATGTCGCGGTGAATACGT
+TCCCGGGCCTTGTACACACCGCCCGTCACACCATGAGAGTTGGCAATACCCAAAGTTCGT
+GAGCTAACGCGCAAGCGGGGCAGCGACCTAAGGTAGGGTCAGCGATTGGGGTG
+>C.beijerinckii.3
+ACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAGCGATGAAGCTCCTTCGGGAGCG
+GATTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCTCATAGAGGGGAATAGCCT
+TTCGAAAGGAAGATTAATACCGCATAAGATTGTAGTGCCGCATGGCATAGCAATTAAAGG
+AGTAATCCGCTATGAGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGGTAACGGCTCAC
+CAAGGCGACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACATTGGGACTGAGACACG
+GCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGGGAAACCCTGATG
+CAGCAACGCCGCGTGAGTGATGACGGTCTTCGGATTGTAAAGCTCTGTCTTCAGGGACGA
+TAATGACGGTACCTGAGGAGGAAGCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATAC
+GTAGGTGGCAAGCGTTGTCCGGATTTACTGGGCGTAAAGGGAGCGTAGGTGGATATTTAA
+GTGGGATGTGAAATACTCGGGCTTAACCTGGGTGCTGCATTCCAAACTGGATATCTAGAG
+TGCAGGAGAGGAAAGTAGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAA
+TACCAGTGGCGAAGGCGACTTTCTGGACTGTAACTGACACTGAGGCTCGAAAGCGTGGGG
+AGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTAAACGATGAATACTAGGTGTAGG
+GGTTGTCATGACCTCTGTGCCGTCGCTAACGCATTAAGTATTCCGCCTGGGGAGTACGGT
+CGCAAGATTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCAGCGGAGCATGTGGTT
+TAATTCGAAGCAACGCGAAGAACCTTACCTAGACTTGACATCTCCTGAATTACCCTTAAT
+CGGGGAAGCCCTTCGGGGCAGGAAGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGT
+GAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCTACCATTTAG
+TTGAGCACTCTAGCGAGACTGCCCGGGTTAACCGGGAGGAAGGTGGGGATGACGTCAAAT
+CATCATGCCCCTTATGTCTAGGGCTACACACGTGCTACAATGGCTGGTACAGAGAGATGC
+CAAACCGCGAGGTGGAGCCAAACTTTAAAACCAGTCTCAGTTCGGATTGTAGGCTGAAAC
+TCGCCTACATGAAGCTGGAGTTGCTAGTAATCGCGAATCAGAATGTCGCGGTGAATACGT
+TCCCGGGCCTTGTACACACCGCCCGTCACACCATGAGAGTTGGCAATACCCAAAGTTCGT
+GAGCTAACGCGCAAGCGGGGCAGCGACCTAAGGTAGGGTCAGCGATTGGGGTG
+>C.beijerinckii.4
+ACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAGCGATGAAGCTCCTTCGGGAGTG
+GATTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCTCATAGAGGGGAATAGCCT
+TTCGAAAGGAAGATTAATACCGCATAAGATTGTAGTGCCGCATGGCATAGCAATTAAAGG
+AGTAATCCGCTATGAGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGGTAACGGCTCAC
+CAAGGCGACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACATTGGGACTGAGACACG
+GCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGGGAAACCCTGATG
+CAGCAACGCCGCGTGAGTGATGACGGTCTTCGGATTGTAAAGCTCTGTCTTCAGGGACGA
+TAATGACGGTACCTGAGGAGGAAGCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATAC
+GTAGGTGGCAAGCGTTGTCCGGATTTACTGGGCGTAAAGGGAGCGTAGGTGGATATTTAA
+GTGGGATGTGAAATACTCGGGCTTAACCTGGGTGCTGCATTCCAAACTGGATATCTAGAG
+TGCAGGAGAGGAAAGTAGAATTCTTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAA
+TACCAGTGGCGAAGGCGACTTTCTGGACTGTAACTGACACTGAGGCTCGAAAGCGTGGGG
+AGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTAAACGATGAATACTAGGTGTAGG
+GGTTGTCATGACCTCTGTGCCGCCGCTAACGCATTAAGTATTCCGCCTGGGGAGTACGGT
+CGCAAGATTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCAGCGGAGCATGTGGTT
+TAATTCGAAGCAACGCGAAGAACCTTACCTAGACTTGACATCTCCTGAATTACCCTTAAT
+CGGGGAAGCCCTTCGGGGCAGGAAGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGT
+GAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCTACCATTTAG
+TTGAGCACTCTAGCGAGACTGCCCGGGTTAACCGGGAGGAAGGTGGGGATGACGTCAAAT
+CATCATGCCCCTTATGTCTAGGGCTACACACGTGCTACAATGGCTGGTACAGAGAGATGC
+TAAACCGCGAGGTGGAGCCAAACTTTAAAACCAGTCTCAGTTCGGATTGTAGGCTGAAAC
+TCGCCTACATGAAGCTGGAGTTGCTAGTAATCGCGAATCAGAATGTCGCGGTGAATACGT
+TCCCGGGCCTTGTACACACCGCCCGTCACACCATGAGAGTTGGCAATACCCAAAGTTCGT
+GAGCTAACGCGTAAGCGAGGCAGCGACCTAAGGTAGGGTCAGCGATTGGGGTG
+>C.beijerinckii.5
+ACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAGCGATGAAGCTCCTTCGGGAGCG
+GATTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCTCATAGAGTGGAATAGCCT
+TTCGAAAGGAAGATTAATACCGCATAAGATTGTAGTGCCGCATGGCATAGCAATTAAAGG
+AGTAATCCGCTATGAGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGGTAACGGCTCAC
+CAAGGCGACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACATTGGGACTGAGACACG
+GCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGGGAAACCCTGATG
+CAGCAACGCCGCGTGAGTGATGACGGTCTTCGGATTGTAAAGCTCTGTCTTCAGGGACGA
+TAATGACGGTACCTGAGGAGGAAGCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATAC
+GTAGGTGGCAAGCGTTGTCCGGATTTACTGGGCGTAAAGGGAGCGTAGGTGGATATTTAA
+GTGGGATGTGAAATACTCGGGCTTAACCTGGGTGCTGCATTCCAAACTGGATATCTAGAG
+TGCAGGAGAGGAAAGTAGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAA
+TACCAGTGGCGAAGGCGACTTTCTGGACTGTAACTGACACTGAGGCTCGAAAGCGTGGGG
+AGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTAAACGATGAATACTAGGTGTAGG
+GGTTGTCATGACCTCTGTGCCGCCGCTAACGCATTAAGTATTCCGCCTGGGGAGTACGGT
+CGCAAGATTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCAGCGGAGCATGTGGTT
+TAATTCGAAGCAACGCGAAGAACCTTACCTAGACTTGACATCTCCTGAATTACCCTTAAT
+CGGGGAAGCCCTTCGGGGCAGGAAGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGT
+GAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCTACCATTTAG
+TTGAGCACTCTAGCGAGACTGCCCGGGTTAACCGGGAGGAAGGTGGGGATGACGTCAAAT
+CATCATGCCCCTTATGTCTAGGGCTACACACGTGCTACAATGGCTGGTACAGAGAGATGC
+TAAACCGCGAGGTGGAGCCAAACTTTAAAACCAGTCTCAGTTCGGATTGTAGGCTGAAAC
+TCGCCTACATGAAGCTGGAGTTGCTAGTAATCGCGAATCAGAATGTCGCGGTGAATACGT
+TCCCGGGCCTTGTACACACCGCCCGTCACACCATGAGAGTTGGCAATACCCAAAGTTCGT
+GAGCTAACGCGCAAGCGAGGCAGCGACCTAAGGTAGGGTCAGCGATTGGGGTG
+>C.beijerinckii.6
+ACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAGCGATGAAGCTCCTTCGGGAGTG
+GATTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCTCATAGAGGGGAATAGCCT
+TTCGAAAGGAAGATTAATACCGCATAAGATTGTAGTGCCGCATGGCATAGCAATTAAAGG
+AGTAATCCGCTATGAGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGGTAACGGCTCAC
+CAAGGCGACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACATTGGGACTGAGACACG
+GCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGGGAAACCCTGATG
+CAGCAACGCCGCGTGAGTGATGACGGTCTTCGGATTGTAAAGCTCTGTCTTCAGGGACGA
+TAATGACGGTACCTGAGGAGGAAGCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATAC
+GTAGGTGGCAAGCGTTGTCCGGATTTACTGGGCGTAAAGGGAGCGTAGGTGGATATTTAA
+GTGGGATGTGAAATACTCGGGCTTAACCTGGGTGCTGCATTCCAAACTGGATATCTAGAG
+TGCAGGAGAGGAAAGTAGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAA
+TACCAGTGGCGAAGGCGACTTTCTGGACTGTAACTGACACTGAGGCTCGAAAGCGTGGGG
+AGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTAAACGATGAATACTAGGTGTAGG
+GGTTGTCATGACCTCTGTGCCGCCGCTAACGCATTAAGTATTCCGCCTGGGGAGTACGGT
+CGCAAGATTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCAGCGGAGCATGTGGTT
+TAATTCGAAGCAACGCGAAGAACCTTACCTAGACTTGACATCTCCTGAATTACCCTTAAT
+CGGGGAAGCCCTTCGGGGCAGGAAGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGT
+GAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCTACCATTTAG
+TTGAGCACTCTAGCGAGACTGCCCGGGTTAACCGGGAGGAAGGTGGGGATGACGTCAAAT
+CATCATGCCCCTTATGTCTAGGGCTACACACGTGCTACAATGGCTGGTACAGAGAGATGC
+TAAACCGTGAGGTGGAGCCAAACTTTAAAACCAGTCTCAGTTCGGATTGTAGGCTGAAAC
+TCGCCTACATGAAGCTGGAGTTGCTAGTAATCGCGAATCAGAATGTCGCGGTGAATACGT
+TCCCGGGCCTTGTACACACCGCCCGTCACACCATGAGAGTTGGCAATACCCAAAGTTCGT
+GAGCTAACGCGCAAGCGGGGCAGCGACCTAAGGTAGGGTCAGCGATTGGGGTG
+>C.beijerinckii.7
+ACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAGCGATGAAGCTCCTTCGGGAGTG
+GATTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCTCATAGAGGGGAATAGCCT
+TTCGAAAGGAAGATTAATACCGCATAAGATTGTAGTGCCGCATGGCATAGCAATTAAAGG
+AGTAATCCGCTATGAGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGGCAACGGCTCAC
+CAAGGCGACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACATTGGGACTGAGACACG
+GCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGGGAAACCCTGATG
+CAGCAACGCCGCGTGAGTGATGACGGTCTTCGGATTGTAAAGCTCTGTCTTCAGGGACGA
+TAATGACGGTACCTGAGGAGGAAGCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATAC
+GTAGGTGGCAAGCGTTGTCCGGATTTACTGGGCGTAAAGGGAGCGTAGGTGGATATTTAA
+GTGGGATGTGAAATACTCGGGCTTAACCTGGGTGCTGCATTCCAAACTGGATATCTAGAG
+TGCAGGAGAGGAAAGTAGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAA
+TACCAGTGGCGAAGGCGACTTTCTGGACTGTAACTGACACTGAGGCTCGAAAGCGTGGGG
+AGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTAAACGATGAATACTAGGTGTAGG
+GGTTGTCATGACCTCTGTGCCGCCGCTAACGCATTAAGTATTCCGCCTGGGGAGTACGGT
+CGCAAGATTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCAGCGGAGCATGTGGTT
+TAATTCGAAGCAACGCGAAGAACCTTACCTAGACTTGACATCTCCTGAATTACCCTTAAT
+CGGGGAAGCCCTTCGGGGCAGGAAGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGT
+GAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCTACCATTTAG
+TTGAGCACTCTAGCGAGACTGCCCGGGTTAACCGGGAGGAAGGTGGGGATGACGTCAAAT
+CATCATGCCCCTTATGTCTAGGGCTACACACGTGCTACAATGGCTGGTACAGAGAGATGC
+TAAACCGCGAGGTGGAGCCAAACTTTAAAACCAGTCTCAGTTCGGATTGTAGGCTGAAAC
+TCGCCTACATGAAGCTGGAGTTGCTAGTAATCGCGAATCAGAATGTCGCGGTGAATACGT
+TCCCGGGCCTTGTACACACCGCCCGTCACACCATGAGAGTTGGCAATACCCAAAGTTCGT
+GAGCTAACGCGCAAGCGAGGCAGCGACCTAAGGTAGGGTCAGCGATTGGGGTG
+>C.beijerinckii.8
+ACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAGCGATGAAGTTCCTTCGGGAATG
+GATTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCTCATAGAGGGGAATAGCCT
+TTCGAAAGGAAGATTAATACCGCATAAGATTGTAGTGCCGCATGGCATAGCAATTAAAGG
+AGTAATCTGCTATGAGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGGTAACGGCTCAC
+CAAGGCGACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACATTGGGACTGAGACACG
+GCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGGGAAACCCTGATG
+CAGCAACGCCGCGTGAGTGATGACGGTCTTCGGATTGTAAAGCTCTGTCTTCAGGGACGA
+TAATGACGGTACCTGAGGAGGAAGCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATAC
+GTAGGTGGCAAGCGTTGTCCGGATTTACTGGGCGTAAAGGGAGCGTAGGTGGATATTTAA
+GTGGGATGTGAAATACTCGGGCTTAACCTGGGTGCTGCATTCCAAACTGGATATCTAGAG
+TGCAGGAGAGGAAAGTAGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAA
+TACCAGTGGCGAAGGCGACTTTCTGGACTGTAACTGACACTGAGGCTCGAAAGCGTGGGG
+AGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTAAACGATGAATACTAGGTGTAGG
+GGTTGTCATGACCTCTGTGCCGCCGCTAACGCATTAAGTATTCCGCCTGGGGAGTACGGT
+CGCAAGATTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCAGCGGAGCATGTGGTT
+TAATTCGAAGCAACGCGAAGAACCTTACCTAGACTTGACATCTCCTGAATTACCCTTAAT
+CGGGGAAGCCCTTCGGGGCAGGAAGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGT
+GAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCTACCATTTAG
+TTGAGCACTCTAGCGAGACTGCCCGGGTTAACCGGGAGGAAGGTGGGGATGACGTCAAAT
+CATCATGCCCCTTATGTCTAGGGCTACACACGTGCTACAATGGCTGGTACAGAGAGATGC
+TAAACCGCGAGGTGGAGCCAAACTTTAAAACCAGTCTCAGTTCGGATTGTAGGCTGAAAC
+TCGCCTACATGAAGCTGGAGTTGCTAGTAATCGCGAATCAGAATGTCGCGGTGAATACGT
+TCCCGGGCCTTGTACACACCGCCCGTCACACCATGAGAGTTGGCAATACCCAAAGTTCGT
+GAGCTAACGCGTAAGCGGGGCAGCGACCTAAGGTAGGGTCAGCGATTGGGGTG
+>C.beijerinckii.9
+ACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAGCGATGAAGCTCCTTCGGGAGTG
+GATTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCTCATAGAGGGGAATAGCCT
+TTCGAAAGGAAGATTAATACCGCATAAGATTGTAGTGCCGCATGGCATAGCAATTAAAGG
+AGTAATCCGCTATGAGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGGTAACGGCTCAC
+CAAGGCGACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACATTGGGACTGAGACACG
+GCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGGGAAACCCTGATG
+CAGCAACGCCGCGTGAGTGATGACGGTCTTCGGATTGTAAAGCTCTGTCTTCAGGGACGA
+TAATGACGGTACCTGAGGAGGAAGCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATAC
+GTAGGTGGCAAGCGTTGTCCGGATTTACTGGGCGTAAAGGGAGCGTAGGTGGATATTTAA
+GTGGGATGTGAAATACTCGGGCTTAACCTGGGTGCTGCATTCCAAACTGGATATCTAGAG
+TGCAGGAGAGGAAAGTAGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAA
+TACCAGTGGCGAAGGCGACTTTCTGGACTGTAACTGACACTGAGGCTCGAAAGCGTGGGG
+AGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTAAACGATGAATACTAGGTGTAGG
+GGTTGTCATGACCTCTGTGCCGCCGCTAACGCATTAAGTATTCCGCCTGGGGAGTACGGT
+CGCAAGATTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCAGCGGAGCATGTGGTT
+TAATTCGAAGCAACGCGAAGAACCTTACCTAGACTTGACATCTCCTGAATTACCCTTAAT
+CGGGGAAGCCCTTCGGGGCAGGAAGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGT
+GAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCTACCATTTAG
+TTGAGCACTCTAGCGAGACTGCCCGGGTTAACCGGGAGGAAGGTGGGGATGACGTCAAAT
+CATCATGCCCCTTATGTCTAGGGCTACACACGTGCTACAATGGCTGGTACAGAGAGATGC
+TAAACCGCGAGGTGGAGCCAAACTTTAAAACCAGTCTCAGTTCGGATTGTAGGCTGAAAC
+TCGCCTACATGAAGCTGGAGTTGCTAGTAATCGCGAATCAGAATGTCGCGGTGAATACGT
+TCCCGGGCCTTGTACACACCGCCCGTCACACCATGAGAGTTGGCAATACCCAAAGTTCGT
+GAGCTAACGCGTAAGCGGGGCAGCGACCTAAGGTAGGGTCAGCGATTGGGGTG
+>C.beijerinckii.10
+ACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAGCGATGAAGTTCCTTCGGGAACG
+GATTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCTCATAGAGGGGAATAGCCT
+TTCGAAAGGAAGATTAATACCGCATAAGATTGTAGTGCCACATGGCATAGCAATTAAAGG
+AGTAATCCGCTATGAGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGGTAACGGCTCAC
+CAAGGCGACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACATTGGGACTGAGACACG
+GCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGGGAAACCCTGATG
+CAGCAACGCCGCGTGAGTGATGACGGTCTTCGGATTGTAAAGCTCTGTCTTCAGGGACGA
+TAATGACGGTACCTGAGGAGGAAGCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATAC
+GTAGGTGGCAAGCGTTGTCCGGATTTACTGGGCGTAAAGGGAGCGTAGGTGGATATTTAA
+GTGGGATGTGAAATACTCGGGCTTAACCTGGGTGCTGCATTCCAAACTGGATATCTAGAG
+TGCAGGAGAGGAAAGTAGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAA
+TACCAGTGGCGAAGGCGACTTTCTGGACTGTAACTGACACTGAGGCTCGAAAGCGTGGGG
+AGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTAAACGATGAATACTAGGTGTAGG
+GGTTGTCATGACCTCTGTGCCGCCGCTAACGCATTAAGTATTCCGCCTGGGGAGTACGGT
+CGCAAGATTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCAGCGGAGCATGTGGTT
+TAATTCGAAGCAACGCGAAGAACCTTACCTAGACTTGACATCTCCTGAATTACTCTTAAT
+CGGGGAAGCCCTTCGGGGCAGGAAGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGT
+GAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCTACCATTTAG
+TTGAGCACTCTAGCGAGACTGCCCGGGTTAACCGGGAGGAAGGTGGGGATGACGTCAAAT
+CATCATGCCCCTTATGTCTAGGGCTACACACGTGCTACAATGGCTGGTACAGAGAGATGC
+TAAACCGCGAGGTGGAGCCAAACTTTAAAACCAGTCTCAGTTCGGATTGTAGGCTGAAAC
+TCGCCTACATGAAGCTGGAGTTGCTAGTAATCGCGAATCAGAATGTCGCGGTGAATACGT
+TCCCGGGCCTTGTACACACCGCCCGTCACACCATGAGAGTTGGCAATACCCAAAGTTCGT
+GAGCTAACGCGTAAGCGGGGCAGCGACCTAAGGTAGGGTCAGCGATTGGGGTG
+>C.beijerinckii.11
+ACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAGCGATGAAGTTCCTTCGGGAACG
+GATTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCTCATAGAGGGGAATAGCCT
+TTCGAAAGGAAGATTAATACCGCATAAGATTGTAGTGCCGCATGGCATAGCAATTAAAGG
+AGTAATCCGCTATGAGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGGTAACGGCTCAC
+CAAGGCGACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACATTGGGACTGAGACACG
+GCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGGGAAACCCTGATG
+CAGCAACGCCGCGTGAGTGATGACGGTCTTCGGATTGTAAAGCTCTGTCTTCAGGGACGA
+TAATGACGGTACCTGAGGAGGAAGCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATAC
+GTAGGTGGCAAGCGTTGTCCGGATTTACTGGGCGTAAAGGGAGCGTAGGTGGATATTTAA
+GTGGGATGTGAAATACTCGGGCTTAACCTGGGTGCTGCATTCCAAACTGGATATCTAGAG
+TGCAGGAGAGGAAAGTAGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAA
+TACCAGTGGCGAAGGCGACTTTCTGGACTGTAACTGACACTGAGGCTCGAAAGCGTGGGG
+AGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTAAACGATGAATACTAGGTGTAGG
+GGTTGTCATGACCTCTGTGCCGCCGCTAACGCATTAAGTATTCCGCCTGGGGAGTACGGT
+CGCAAGATTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCAGCGGAGCATGTGGTT
+TAATTCGAAGCAACGCGAAGAACCTTACCTAGACTTGACATCTCCTGAATTACCCTTAAT
+CGGGGAAGCCCTTCGGGGCAGGAAGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGT
+GAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCTACCATTTAG
+TTGAGCACTCTAGCGAGACTGCCCGGGTTAACCGGGAGGAAGGTGGGGATGACGTCAAAT
+CATCATGCCCCTTATGTCTAGGGCTACACACGTGCTACAATGGCTGGTACAGAGAGATGC
+TAAACCGCGAGGTGGAGCCAAACTTTAAAACCAGTCTCAGTTCGGATTGTAGGCTGAAAC
+TCGCCTACATGAAGCTGGAGTTGCTAGTAATCGCGAATCAGAATGTCGCGGTGAATACGT
+TCCCGGGCCTTGTACACACCGCCCGTCACACCATGAGAGTTGGCAATACCCAAAGTTCGT
+GAGCTAACGCGTAAGCGGGGCAGCGACCTAAGGTAGGGTCAGCGATTGGGGTG
+>C.beijerinckii.12
+ACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAGCGATGAAGCTCCTTCGGGAGTG
+GATTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCTCATAGAGGGGAATAGCCT
+TTCGAAAGGAAGATTAATACCGCATAAGATTGTAGTGCCGCATGGTATAGCAATTAAAGG
+AGTAATCCGCTATGAGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGGTAACGGCTCAC
+CAAGGCGACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACATTGGGACTGAGACACG
+GCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGGGAAACCCTGATG
+CAGCAACGCCGCGTGAGTGATGACGGTCTTCGGATTGTAAAGCTCTGTCTTCAGGGACGA
+TAATGACGGTACCTGAGGAGGAAGCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATAC
+GTAGGTGGCAAGCGTTGTCCGGATTTACTGGGCGTAAAGGGAGCGTAGGTGGATATTTAA
+GTGGGATGTGAAATACTCGGGCTTAACCTGGGTGCTGCATTCCAAACTGGATATCTAGAG
+TGCAGGAGAGGAAAGTAGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAA
+TACCAGTGGCGAAGGCGACTTTCTGGACTGTAACTGACACTGAGGCTCGAAAGCGTGGGG
+AGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTAAACGATGAATACTAGGTGTAGG
+GGTTGTCATGACCTCTGTGCCGCCGCTAACGCATTAAGTATTCCGCCTGGGGAGTACGGT
+CGCAAGATTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCAGCGGAGCATGTGGTT
+TAATTCGAAGCAACGCGAAGAACCTTACCTAGACTTGACATCTCCTGAATTACCCTTAAT
+CGGGGAAGCCCTTCGGGGCAGGAAGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGT
+GAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCTACCATTTAG
+TTGAGCACTCTAGCGAGACTGCCTGGGTTAACCGGGAGGAAGGTGGGGATGACGTCAAAT
+CATCATGCCCCTTATGTCTAGGGCTACACACGTGCTACAATGGCTGGTACAGAGAGATGC
+TAAACCGCGAGGTGGAGCCAAACTTTAAAACCAGTCTCAGTTCGGATTGTAGGCTGAAAC
+TCGCCTACATGAAGCTGGAGTTGCTAGTAATCGCGAATCAGAATGTCGCGGTGAATACGT
+TCCCGGGCCTTGTACACACCGCCCGTCACACCATGAGAGTTGGCAATACCCAAAGTTCGT
+GAGCTAACGCGCAAGCGAGGCAGCGACCTAAGGTAGGGTCAGCGATTGGGGTG
+>C.beijerinckii.13
+ACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAGCGATGAAGCTCCTTCGGGAGCG
+GATTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCTCATAGAGGGGAATAGCCT
+TTCGAAAGGAAGATTAATACCGCATAAGATTGTAGTGCCGCATGGCATAGCAATTAAAGG
+AGTAATCCGCTATGAGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGGTAACGGCTCAC
+CAAGGCGACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACATTGGGACTGAGACACG
+GCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGGGAAACCCTGATG
+CAGCAACGCCGCGTGAGTGATGACGGTCTTCGGATTGTAAAGCTCTGTCTTCAGGGACGA
+TAATGACGGTACCTGAGGAGGAAGCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATAC
+GTAGGTGGCAAGCGTTGTCCGGATTTACTGGGCGTAAAGGGAGCGTAGGTGGATATTTAA
+GTGGGATGTGAAATACTCGGGCTTAACCTGGGTGCTGCATTCCAAACTGGATATCTAGAG
+TGCAGGAGAGGAAAGTAGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAA
+TACCAGTGGCGAAGGCGACTTTCTGGACTGTAACTGACACTGAGGCTCGAAAGCGTGGGG
+AGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTAAACGATGAATACTAGGTGTAGG
+GGTTGTCATGACCTCTGTGCCGCCGCTAACGCATTAAGTATTCCGCCTGGGGAGTACGGT
+CGCAAGATTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCAGCGGAGCATGTGGTT
+TAATTCGAAGCAACGCGAAGAACCTTACCTAGACTTGACATCTCCTGAATTACTCTTAAT
+CGGGGAAGCCCTTCGGGGCAGGAAGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGT
+GAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCTACCATTTAG
+TTGAGCACTCTAGCGAGACTGCCCGGGTTAACCGGGAGGAAGGTGGGGATGACGTCAAAT
+CATCATGCCCCTTATGTCTAGGGCTACACACGTGCTACAATGGCTGGTACAGAGAGATGC
+TAAACCGTGAGGTGGAGCCAAACTTTAAAACCAGTCTCAGTTCGGATTGTAGGCTGAAAC
+TCGCCTACATGAAGCTGGAGTTGCTAGTAATCGCGAATCAGAATGTCGCGGTGAATACGT
+TCCCGGGCCTTGTACACACCGCCCGTCACACCATGAGAGTTGGCAATACCCAAAGTTCGT
+GAGCTAACGCGTAAGCGGGGCAGCGACCTAAGGTAGGGTCAGCGATTGGGGTG
+>C.beijerinckii.14
+ACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAGCGATGAAATTCCTTCGGGAATA
+GATTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCTCATAGAGGGGAATAGCCT
+TTCGAAAGGAAGATTAATACCGCATAAGATTGTAGTGTCGCATGGCATAGCAATTAAAGG
+AGTAATCCGCTATGAGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGGTAACGGCTCAC
+CAAGGCGACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACATTGGGACTGAGACACG
+GCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGGGAAACCCTGATG
+CAGCAACGCCGCGTGAGTGATGACGGTCTTCGGATTGTAAAGCTCTGTCTTCAGGGACGA
+TAATGACGGTACCTGAGGAGGAAGCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATAC
+GTAGGTGGCAAGCGTTGTCCGGATTTACTGGGCGTAAAGGGAGCGTAGGTGGATATTTAA
+GTGGGATGTGAAATACTCGGGCTTAACCTGGGTGCTGCATTCCAAACTGGATATCTAGAG
+TGCAGGAGAGGAAAGTAGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAA
+TACCAGTGGCGAAGGCGACTTTCTGGACTGTAACTGACACTGAGGCTCGAAAGCGTGGGG
+AGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTAAACGATGAATACTAGGTGTAGG
+GGTTGTCATGACCTCTGTGCCGCCGCTAACGCATTAAGTATTCCGCCTGGGGAGTACGGT
+CGCAAGATTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCAGCGGAGCATGTGGTT
+TAATTCGAAGCAACGCGAAGAACCTTACCTAGACTTGACATCTCCTGAATTACCCTTAAT
+CGGGGAAGCCCTTCGGGGCAGGAAGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGT
+GAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCTACCATTTAG
+TTGAGCACTCTAGCGAGACTGCCCGGGTTAACCGGGAGGAAGGTGGGGATGACGTCAAAT
+CATCATGCCCCTTATGTCTAGGGCTACACACGTGCTACAATGGCTGGTACAGAGAGATGC
+TAAACCGCGAGGTGGAGCCAAACTTTAAAACCAGTCTCAGTTCGGATTGTAGGCTGAAAC
+TCGCCTACATGAAGCTGGAGTTGCTAGTAATCGCGAATCAGAATGTCGCGGTGAATACGT
+TCCCGGGCCTTGTACACACCGCCCGTCACACCATGAGAGTTGGCAATACCCAAAGTTCGT
+GAGCTAACGCGTAAGCGGGGCAGCGACCTAAGGTAGGGTCAGCGATTGGGGTG
+>D.radiodurans.1
+GTGAACGCTGGCGGCGTGCTTAAGACATGCAAGTCGAACGCGGTCTTCGGACCGAGTGGC
+GCACGGGTGAGTAACACGTAACTGACCTACCCAGAAGTCACGAATAACTGGCCGAAAGGT
+CCGCTAATACGTGATGTGGTGATGCACCGTGGTGCATCACTAAAGATTTATCGCTTCTGG
+ATGGGGTTGCGTTCCATCAGCTGGTTGGTGGGGTAAAGGCCTACCAAGGCGACGACGGAT
+AGCCGGCCTGAGAGGGTGGCCGGCCACAGGGGCACTGAGACACGGGTCCCACTCCTACGG
+GAGGCAGCAGTTAGGAATCTTCCACAATGGGCGCAAGCCTGATGGAGCGACGCCGCGTGA
+GGGATGAAGGTTTTCGGATCGTAAACCTCTGAATCTGGGACGAAAGAGCCTTAGGGCAGA
+TGACGGTACCAGAGTAATAGCACCGGCTAACTCCGTGCCAGCAGCCGCGGTAATACGGAG
+GGTGCAAGCGTTACCCGGAATCACTGGGCGTAAAGGGCGTGTAGGCGGAAATTTAAGTCT
+GGTTTTAAAGACCGGGGCTCAACCTCGGGGATGGACTGGATACTGGATTTCTTGACCTCT
+GGAGAGGTAACTGGAATTCCTGGTGTAGCGGTGGAATGCGTAGATACCAGGAGGAACACC
+AATGGCGAAGGCAAGTTACTGGACAGAAGGTGACGCTGAGGCGCGAAAGTGTGGGGAGCA
+AACCGGATTAGATACCCGGGTAGTCCACACCCTAAACGATGTACGTTGGCTAAGCGCAGG
+ATGCTGTGCTTGGCGAAGCTAACGCGATAAACGTACCGCCTGGGAAGTACGGCCGCAAGG
+TTGAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCG
+AAGCAACGCGAAGAACCTTACCAGGTCTTGACATGCTAGGAACTTTGCAGAGATGCAGAG
+GTGCCCTTCGGGGAACCTAGACACAGGTGCTGCATGGCTGTCGTCAGCTCGTGTCGTGAG
+ATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTGCCTTTAGTTGTCAGCATTCAGTTG
+GACACTCTAGAGGGACTGCCTATGAAAGTAGGAGGAAGGCGGGGATGACGTCTAGTCAGC
+ATGGTCCTTACGTCCTGGGCGACACACGTGCTACAATGGGTAGGACAACGCGCAGCAAAC
+CCGCGAGGGTAAGCGAATCGCTAAAACCTATCCCCAGTTCAGATCGGAGTCTGCAACTCG
+ACTCCGTGAAGTTGGAATCGCTAGTAATCGCGGGTCAGCATACCGCGGTGAATACGTTCC
+CGGGCCTTGTACACACCGCCCGTCACACCATGGGAGTAGATTGCAGTTGAAACCGCCGGG
+AGCTTAACGGCAGGCGTCTAGACTGTGGTTTATGACTGGGGTG
+>D.radiodurans.2
+GTGAACGCTGGCGGCGTGCTTAAGACATGCAAGTCGAACGCGGTCTTCGGACCGAGTGGC
+GCACGGGTGAGTAACACGTAACTGACCTACCCAGAAGTCACGAATAACTGGCCGAAAGGT
+CCGCTAATACGTGATGTGGTGATGCACCGTGGTGCATCACTAAAGATTTATCGCTTCTGG
+ATGGGGTTGCGTTCCATCAGCTGGTTGGTGGGGTAAAGGCCTACCAAGGCGACGACGGAT
+AGCCGGCCTGAGAGGGTGGCCGGCCACAGGGGCACTGAGACACGGGTCCCACTCCTACGG
+GAGGCAGCAGTTAGGAATCTTCCACAATGGGCGCAAGCCTGATGGAGCGACGCCGCGTGA
+GGGATGAAGGTTTTCGGATCGTAAACCTCTGAATCTGGGACGAAAGAGCCTTAGGGCAGA
+TGACGGTACCAGAGTAATAGCACCGGCTAACTCCGTGCCAGCAGCCGCGGTAATACGGAG
+GGTGCAAGCGTTACCCGGAATCACTGGGCGTAAAGGGCGTGTAGGCGGAAATTTAAGTCT
+GGTTTTAAAGACCGGGGCTCAACCTCGGGGATGGACTGGATACTGGATTTCTTGACCTCT
+GGAGAGGTAACTGGAATTCCTGGTGTAGCGGTGGAATGCGTAGATACCAGGAGGAACACC
+AATGGCGAAGGCAAGTTACTGGACAGAAGGTGACGCTGAGGCGCGAAAGTGTGGGGAGCA
+AACCGGATTAGATACCCGGGTAGTCCACACCCTAAACGATGTACGTTGGCTAAGCGCAGG
+ATGCTGTGCTTGGCGAAGCTAACGCGATAAACGTACCGCCTGGGAAGTACGGCCGCAAGG
+TTGAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCG
+AAGCAACGCGAAGAACCTTACCAGGTCTTGACATGCTAGGAACTTTGCAGAGATGCAGAG
+GTGCCCTTCGGGGAACCTAGACACAGGTGCTGCATGGCTGTCGTCAGCTCGTGTCGTGAG
+ATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTGCCTTTAGTTGTCAGCATTCAGTTG
+GACACTCTAGAGGGACTGCCTATGAAAGTAGGAGGAAGGCGGGGATGACGTCTAGTCAGC
+ATGGTCCTTACGTCCTGGGCGACACACGTGCTACAATGGGTAGGACAACGCGCAGCAAAC
+CCGCGAGGGTAAGCGAATCGCTAAAACCTATCCCCAGTTCAGATCGGAGTCTGCAACTCG
+ACTCCGTGAAGTTGGAATCGCTAGTAATCGCGGGTCAGCATACCGCGGTGAATACGTTCC
+CGGGCCTTGTACACACCGCCCGTCACACCATGGGAGTAGATTGCAGTTGAAACCGCCGGG
+AGCTTTGCGGCAGGCGTCTAGACTGTGGTTTATGACTGGGGTG
+>E.faecalis.1
+ACGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAACGCTTCTTTCCTCCCGAGTGCT
+TGCACTCAATTGGAAAGAGGAGTGGCGGACGGGTGAGTAACACGTGGGTAACCTACCCAT
+CAGAGGGGGATAACACTTGGAAACAGGTGCTAATACCGCATAACAGTTTATGCCGCATGG
+CATAAGAGTGAAAGGCGCTTTCGGGTGTCGTTGATGGATGGACCCGCGGTGCATTAGCTA
+GTTGGTGAGGTAACGGCTCACCAAGGCCACGATGCATAGCCGACCTGAGAGGGTGATCGG
+CCACACTGGGACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCG
+GCAATGGACGAAAGTCTGACCGAGCAACGCCGCGTGAGTGAAGAAGGTTTTCGGATCGTA
+AAACTCTGTTGTTAGAGAAGAACAAGGACGTTAGTAACTGAACGTCCCCTGACGGTATCT
+AACCAGAAAGCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCG
+TTGTCCGGATTTATTGGGCGTAAAGCGAGCGCAGGCGGTTTCTTAAGTCTGATGTGAAAG
+CCCCCGGCTCAACCGGGGAGGGTCATTGGAAACTGGGAGACTTGAGTGCAGAAGAGGAGA
+GTGGAATTCCATGTGTAGCGGTGAAATGCGTAGATATATGGAGGAACACCAGTGGCGAAG
+GCGGCTCTCTGGTCTGTAACTGACGCTGAGGCTCGAAAGCGTGGGGAGCAAACAGGATTA
+GATACCCTGGTAGTCCACGCCGTAAACGATGAGTGCTAAGTGTTGGAGGGTTTCCGCCCT
+TCAGTGCTGCAGCAAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAA
+CTCAAAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAA
+CGCGAAGAACCTTACCAGGTCTTGACATCCTTTGACCACTCTAGAGATAGAGCTTTCCCT
+TCGGGGACAAAGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGG
+TTAAGTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCCATCATTTAGTTGGGCACTCT
+AGCGAGACTGCCGGTGACAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCC
+TTATGACCTGGGCTACACACGTGCTACAATGGGAAGTACAACGAGTCGCTAGACCGCGAG
+GTCATGCAAATCTCTTAAAGCTTCTCTCAGTTCGGATTGCAGGCTGCAACTCGCCTGCAT
+GAAGCCGGAATCGCTAGTAATCGCGGATCAGCACGCCGCGGTGAATACGTTCCCGGGCCT
+TGTACACACCGCCCGTCACACCACGAGAGTTTGTAACACCCGAAGTCGGTGAGGTAACCT
+TTTTGGAGCCAGCCGCCTAAGGTGGGATAGATGATTGGGGTG
+>E.faecalis.2
+ACGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAACGCTTCTTTCCTCCCGAGTGCT
+TGCACTCAATTGGAAAGAGGAGTGGCGGACGGGTGAGTAACACGTGGGTAACCTACCCAT
+CAGAGGGGGATAACACTTGGAAACAGGTGCTAATACCGCATAACAGTTTATGCCGCATGG
+CATAAGAGTGAAAGGCGCTTTCGGGTGTCGCTGATGGATGGACCCGCGGTGCATTAGCTA
+GTTGGTGAGGTAACGGCTCACCAAGGCCACGATGCATAGCCGACCTGAGAGGGTGATCGG
+CCACACTGGGACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCG
+GCAATGGACGAAAGTCTGACCGAGCAACGCCGCGTGAGTGAAGAAGGTTTTCGGATCGTA
+AAACTCTGTTGTTAGAGAAGAACAAGGACGTTAGTAACTGAACGTCCCCTGACGGTATCT
+AACCAGAAAGCCACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCG
+TTGTCCGGATTTATTGGGCGTAAAGCGAGCGCAGGCGGTTTCTTAAGTCTGATGTGAAAG
+CCCCCGGCTCAACCGGGGAGGGTCATTGGAAACTGGGAGACTTGAGTGCAGAAGAGGAGA
+GTGGAATTCCATGTGTAGCGGTGAAATGCGTAGATATATGGAGGAACACCAGTGGCGAAG
+GCGGCTCTCTGGTCTGTAACTGACGCTGAGGCTCGAAAGCGTGGGGAGCAAACAGGATTA
+GATACCCTGGTAGTCCACGCCGTAAACGATGAGTGCTAAGTGTTGGAGGGTTTCCGCCCT
+TCAGTGCTGCAGCAAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAA
+CTCAAAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAA
+CGCGAAGAACCTTACCAGGTCTTGACATCCTTTGACCACTCTAGAGATAGAGCTTTCCCT
+TCGGGGACAAAGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGG
+TTAAGTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCCATCATTTAGTTGGGCACTCT
+AGCGAGACTGCCGGTGACAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCC
+TTATGACCTGGGCTACACACGTGCTACAATGGGAAGTACAACGAGTCGCTAGACCGCGAG
+GTCATGCAAATCTCTTAAAGCTTCTCTCAGTTCGGATTGCAGGCTGCAACTCGCCTGCAT
+GAAGCCGGAATCGCTAGTAATCGCGGATCAGCACGCCGCGGTGAATACGTTCCCGGGCCT
+TGTACACACCGCCCGTCACACCACGAGAGTTTGTAACACCCGAAGTCGGTGAGGTAACCT
+TTTTGGAGCCAGCCGCCTAAGGTGGGATAGATGATTGGGGTG
+>E.coli.1
+TTGAACGCTGGCGGCAGGCCTAACACATGCAAGTCGAACGGTAACAGGAAGCAGCTTGCT
+GCTTCGCTGACGAGTGGCGGACGGGTGAGTAATGTCTGGGAAGCTGCCTGATGGAGGGGG
+ATAACTACTGGAAACGGTAGCTAATACCGCATAATGTCGCAAGACCAAAGAGGGGGACCT
+TCGGGCCTCTTGCCATCGGATGTGCCCAGATGGGATTAGCTTGTTGGTGGGGTAACGGCT
+CACCAAGGCGACGATCCCTAGCTGGTCTGAGAGGATGACCAGCCACACTGGAACTGAGAC
+ACGGTCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGCGCAAGCCTG
+ATGCAGCCATGCCGCGTGTATGAAGAAGGCCTTCGGGTTGTAAAGTACTTTCAGCGGGGA
+GGAAGGGAGTAAAGTTAATACCTTTGCTCATTGACGTTACCCGCAGAAGAAGCACCGGCT
+AACTCCGTGCCAGCAGCCGCGGTAATACGGAGGGTGCAAGCGTTAATCGGAATTACTGGG
+CGTAAAGCGCACGCAGGCGGTTTGTTAAGTCAGATGTGAAATCCCCGGGCTCAACCTGGG
+AACTGCATCTGATACTGGCAAGCTTGAGTCTCGTAGAGGGGGGTAGAATTCCAGGTGTAG
+CGGTGAAATGCGTAGAGATCTGGAGGAATACCGGTGGCGAAGGCGGCCCCCTGGACGAAG
+ACTGACGCTCAGGTGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGGTAGTCCAC
+GCCGTAAACGATGTCGACTTGGAGGTTGTGCCCTTGAGGCGTGGCTTCCGGAGCTAACGC
+GTTAAGTCGACCGCCTGGGGAGTACGGCCGCAAGGTTAAAACTCAAATGAATTGACGGGG
+GCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGATGCAACGCGAAGAACCTTACCTGG
+TCTTGACATCCACGGAAGTTTTCAGAGATGAGAATGTGCCTTCGGGAACCGTGAGACAGG
+TGCTGCATGGCTGTCGTCAGCTCGTGTTGTGAAATGTTGGGTTAAGTCCCGCAACGAGCG
+CAACCCTTATCCTTTGTTGCCAGCGGTCCGGCCGGGAACTCAAAGGAGACTGCCAGTGAT
+AAACTGGAGGAAGGTGGGGATGACGTCAAGTCATCATGGCCCTTACGACCAGGGCTACAC
+ACGTGCTACAATGGCGCATACAAAGAGAAGCGACCTCGCGAGAGCAAGCGGACCTCATAA
+AGTGCGTCGTAGTCCGGATTGGAGTCTGCAACTCGACTCCATGAAGTCGGAATCGCTAGT
+AATCGTGGATCAGAATGCCACGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCA
+CACCATGGGAGTGGGTTGCAAAAGAAGTAGGTAGCTTAACCTTCGGGAGGGCGCTTACCA
+CTTTGTGATTCATGACTGGGGTG
+>E.coli.2
+TTGAACGCTGGCGGCAGGCCTAACACATGCAAGTCGAACGGTAACAGGAAGAAGCTTGCT
+TCTTTGCTGACGAGTGGCGGACGGGTGAGTAATGTCTGGGAAACTGCCTGATGGAGGGGG
+ATAACTACTGGAAACGGTAGCTAATACCGCATAACGTCGCAAGACCAAAGAGGGGGACCT
+TCGGGCCTCTTGCCATCGGATGTGCCCAGATGGGATTAGCTAGTAGGTGGGGTAACGGCT
+CACCTAGGCGACGATCCCTAGCTGGTCTGAGAGGATGACCAGCCACACTGGAACTGAGAC
+ACGGTCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGCGCAAGCCTG
+ATGCAGCCATGCCGCGTGTATGAAGAAGGCCTTCGGGTTGTAAAGTACTTTCAGCGGGGA
+GGAAGGGAGTAAAGTTAATACCTTTGCTCATTGACGTTACCCGCAGAAGAAGCACCGGCT
+AACTCCGTGCCAGCAGCCGCGGTAATACGGAGGGTGCAAGCGTTAATCGGAATTACTGGG
+CGTAAAGCGCACGCAGGCGGTTTGTTAAGTCAGATGTGAAATCCCCGGGCTCAACCTGGG
+AACTGCATCTGATACTGGCAAGCTTGAGTCTCGTAGAGGGGGGTAGAATTCCAGGTGTAG
+CGGTGAAATGCGTAGAGATCTGGAGGAATACCGGTGGCGAAGGCGGCCCCCTGGACGAAG
+ACTGACGCTCAGGTGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGGTAGTCCAC
+GCCGTAAACGATGTCGACTTGGAGGTTGTGCCCTTGAGGCGTGGCTTCCGGAGCTAACGC
+GTTAAGTCGACCGCCTGGGGAGTACGGCCGCAAGGTTAAAACTCAAATGAATTGACGGGG
+GCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGATGCAACGCGAAGAACCTTACCTGG
+TCTTGACATCCACGGAAGTTTTCAGAGATGAGAATGTGCCTTCGGGAACCGTGAGACAGG
+TGCTGCATGGCTGTCGTCAGCTCGTGTTGTGAAATGTTGGGTTAAGTCCCGCAACGAGCG
+CAACCCTTATCCTTTGTTGCCAGCGGTCCGGCCGGGAACTCAAAGGAGACTGCCAGTGAT
+AAACTGGAGGAAGGTGGGGATGACGTCAAGTCATCATGGCCCTTACGACCAGGGCTACAC
+ACGTGCTACAATGGCGCATACAAAGAGAAGCGACCTCGCGAGAGCAAGCGGACCTCATAA
+AGTGCGTCGTAGTCCGGATTGGAGTCTGCAACTCGACTCCATGAAGTCGGAATCGCTAGT
+AATCGTGGATCAGAATGCCACGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCA
+CACCATGGGAGTGGGTTGCAAAAGAAGTAGGTAGCTTAACCTTCGGGAGGGCGCTTACCA
+CTTTGTGATTCATGACTGGGGTG
+>E.coli.4
+TTGAACGCTGGCGGCAGGCCTAACACATGCAAGTCGAACGGTAACAGGAAGAAGCTTGCT
+TCTTTGCTGACGAGTGGCGGACGGGTGAGTAATGTCTGGGAAACTGCCTGATGGAGGGGG
+ATAACTACTGGAAACGGTAGCTAATACCGCATAACGTCGCAAGACCAAAGAGGGGTACCT
+TCGGGCCTCTTGCCATCGGATGTGCCCAGATGGGATTAGCTAGTAGGTGGGGTAACGGCT
+CACCTAGGCGACGATCCCTAGCTGGTCTGAGAGGATGACCAGCCACACTGGAACTGAGAC
+ACGGTCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGCGCAAGCCTG
+ATGCAGCCATGCCGCGTGTATGAAGAAGGCCTTCGGGTTGTAAAGTACTTTCAGCGGGGA
+GGAAGGGAGTAAAGTTAATACCTTTGCTCATTGACGTTACCCGCAGAAGAAGCACCGGCT
+AACTCCGTGCCAGCAGCCGCGGTAATACGGAGGGTGCAAGCGTTAATCGGAATTACTGGG
+CGTAAAGCGCACGCAGGCGGTTTGTTAAGTCAGATGTGAAATCCCCGGGCTCAACCTGGG
+AACTGCATCTGATACTGGCAAGCTTGAGTCTCGTAGAGGGGGGTAGAATTCCAGGTGTAG
+CGGTGAAATGCGTAGAGATCTGGAGGAATACCGGTGGCGAAGGCGGCCCCCTGGACGAAG
+ACTGACGCTCAGGTGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGGTAGTCCAC
+GCCGTAAACGATGTCGACTTGGAGGTTGTGCCCTTGAGGCGTGGCTTCCGGAGCTAACGC
+GTTAAGTCGACCGCCTGGGGAGTACGGCCGCAAGGTTAAAACTCAAATGAATTGACGGGG
+GCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGATGCAACGCGAAGAACCTTACCTGG
+TCTTGACATCCACGGAAGTTTTCAGAGATGAGAATGTGCCTTCGGGAACCGTGAGACAGG
+TGCTGCATGGCTGTCGTCAGCTCGTGTTGTGAAATGTTGGGTTAAGTCCCGCAACGAGCG
+CAACCCTTATCCTTTGTTGCCAGCGGTCCGGCCGGGAACTCAAAGGAGACTGCCAGTGAT
+AAACTGGAGGAAGGTGGGGATGACGTCAAGTCATCATGGCCCTTACGACCAGGGCTACAC
+ACGTGCTACAATGGCGCATACAAAGAGAAGCGACCTCGCGAGAGCAAGCGGACCTCATAA
+AGTGCGTCGTAGTCCGGATTGGAGTCTGCAACTCGACTCCATGAAGTCGGAATCGCTAGT
+AATCGTGGATCAGAATGCCACGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCA
+CACCATGGGAGTGGGTTGCAAAAGAAGTAGGTAGCTTAACCTTCGGGAGGGCGCTTACCA
+CTTTGTGATTCATGACTGGGGTG
+>E.coli.5
+TTGAACGCTGGCGGCAGGCCTAACACATGCAAGTCGAACGGTAACAGGAAACAGCTTGCT
+GTTTCGCTGACGAGTGGCGGACGGGTGAGTAATGTCTGGGAAACTGCCTGATGGAGGGGG
+ATAACTACTGGAAACGGTAGCTAATACCGCATAACGTCGCAAGACCAAAGAGGGGGACCT
+TCGGGCCTCTTGCCATCAGATGTGCCCAGATGGGATTAGCTAGTAGGTGGGGTAACGGCT
+CACCTAGGCGACGATCCCTAGCTGGTCTGAGAGGATGACCAGCCACACTGGAACTGAGAC
+ACGGTCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGCGCAAGCCTG
+ATGCAGCCATGCCGCGTGTATGAAGAAGGCCTTCGGGTTGTAAAGTACTTTCAGCGGGGA
+GGAAGGGAGTAAAGTTAATACCTTTGCTCATTGACGTTACCCGCAGAAGAAGCACCGGCT
+AACTCCGTGCCAGCAGCCGCGGTAATACGGAGGGTGCAAGCGTTAATCGGAATTACTGGG
+CGTAAAGCGCACGCAGGCGGTTTGTTAAGTCAGATGTGAAATCCCCGGGCTCAACCTGGG
+AACTGCATCTGATACTGGCAAGCTTGAGTCTCGTAGAGGGGGGTAGAATTCCAGGTGTAG
+CGGTGAAATGCGTAGAGATCTGGAGGAATACCGGTGGCGAAGGCGGCCCCCTGGACGAAG
+ACTGACGCTCAGGTGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGGTAGTCCAC
+GCCGTAAACGATGTCGACTTGGAGGTTGTGCCCTTGAGGCGTGGCTTCCGGAGCTAACGC
+GTTAAGTCGACCGCCTGGGGAGTACGGCCGCAAGGTTAAAACTCAAATGAATTGACGGGG
+GCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGATGCAACGCGAAGAACCTTACCTGG
+TCTTGACATCCACGGAAGTTTTCAGAGATGAGAATGTGCCTTCGGGAACCGTGAGACAGG
+TGCTGCATGGCTGTCGTCAGCTCGTGTTGTGAAATGTTGGGTTAAGTCCCGCAACGAGCG
+CAACCCTTATCCTTTGTTGCCAGCGGTCCGGCCGGGAACTCAAAGGAGACTGCCAGTGAT
+AAACTGGAGGAAGGTGGGGATGACGTCAAGTCATCATGGCCCTTACGACCAGGGCTACAC
+ACGTGCTACAATGGCGCATACAAAGAGAAGCGACCTCGCGAGAGCAAGCGGACCTCATAA
+AGTGCGTCGTAGTCCGGATTGGAGTCTGCAACTCGACTCCATGAAGTCGGAATCGCTAGT
+AATCGTGGATCAGAATGCCACGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCA
+CACCATGGGAGTGGGTTGCAAAAGAAGTAGGTAGCTTAACCTTCGGGAGGGCGCTTACCA
+CTTTGTGATTCATGACTGGGGTG
+>E.coli.6
+TTGAACGCTGGCGGCAGGCCTAACACATGCAAGTCGAACGGTAACAGGAAGAAGCTTGCT
+TCTTTGCTGACGAGTGGCGGACGGGTGAGTAATGTCTGGGAAACTGCCTGATGGAGGGGG
+ATAACTACTGGAAACGGTAGCTAATACCGCATAACGTCGCAAGACCAAAGAGGGGGACCT
+TCGGGCCTCTTGCCATCGGATGTGCCCAGATGGGATTAGCTAGTAGGTGGGGTAACGGCT
+CACCTAGGCGACGATCCCTAGCTGGTCTGAGAGGATGACCAGCCACACTGGAACTGAGAC
+ACGGTCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGCGCAAGCCTG
+ATGCAGCCATGCCGCGTGTATGAAGAAGGCCTTCGGGTTGTAAAGTACTTTCAGCGGGGA
+GGAAGGGAGTAAAGTTAATACCTTTGCTCATTGACGTTACCCGCAGAAGAAGCACCGGCT
+AACTCCGTGCCAGCAGCCGCGGTAATACGGAGGGTGCAAGCGTTAATCGGAATTACTGGG
+CGTAAAGCGCACGCAGGCGGTTTGTTAAGTCAGATGTGAAATCCCCGGGCTCAACCTGGG
+AACTGCATCTGATACTGGCAAGCTTGAGTCTCGTAGAGGGGGGTAGAATTCCAGGTGTAG
+CGGTGAAATGCGTAGAGATCTGGAGGAATACCGGTGGCGAAGGCGGCCCCCTGGACGAAG
+ACTGACGCTCAGGTGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGGTAGTCCAC
+GCCGTAAACGATGTCGACTTGGAGGTTGTGCCCTTGAGGCGTGGCTTCCGGAGCTAACGC
+GTTAAGTCGACCGCCTGGGGAGTACGGCCGCAAGGTTAAAACTCAAATGAATTGACGGGG
+GCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGATGCAACGCGAAGAACCTTACCTGG
+TCTTGACATCCACAGAACTTTCCAGAGATGGATTGGTGCCTTCGGGAACTGTGAGACAGG
+TGCTGCATGGCTGTCGTCAGCTCGTGTTGTGAAATGTTGGGTTAAGTCCCGCAACGAGCG
+CAACCCTTATCTTTTGTTGCCAGCGGTCCGGCCGGGAACTCAAAGGAGACTGCCAGTGAT
+AAACTGGAGGAAGGTGGGGATGACGTCAAGTCATCATGGCCCTTACGACCAGGGCTACAC
+ACGTGCTACAATGGCGCATACAAAGAGAAGCGACCTCGCGAGAGCAAGCGGACCTCATAA
+AGTGCGTCGTAGTCCGGATTGGAGTCTGCAACTCGACTCCATGAAGTCGGAATCGCTAGT
+AATCGTGGATCAGAATGCCACGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCA
+CACCATGGGAGTGGGTTGCAAAAGAAGTAGGTAGCTTAACCTTCGGGAGGGCGCTTACCA
+CTTTGTGATTCATGACTGGGGTG
+>E.coli.7
+TTGAACGCTGGCGGCAGGCCTAACACATGCAAGTCGAACGGTAACAGGAAACAGCTTGCT
+GTTTCGCTGACGAGTGGCGGACGGGTGAGTAATGTCTGGGAAACTGCCTGATGGAGGGGG
+ATAACTACTGGAAACGGTAGCTAATACCGCATAACGTCGCAAGACCAAAGAGGGGGACCC
+TCGGGCCTCTTGCCATCGGATGTGCCCAGATGGGATTAGCTTGTTGGTGGGGTAACGGCT
+CACCAAGGCGACGATCCCTAGCTGGTCTGAGAGGATGACCAGCCACACTGGAACTGAGAC
+ACGGTCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGCGCAAGCCTG
+ATGCAGCCATGCCGCGTGTATGAAGAAGGCCTTCGGGTTGTAAAGTACTTTCAGCGGGGA
+GGAAGGGAGTAAAGTTAATACCTTTGCTCATTGACGTTACCCGCAGAAGAAGCACCGGCT
+AACTCCGTGCCAGCAGCCGCGGTAATACGGAGGGTGCAAGCGTTAATCGGAATTACTGGG
+CGTAAAGCGCACGCAGGCGGTTTGTTAAGTCAGATGTGAAATCCCCGGGCTCAACCTGGG
+AACTGCATCTGATACTGGCAAGCTTGAGTCTCGTAGAGGGGGGTAGAATTCCAGGTGTAG
+CGGTGAAATGCGTAGAGATCTGGAGGAATACCGGTGGCGAAGGCGGCCCCCTGGACGAAG
+ACTGACGCTCAGGTGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGGTAGTCCAC
+GCCGTAAACGATGTCGACTTGGAGGTTGTGCCCTTGAGGCGTGGCTTCCGGAGCTAACGC
+GTTAAGTCGACCGCCTGGGGAGTACGGCCGCAAGGTTAAAACTCAAATGAATTGACGGGG
+GCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGATGCAACGCGAAGAACCTTACCTGG
+TCTTGACATCCACGGAAGTTTTCAGAGATGAGAATGTGCCTTCGGGAACCGTGAGACAGG
+TGCTGCATGGCTGTCGTCAGCTCGTGTTGTGAAATGTTGGGTTAAGTCCCGCAACGAGCG
+CAACCCTTATCCTTTGTTGCCAGCGGTCCGGCCGGGAACTCAAAGGAGACTGCCAGTGAT
+AAACTGGAGGAAGGTGGGGATGACGTCAAGTCATCATGGCCCTTACGACCAGGGCTACAC
+ACGTGCTACAATGGCGCATACAAAGAGAAGCGACCTCGCGAGAGCAAGCGGACCTCATAA
+AGTGCGTCGTAGTCCGGATTGGAGTCTGCAACTCGACTCCATGAAGTCGGAATCGCTAGT
+AATCGTGGATCAGAATGCCACGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCA
+CACCATGGGAGTGGGTTGCAAAAGAAGTAGGTAGCTTAACCTTCGGGAGGGCGCTTACCA
+CTTTGTGATTCATGACTGGGGTG
+>H.pylori.1
+GTGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAACGATGAAGCTTCTAGCTTGCTA
+GAGTGCTGATTAGTGGCGCACGGGTGAGTAACGCATAGGTTATGTGCCTCTTAGTTTGGG
+ATAGCCATTGGAAACGATGATTAATACCAGATACTCCTACGGGGGAAAGATTTATCGCTA
+AGAGATCAGCCTATGTCCTATCAGCTTGTTGGTAAGGTAATGGCTTACCAAGGCTATGAC
+GGGTATCCGGCCTGAGAGGGTGAACGGACACACTGGAACTGAGACACGGTCCAGACTCCT
+ACGGGAGGCAGCAGTAGGGAATATTGCTCAATGGGGGAAACCCTGAAGCAGCAACGCCGC
+GTGGAGGATGAAGGTTTTAGGATTGTAAACTCCTTTTGTTAGAGAAGATAATGACGGTAT
+CTAACGAATAAGCACCGGCTAACTCCGTGCCAGCAGCCGCGGTAATACGGAGGGTGCAAG
+CGTTACTCGGAATCACTGGGCGTAAAGAGCGCGTAGGCGGGATAGTCAGTCAGGTGTGAA
+ATCCTATGGCTTAACCATAGAACTGCATTTGAAACTACTATTCTAGAGTGTGGGAGAGGT
+AGGTGGAATTCTTGGTGTAGGGGTAAAATCCGTAGAGATCAAGAGGAATACTCATTGCGA
+AGGCGACCTGCTGGAACATTACTGACGCTGATTGCGCGAAAGCGTGGGGAGCAAACAGGA
+TTAGATACCCTGGTAGTCCACGCCCTAAACGATGGATGCTAGTTGTTGGAGGGCTTAGTC
+TCTCCAGTAATGCAGCTAACGCATTAAGCATCCCGCCTGGGGAGTACGGTCGCAAGATTA
+AAACTCAAAGGAATAGACGGGGACCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAG
+ATACACGAAGAACCTTACCTAGGCTTGACATTGAGAGAATCCGCTAGAAATAGTGGAGTG
+TCTGGCTTGCCAGACCTTGAAAACAGGTGCTGCACGGCTGTCGTCAGCTCGTGTCGTGAG
+ATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCCTTTTCTTAGTTGCTAACAGGTTATGC
+TGAGAACTCTAAGGATACTGCCTCCGTAAGGAGGAGGAAGGTGGGGACGACGTCAAGTCA
+TCATGGCCCTTACGCCTAGGGCTACACACGTGCTACAATGGGGTGCACAAAGAGAAGCAA
+TACTGCGAAGTGGAGCCAATCTTCAAAACACCTCTCAGTTCGGATTGTAGGCTGCAACTC
+GCCTGCATGAAGCTGGAATCGCTAGTAATCGCAAATCAGCCATGTTGCGGTGAATACGTT
+CCCGGGTCTTGTACTCACCGCCCGTCACACCATGGGAGTTGTGTTTGCCTTAAGTCAGGA
+TGCTAAATTGGCTACTGCCCACGGCACACACAGCGACTGGGGTG
+>L.gasseri.1
+ACGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAGCGAGCTTGCCTAGATGAATTTG
+GTGCTTGCACCAGATGAAACTAGATACAAGCGAGCGGCGGACGGGTGAGTAACACGTGGG
+TAACCTGCCCAAGAGACTGGGATAACACCTGGAAACAGATGCTAATACCGGATAACAACA
+CTAGACGCATGTCTAGAGTTTAAAAGATGGTTCTGCTATCACTCTTGGATGGACCTGCGG
+TGCATTAGCTAGTTGGTAAGGTAACGGCTTACCAAGGCAATGATGCATAGCCGAGTTGAG
+AGACTGATCGGCCACATTGGGACTGAGACACGGCCCAAACTCCTACGGGAGGCAGCAGTA
+GGGAATCTTCCACAATGGACGCAAGTCTGATGGAGCAACGCCGCGTGAGTGAAGAAGGGT
+TTCGGCTCGTAAAGCTCTGTTGGTAGTGAAGAAAGATAGAGGTAGTAACTGGCCTTTATT
+TGACGGTAATTACTTAGAAAGTCACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTA
+GGTGGCAAGCGTTGTCCGGATTTATTGGGCGTAAAGCGAGTGCAGGCGGTTCAATAAGTC
+TGATGTGAAAGCCTTCGGCTCAACCGGAGAATTGCATCAGAAACTGTTGAACTTGAGTGC
+AGAAGAGGAGAGTGGAACTCCATGTGTAGCGGTGGAATGCGTAGATATATGGAAGAACAC
+CAGTGGCGAAGGCGGCTCTCTGGTCTGCAACTGACGCTGAGGCTCGAAAGCATGGGTAGC
+GAACAGGATTAGATACCCTGGTAGTCCATGCCGTAAACGATGAGTGCTAAGTGTTGGGAG
+GTTTCCGCCTCTCAGTGCTGCAGCTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCG
+CAAGGTTGAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTA
+ATTCGAAGCAACGCGAAGAACCTTACCAGGTCTTGACATCCAGTGCAAACCTAAGAGATT
+AGGTGTTCCCTTCGGGGACGCTGAGACAGGTGGTGCATGGCTGTCGTCAGCTCGTGTCGT
+GAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTGTCATTAGTTGCCATCATTAAG
+TTGGGCACTCTAATGAGACTGCCGGTGACAAACCGGAGGAAGGTGGGGATGACGTCAAGT
+CATCATGCCCCTTATGACCTGGGCTACACACGTGCTACAATGGACGGTACAACGAGAAGC
+GAACCTGCGAAGGCAAGCGGATCTCTGAAAGCCGTTCTCAGTTCGGACTGTAGGCTGCAA
+CTCGCCTACACGAAGCTGGAATCGCTAGTAATCGCGGATCAGCACGCCGCGGTGAATACG
+TTCCCGGGCCTTGTACACACCGCCCGTCACACCATGAGAGTCTGTAACACCCAAAGCCGG
+TGGGATAACCTTTATAGGAGTCAGCCGTCTAAGGTAGGACAGATGATTAGGGTG
+>L.monocytogenes.1
+ACGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAACGAACGGAGGAAGAGCTTGCTC
+TTCCAATGTTAGTGGCGGACGGGTGAGTAACACGTGGGCAACCTGCCTGTAAGTTGGGGA
+TAACTCCGGGAAACCGGGGCTAATACCGAATGATAAGATGTGGCGCATGCCACGCCTTTG
+AAAGATGGTTTCGGCTATCGCTTACAGATGGGCCCGCGGTGCATTAGCTAGTTGGTAGGG
+TAATGGCCTACCAAGGCAACGATGCATAGCCGACCTGAGAGGGTGATCGGCCACACTGGG
+ACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCCGCAATGGACG
+AAAGTCTGACGGAGCAACGCCGCGTGTATGAAGAAGGTTTTCGGATCGTAAAGTACTGTT
+GTTAGAGAAGAACAAGGATAAGAGTAACTGCTTGTCCCTTGACGGTATCTAACCAGAAAG
+CCACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTGTCCGGAT
+TTATTGGGCGTAAAGCGCGCGCAGGCGGTCTTTTAAGTCTGATGTGAAAGCCCCCGGCTT
+AACCGGGGAGGGTCATTGGAAACTGGAAGACTGGAGTGCAGAAGAGGAGAGTGGAATTCC
+ACGTGTAGCGGTGAAATGCGTAGATATGTGGAGGAACACCAGTGGCGAAGGCGACTCTCT
+GGTCTGTAACTGACGCTGAGGCGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGG
+TAGTCCACGCCGTAAACGATGAGTGCTAAGTGTTAGGGGGTTTCCGCCCCTTAGTGCTGC
+AGCTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAA
+TTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAAC
+CTTACCAGGTCTTGACATCCTTTGACCACTCTGGAGACAGAGCTTTCCCTTCGGGGACAA
+AGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCCG
+CAACGAGCGCAACCCTTGATTTTAGTTGCCAGCATTTAGTTGGGCACTCTAAAGTGACTG
+CCGGTGCAAGCCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGACCTGG
+GCTACACACGTGCTACAATGGATAGTACAAAGGGTCGCGAAGCCGCGAGGTGGAGCTAAT
+CCCATAAAACTATTCTCAGTTCGGATTGTAGGCTGCAACTCGCCTACATGAAGCCGGAAT
+CGCTAGTAATCGTGGATCAGCATGCCACGGTGAATACGTTCCCGGGCCTTGTACACACCG
+CCCGTCACACCACGAGAGTTTGTAACACCCGAAGTCGGTAGGGTAACCTTTATGGAGCCA
+GCCGCCGAAGGTGGGACAGATAATTGGGGTG
+>L.monocytogenes.2
+ACGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAACGAACGGAGGAAGAGCTTGCTC
+TTCCAATGTTAGTGGCGGACGGGTGAGTAACACGTGGGCAACCTGCCTGTAAGTTGGGGA
+TAACTCCGGGAAACCGGGGCTAATACCGAATGATAAAGTGTGGCGCATGCCACGCTTTTG
+AAAGATGGTTTCGGCTATCGCTTACAGATGGGCCCGCGGTGCATTAGCTAGTTGGTAGGG
+TAATGGCCTACCAAGGCAACGATGCATAGCCGACCTGAGAGGGTGATCGGCCACACTGGG
+ACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCCGCAATGGACG
+AAAGTCTGACGGAGCAACGCCGCGTGTATGAAGAAGGTTTTCGGATCGTAAAGTACTGTT
+GTTAGAGAAGAACAAGGATAAGAGTAACTGCTTGTCCCTTGACGGTATCTAACCAGAAAG
+CCACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTGTCCGGAT
+TTATTGGGCGTAAAGCGCGCGCAGGCGGTCTTTTAAGTCTGATGTGAAAGCCCCCGGCTT
+AACCGGGGAGGGTCATTGGAAACTGGAAGACTGGAGTGCAGAAGAGGAGAGTGGAATTCC
+ACGTGTAGCGGTGAAATGCGTAGATATGTGGAGGAACACCAGTGGCGAAGGCGACTCTCT
+GGTCTGTAACTGACGCTGAGGCGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGG
+TAGTCCACGCCGTAAACGATGAGTGCTAAGTGTTAGGGGGTTTCCGCCCCTTAGTGCTGC
+AGCTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAA
+TTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAAC
+CTTACCAGGTCTTGACATCCTTTGACCACTCTGGAGACAGAGCTTTCCCTTCGGGGACAA
+AGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCCG
+CAACGAGCGCAACCCTTGATTTTAGTTGCCAGCATTTAGTTGGGCACTCTAAAGTGACTG
+CCGGTGCAAGCCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGACCTGG
+GCTACACACGTGCTACAATGGATAGTACAAAGGGTCGCGAAGCCGCGAGGTGGAGCTAAT
+CCCATAAAACTATTCTCAGTTCGGATTGTAGGCTGCAACTCGCCTACATGAAGCCGGAAT
+CGCTAGTAATCGTGGATCAGCATGCCACGGTGAATACGTTCCCGGGCCTTGTACACACCG
+CCCGTCACACCACGAGAGTTTGTAACACCCGAAGTCGGTAGGGTAACCTTTATGGAGCCA
+GCCGCCGAAGGTGGGACAGATAATTGGGGTG
+>L.monocytogenes.3
+ACGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAACGAACGGAGGAAGAGCTTGCTC
+TTCCAAAGTTAGTGGCGGACGGGTGAGTAACACGTGGGCAACCTGCCTGTAAGTTGGGGA
+TAACTCCGGGAAACCGGGGCTAATACCGAATGATAGAATGTGGCGCATGCCACGCTTTTG
+AAAGATGGTTTCGGCTATCGCTTACAGATGGGCCCGCGGTGCATTAGCTAGTTGGTAGGG
+TAATGGCCTACCAAGGCAACGATGCATAGCCGACCTGAGAGGGTGATCGGCCACACTGGG
+ACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCCGCAATGGACG
+AAAGTCTGACGGAGCAACGCCGCGTGTATGAAGAAGGTTTTCGGATCGTAAAGTACTGTT
+GTTAGAGAAGAACAAGGATAAGAGTAACTGCTTGTCCCTTGACGGTATCTAACCAGAAAG
+CCACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTGTCCGGAT
+TTATTGGGCGTAAAGCGCGCGCAGGCGGTCTTTTAAGTCTGATGTGAAAGCCCCCGGCTT
+AACCGGGGAGGGTCATTGGAAACTGGAAGACTGGAGTGCAGAAGAGGAGAGTGGAATTCC
+ACGTGTAGCGGTGAAATGCGTAGATATGTGGAGGAACACCAGTGGCGAAGGCGACTCTCT
+GGTCTGTAACTGACGCTGAGGCGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGG
+TAGTCCACGCCGTAAACGATGAGTGCTAAGTGTTAGGGGGTTTCCGCCCCTTAGTGCTGC
+AGCTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAA
+TTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAAC
+CTTACCAGGTCTTGACATCCTTTGACCACTCTGGAGACAGAGCTTTCCCTTCGGGGACAA
+AGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCCG
+CAACGAGCGCAACCCTTGATTTTAGTTGCCAGCATTTAGTTGGGCACTCTAAAGTGACTG
+CCGGTGCAAGCCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGACCTGG
+GCTACACACGTGCTACAATGGATAGTACAAAGGGTCGCGAAGCCGCGAGGTGGAGCTAAT
+CCCATAAAACTATTCTCAGTTCGGATTGTAGGCTGCAACTCGCCTACATGAAGCCGGAAT
+CGCTAGTAATCGTGGATCAGCATGCCACGGTGAATACGTTCCCGGGCCTTGTACACACCG
+CCCGTCACACCACGAGAGTTTGTAACACCCGAAGTCGGTAGGGTAACCTTTATGGAGCCA
+GCCGCCGAAGGTGGGACAGATAATTGGGGTG
+>L.monocytogenes.5
+ACGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAACGAACGGAGGAAGAGCTTGCTC
+TTCCAAAGTTAGTGGCGGACGGGTGAGTAACACGTGGGCAACCTGCCTGTAAGTTGGGGA
+TAACTCCGGGAAACCGGGGCTAATACCGAATGATAAAGTGTGGCGCATGCCACGCTTTTG
+AAAGATGGTTTCGGCTATCGCTTACAGATGGGCCCGCGGTGCATTAGCTAGTTGGTAGGG
+TAATGGCCTACCAAGGCAACGATGCATAGCCGACCTGAGAGGGTGATCGGCCACACTGGG
+ACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCCGCAATGGACG
+AAAGTCTGACGGAGCAACGCCGCGTGTATGAAGAAGGTTTTCGGATCGTAAAGTACTGTT
+GTTAGAGAAGAACAAGGATAAGAGTAACTGCTTGTCCCTTGACGGTATCTAACCAGAAAG
+CCACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTGTCCGGAT
+TTATTGGGCGTAAAGCGCGCGCAGGCGGTCTTTTAAGTCTGATGTGAAAGCCCCCGGCTT
+AACCGGGGAGGGTCATTGGAAACTGGAAGACTGGAGTGCAGAAGAGGAGAGTGGAATTCC
+ACGTGTAGCGGTGAAATGCGTAGATATGTGGAGGAACACCAGTGGCGAAGGCGACTCTCT
+GGTCTGTAACTGACGCTGAGGCGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGG
+TAGTCCACGCCGTAAACGATGAGTGCTAAGTGTTAGGGGGTTTCCGCCCCTTAGTGCTGC
+AGCTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAA
+TTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAAC
+CTTACCAGGTCTTGACATCCTTTGACCACTCTGGAGACAGAGCTTTCCCTTCGGGGACAA
+AGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCCG
+CAACGAGCGCAACCCTTGATTTTAGTTGCCAGCATTTAGTTGGGCACTCTAAAGTGACTG
+CCGGTGCAAGCCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGACCTGG
+GCTACACACGTGCTACAATGGATAGTACAAAGGGTCGCGAAGCCGCGAGGTGGAGCTAAT
+CCCATAAAACTATTCTCAGTTCGGATTGTAGGCTGCAACTCGCCTACATGAAGCCGGAAT
+CGCTAGTAATCGTGGATCAGCATGCCACGGTGAATACGTTCCCGGGCCTTGTACACACCG
+CCCGTCACACCACGAGAGTTTGTAACACCCGAAGTCGGTAGGGTAACCTTTATGGAGCCA
+GCCGCCGAAGGTGGGACAGATAATTGGGGTG
+>N.meningitidis.1
+TTGAACGCTGGCGGCATGCTTTACACATGCAAGTCGGACGGCAGCACAGAGAAGCTTGCT
+TCTCGGGTGGCGAGTGGCGAACGGGTGAGTAACATATCGGAACGTACCGAGTAGTGGGGG
+ATAACTGATCGAAAGATCAGCTAATACCGCATACGTCTTGAGAGAGAAAGCAGGGGACCT
+TCGGGCCTTGCGCTATTCGAGCGGCCGATATCTGATTAGCTAGTTGGTGGGGTAAAGGCC
+TACCAAGGCGACGATCAGTAGCGGGTCTGAGAGGATGATCCGCCACACTGGGACTGAGAC
+ACGGCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATTTTGGACAATGGGCGCAAGCCTG
+ATCCAGCCATGCCGCGTGTCTGAAGAAGGCCTTCGGGTTGTAAAGGACTTTTGTCAGGGA
+AGAAAAGGCTGTTGCTAATATCAGCGGCTGATGACGGTACCTGAAGAATAAGCACCGGCT
+AACTACGTGCCAGCAGCCGCGGTAATACGTAGGGTGCGAGCGTTAATCGGAATTACTGGG
+CGTAAAGCGGGCGCAGACGGTTACTTAAGCAGGATGTGAAATCCCCGGGCTCAACCCGGG
+AACTGCGTTCTGAACTGGGTGACTCGAGTGTGTCAGAGGGAGGTAGAATTCCACGTGTAG
+CAGTGAAATGCGTAGAGATGTGGAGGAATACCGATGGCGAAGGCAGCCTCCTGGGACAAC
+ACTGACGTTCATGCCCGAAAGCGTGGGTAGCAAACAGGATTAGATACCCTGGTAGTCCAC
+GCCCTAAACGATGTCAATTAGCTGTTGGGCAACCTGATTGCTTGGTAGCGTAGCTAACGC
+GTGAAATTGACCGCCTGGGGAGTACGGTCGCAAGATTAAAACTCAAAGGAATTGACGGGG
+ACCCGCACAAGCGGTGGATGATGTGGATTAATTCGATGCAACGCGAAGAACCTTACCTGG
+TCTTGACATGTACGGAATCCTCCGGAGACGGAGGAGTGCCTTCGGGAGCCGTAACACAGG
+TGCTGCATGGCTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCCGCAACGAGCG
+CAACCCTTGTCATTAGTTGCCATCATTCAGTTGGGCACTCTAATGAGACTGCCGGTGACA
+AGCCGGAGGAAGGTGGGGATGACGTCAAGTCCTCATGGCCCTTATGACCAGGGCTTCACA
+CGTCATACAATGGTCGGTACAGAGGGTAGCCAAGCCGCGAGGCGGAGCCAATCTCACAAA
+ACCGATCGTAGTCCGGATTGCACTCTGCAACTCGAGTGCATGAAGTCGGAATCGCTAGTA
+ATCGCAGGTCAGCATACTGCGGTGAATACGTTCCCGGGTCTTGTACACACCGCCCGTCAC
+ACCATGGGAGTGGGGGATACCAGAAGTAGGTAGGATAACCACAAGGAGTCCGCTTACCAC
+GGTATGCTTCATGACTGGGGTG
+>P.acnes.1
+ACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAACGGAAAGGCCCTGCTTTTGTGG
+GGTGCTCGAGTGGCGAACGGGTGAGTAACACGTGAGTAACCTGCCCTTGACTTTGGGATA
+ACTTCAGGAAACTGGGGCTAATACCGGATAGGAGCTCCTGCTGCATGGTGGGGGTTGGAA
+AGTTTCGGCGGTTGGGGATGGACTCGCGGCTTATCAGCTTGTTGGTGGGGTAGTGGCTTA
+CCAAGGCTTTGACGGGTAGCCGGCCTGAGAGGGTGACCGGCCACATTGGGACTGAGATAC
+GGCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGCGGAAGCCTGAT
+GCAGCAACGCCGCGTGCGGGATGACGGCCTTCGGGTTGTAAACCGCTTTCGCCTGTGACG
+AAGCGTGAGTGACGGTAATGGGTAAAGAAGCACCGGCTAACTACGTGCCAGCAGCCGCGG
+TGATACGTAGGGTGCGAGCGTTGTCCGGATTTATTGGGCGTAAAGGGCTCGTAGGTGGTT
+GATCGCGTCGGAAGTGTAATCTTGGGGCTTAACCCTGAGCGTGCTTTCGATACGGGTTGA
+CTTGAGGAAGGTAGGGGAGAATGGAATTCCTGGTGGAGCGGTGGAATGCGCAGATATCAG
+GAGGAACACCAGTGGCGAAGGCGGTTCTCTGGGCCTTTCCTGACGCTGAGGAGCGAAAGC
+GTGGGGAGCGAACAGGCTTAGATACCCTGGTAGTCCACGCTGTAAACGGTGGGTACTAGG
+TGTGGGGTCCATTCCACGGGTTCCGTGCCGTAGCTAACGCTTTAAGTACCCCGCCTGGGG
+AGTACGGCCGCAAGGCTAAAACTCAAAGGAATTGACGGGGCCCCGCACAAGCGGCGGAGC
+ATGCGGATTAATTCGATGCAACGCGTAGAACCTTACCTGGGTTTGACATGGATCGGGAGT
+GCTCAGAGATGGGTGTGCCTCTTTTGGGGTCGGTTCACAGGTGGTGCATGGCTGTCGTCA
+GCTCGTGTCGTGAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTGTTCACTGTTG
+CCAGCACGTTATGGTGGGGACTCAGTGGAGACCGCCGGGGTCAACTCGGAGGAAGGTGGG
+GATGACGTCAAGTCATCATGCCCCTTATGTCCAGGGCTTCACGCATGCTACAATGGCTGG
+TACAGAGAGTGGCGAGCCTGTGAGGGTGAGCGAATCTCGGAAAGCCGGTCTCAGTTCGGA
+TTGGGGTCTGCAACTCGACCTCATGAAGTCGGAGTCGCTAGTAATCGCAGATCAGCAACG
+CTGCGGTGAATACGTTCCCGGGGCTTGTACACACCGCCCGTCAAGTCATGAAAGTTGGTA
+ACACCCGAAGCCGGTGGCCTAACCGTTGTGGGGGAGCCGTCGAAGGTGGGACTGGTGATT
+AGGACT
+>P.aeruginosa.1
+TTGAACGCTGGCGGCAGGCCTAACACATGCAAGTCGAGCGGATGAAGGGAGCTTGCTCCT
+GGATTCAGCGGCGGACGGGTGAGTAATGCCTAGGAATCTGCCTGGTAGTGGGGGATAACG
+TCCGGAAACGGGCGCTAATACCGCATACGTCCTGAGGGAGAAAGTGGGGGATCTTCGGAC
+CTCACGCTATCAGATGAGCCTAGGTCGGATTAGCTAGTTGGTGGGGTAAAGGCCTACCAA
+GGCGACGATCCGTAACTGGTCTGAGAGGATGATCAGTCACACTGGAACTGAGACACGGTC
+CAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGGACAATGGGCGAAAGCCTGATCCAG
+CCATGCCGCGTGTGTGAAGAAGGTCTTCGGATTGTAAAGCACTTTAAGTTGGGAGGAAGG
+GCAGTAAGTTAATACCTTGCTGTTTTGACGTTACCAACAGAATAAGCACCGGCTAACTTC
+GTGCCAGCAGCCGCGGTAATACGAAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAA
+GCGCGCGTAGGTGGTTCAGCAAGTTGGATGTGAAATCCCCGGGCTCAACCTGGGAACTGC
+ATCCAAAACTACTGAGCTAGAGTACGGTAGAGGGTGGTGGAATTTCCTGTGTAGCGGTGA
+AATGCGTAGATATAGGAAGGAACACCAGTGGCGAAGGCGACCACCTGGACTGATACTGAC
+ACTGAGGTGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTA
+AACGATGTCGACTAGCCGTTGGGATCCTTGAGATCTTAGTGGCGCAGCTAACGCGATAAG
+TCGACCGCCTGGGGAGTACGGCCGCAAGGTTAAAACTCAAATGAATTGACGGGGGCCCGC
+ACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAACCTTACCTGGCCTTGA
+CATGCTGAGAACTTTCCAGAGATGGATTGGTGCCTTCGGGAACTCAGACACAGGTGCTGC
+ATGGCTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCCGTAACGAGCGCAACCC
+TTGTCCTTAGTTACCAGCACCTCGGGTGGGCACTCTAAGGAGACTGCCGGTGACAAACCG
+GAGGAAGGTGGGGATGACGTCAAGTCATCATGGCCCTTACGGCCAGGGCTACACACGTGC
+TACAATGGTCGGTACAAAGGGTTGCCAAGCCGCGAGGTGGAGCTAATCCCATAAAACCGA
+TCGTAGTCCGGATCGCAGTCTGCAACTCGACTGCGTGAAGTCGGAATCGCTAGTAATCGT
+GAATCAGAATGTCACGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCACACCAT
+GGGAGTGGGTTGCTCCAGAAGTAGCTAGTCTAACCGCAAGGGGGACGGTTACCACGGAGT
+GATTCATGACTGGGGTG
+>P.aeruginosa.2
+TTGAACGCTGGCGGCAGGCCTAACACATGCAAGTCGAGCGGATGAAGGGAGCTTGCTCCT
+GGATTCAGCGGCGGACGGGTGAGTAATGCCTAGGAATCTGCCTGGTAGTGGGGGATAACG
+TCCGGAAACGGGCGCTAATACCGCATACGTCCTGAGGGAGAAAGTGGGGGATCTTCGGAC
+CTCACGCTATCAGATGAGCCTAGGTCGGATTAGCTAGTTGGTGGGGTAAAGGCCTACCAA
+GGCGACGATCCGTAACTGGTCTGAGAGGATGATCAGTCACACTGGAACTGAGACACGGTC
+CAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGGACAATGGGCGAAAGCCTGATCCAG
+CCATGCCGCGTGTGTGAAGAAGGTCTTCGGATTGTAAAGCACTTTAAGTTGGGAGGAAGG
+GCAGTAAGTTAATACCTTGCTGTTTTGACGTTACCAACAGAATAAGCACCGGCTAACTTC
+GTGCCAGCAGCCGCGGTAATACGAAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAA
+GCGCGCGTAGGTGGTTCAGCAAGTTGGATGTGAAATCCCCGGGCTCAACCTGGGAACTGC
+ATCCAAAACTACTGAGCTAGAGTACGGTAGAGGGTGGTGGAATTTCCTGTGTAGCGGTGA
+AATGCGTAGATATAGGAAGGAACACCAGTGGCGAAGGCGACCACCTGGACTGATACTGAC
+ACTGAGGTGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTA
+AACGATGTCGACTAGCCGTTGGGATCCTTGAGATCATAGTGGCGCAGCTAACGCGATAAG
+TCGACCGCCTGGGGAGTACGGCCGCAAGGTTAAAACTCAAATGAATTGACGGGGGCCCGC
+ACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAACCTTACCTGGCCTTGA
+CATGCTGAGAACTTTCCAGAGATGGATTGGTGCCTTCGGGAACTCAGACACAGGTGCTGC
+ATGGCTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCCGTAACGAGCGCAACCC
+TTGTCCTTAGTTACCAGCACCTCGGGTGGGCACTCTAAGGAGACTGCCGGTGACAAACCG
+GAGGAAGGTGGGGATGACGTCAAGTCATCATGGCCCTTACGGCCAGGGCTACACACGTGC
+TACAATGGTCGGTACAAAGGGTTGCCAAGCCGCGAGGTGGAGCTAATCCCATAAAACCGA
+TCGTAGTCCGGATCGCAGTCTGCAACTCGACTGCGTGAAGTCGGAATCGCTAGTAATCGT
+GAATCAGAATGTCACGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCACACCAT
+GGGAGTGGGTTGCTCCAGAAGTAGCTAGTCTAACCGCAAGGGGGACGGTTACCACGGAGT
+GATTCATGACTGGGGTG
+>R.sphaeroides.1
+ATGAACGCTGGCGGCAGGCCTAACACATGCAAGTCGAGCGAAGTCTTCGGACTTAGCGGC
+GGACGGGTGAGTAACGCGTGGGAACGTGCCCTTTGCTTCGGAATAGCCCCGGGAAACTGG
+GAGTAATACCGAATGTGCCCTTTGGGGGAAAGATTTATCGGCAAAGGATCGGCCCGCGTT
+GGATTAGGTAGTTGGTGGGTAATGGCCTACCAGCCAACGATCCATAGCTGGTTTGAGAGG
+ATGATCAGCCACACTGGGACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTGGGG
+AATCTTAGACAATGGGCGCAAGCCTGATCTAGCCATGCCGCGTGATCGATGAAGGCCTTA
+GGGTTGTAAAGATCTTTCAGGTGGGAAGATAATGACGGTACCACCAGAAGAAGCCCCGGC
+TAACTCCGTGCCAGCAGCCGCGGTAATACGGAGGGGGCTAGCGTTATTCGGAATTACTGG
+GCGTAAAGCGCACGTAGGCGGATCGGAAAGTCAGAGGTGAAATCCCAGGGCTCAACCCTG
+GAACTGCCTTTGAAACTCCCGATCTTGAGGTCGAGAGAGGTGAGTGGAATTCCGAGTGTA
+GAGGTGAAATTCGTAGATATTCGGAGGAACACCAGTGGCGAAGGCGGCTCACTGGCTCGA
+TACTGACGCTGAGGTGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGGTAGTCCA
+CGCCGTAAACGATGAATGCCAGTCGTCGGGCAGCATGCTGTTCGGTGACACACCTAACGG
+ATTAAGCATTCCGCCTGGGGAGTACGGCCGCAAGGTTAAAACTCAAAGGAATTGACGGGG
+GCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGCAGAACCTTACCAAC
+CCTTGACATGGCGATCGCGGTTCCAGAGATGGTTCCTTCAGTTCGGCTGGATCGCACACA
+GGTGCTGCATGGCTGTCGTCAGCTCGTGTCGTGAGATGTTCGGTTAAGTCCGGCAACGAG
+CGCAACCCACGTCCTTAGTTGCCAGCATTCAGTTGGGCACTCTAGGGAAACTGCCGGTGA
+TAAGCCGGAGGAAGGTGTGGATGACGTCAAGTCCTCATGGCCCTTACGGGTTGGGCTACA
+CACGTGCTACAATGGCAGTGACAATGGGTTAATCCCAAAAAGCTGTCTCAGTTCGGATTG
+GGGTCTGCAACTCGACCCCATGAAGTCGGAATCGCTAGTAATCGCGTAACAGCATGACGC
+GGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCACACCATGGGAATTGGTTCTAC
+CCGAAGGCGGTGCGCCAACCTCGCAAGAGGAGGCAGCCGACCACGGTAGGATCAGTGACT
+GGGGTG
+>R.sphaeroides.3
+ATGAACGCTGGCGGCAGGCCTAACACATGCAAGTCGAGCGAAGTCTTCGGACTTAGCGGC
+GGACGGGTGAGTAACGCGTGGGAACGTGCCCTTTGCTTCGGAATAGCCCCGGGAAACTGG
+GAGTAATACCGAATGTGCCCTTTGGGGGAAAGATTTATCGGCAAAGGATCGGCCCGCGTT
+GGATTAGGTAGTTGGTGGGGTAATGGCCTACCAAGCCGACGATCCATAGCTGGTTTGAGA
+GGATGATCAGCCACACTGGGACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTGG
+GGAATCTTAGACAATGGGCGCAAGCCTGATCTAGCCATGCCGCGTGATCGATGAAGGCCT
+TAGGGTTGTAAAGATCTTTCAGGTGGGAAGATAATGACGGTACCACCAGAAGAAGCCCCG
+GCTAACTCCGTGCCAGCAGCCGCGGTAATACGGAGGGGGCTAGCGTTATTCGGAATTACT
+GGGCGTAAAGCGCACGTAGGCGGATCGGAAAGTCAGAGGTGAAATCCCAGGGCTCAACCC
+TGGAACTGCCTTTGAAACTCCCGATCTTGAGGTCGAGAGAGGTGAGTGGAATTCCGAGTG
+TAGAGGTGAAATTCGTAGATATTCGGAGGAACACCAGTGGCGAAGGCGGCTCACTGGCTC
+GATACTGACGCTGAGGTGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGGTAGTC
+CACGCCGTAAACGATGAATGCCAGTCGTCGGGCAGCATGCTGTTCGGTGACACACCTAAC
+GGATTAAGCATTCCGCCTGGGGAGTACGGCCGCAAGGTTAAAACTCAAAGGAATTGACGG
+GGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGCAGAACCTTACCA
+ACCCTTGACATGGCGATCGCGGTTCCAGAGATGGTTCCTTCAGTTCGGCTGGATCGCACA
+CAGGTGCTGCATGGCTGTCGTCAGCTCGTGTCGTGAGATGTTCGGTTAAGTCCGGCAACG
+AGCGCAACCCACGTCCTTAGTTGCCAGCATTCAGTTGGGCACTCTAGGGAAACTGCCGGT
+GATAAGCCGGAGGAAGGTGTGGATGACGTCAAGTCCTCATGGCCCTTACGGGTTGGGCTA
+CACACGTGCTACAATGGCAGTGACAATGGGTTAATCCCAAAAAGCTGTCTCAGTTCGGAT
+TGGGGTCTGCAACTCGACCCCATGAAGTCGGAATCGCTAGTAATCGCGTAACAGCATGAC
+GCGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCACACCATGGGAATTGGTTCT
+ACCCGAAGGCGGTGCGCCAACCTCGCAAGAGGAGGCAGCCGACCACGGTAGGATCAGTGA
+CTGGGGTG
+>S.aureus.1
+ATGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAGCGAACGGACGAGAAGCTTGCTT
+CTCTGATGTTAGCGGCGGACGGGTGAGTAACACGTGGATAACCTACCTATAAGACTGGGA
+TAACTTCGGGAAACCGGAGCTAATACCGGATAATATTTTGAACCGCATGGTTCAAAAGTG
+AAAGACGGTCTTGCTGTCACTTATAGATGGATCCGCGCTGCATTAGCTAGTTGGTAAGGT
+AACGGCTTACCAAGGCAACGATGCATAGCCGACCTGAGAGGGTGATCGGCCACACTGGAA
+CTGAGACACGGTCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCCGCAATGGGCGA
+AAGCCTGACGGAGCAACGCCGCGTGAGTGATGAAGGTCTTCGGATCGTAAAACTCTGTTA
+TTAGGGAAGAACATATGTGTAAGTAACTGTGCACATCTTGACGGTACCTAATCAGAAAGC
+CACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTATCCGGAAT
+TATTGGGCGTAAAGCGCGCGTAGGCGGTTTTTTAAGTCTGATGTGAAAGCCCACGGCTCA
+ACCGTGGAGGGTCATTGGAAACTGGAAAACTTGAGTGCAGAAGAGGAAAGTGGAATTCCA
+TGTGTAGCGGTGAAATGCGCAGAGATATGGAGGAACACCAGTGGCGAAGGCGACTTTCTG
+GTCTGTAACTGACGCTGATGTGCGAAAGCGTGGGGATCAAACAGGATTAGATACCCTGGT
+AGTCCACGCCGTAAACGATGAGTGCTAAGTGTTAGGGGGTTTCCGCCCCTTAGTGCTGCA
+GCTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAAT
+TGACGGGGACCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAACC
+TTACCAAATCTTGACATCCTTTGACAACTCTAGAGATAGAGCCTTCCCCTTCGGGGGACA
+AAGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCC
+GCAACGAGCGCAACCCTTAAGCTTAGTTGCCATCATTAAGTTGGGCACTCTAAGTTGACT
+GCCGGTGACAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGATTT
+GGGCTACACACGTGCTACAATGGACAATACAAAGGGCAGCGAAACCGCGAGGTCAAGCAA
+ATCCCATAAAGTTGTTCTCAGTTCGGATTGTAGTCTGCAACTCGACTACATGAAGCTGGA
+ATCGCTAGTAATCGTAGATCAGCATGCTACGGTGAATACGTTCCCGGGTCTTGTACACAC
+CGCCCGTCACACCACGAGAGTTTGTAACACCCGAAGCCGGTGGAGTAACCTTTTAGGAGC
+TAGCCGTCGAAGGTGGGACAAATGATTGGGGTG
+>S.aureus.4
+ATGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAGCGAACGGACGAGAAGCTTGCTT
+CTCTGATGTTAGCGGCGGACGGGTGAGTAACACGTGGATAACCTACCTATAAGACTGGGA
+TAACTTCGGGAAACCGGAGCTAATACCGGATGATATTTTGAACCGCATGGTTCAAAAGTG
+AAAGACGGTCTTGCTGTCACTTATAGATGGATCCGCGCTGCATTAGCTAGTTGGTAAGGT
+AACGGCTTACCAAGGCAACGATGCATAGCCGACCTGAGAGGGTGATCGGCCACACTGGAA
+CTGAGACACGGTCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCCGCAATGGGCGA
+AAGCCTGACGGAGCAACGCCGCGTGAGTGATGAAGGTCTTCGGATCGTAAAACTCTGTTA
+TTAGGGAAGAACATATGTGTAAGTAACTGTGCACATCTTGACGGTACCTAATCAGAAAGC
+CACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTATCCGGAAT
+TATTGGGCGTAAAGCGCGCGTAGGCGGTTTTTTAAGTCTGATGTGAAAGCCCACGGCTCA
+ACCGTGGAGGGTCATTGGAAACTGGAAAACTTGAGTGCAGAAGAGGAAAGTGGAATTCCA
+TGTGTAGCGGTGAAATGCGCAGAGATATGGAGGAACACCAGTGGCGAAGGCGACTTTCTG
+GTCTGTAACTGACGCTGATGTGCGAAAGCGTGGGGATCAAACAGGATTAGATACCCTGGT
+AGTCCACGCCGTAAACGATGAGTGCTAAGTGTTAGGGGGTTTCCGCCCCTTAGTGCTGCA
+GCTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAAT
+TGACGGGGACCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAACC
+TTACCAAATCTTGACATCCTTTGACAACTCTAGAGATAGAGCCTTCCCCTTCGGGGGACA
+AAGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCC
+GCAACGAGCGCAACCCTTAAGCTTAGTTGCCATCATTAAGTTGGGCACTCTAAGTTGACT
+GCCGGTGACAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGATTT
+GGGCTACACACGTGCTACAATGGACAATACAAAGGGCAGCGAAACCGCGAGGTCAAGCAA
+ATCCCATAAAGTTGTTCTCAGTTCGGATTGTAGTCTGCAACTCGACTACATGAAGCTGGA
+ATCGCTAGTAATCGTAGATCAGCATGCTACGGTGAATACGTTCCCGGGTCTTGTACACAC
+CGCCCGTCACACCACGAGAGTTTGTAACACCCGAAGCCGGTGGAGTAACCTTTTAGGAGC
+TAGCCGTCGAAGGTGGGACAAATGATTGGGGTG
+>S.aureus.5
+ATGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAGCGAACGGACGAGAAGCTTGCTT
+CTCTGATGTTAGCGGCGGACGGGTGAGTAACACGTGGATAACCTACCTATAAGACTGGGA
+TAACTTCGGGAAACCGGAGCTAATACCGGATAATATTTTGAACCGCATGGTTCAAAAGTG
+AAAGACGGTCTTGCTGTCACTTATAGATGGATCCGCGCTGCATTAGCTAGTTGGTAAGGT
+AACGGCTTACCAAGGCAACGATGCATAGCCGACCTGAGAGGGTGATCGGCCACACTGGAA
+CTGAGACACGGTCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCCGCAATGGGCGA
+AAGCCTGACGGAGCAACGCCGCGTGAGTGATGAAGGTCTTCGGATCGTAAAACTCTGTTA
+TTAGGGAAGAACATATGTGTAAGTAACTGTGCACATCTTGACGGTACCTAATCAGAAAGC
+CACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTATCCGGAAT
+TATTGGGCGTAAAGCGCGCGTAGGCGGTTTTTTAAGTCTGATGTGAAAGCCCACGGCTCA
+ACCGTGGAGGGTTATTGGAAACTGGAAAACTTGAGTGCAGAAGAGGAAAGTGGAATTCCA
+TGTGTAGCGGTGAAATGCGCAGAGATATGGAGGAACACCAGTGGCGAAGGCGACTTTCTG
+GTCTGTAACTGACGCTGATGTGCGAAAGCGTGGGGATCAAACAGGATTAGATACCCTGGT
+AGTCCACGCCGTAAACGATGAGTGCTAAGTGTTAGGGGGTTTCCGCCCCTTAGTGCTGCA
+GCTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAAT
+TGACGGGGACCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAACC
+TTACCAAATCTTGACATCCTTTGACAACTCTAGAGATAGAGCTTTCCCCTTCGGGGGACA
+AAGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCC
+GCAACGAGCGCAACCCTTAAGCTTAGTTGCCATCATTAAGTTGGGCACTCTAAGTTGACT
+GCCGGTGACAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGATTT
+GGGCTACACACGTGCTACAATGGACAATACAAAGGGCAGCGAAACCGTGAGGTCAAGCAA
+ATCCCATAAAGTTGTTCTCAGTTCGGATTGTAGTCTGCAACTCGACTACATGAAGCTGGA
+ATCGCTAGTAATCGTAGATCAGCATGCTACGGTGAATACGTTCCCGGGTCTTGTACACAC
+CGCCCGTCACACCACGAGAGTTTGTAACACCCGAAGCCGGTGGAGTAACCTTTTAGGAGC
+TAGCCGTCGAAGGTGGGACAAATGATTGGGGTG
+>S.epidermidis.1
+ATGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAGCGAACAGATGAGGAGCTTGCTC
+CTCTGACGTTAGCGGCGGACGGGTGAGTAACACGTGGATAACCTACCTATAAGACTGGGA
+TAACTTCGGGAAACCGGAGCTAATACCGGATAATATATTGAACCGCATGGTTCAATAGTG
+AAAGACGGTTTTGCTGTCACTTATAGATGGATCCGCGCCGCATTAGCTAGTTGGTAAGGT
+AACGGCTTACCAAGGCAACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACACTGGAA
+CTGAGACACGGTCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCCGCAATGGGCGA
+AAGCCTGACGGAGCAACGCCGCGTGAGTGATGAAGGTCTTCGGATCGTAAAACTCTGTTA
+TTAGGGAAGAACAAATGTGTAAGTAACTATGCACGTCTTGACGGTACCTAATCAGAAAGC
+CACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTATCCGGAAT
+TATTGGGCGTAAAGCGCGCGTAGGCGGTTTTTTAAGTCTGATGTGAAAGCCCACGGCTCA
+ACCGTGGAGGGTCATTGGAAACTGGAAAACTTGAGTGCAGAAGAGGAAAGTGGAATTCCA
+TGTGTAGCGGTGAAATGCGCAGAGATATGGAGGAACACCAGTGGCGAAGGCGACTTTCTG
+GTCTGTAACTGACGCTGATGTGCGAAAGCGTGGGGATCAAACAGGATTAGATACCCTGGT
+AGTCCACGCCGTAAACGATGAGTGCTAAGTGTTAGGGGGTTTCCGCCCCTTAGTGCTGCA
+GCTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAAT
+TGACGGGGACCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAACC
+TTACCAAATCTTGACATCCTCTGACCCCTCTAGAGATAGAGTTTTCCCCTTCGGGGGACA
+GAGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCC
+GCAACGAGCGCAACCCTTAAGCTTAGTTGCCATCATTAAGTTGGGCACTCTAAGTTGACT
+GCCGGTGACAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGATTT
+GGGCTACACACGTGCTACAATGGACAATACAAAGGGTAGCGAAACCGCGAGGTCAAGCAA
+ATCCCATAAAGTTGTTCTCAGTTCGGATTGTAGTCTGCAACTCGACTATATGAAGCTGGA
+ATCGCTAGTAATCGTAGATCAGCATGCTACGGTGAATACGTTCCCGGGTCTTGTACACAC
+CGCCCGTCACACCACGAGAGTTTGTAACACCCGAAGCCGGTGGAGTAACCATTTGGAGCT
+AGCCGTCGAAGGTGGGACAAATGATTGGGGTG
+>S.epidermidis.2
+ATGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAGCGAACAGACGAGGAGCTTGCTC
+CTCTGACGTTAGCGGCGGACGGGTGAGTAACACGTGGATAACCTACCTATAAGACTGGGA
+TAACTTCGGGAAACCGGAGCTAATACCGGATAATATATTGAACCGCATGGTTCAATAGTG
+AAAGACGGTTTTGCTGTCACTTATAGATGGATCCGCGCCGCATTAGCTAGTTGGTAAGGT
+AACGGCTTACCAAGGCAACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACACTGGAA
+CTGAGACACGGTCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCCGCAATGGGCGA
+AAGCTTGACGGAGCAACGCCGCGTGAGTGATGAAGGTCTTCGGATCGTAAAACTCTGTTA
+TTAGGGAAGAACAAATGTGTAAGTAACTATGCACGTCTTGACGGTACCTAATCAGAAAGC
+CACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTATCCGGAAT
+TATTGGGCGTAAAGCGCGCGTAGGCGGTTTTTTAAGTCTGATGTGAAAGCCCACGGCTCA
+ACCGTGGAGGGTCATTGGAAACTGGAAAACTTGAGTGCAGAAGAGGAAAGTGGAATTCCA
+TGTGTAGCGGTGAAATGCGCAGAGATATGGAGGAACACCAGTGGCGAAGGCGACTTTCTG
+GTCTGTAACTGACGCTGATGTGCGAAAGCGTGGGGATCAAACAGGATTAGATACCCTGGT
+AGTCCACGCCGTAAACGATGAGTGCTAAGTGTTAGGGGGTTTCCGCCCCTTAGTGCTGCA
+GCTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAAT
+TGACGGGGACCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAACC
+TTACCAAATCTTGACATCCTCTGACCCCTCTAGAGATAGAGTTTTCCCCTTCGGGGGACA
+GAGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCC
+GCAACGAGCGCAACCCTTAAGCTTAGTTGCCATCATTAAGTTGGGCACTCTAAGTTGACT
+GCCGGTGACAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGATTT
+GGGCTACACACGTGCTACAATGGACAATACAAAGGGCAGCGAAACCGCGAGGTCAAGCAA
+ATCCCATAAAGTTGTTCTCAGTTCGGATTGTAGTCTGCAACTCGACTATATGAAGCTGGA
+ATCGCTAGTAATCGTAGATCAGCATGCTACGGTGAATACGTTCCCGGGTCTTGTACACAC
+CGCCCGTCACACCACGAGAGTTTGTAACACCCGAAGCCGGTGGAGTAACCATTTGGAGCT
+AGCCGTCGAAGGTGGGACAAATGATTGGGGTG
+>S.epidermidis.3
+ATGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAGCGAACAGACGAGGAGCTTGCTC
+CTCTGACGTTAGCGGCGGACGGGTGAGTAACACGTGGATAACCTACCTATAAGACTGGGA
+TAACTTCGGGAAACCGGAGCTAATACCGGATAATATATTGAACCGCATGGTTCAATAGTG
+AAAGACGGTTTTGCTGTCACTTATAGATGGATCCGCGCCGCATTAGCTAGTTGGTAAGGT
+AACGGCTTACCAAGGCGACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACACTGGAA
+CTGAGACACGGTCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCCGCAATGGGCGA
+AAGCCTGACGGAGCAACGCCGCGTGAGTGATGAAGGTCTTCGGATCGTAAAACTCTGTTA
+TTAGGGAAGAACAAATGTGTAAGTAACTATGCACGTCTTGACGGTACCTAATCAGAAAGC
+CACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTATCCGGAAT
+TATTGGGCGTAAAGCGCGCGTAGGCGGTTTTTTAAGTCTGATGTGAAAGCCCACGGCTCA
+ACCGTGGAGGGTCATTGGAAACTGGAAAACTTGAGTGCAGAAGAGGAAAGTGGAATTCCA
+TGTGTAGCGGTGAAATGCGCAGAGATATGGAGGAACACCAGTGGCGAAGGCGACTTTCTG
+GTCTGTAACTGACGCTGATGTGCGAAAGCGTGGGGATCAAACAGGATTAGATACCCTGGT
+AGTCCACGCCGTAAACGATGAGTGCTAAGTGTTAGGGGGTTTCCGCCCCTTAGTGCTGCA
+GCTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAAT
+TGACGGGGACCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAACC
+TTACCAAATCTTGACATCCTCTGATCCCTCTAGAGATAGAGGTTTCCCCTTCGGGGGACA
+GAGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCC
+GCAACGAGCGCAACCCTTAAGCTTAGTTGCCATCATTAAGTTGGGCACTCTAAGTTGACT
+GCCGGTGACAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGATTT
+GGGCTACACACGTGCTACAATGGACAATACAAAGGGCAGCGAAACCGCGAGGTCAAGCAA
+ATCCCATAAAGTTGTTCTCAGTTCGGATTGTAGTCTGCAACTCGACTATATGAAGCTGGA
+ATCGCTAGTAATCGTAGATCAGCATGCTACGGTGAATACGTTCCCGGGTCTTGTACACAC
+CGCCCGTCACACCACGAGAGTTTGTAACACCCGAAGCCGGTGGAGTAACCATTTGGAGCT
+AGCCGTCGAAGGTGGAACAAATGATTGGGGTG
+>S.epidermidis.4
+ATGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAGCGAACAGACGAGGAGCTTGCTC
+CTCTGACGTTAGCGGCGGACGGGTGAGTAACACGTGGATAACCTACCTATAAGACTGGGA
+TAACTTCGGGAAACCGGAGCTAATACCGGATAATATATTGAACCGCATGGTTCAATAGTG
+AAAGACGGTTTTGCTGTCACTTATAGATGGATCCGCGCCGCATTAGCTAGTTGGTAAGGT
+AACGGCTTACCAAGGCAACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACACTGGAA
+CTGAGACACGGTCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCCGCAATGGGCGA
+AAGCCTGACGGAGCAACGCCGCGTGAGTGATGAAGGTCTTCGGATCGTAAAACTCTGTTA
+TTAGGGAAGAACAAATGTGTAAGTAACTATGCACGTCTTGACGGTACCTAATCAGAAAGC
+CACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTATCCGGAAT
+TATTGGGCGTAAAGCGCGCGTAGGCGGTTTTTTAAGTCTGATGTGAAAGCCCACGGCTCA
+ACCGTGGAGGGTCATTGGAAACTGGAAAACTTGAGTGCAGAAGAGGAAAGTGGAATTCCA
+TGTGTAGCGGTGAAATGCGCAGAGATATGGAGGAACACCAGTGGCGAAGGCGACTTTCTG
+GTCTGTAACTGACGCTGATGTGCGAAAGCGTGGGGATCAAACAGGATTAGATACCCTGGT
+AGTCCACGCCGTAAACGATGAGTGCTAAGTGTTAGGGGGTTTCCGCCCCTTAGTGCTGCA
+GCTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAAT
+TGACGGGGACCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAACC
+TTACCAAATCTTGACATCCTCTGACCCCTCTAGAGATAGAGTTTTCCCCTTCGGGGGACA
+GAGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCC
+GCAACGAGCGCAACCCTTAAGCTTAGTTGCCATCATTAAGTTGGGCACTCTAAGTTGACT
+GCCGGTGACAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGATTT
+GGGCTACACACGTGCTACAATGGACAATACAAAGGGCAGCGAAACCGCGAGGTCAAGCAA
+ATCCCATAAAGTTGTTCTCAGTTCGGATTGTAGTCTGCAACTCGACTATATGAAGCTGGA
+ATCGCTAGTAATCGTAGATCAGCATGCTACGGTGAATACGTTCCCGGGTCTTGTACACAC
+CGCCCGTCACACCACGAGAGTTTGTAACACCCGAAGCCGGTGGAGTAACCATTTGGAGCT
+AGCCGTCGAAGGTGGAACAAATGATTGGGGTG
+>S.epidermidis.5
+ATGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAGCGAACAGACGAGGAGCTTGCTC
+CTCTGACGTTAGCGGCGGACGGGTGAGTAACACGTGGATAACCTACCTATAAGACTGGGA
+TAACTTCGGGAAACCGGAGCTAATACCGGATAATATATTGAACCGCATGGTTCAATAGTG
+AAAGACGGTTTTGCTGTCACTTATAGATGGATCCGCGCCGCATTAGCTAGTTGGTAAGGT
+AACGGCTTACCAAGGCAACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACACTGGAA
+CTGAGACACGGTCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCCGCAATGGGCGA
+AAGCTTGACGGAGCAACGCCGCGTGAGTGATGAAGGTCTTCGGATCGTAAAACTCTGTTA
+TTAGGGAAGAACAAATGTCTAAGTAACTATGCACGTCTTGACGGTACCTAATCAGAAAGC
+CACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTGTCCGGAAT
+CATTGGGCGTAAAGCGCGCGTAGGCGGTTTCTTAAGTCTGATGTGAAAGCCCACGGCTCA
+ACCGTGGAGGGTCATTGGAAACTGGAGGACTTGAGTGCAGAAGAGGAAAGTGGAATTCCA
+TGTGTAGCGGTGAAATGCGCAGAGATATGGAGGAACACCAGTGGCGAAGGCGACTTTCTG
+GTCTGTAACTGACGCTGATGTGCGAAAGCGTGGGGATCAAACAGGATTAGATACCCTGGT
+AGTCCACGCCGTAAACGATGAGTGCTAAGTGTTAGGGGGTTTCCGCCCCTTAGTGCTGCA
+GCTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAAT
+TGACGGGGACCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAACC
+TTACCAAATCTTGACATCCTCTGATCCCTCTAGAGATAGAGGTTTCCCCTTCGGGGGACA
+GAGTGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCC
+GCAACGAGCGCAACCCTTAAGCTTAGTTGCCATCATTAAGTTGGGCACTCTAAGTTGACT
+GCCGGTGACAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGATTT
+GGGCTACACACGTGCTACAATGGACAATACAAAGGGCAGCGAAACCGCGAGGTCAAGCAA
+ATCCCATAAAGTTGTTCTCAGTTCGGATTGTAGTCTGCAACTCGACTATATGAAGCTGGA
+ATCGCTAGTAATCGTAGATCAGCATGCTACGGTGAATACGTTCCCGGGTCTTGTACACAC
+CGCCCGTCACACCACGAGAGTTTGTAACACCCGAAGCCGGTGGAGTAACCATTTGGAGCT
+AGCCGTCGAAGGTGGGACAAATGATTGGGGTG
+>S.agalactiae.1
+ACGAACGCTGGCGGCGTGCCTAATACATGCAAGTAGAACGCTGAGGTTTGGTGTTTACAC
+TAGACTGATGAGTTGCGAACGGGTGAGTAACGCGTAGGTAACCTGCCTCATAGCGGGGGA
+TAACTATTGGAAACGATAGCTAATACCGCATAAGAGTAATTAACACATGTTAGTTATTTA
+AAAGGAGCAATTGCTTCACTGTGAGATGGACCTGCGTTGTATTAGCTAGTTGGTGAGGTA
+AAGGCTCACCAAGGCGACGATACATAGCCGACCTGAGAGGGTGATCGGCCACACTGGGAC
+TGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCGGCAATGGACGGA
+AGTCTGACCGAGCAACGCCGCGTGAGTGAAGAAGGTTTTCGGATCGTAAAGCTCTGTTGT
+TAGAGAAGAACGTTGGTAGGAGTGGAAAATCTACCAAGTGACGGTAACTAACCAGAAAGG
+GACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTCCCGAGCGTTGTCCGGATT
+TATTGGGCGTAAAGCGAGCGCAGGCGGTTCTTTAAGTCTGAAGTTAAAGGCAGTGGCTTA
+ACCATTGTACGCTTTGGAAACTGGAGGACTTGAGTGCAGAAGGGGAGAGTGGAATTCCAT
+GTGTAGCGGTGAAATGCGTAGATATATGGAGGAACACCGGTGGCGAAAGCGGCTCTCTGG
+TCTGTAACTGACGCTGAGGCTCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGGTA
+GTCCACGCCGTAAACGATGAGTGCTAGGTGTTAGGCCCTTTCCGGGGCTTAGTGCCGCAG
+CTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAATT
+GACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAACCT
+TACCAGGTCTTGACATCCTTCTGACCGGCCTAGAGATAGGCTTTCTCTTCGGAGCAGAAG
+TGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCCGCA
+ACGAGCGCAACCCCTATTGTTAGTTGCCATCATTAAGTTGGGCACTCTAGCGAGACTGCC
+GGTAATAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGACCTGGG
+CTACACACGTGCTACAATGGTTGGTACAACGAGTCGCAAGCCGGTGACGGCAAGCTAATC
+TCTTAAAGCCAATCTCAGTTCGGATTGTAGGCTGCAACTCGCCTACATGAAGTCGGAATC
+GCTAGTAATCGCGGATCAGCACGCCGCGGTGAATACGTTCCCGGGCCTTGTACACACCGC
+CCGTCACACCACGAGAGTTTGTAACACCCGAAGTCGGTGAGGTAACCTTTTAGGAGCCAG
+CCGCCTAAGGTGGGATAGATGATTGGGGTG
+>S.mutans.1
+ACGAACGCTGGCGGCGTGCCTAATACATGCAAGTGGGACGCAAGGAAACACACTGTGCTT
+GCACACCGTGTTTTCTTGAGTCGCGAACGGGTGAGTAACGCGTAGGTAACCTGCCTATTA
+GCGGGGGATAACTATTGGAAACGATAGCTAATACCGCATAATATTAATTATTGCATGATA
+ATTGATTGAAAGATGCAAGCGCATCACTAGTAGATGGACCTGCGTTGTATTAGCTAGTTG
+GTAAGGTAAGAGCTTACCAAGGCGACGATACATAGCCGACCTGAGAGGGTGATCGGCCAC
+ACTGGGACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCGGCAA
+TGGACGAAAGTCTGACCGAGCAACGCCGCGTGAGTGAAGAAGGTTTTCGGATCGTAAAGC
+TCTGTTGTAAGTCAAGAACGTGTGTGAGAGTGGAAAGTTCACACAGTGACGGTAGCTTAC
+CAGAAAGGGACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTCCCGAGCGTTG
+TCCGGATTTATTGGGCGTAAAGGGAGCGCAGGCGGTCAGGAAAGTCTGGAGTAAAAGGCT
+ATGGCTCAACCATAGTGTGCTCTGGAAACTGTCTGACTTGAGTGCAGAAGGGGAGAGTGG
+AATTCCATGTGTAGCGGTGAAATGCGTAGATATATGGAGGAACACCAGTGGCGAAAGCGG
+CTCTCTGGTCTGTCACTGACGCTGAGGCTCGAAAGCGTGGGTAGCGAACAGGATTAGATA
+CCCTGGTAGTCCACGCCGTAAACGATGAGTGCTAGGTGTTAGGCCCTTTCCGGGGCTTAG
+TGCCGGAGCTAACGCAATAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCA
+AAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCG
+AAGAACCTTACCAGGTCTTGACATCCCGATGCTATTCTTAGAGATAGGAAGTTACTTCGG
+TACATCGGAGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAA
+GTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCCATCATTAAGTTGGGCACTCTAGCG
+AGACTGCCGGTAATAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTAT
+GACCTGGGCTACACACGTGCTACAATGGTCGGTACAACGAGTTGCGAGCCGGTGACGGCA
+AGCTAATCTCTGAAAGCCGATCTCAGTTCGGATTGGAGGCTGCAACTCGCCTCCATGAAG
+TCGGAATCGCTAGTAATCGCGGATCAGCACGCCGCGGTGAATACGTTCCCGGGCCTTGTA
+CACACCGCCCGTCACACCACGAGAGTTTGTAACACCCGAAGTCGGTGAGGTAACCTTTTA
+GGGGCCAGCCGCCTAAGGTGGGATGGATGATTGGGGTG
+>S.mutans.2
+ACGAACGCTGGCGGCGTGCCTAATACATGCAAGTGGGACGCAAGAGGACACACTGTGCTT
+GCACACCGTGTTTTCTTGAGTCGCGAACGGGTGAGTAACGCGTAGGTAACCTGCCTATTA
+GCGGGGGATAACTATTGGAAACGATAGCTAATACCGCATAATATTAATTATTGCATGATA
+ATTGATTGAAAGATGCAAGCGCATCACTAGTAGATGGACCTGCGTTGTATTAGCTAGTTG
+GTAAGGTAAGAGCTTACCAAGGCGACGATACATAGCCGACCTGAGAGGGTGATCGGCCAC
+ACTGGGACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCGGCAA
+TGGACGAAAGTCTGACCGAGCAACGCCGCGTGAGTGAAGAAGGTTTTCGGATCGTAAAGC
+TCTGTTGTAAGTCAAGAACGTGTGTGAGAGTGGAAAGTTCACACAGTGACGGTAGCTTAC
+CAGAAAGGGACGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTCCCGAGCGTTG
+TCCGGATTTATTGGGCGTAAAGGGAGCGCAGGCGGTCAGGAAAGTCTGGAGTAAAAGGCT
+ATGGCTCAACCATAGTGTGCTCTGGAAACTGTCTGACTTGAGTGCAGAAGGGGAGAGTGG
+AATTCCATGTGTAGCGGTGAAATGCGTAGATATATGGAGGAACACCAGTGGCGAAAGCGG
+CTCTCTGGTCTGTCACTGACGCTGAGGCTCGAAAGCGTGGGTAGCGAACAGGATTAGATA
+CCCTGGTAGTCCACGCCGTAAACGATGAGTGCTAGGTGTTAGGCCCTTTCCGGGGCTTAG
+TGCCGGAGCTAACGCAATAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCA
+AAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCG
+AAGAACCTTACCAGGTCTTGACATCCCGATGCTATTCTTAGAGATAGGAAGTTACTTCGG
+TACATCGGAGACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAA
+GTCCCGCAACGAGCGCAACCCTTATTGTTAGTTGCCATCATTAAGTTGGGCACTCTAGCG
+AGACTGCCGGTAATAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTAT
+GACCTGGGCTACACACGTGCTACAATGGTCGGTACAACGAGTTGCGAGCCGGTGACGGCA
+AGCTAATCTCTGAAAGCCGATCTCAGTTCGGATTGGAGGCTGCAACTCGCCTCCATGAAG
+TCGGAATCGCTAGTAATCGCGGATCAGCACGCCGCGGTGAATACGTTCCCGGGCCTTGTA
+CACACCGCCCGTCACACCACGAGAGTTTGTAACACCCGAAGTCGGTGAGGTAACCTTTTA
+GGGGCCAGCCGCCTAAGGTGGGATGGATGATTGGGGTG
+>S.pneumoniae.1
+ACGAACGCTGGCGGCGTGCCTAATACATGCAAGTAGAACGCTGAAGGAGGAGCTTGCTTC
+TCTGGATGAGTTGCGAACGGGTGAGTAACGCGTAGGTAACCTGCCTGGTAGCGGGGGATA
+ACTATTGGAAACGATAGCTAATACCGCATAAGAGTAGATGTTGCATGACATTTGCTTAAA
+AGGTGCACTTGCATCACTACCAGATGGACCTGCGTTGTATTAGCTAGTTGGTGGGGTAAC
+GGCTCACCAAGGCGACGATACATAGCCGACCTGAGAGGGTGATCGGCCACACTGGGACTG
+AGACACGGCCCAGACTCCTACGGGAGGCAGCAGTAGGGAATCTTCGGCAATGGACGGAAG
+TCTGACCGAGCAACGCCGCGTGAGTGAAGAAGGTTTTCGGATCGTAAAGCTCTGTTGTAA
+GAGAAGAACGAGTGTGAGAGTGGAAAGTTCACACTGTGACGGTATCTTACCAGAAAGGGA
+CGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGTCCCGAGCGTTGTCCGGATTTA
+TTGGGCGTAAAGCGAGCGCAGGCGGTTAGATAAGTCTGAAGTTAAAGGCTGTGGCTTAAC
+CATAGTAGGCTTTGGAAACTGTTTAACTTGAGTGCAAGAGGGGAGAGTGGAATTCCATGT
+GTAGCGGTGAAATGCGTAGATATATGGAGGAACACCGGTGGCGAAAGCGGCTCTCTGGCT
+TGTAACTGACGCTGAGGCTCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGGTAGT
+CCACGCTGTAAACGATGAGTGCTAGGTGTTAGACCCTTTCCGGGGTTTAGTGCCGTAGCT
+AACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAATTGA
+CGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGAAGAACCTTA
+CCAGGTCTTGACATCCCTCTGACCGCTCTAGAGATAGAGCTTTCCTTCGGGACAGAGGTG
+ACAGGTGGTGCATGGTTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCCGCAAC
+GAGCGCAACCCCTATTGTTAGTTGCCATCATTTAGTTGGGCACTCTAGCGAGACTGCCGG
+TAATAAACCGGAGGAAGGTGGGGATGACGTCAAATCATCATGCCCCTTATGACCTGGGCT
+ACACACGTGCTACAATGGCTGGTACAACGAGTCGCAAGCCGGTGACGGCAAGCTAATCTC
+TTAAAGCCAGTCTCAGTTCGGATTGTAGGCTGCAACTCGCCTACATGAAGTCGGAATCGC
+TAGTAATCGCGGATCAGCACGCCGCGGTGAATACGTTCCCGGGCCTTGTACACACCGCCC
+GTCACACCACGAGAGTTTGTAACACCCGAAGTCGGTGAGGTAACCGTAAGGAGCCAGCCG
+CCTAAGGTGGGATAGATGATTGGGGTG
diff --git a/pbcore/data/datasets/pbalchemysim0.reference.fasta.fai b/pbcore/data/datasets/pbalchemysim0.reference.fasta.fai
new file mode 100644
index 0000000..d0bb6c5
--- /dev/null
+++ b/pbcore/data/datasets/pbalchemysim0.reference.fasta.fai
@@ -0,0 +1,59 @@
+A.baumannii.1	1458	15	60	61
+A.odontolyticus.1	1462	1517	60	61
+B.cereus.1	1472	3016	60	61
+B.cereus.2	1473	4525	60	61
+B.cereus.4	1472	6035	60	61
+B.cereus.6	1472	7544	60	61
+B.vulgatus.1	1449	9055	60	61
+B.vulgatus.2	1449	10543	60	61
+B.vulgatus.3	1449	12031	60	61
+B.vulgatus.4	1449	13519	60	61
+B.vulgatus.5	1449	15007	60	61
+C.beijerinckii.1	1433	16499	60	61
+C.beijerinckii.2	1433	17974	60	61
+C.beijerinckii.3	1433	19449	60	61
+C.beijerinckii.4	1433	20924	60	61
+C.beijerinckii.5	1433	22399	60	61
+C.beijerinckii.6	1433	23874	60	61
+C.beijerinckii.7	1433	25349	60	61
+C.beijerinckii.8	1433	26824	60	61
+C.beijerinckii.9	1433	28299	60	61
+C.beijerinckii.10	1433	29775	60	61
+C.beijerinckii.11	1433	31251	60	61
+C.beijerinckii.12	1433	32727	60	61
+C.beijerinckii.13	1433	34203	60	61
+C.beijerinckii.14	1433	35679	60	61
+D.radiodurans.1	1423	37153	60	61
+D.radiodurans.2	1423	38617	60	61
+E.faecalis.1	1482	40078	60	61
+E.faecalis.2	1482	41599	60	61
+E.coli.1	1463	43116	60	61
+E.coli.2	1463	44614	60	61
+E.coli.4	1463	46112	60	61
+E.coli.5	1463	47610	60	61
+E.coli.6	1463	49108	60	61
+E.coli.7	1463	50606	60	61
+H.pylori.1	1424	52106	60	61
+L.gasseri.1	1494	53567	60	61
+L.monocytogenes.1	1471	55105	60	61
+L.monocytogenes.2	1471	56620	60	61
+L.monocytogenes.3	1471	58135	60	61
+L.monocytogenes.5	1471	59650	60	61
+N.meningitidis.1	1462	61164	60	61
+P.acnes.1	1446	62662	60	61
+P.aeruginosa.1	1457	64149	60	61
+P.aeruginosa.2	1457	65647	60	61
+R.sphaeroides.1	1386	67146	60	61
+R.sphaeroides.3	1388	68573	60	61
+S.aureus.1	1473	69997	60	61
+S.aureus.4	1473	71507	60	61
+S.aureus.5	1473	73017	60	61
+S.epidermidis.1	1472	74532	60	61
+S.epidermidis.2	1472	76046	60	61
+S.epidermidis.3	1472	77560	60	61
+S.epidermidis.4	1472	79074	60	61
+S.epidermidis.5	1472	80588	60	61
+S.agalactiae.1	1470	82101	60	61
+S.mutans.1	1478	83608	60	61
+S.mutans.2	1478	85123	60	61
+S.pneumoniae.1	1467	86642	60	61
diff --git a/pbcore/data/datasets/pbalchemysim0.reference.xml b/pbcore/data/datasets/pbalchemysim0.reference.xml
new file mode 100644
index 0000000..ab6e126
--- /dev/null
+++ b/pbcore/data/datasets/pbalchemysim0.reference.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<ReferenceSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" CreatedAt="2015-07-09T17:04:24" MetaType="PacBio.DataSet.ReferenceSet" Name="" Tags="" UniqueId="6294e841-d71c-5d45-2bc9-4dafef1a9116" Version="2.3.0" xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd"><ExternalResources><ExternalResource MetaType="PacBio.ReferenceFile.ReferenceFastaFile" ResourceId="pbalchemysim0.reference.fasta"><FileIndices> [...]
\ No newline at end of file
diff --git a/pbcore/data/datasets/pbalchemysim0.subread.xml b/pbcore/data/datasets/pbalchemysim0.subread.xml
new file mode 100644
index 0000000..803644c
--- /dev/null
+++ b/pbcore/data/datasets/pbalchemysim0.subread.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<SubreadSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" CreatedAt="2015-07-09T17:04:25" MetaType="PacBio.DataSet.SubreadSet" Name="" Tags="" UniqueId="a3c23749-a427-3072-bc56-5e2409e287b4" Version="2.3.0" xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd"><ExternalResources><ExternalResource MetaType="PacBio.SubreadFile.SubreadBamFile" ResourceId="pbalchemysim0.subreads.bam"><FileIndices /></ExternalR [...]
\ No newline at end of file
diff --git a/pbcore/data/datasets/pbalchemysim0.subreads.bam b/pbcore/data/datasets/pbalchemysim0.subreads.bam
new file mode 100644
index 0000000..f209211
Binary files /dev/null and b/pbcore/data/datasets/pbalchemysim0.subreads.bam differ
diff --git a/pbcore/data/datasets/pbalchemysim1.bas.h5 b/pbcore/data/datasets/pbalchemysim1.bas.h5
new file mode 100644
index 0000000..facf99f
Binary files /dev/null and b/pbcore/data/datasets/pbalchemysim1.bas.h5 differ
diff --git a/pbcore/data/datasets/pbalchemysim1.pbalign.bam b/pbcore/data/datasets/pbalchemysim1.pbalign.bam
new file mode 100644
index 0000000..e0ee9d2
Binary files /dev/null and b/pbcore/data/datasets/pbalchemysim1.pbalign.bam differ
diff --git a/pbcore/data/datasets/pbalchemysim1.pbalign.bam.bai b/pbcore/data/datasets/pbalchemysim1.pbalign.bam.bai
new file mode 100644
index 0000000..5ec3c7c
Binary files /dev/null and b/pbcore/data/datasets/pbalchemysim1.pbalign.bam.bai differ
diff --git a/pbcore/data/datasets/pbalchemysim1.pbalign.bam.pbi b/pbcore/data/datasets/pbalchemysim1.pbalign.bam.pbi
new file mode 100644
index 0000000..cf39b47
Binary files /dev/null and b/pbcore/data/datasets/pbalchemysim1.pbalign.bam.pbi differ
diff --git a/pbcore/data/datasets/pbalchemysim1.pbalign.xml b/pbcore/data/datasets/pbalchemysim1.pbalign.xml
new file mode 100644
index 0000000..b2091b1
--- /dev/null
+++ b/pbcore/data/datasets/pbalchemysim1.pbalign.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<AlignmentSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" CreatedAt="2015-07-09T17:04:35" MetaType="PacBio.DataSet.AlignmentSet" Name="" Tags="" UniqueId="768de2d3-3c72-4868-006d-56c38569b0f5" Version="2.3.0" xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd"><ExternalResources><ExternalResource MetaType="PacBio.SubreadFile.SubreadBamFile" ResourceId="pbalchemysim1.pbalign.bam"><FileIndices><FileIndex [...]
\ No newline at end of file
diff --git a/pbcore/data/datasets/pbalchemysim1.subread.xml b/pbcore/data/datasets/pbalchemysim1.subread.xml
new file mode 100644
index 0000000..2e4a21c
--- /dev/null
+++ b/pbcore/data/datasets/pbalchemysim1.subread.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<SubreadSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" CreatedAt="2015-07-09T17:04:30" MetaType="PacBio.DataSet.SubreadSet" Name="" Tags="" UniqueId="cdbacc75-70cc-bd40-f2cb-ce984e7fd4a3" Version="2.3.0" xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd"><ExternalResources><ExternalResource MetaType="PacBio.SubreadFile.SubreadBamFile" ResourceId="pbalchemysim1.subreads.bam"><FileIndices /></ExternalR [...]
\ No newline at end of file
diff --git a/pbcore/data/datasets/pbalchemysim1.subreads.bam b/pbcore/data/datasets/pbalchemysim1.subreads.bam
new file mode 100644
index 0000000..627f5f5
Binary files /dev/null and b/pbcore/data/datasets/pbalchemysim1.subreads.bam differ
diff --git a/pbcore/data/datasets/reference.dataset.xml b/pbcore/data/datasets/reference.dataset.xml
new file mode 100644
index 0000000..02ea01d
--- /dev/null
+++ b/pbcore/data/datasets/reference.dataset.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ReferenceSet xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" MetaType="PacBio.DataSet.ReferenceSet" Name="DataSet_ReferenceSet" Tags="barcode moreTags mapping mytags" UniqueId="b095d0a3-94b8-4918-b3af-a3f81bbe519c" Version="2.3.0" CreatedAt="2015-01-27T09:00:01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd">
+	<ExternalResources>
+		<ExternalResource Name="First References FASTA" Description="Points to an example references FASTA file." MetaType="PacBio.ReferenceFile.ReferenceFastaFile" ResourceId="file:///mnt/path/to/reference.fasta" Tags="Example">
+			<FileIndices>
+				<FileIndex MetaType="PacBio.Index.SaWriterIndex" ResourceId="file:///mnt/path/to/reference.fasta.sa"/>
+				<FileIndex MetaType="PacBio.Index.SamIndex" ResourceId="file:///mnt/path/to/reference.fasta.fai"/>
+			</FileIndices>
+		</ExternalResource>
+	</ExternalResources>
+	<DataSetMetadata>
+		<TotalLength>5000000</TotalLength>
+		<NumRecords>500</NumRecords>
+		<Organism>Tribble</Organism>
+		<Ploidy>Diploid</Ploidy>
+		<Contigs>
+			<Contig Name="gi|229359445|emb|AM181176.4|" Description="Pseudomonas fluorescens SBW25 complete genome|quiver" Length="6722109" Digest="f627c795efad7ce0050ed42b942d408e"/>
+		</Contigs>
+	</DataSetMetadata>
+</ReferenceSet>
diff --git a/pbcore/data/datasets/subread.dataset.xml b/pbcore/data/datasets/subread.dataset.xml
new file mode 100644
index 0000000..98a6ae0
--- /dev/null
+++ b/pbcore/data/datasets/subread.dataset.xml
@@ -0,0 +1,472 @@
+<?xml version="1.0" encoding="utf-8"?>
+<SubreadSet xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" MetaType="PacBio.DataSet.SubreadSet" Name="DataSet_SubreadSet" Tags="barcode moreTags mapping mytags" UniqueId="b095d0a3-94b8-4918-b3af-a3f81bbe519c" Version="2.3.0" CreatedAt="2015-01-27T09:00:01" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd">
+<ExternalResources>
+    <ExternalResource Name="First Subreads BAM" Description="Points to an example Subreads BAM file." MetaType="PacBio.SubreadFile.SubreadBamFile" ResourceId="file:///mnt/path/to/subreads0.bam" Tags="Example">
+        <FileIndices>
+            <FileIndex MetaType="PacBio.Index.PacBioIndex" ResourceId="file:///mnt/path/to/subreads0.pbi"/>
+        </FileIndices>
+        <ExternalResources>
+            <ExternalResource Name="First scraps BAM" Description="Points to an example scraps BAM file." MetaType="PacBio.SubreadFile.ScrapsBamFile" ResourceId="file:///mnt/path/to/scraps0.bam" Tags="Example">
+                <FileIndices>
+                    <FileIndex MetaType="PacBio.Index.PacBioIndex" ResourceId="file:///mnt/path/to/scraps0.pbi"/>
+                 </FileIndices>
+            </ExternalResource>
+        </ExternalResources>
+    </ExternalResource>
+    <ExternalResource Name="Second Subreads BAM" Description="Points to another example Subreads BAM file." MetaType="PacBio.SubreadFile.SubreadBamFile" ResourceId="file:///mnt/path/to/subreads1.bam" Tags="Example">
+        <FileIndices>
+            <FileIndex MetaType="PacBio.Index.PacBioIndex" ResourceId="file:///mnt/path/to/subreads0.pbi"/>
+        </FileIndices>
+        <ExternalResources>
+            <ExternalResource Name="Second scraps BAM" Description="Points to another example scraps BAM file." MetaType="PacBio.SubreadFile.ScrapsBamFile" ResourceId="file:///mnt/path/to/scraps1.bam" Tags="Example">
+                <FileIndices>
+                    <FileIndex MetaType="PacBio.Index.PacBioIndex" ResourceId="file:///mnt/path/to/scraps1.pbi"/>
+                 </FileIndices>
+            </ExternalResource>
+        </ExternalResources>
+    </ExternalResource>
+</ExternalResources>
+<Filters>
+    <Filter>
+        <Properties>
+            <Property Name="rq" Value="0.75" Operator=">"/>
+        </Properties>
+    </Filter>
+    <Filter>
+        <Properties>
+            <Property Name="QNAME" Value="100/0/0_100" Operator="=="/>
+        </Properties>
+    </Filter>
+</Filters>
+<DataSetMetadata>
+    <TotalLength>500000</TotalLength>
+    <NumRecords>500</NumRecords>
+    <Collections>
+        <CollectionMetadata Context="m152720_092723_00114_c100480560100000001823075906281381_s1_p0" InstrumentName="RS" InstrumentId="43210">
+            <InstCtrlVer>2.3.0.0.140640</InstCtrlVer>
+            <SigProcVer>NRT at 172.31.128.10:8082, SwVer=2300.140640, HwVer=1.0</SigProcVer>
+            <RunDetails>
+                <RunId>e903682f-e502-465c-a2b6-9dd77c9f43fc</RunId>
+                <Name>beta4_130726_biotin_DEV_vs_MFG_PB11K_9458p</Name>
+            </RunDetails>
+            <WellSample Name="Well Sample 1" UniqueId="aaa2df90-d44f-4a48-9f35-3b99473c68f5">
+                <PlateId>2014-12-24_141_NGAT_Igor_bisPNA Enrichment_Mag Bead Elution Buffers</PlateId>
+                <WellName>B01</WellName>
+                <Concentration>10</Concentration>
+                <SampleReuseEnabled>true</SampleReuseEnabled>
+                <StageHotstartEnabled>true</StageHotstartEnabled>
+                <SizeSelectionEnabled>true</SizeSelectionEnabled>
+                <UseCount>0</UseCount>
+                <Comments>Lorem ipsum</Comments>
+                <BioSamplePointers>
+                    <BioSamplePointer>abc2df90-d44f-4a48-9f35-3b99473c68f5</BioSamplePointer>
+                </BioSamplePointers>
+            </WellSample>
+            <Automation>
+                <AutomationParameters>
+                    <AutomationParameter/>
+                </AutomationParameters>
+            </Automation>
+            <CollectionNumber>0</CollectionNumber>
+            <CellIndex>0</CellIndex>
+            <CellPac Barcode="100480560100000001823075906281381"/>
+            <Primary>
+                <AutomationName>BasecallerV1</AutomationName>
+                <ConfigFileName>1-3-0_Standard_C2.xml</ConfigFileName>
+                <SequencingCondition/>
+                <ResultsFolder>Analysis_Results</ResultsFolder>
+                <CollectionPathUri>rsy://mp-rsync/vol56//RS_DATA_STAGING//2014-12-24_141_NGAT_Igor_bisPNA%20Enrichment_Mag%20Bead%20Elution%20Buffers_1094/B01_1</CollectionPathUri>
+                <CopyFiles>
+                    <CollectionFileCopy>Bam</CollectionFileCopy>
+                </CopyFiles>
+            </Primary>
+        </CollectionMetadata>
+    </Collections>
+    <BioSamples>
+        <BioSample UniqueId="abc2df90-d44f-4a48-9f35-3b99473c68f5" Name="consectetur purus" Description="Risus sit amet lectus vehicula vulputate quisque porta accumsan venenatis." CreatedAt="2015-01-20T13:27:23.9271737-08:00"/>
+    </BioSamples>
+    <SummaryStats>
+        <AdapterDimerFraction>0.1</AdapterDimerFraction>
+        <ShortInsertFraction>0.1</ShortInsertFraction>
+        <NumSequencingZmws>0</NumSequencingZmws>
+        <ProdDist>
+            <NumBins>4</NumBins>
+            <BinCounts>
+                <BinCount>1576</BinCount>
+                <BinCount>901</BinCount>
+                <BinCount>399</BinCount>
+                <BinCount>0</BinCount>
+            </BinCounts>
+            <MetricDescription>Productivity</MetricDescription>
+            <BinLabels>
+                <BinLabel>Empty</BinLabel>
+                <BinLabel>Productive</BinLabel>
+                <BinLabel>Other</BinLabel>
+                <BinLabel>NotDefined</BinLabel>
+            </BinLabels>
+        </ProdDist>
+        <ReadTypeDist>
+            <NumBins>9</NumBins>
+            <BinCounts>
+                <BinCount>1474</BinCount>
+                <BinCount>799</BinCount>
+                <BinCount>4</BinCount>
+                <BinCount>181</BinCount>
+                <BinCount>92</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>326</BinCount>
+                <BinCount>0</BinCount>
+            </BinCounts>
+            <MetricDescription>Read Type</MetricDescription>
+            <BinLabels>
+                <BinLabel>Empty</BinLabel>
+                <BinLabel>FullHqRead0</BinLabel>
+                <BinLabel>FullHqRead1</BinLabel>
+                <BinLabel>PartialHqRead0</BinLabel>
+                <BinLabel>PartialHqRead1</BinLabel>
+                <BinLabel>PartialHqRead2</BinLabel>
+                <BinLabel>Multiload</BinLabel>
+                <BinLabel>Indeterminate</BinLabel>
+                <BinLabel>NotDefined</BinLabel>
+            </BinLabels>
+        </ReadTypeDist>
+        <ReadLenDist>
+            <SampleSize>901</SampleSize>
+            <SampleMean>4528.69384765625</SampleMean>
+            <SampleMed>5227</SampleMed>
+            <SampleStd>2322.8055598026981</SampleStd>
+            <Sample95thPct>7367</Sample95thPct>
+            <NumBins>30</NumBins>
+            <BinCounts>
+                <BinCount>0</BinCount>
+                <BinCount>62</BinCount>
+                <BinCount>39</BinCount>
+                <BinCount>36</BinCount>
+                <BinCount>29</BinCount>
+                <BinCount>37</BinCount>
+                <BinCount>19</BinCount>
+                <BinCount>29</BinCount>
+                <BinCount>37</BinCount>
+                <BinCount>32</BinCount>
+                <BinCount>32</BinCount>
+                <BinCount>40</BinCount>
+                <BinCount>45</BinCount>
+                <BinCount>54</BinCount>
+                <BinCount>73</BinCount>
+                <BinCount>77</BinCount>
+                <BinCount>97</BinCount>
+                <BinCount>95</BinCount>
+                <BinCount>49</BinCount>
+                <BinCount>17</BinCount>
+                <BinCount>2</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+            </BinCounts>
+            <BinWidth>418.89999389648438</BinWidth>
+            <MinOutlierValue>77</MinOutlierValue>
+            <MinBinValue>77</MinBinValue>
+            <MaxBinValue>12225.1025390625</MaxBinValue>
+            <MaxOutlierValue>12644</MaxOutlierValue>
+            <MetricDescription>Polymerase Read Length</MetricDescription>
+        </ReadLenDist>
+        <ReadQualDist>
+            <SampleSize>901</SampleSize>
+            <SampleMean>0.82736450433731079</SampleMean>
+            <SampleMed>0.83167940378189087</SampleMed>
+            <SampleStd>0.029663275550147809</SampleStd>
+            <Sample95thPct>0.86801999807357788</Sample95thPct>
+            <NumBins>30</NumBins>
+            <BinCounts>
+                <BinCount>0</BinCount>
+                <BinCount>12</BinCount>
+                <BinCount>8</BinCount>
+                <BinCount>11</BinCount>
+                <BinCount>10</BinCount>
+                <BinCount>17</BinCount>
+                <BinCount>11</BinCount>
+                <BinCount>20</BinCount>
+                <BinCount>24</BinCount>
+                <BinCount>24</BinCount>
+                <BinCount>34</BinCount>
+                <BinCount>25</BinCount>
+                <BinCount>38</BinCount>
+                <BinCount>52</BinCount>
+                <BinCount>33</BinCount>
+                <BinCount>45</BinCount>
+                <BinCount>48</BinCount>
+                <BinCount>57</BinCount>
+                <BinCount>47</BinCount>
+                <BinCount>69</BinCount>
+                <BinCount>65</BinCount>
+                <BinCount>55</BinCount>
+                <BinCount>51</BinCount>
+                <BinCount>57</BinCount>
+                <BinCount>42</BinCount>
+                <BinCount>29</BinCount>
+                <BinCount>12</BinCount>
+                <BinCount>3</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>1</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>1</BinCount>
+            </BinCounts>
+            <BinWidth>0.0049052196554839611</BinWidth>
+            <MinOutlierValue>0.7500004768371582</MinOutlierValue>
+            <MinBinValue>0.7500004768371582</MinBinValue>
+            <MaxBinValue>0.89225196838378906</MaxBinValue>
+            <MaxOutlierValue>0.89715707302093506</MaxOutlierValue>
+            <MetricDescription>Polymerase Read Quality</MetricDescription>
+        </ReadQualDist>
+        <ControlReadLenDist>
+            <SampleSize>901</SampleSize>
+            <SampleMean>4528.69384765625</SampleMean>
+            <SampleMed>5227</SampleMed>
+            <SampleStd>2322.8055598026981</SampleStd>
+            <Sample95thPct>7367</Sample95thPct>
+            <NumBins>30</NumBins>
+            <BinCounts>
+                <BinCount>0</BinCount>
+                <BinCount>62</BinCount>
+                <BinCount>39</BinCount>
+                <BinCount>36</BinCount>
+                <BinCount>29</BinCount>
+                <BinCount>37</BinCount>
+                <BinCount>19</BinCount>
+                <BinCount>29</BinCount>
+                <BinCount>37</BinCount>
+                <BinCount>32</BinCount>
+                <BinCount>32</BinCount>
+                <BinCount>40</BinCount>
+                <BinCount>45</BinCount>
+                <BinCount>54</BinCount>
+                <BinCount>73</BinCount>
+                <BinCount>77</BinCount>
+                <BinCount>97</BinCount>
+                <BinCount>95</BinCount>
+                <BinCount>49</BinCount>
+                <BinCount>17</BinCount>
+                <BinCount>2</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+            </BinCounts>
+            <BinWidth>418.89999389648438</BinWidth>
+            <MinOutlierValue>77</MinOutlierValue>
+            <MinBinValue>77</MinBinValue>
+            <MaxBinValue>12225.1025390625</MaxBinValue>
+            <MaxOutlierValue>12644</MaxOutlierValue>
+            <MetricDescription>Polymerase Read Length</MetricDescription>
+        </ControlReadLenDist>
+        <ControlReadQualDist>
+            <SampleSize>901</SampleSize>
+            <SampleMean>0.82736450433731079</SampleMean>
+            <SampleMed>0.83167940378189087</SampleMed>
+            <SampleStd>0.029663275550147809</SampleStd>
+            <Sample95thPct>0.86801999807357788</Sample95thPct>
+            <NumBins>30</NumBins>
+            <BinCounts>
+                <BinCount>0</BinCount>
+                <BinCount>12</BinCount>
+                <BinCount>8</BinCount>
+                <BinCount>11</BinCount>
+                <BinCount>10</BinCount>
+                <BinCount>17</BinCount>
+                <BinCount>11</BinCount>
+                <BinCount>20</BinCount>
+                <BinCount>24</BinCount>
+                <BinCount>24</BinCount>
+                <BinCount>34</BinCount>
+                <BinCount>25</BinCount>
+                <BinCount>38</BinCount>
+                <BinCount>52</BinCount>
+                <BinCount>33</BinCount>
+                <BinCount>45</BinCount>
+                <BinCount>48</BinCount>
+                <BinCount>57</BinCount>
+                <BinCount>47</BinCount>
+                <BinCount>69</BinCount>
+                <BinCount>65</BinCount>
+                <BinCount>55</BinCount>
+                <BinCount>51</BinCount>
+                <BinCount>57</BinCount>
+                <BinCount>42</BinCount>
+                <BinCount>29</BinCount>
+                <BinCount>12</BinCount>
+                <BinCount>3</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>1</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>1</BinCount>
+            </BinCounts>
+            <BinWidth>0.0049052196554839611</BinWidth>
+            <MinOutlierValue>0.7500004768371582</MinOutlierValue>
+            <MinBinValue>0.7500004768371582</MinBinValue>
+            <MaxBinValue>0.89225196838378906</MaxBinValue>
+            <MaxOutlierValue>0.89715707302093506</MaxOutlierValue>
+            <MetricDescription>Polymerase Read Quality</MetricDescription>
+        </ControlReadQualDist>
+        <MedianInsertDist>
+            <SampleSize>973</SampleSize>
+            <SampleMean>513.21990966796875</SampleMean>
+            <SampleMed>350</SampleMed>
+            <SampleStd>575.83020626506971</SampleStd>
+            <Sample95thPct>1322</Sample95thPct>
+            <NumBins>30</NumBins>
+            <BinCounts>
+                <BinCount>0</BinCount>
+                <BinCount>714</BinCount>
+                <BinCount>101</BinCount>
+                <BinCount>32</BinCount>
+                <BinCount>18</BinCount>
+                <BinCount>13</BinCount>
+                <BinCount>8</BinCount>
+                <BinCount>5</BinCount>
+                <BinCount>6</BinCount>
+                <BinCount>7</BinCount>
+                <BinCount>10</BinCount>
+                <BinCount>10</BinCount>
+                <BinCount>1</BinCount>
+                <BinCount>2</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>4</BinCount>
+                <BinCount>6</BinCount>
+                <BinCount>3</BinCount>
+                <BinCount>1</BinCount>
+                <BinCount>7</BinCount>
+                <BinCount>1</BinCount>
+                <BinCount>3</BinCount>
+                <BinCount>4</BinCount>
+                <BinCount>1</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>3</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>1</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>2</BinCount>
+                <BinCount>1</BinCount>
+                <BinCount>9</BinCount>
+            </BinCounts>
+            <BinWidth>93.333335876464844</BinWidth>
+            <MinOutlierValue>289</MinOutlierValue>
+            <MinBinValue>289</MinBinValue>
+            <MaxBinValue>2995.666259765625</MaxBinValue>
+            <MaxOutlierValue>6278</MaxOutlierValue>
+            <MetricDescription>Median Insert</MetricDescription>
+        </MedianInsertDist>
+        <InsertReadLenDist>
+            <SampleSize>901</SampleSize>
+            <SampleMean>4528.69384765625</SampleMean>
+            <SampleMed>5227</SampleMed>
+            <SampleStd>2322.8055598026981</SampleStd>
+            <Sample95thPct>7367</Sample95thPct>
+            <NumBins>30</NumBins>
+            <BinCounts>
+                <BinCount>0</BinCount>
+                <BinCount>62</BinCount>
+                <BinCount>39</BinCount>
+                <BinCount>36</BinCount>
+                <BinCount>29</BinCount>
+                <BinCount>37</BinCount>
+                <BinCount>19</BinCount>
+                <BinCount>29</BinCount>
+                <BinCount>37</BinCount>
+                <BinCount>32</BinCount>
+                <BinCount>32</BinCount>
+                <BinCount>40</BinCount>
+                <BinCount>45</BinCount>
+                <BinCount>54</BinCount>
+                <BinCount>73</BinCount>
+                <BinCount>77</BinCount>
+                <BinCount>97</BinCount>
+                <BinCount>95</BinCount>
+                <BinCount>49</BinCount>
+                <BinCount>17</BinCount>
+                <BinCount>2</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>0</BinCount>
+            </BinCounts>
+            <BinWidth>418.89999389648438</BinWidth>
+            <MinOutlierValue>77</MinOutlierValue>
+            <MinBinValue>77</MinBinValue>
+            <MaxBinValue>12225.1025390625</MaxBinValue>
+            <MaxOutlierValue>12644</MaxOutlierValue>
+            <MetricDescription>Polymerase Read Length</MetricDescription>
+        </InsertReadLenDist>
+        <InsertReadQualDist>
+            <SampleSize>901</SampleSize>
+            <SampleMean>0.82736450433731079</SampleMean>
+            <SampleMed>0.83167940378189087</SampleMed>
+            <SampleStd>0.029663275550147809</SampleStd>
+            <Sample95thPct>0.86801999807357788</Sample95thPct>
+            <NumBins>30</NumBins>
+            <BinCounts>
+                <BinCount>0</BinCount>
+                <BinCount>12</BinCount>
+                <BinCount>8</BinCount>
+                <BinCount>11</BinCount>
+                <BinCount>10</BinCount>
+                <BinCount>17</BinCount>
+                <BinCount>11</BinCount>
+                <BinCount>20</BinCount>
+                <BinCount>24</BinCount>
+                <BinCount>24</BinCount>
+                <BinCount>34</BinCount>
+                <BinCount>25</BinCount>
+                <BinCount>38</BinCount>
+                <BinCount>52</BinCount>
+                <BinCount>33</BinCount>
+                <BinCount>45</BinCount>
+                <BinCount>48</BinCount>
+                <BinCount>57</BinCount>
+                <BinCount>47</BinCount>
+                <BinCount>69</BinCount>
+                <BinCount>65</BinCount>
+                <BinCount>55</BinCount>
+                <BinCount>51</BinCount>
+                <BinCount>57</BinCount>
+                <BinCount>42</BinCount>
+                <BinCount>29</BinCount>
+                <BinCount>12</BinCount>
+                <BinCount>3</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>1</BinCount>
+                <BinCount>0</BinCount>
+                <BinCount>1</BinCount>
+            </BinCounts>
+            <BinWidth>0.0049052196554839611</BinWidth>
+            <MinOutlierValue>0.7500004768371582</MinOutlierValue>
+            <MinBinValue>0.7500004768371582</MinBinValue>
+            <MaxBinValue>0.89225196838378906</MaxBinValue>
+            <MaxOutlierValue>0.89715707302093506</MaxOutlierValue>
+            <MetricDescription>Polymerase Read Quality</MetricDescription>
+        </InsertReadQualDist>
+    </SummaryStats>
+</DataSetMetadata>
+</SubreadSet>
diff --git a/pbcore/data/datasets/subreadSetWithStats.xml b/pbcore/data/datasets/subreadSetWithStats.xml
new file mode 100644
index 0000000..b550a72
--- /dev/null
+++ b/pbcore/data/datasets/subreadSetWithStats.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<SubreadSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" CreatedAt="2015-01-27T09:00:01" MetaType="PacBio.DataSet.SubreadSet" Name="DataSet_SubreadSet" Tags="barcode moreTags mapping mytags" UniqueId="7fd49e97-512d-7e1d-9bde-b3889b5295f5" Version="2.3.0" xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd" xsi:schemaLocation="http://pacificbiosciences.com/PacBioDataModel.xsd"><ExternalResources><ExternalResource Description="Points to an example Subreads BAM file." MetaType [...]
diff --git a/pbcore/data/datasets/transformed_rs_subread.dataset.xml b/pbcore/data/datasets/transformed_rs_subread.dataset.xml
new file mode 100644
index 0000000..668817a
--- /dev/null
+++ b/pbcore/data/datasets/transformed_rs_subread.dataset.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<HdfSubreadSet xmlns:uuid="java:java.util.UUID" xmlns:bax="http://whatever"
+               xmlns="http://pacificbiosciences.com/PacBioDataModel.xsd"
+               xmlns:xs="http://www.w3.org/2001/XMLSchema"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xmlns:fn="http://www.w3.org/2005/xpath-functions"
+               Name="Subreads from run&#xA;                r000004_42268_150307"
+               MetaType="PacBio.DataSet.SubreadSet"
+               Tags="pacbio.secondary.instrument=RS"
+               Version="0.5"
+               UniqueId="a8c1f8c5-a0ca-4a90-95c7-bc291c389e09">
+   <ExternalResources>
+      <ExternalResource MetaType="PacBio.SubreadFile.BaxFile"
+                        ResourceId="file:///C:/Users/aklammer/aklammer_laptop_2015/aklammer_laptop_2015/depot/software/smrtanalysis/bioinformatics/doc/FileFormats/examples/datasets/Analysis_Results/rs.1.bax.h5"/>
+      <ExternalResource MetaType="PacBio.SubreadFile.BaxFile"
+                        ResourceId="file:///C:/Users/aklammer/aklammer_laptop_2015/aklammer_laptop_2015/depot/software/smrtanalysis/bioinformatics/doc/FileFormats/examples/datasets/Analysis_Results/rs.2.bax.h5"/>
+      <ExternalResource MetaType="PacBio.SubreadFile.BaxFile"
+                        ResourceId="file:///C:/Users/aklammer/aklammer_laptop_2015/aklammer_laptop_2015/depot/software/smrtanalysis/bioinformatics/doc/FileFormats/examples/datasets/Analysis_Results/rs.3.bax.h5"/>
+   </ExternalResources>
+   <DataSetMetadata>
+      <TotalLength>50000000</TotalLength>
+      <NumRecords>150000</NumRecords>
+      <Collections>
+         <CollectionMetadata Context="rs" InstrumentName="42268" InstrumentId="1">
+            <InstCtrlVer>2.3.0.1.142990</InstCtrlVer>
+            <SigProcVer>NRT at 172.31.128.10:8082, SwVer=2301.142990, HwVer=1.0</SigProcVer>
+            <RunDetails>
+               <RunId>r000004_42268_150307</RunId>
+               <Name>Inst42268-030715-2kb-P4-0.05nM-6Chips-FAT2_3</Name>
+            </RunDetails>
+            <WellSample Name="Inst42268-030715-2kb-P4-0.05nM-2Chips-FAT3">
+               <PlateId>Inst42268-030715-2kb-P4-0.05nM-6Chips-FAT2_3</PlateId>
+               <WellName>Inst42268-030715-2kb-P4-0.05nM-2Chips-FAT3</WellName>
+               <Concentration>0</Concentration>
+               <SampleReuseEnabled>false</SampleReuseEnabled>
+               <StageHotstartEnabled>true</StageHotstartEnabled>
+               <SizeSelectionEnabled>
+                                false
+                            </SizeSelectionEnabled>
+               <UseCount>1</UseCount>
+               <Comments>Inst42268-030715-2kb-P4-0.05nM-2Chips-FAT3</Comments>
+               <BioSamplePointers>
+                  <BioSamplePointer>ad236d1c-2dd2-444e-9001-bba691cedad8</BioSamplePointer>
+               </BioSamplePointers>
+            </WellSample>
+            <Automation>
+               <AutomationParameters>
+                  <AutomationParameter/>
+               </AutomationParameters>
+            </Automation>
+            <CollectionNumber>6</CollectionNumber>
+            <CellIndex>1</CellIndex>
+            <CellPac Barcode="10078306255000000182317020825155"/>
+            <Primary>
+               <AutomationName>BasecallerV1</AutomationName>
+               <ConfigFileName>2-0-0_P4-C2.xml</ConfigFileName>
+               <SequencingCondition/>
+               <ResultsFolder>Analysis_Results</ResultsFolder>
+               <CollectionPathUri>rsy://mp-rsync/vol55//RS_DATA_STAGING/42268/Inst42268-030715-2kb-P4-0.05nM-6Chips-FAT2_3_4/B01_2/</CollectionPathUri>
+               <CopyFiles>
+                  <CollectionFileCopy>Fasta</CollectionFileCopy>
+               </CopyFiles>
+            </Primary>
+         </CollectionMetadata>
+      </Collections>
+      <BioSamples>
+         <BioSample Name="Inst42268-030715-2kb-P4-0.05nM-2Chips-FAT3"
+                    Description="Inst42268-030715-2kb-P4-0.05nM-2Chips-FAT3"
+                    UniqueId="ad236d1c-2dd2-444e-9001-bba691cedad8"/>
+      </BioSamples>
+   </DataSetMetadata>
+</HdfSubreadSet>
\ No newline at end of file
diff --git a/pbcore/data/m130727_114215_42211_c100569412550000001823090301191423_s1_p0.ccs.bam b/pbcore/data/m130727_114215_42211_c100569412550000001823090301191423_s1_p0.ccs.bam
new file mode 100644
index 0000000..d927eac
Binary files /dev/null and b/pbcore/data/m130727_114215_42211_c100569412550000001823090301191423_s1_p0.ccs.bam differ
diff --git a/pbcore/data/m130727_114215_42211_c100569412550000001823090301191423_s1_p0.ccs.bam.bai b/pbcore/data/m130727_114215_42211_c100569412550000001823090301191423_s1_p0.ccs.bam.bai
new file mode 100644
index 0000000..bdc83f9
Binary files /dev/null and b/pbcore/data/m130727_114215_42211_c100569412550000001823090301191423_s1_p0.ccs.bam.bai differ
diff --git a/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.aligned_subreads.bam b/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.aligned_subreads.bam
new file mode 100644
index 0000000..789865a
Binary files /dev/null and b/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.aligned_subreads.bam differ
diff --git a/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.aligned_subreads.bam.bai b/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.aligned_subreads.bam.bai
new file mode 100644
index 0000000..dea076b
Binary files /dev/null and b/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.aligned_subreads.bam.bai differ
diff --git a/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.aligned_subreads.bam.pbi b/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.aligned_subreads.bam.pbi
new file mode 100644
index 0000000..4a8ff48
Binary files /dev/null and b/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.aligned_subreads.bam.pbi differ
diff --git a/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.aligned_subreads.cmp.h5 b/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.aligned_subreads.cmp.h5
new file mode 100644
index 0000000..896b17b
Binary files /dev/null and b/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.aligned_subreads.cmp.h5 differ
diff --git a/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.subreads.bam b/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.subreads.bam
index 9697285..3514891 100644
Binary files a/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.subreads.bam and b/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.subreads.bam differ
diff --git a/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.subreads.bam.bai b/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.subreads.bam.bai
new file mode 100644
index 0000000..79a6a43
Binary files /dev/null and b/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.subreads.bam.bai differ
diff --git a/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.subreads.bam.pbi b/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.subreads.bam.pbi
new file mode 100644
index 0000000..0cb1c4b
Binary files /dev/null and b/pbcore/data/m140905_042212_sidney_c100564852550000001823085912221377_s1_X0.subreads.bam.pbi differ
diff --git a/pbcore/io/FastaIO.py b/pbcore/io/FastaIO.py
index 64f1af4..8afda41 100644
--- a/pbcore/io/FastaIO.py
+++ b/pbcore/io/FastaIO.py
@@ -46,7 +46,7 @@ from ._utils import splitFileContents
 from pbcore import sequence
 from pbcore.util.decorators import deprecated
 
-import md5, mmap, numpy as np, re
+import mmap, numpy as np, re
 from collections import namedtuple, OrderedDict, Sequence
 from os.path import abspath, expanduser, isfile
 
@@ -77,7 +77,6 @@ class FastaRecord(object):
             assert self.DELIMITER not in sequence
             self._header = header
             self._sequence = sequence
-            self._md5 = md5.md5(self.sequence).hexdigest()
             self._id, self._comment = splitFastaHeader(header)
         except AssertionError:
             raise ValueError("Invalid FASTA record data")
@@ -135,13 +134,6 @@ class FastaRecord(object):
         """
         return len(self._sequence)
 
-    @property
-    def md5(self):
-        """
-        The MD5 checksum (hex digest) of `sequence`
-        """
-        return self._md5
-
     @classmethod
     def fromString(cls, s):
         """
@@ -209,11 +201,11 @@ class FastaReader(ReaderBase):
         >>> filename = data.getTinyFasta()
         >>> r = FastaReader(filename)
         >>> for record in r:
-        ...     print record.header, len(record.sequence), record.md5
-        ref000001|EGFR_Exon_2 183 e3912e9ceacd6538ede8c1b2adda7423
-        ref000002|EGFR_Exon_3 203 4bf218da37175a91869033024ac8f9e9
-        ref000003|EGFR_Exon_4 215 245bc7a046aad0788c22b071ed210f4d
-        ref000004|EGFR_Exon_5 157 c368b8191164a9d6ab76fd328e2803ca
+        ...     print record.header, len(record.sequence)
+        ref000001|EGFR_Exon_2 183
+        ref000002|EGFR_Exon_3 203
+        ref000003|EGFR_Exon_4 215
+        ref000004|EGFR_Exon_5 157
         >>> r.close()
 
     """
diff --git a/pbcore/io/__init__.py b/pbcore/io/__init__.py
index 89a588f..0276efc 100644
--- a/pbcore/io/__init__.py
+++ b/pbcore/io/__init__.py
@@ -37,4 +37,6 @@ from .base    import *
 
 from .align   import *
 
+from .dataset import *
+
 from .opener  import *
diff --git a/pbcore/io/align/BamAlignment.py b/pbcore/io/align/BamAlignment.py
index f192ceb..19b33a2 100644
--- a/pbcore/io/align/BamAlignment.py
+++ b/pbcore/io/align/BamAlignment.py
@@ -37,8 +37,9 @@ from pbcore.sequence import reverseComplement
 from ._BamSupport import *
 from ._AlignmentMixin import AlignmentRecordMixin
 
-__all__ = [ "BamAlignment" ]
+import os
 
+__all__ = [ "BamAlignment" ]
 
 def _unrollCigar(cigar, exciseSoftClips=False):
     """
@@ -107,13 +108,17 @@ class BamAlignment(AlignmentRecordMixin):
         else:
             clipLeft  = self.peer.qstart
             clipRight = self.peer.rlen - self.peer.qend
-        self.aStart = self.qStart + clipLeft
-        self.aEnd   = self.qEnd   - clipRight
-
+        # handle virtual qStart/qEnd for CCS READTYPE
+        if self.isCCS:
+            qs, qe = 0, self.qLen
+        else:
+            qs, qe = self.qStart, self.qEnd
+        # alignment start/end (aStart/aEnd)
+        self.aStart = qs + clipLeft
+        self.aEnd   = qe - clipRight
         # Cache of unrolled cigar, in genomic orientation
         self._unrolledCigar = None
 
-
     @property
     def reader(self):
         return self.bam
@@ -128,10 +133,14 @@ class BamAlignment(AlignmentRecordMixin):
 
     @property
     def qStart(self):
+        if self.isCCS:
+            raise UnavailableFeature("No qStart for CCS READTYPE")
         return self.peer.opt("qs")
 
     @property
     def qEnd(self):
+        if self.isCCS:
+            raise UnavailableFeature("No qEnd for CCS READTYPE")
         return self.peer.opt("qe")
 
     @property
@@ -143,6 +152,10 @@ class BamAlignment(AlignmentRecordMixin):
         return self.peer.tid
 
     @property
+    def isCCS(self):
+        return self.readType == "CCS"
+
+    @property
     def isMapped(self):
         return not self.isUnmapped
 
@@ -197,7 +210,7 @@ class BamAlignment(AlignmentRecordMixin):
         tStart = refStart
         tEnd   = refEnd
         cUc = uc[clipStart:clipEnd]
-        readLength = sum(cUc != BAM_CDEL)
+        readLength = np.count_nonzero(cUc != BAM_CDEL)
         if self.isForwardStrand:
             aStart = readPositions[clipStart]
             aEnd = aStart + readLength
@@ -244,19 +257,34 @@ class BamAlignment(AlignmentRecordMixin):
     def queryEnd(self):
         return self.qEnd
 
-
     #TODO: provide this in cmp.h5 but throw "unsupported"
     @property
     def queryName(self):
         return self.peer.qname
 
     @property
-    @requiresPbi
+    @requiresMapping
     def identity(self):
-        if self.readLength == 0:
-            return 0.
+        if self.rowNumber is not None:
+            # Fast (has pbi)
+            if self.readLength == 0:
+                return 0.
+            else:
+                return 1. - float(self.nMM + self.nIns + self.nDel)/self.readLength
         else:
-            return 1. - float(self.nMM + self.nIns + self.nDel)/self.readLength
+            # Slow (no pbi);
+            if self.readLength == 0:
+                return 0.
+            else:
+                x = self.transcript()
+                nMM  = x.count("R")
+                nIns = x.count("I")
+                nDel = x.count("D")
+                return 1. - float(nMM + nIns + nDel)/self.readLength
+
+    @property
+    def mapQV(self):
+        return self.peer.mapq
 
     @property
     def numPasses(self):
@@ -274,32 +302,22 @@ class BamAlignment(AlignmentRecordMixin):
     def barcodeName(self):
         raise Unimplemented()
 
-    @requiresReference
     def transcript(self, orientation="native", style="gusfield"):
         """
         A text representation of the alignment moves (see Gusfield).
         This can be useful in pretty-printing an alignment.
         """
         uc = self.unrolledCigar(orientation)
-        ref = np.fromstring(self.reference(aligned=True, orientation=orientation), dtype=np.int8)
-        read = np.fromstring(self.read(aligned=True, orientation=orientation), dtype=np.int8)
-        isMatch = (ref == read)
-
-        # Disambiguate the "M" op
-        cigarPlus = uc
-        cigarPlus[(~isMatch) & (cigarPlus == BAM_CMATCH)] = BAM_CDIFF   # 'X'
-        cigarPlus[( isMatch) & (cigarPlus == BAM_CMATCH)] = BAM_CEQUAL  # '='
-
         #                                    MIDNSHP=X
         _exoneratePlusTrans = np.fromstring("Z  ZZZZ|*", dtype=np.int8)
         _exonerateTrans     = np.fromstring("Z  ZZZZ| ", dtype=np.int8)
         _cigarTrans         = np.fromstring("ZIDZZZZMM", dtype=np.int8)
         _gusfieldTrans      = np.fromstring("ZIDZZZZMR", dtype=np.int8)
 
-        if   style == "exonerate+": return _exoneratePlusTrans [cigarPlus].tostring()
-        elif style == "exonerate":  return _exonerateTrans     [cigarPlus].tostring()
-        elif style == "cigar":      return _cigarTrans         [cigarPlus].tostring()
-        else:                       return _gusfieldTrans      [cigarPlus].tostring()
+        if   style == "exonerate+": return _exoneratePlusTrans [uc].tostring()
+        elif style == "exonerate":  return _exonerateTrans     [uc].tostring()
+        elif style == "cigar":      return _cigarTrans         [uc].tostring()
+        else:                       return _gusfieldTrans      [uc].tostring()
 
 
     @requiresReference
@@ -325,6 +343,8 @@ class BamAlignment(AlignmentRecordMixin):
 
         if self._unrolledCigar is None:
             self._unrolledCigar = _unrollCigar(self.peer.cigar, exciseSoftClips=True)
+            if BAM_CMATCH in self._unrolledCigar:
+                raise IncompatibleFile("CIGAR op 'M' illegal in PacBio BAM files")
 
         if (orientation == "native" and self.isReverseStrand):
             return self._unrolledCigar[::-1]
@@ -405,9 +425,15 @@ class BamAlignment(AlignmentRecordMixin):
         if self.isUnmapped and (orientation != "native" or aligned == True):
             raise UnavailableFeature, \
                 "Cannot get genome oriented/aligned features from unmapped BAM record"
+
+        # 0. Get the "concrete" feature name.  (Example: Ipd could be
+        # Ipd:Frames or Ipd:CodecV1)
+        concreteFeatureName = self.bam._featureNameMappings[self.qId][featureName]
+
         # 1. Extract in native orientation
-        tag, kind_, dtype_ = PULSE_FEATURE_TAGS[featureName]
+        tag, kind_, dtype_ = PULSE_FEATURE_TAGS[concreteFeatureName]
         data_ = self.peer.opt(tag)
+
         if isinstance(data_, str):
             data = np.fromstring(data_, dtype=dtype_)
         else:
@@ -421,15 +447,19 @@ class BamAlignment(AlignmentRecordMixin):
         # 2. Decode
         if kind_ == "qv":
             data -= 33
-        elif kind_ == "time":
+        elif kind_ == "codecV1":
             data = codeToFrames(data)
 
         # 3. Clip
         # [s, e) delimits the range, within the query, that is in the aligned read.
         # This will be determined by the soft clips actually in the file as well as those
         # imposed by the clipping API here.
-        s = self.aStart - self.qStart
-        e = self.aEnd   - self.qStart
+        if self.isCCS:
+            s = self.aStart
+            e = self.aEnd
+        else:
+            s = self.aStart - self.qStart
+            e = self.aEnd   - self.qStart
         assert s >= 0 and e <= len(data)
         clipped = data[s:e]
 
@@ -466,7 +496,7 @@ class BamAlignment(AlignmentRecordMixin):
         alnData[~gapMask] = data
         return alnData
 
-    IPD            = _makePulseFeatureAccessor("IPD")
+    IPD            = _makePulseFeatureAccessor("Ipd")
     PulseWidth     = _makePulseFeatureAccessor("PulseWidth")
     #QualityValue   = _makePulseFeatureAccessor("QualityValue")
     InsertionQV    = _makePulseFeatureAccessor("InsertionQV")
@@ -482,8 +512,12 @@ class BamAlignment(AlignmentRecordMixin):
             raise UnavailableFeature, \
                 "Cannot get genome oriented/aligned features from unmapped BAM record"
         data = np.fromstring(self.peer.seq, dtype=np.int8)
-        s = self.aStart - self.qStart
-        e = self.aEnd   - self.qStart
+        if self.isCCS:
+            s = self.aStart
+            e = self.aEnd
+        else:
+            s = self.aStart - self.qStart
+            e = self.aEnd   - self.qStart
         l = self.qLen
         # clip
         assert l == len(data) and s >= 0 and e <= l
@@ -513,7 +547,7 @@ class BamAlignment(AlignmentRecordMixin):
             val += "Read:        " + self.readName           + "\n"
             val += "Reference:   " + self.referenceName      + "\n\n"
             val += "Read length: " + str(self.readLength)    + "\n"
-            #val += "Identity:    " + "%0.3f" % self.identity + "\n"
+            val += "Identity:    " + "%0.3f" % self.identity + "\n"
 
             alignedRead = self.read()
             alignedRef = self.reference()
@@ -552,7 +586,7 @@ class ClippedBamAlignment(BamAlignment):
         assert aln.isMapped
         assert tStart <= tEnd
         assert aStart <= aEnd
-        assert sum(unrolledCigar != BAM_CDEL) == (aEnd - aStart)
+        assert np.count_nonzero(unrolledCigar != BAM_CDEL) == (aEnd - aStart)
 
         # Assigment
         self.peer           = aln.peer
diff --git a/pbcore/io/align/BamIO.py b/pbcore/io/align/BamIO.py
index 01de9ce..107e8c2 100644
--- a/pbcore/io/align/BamIO.py
+++ b/pbcore/io/align/BamIO.py
@@ -98,7 +98,8 @@ class _BamReaderBase(ReaderBase):
     def _loadReadGroupInfo(self):
         rgs = self.peer.header["RG"]
         readGroupTable_ = []
-        pulseFeaturesInAll_ = frozenset(PULSE_FEATURE_TAGS.keys())
+        self._featureNameMappings = {}  # RGID -> ("abstract feature name" -> actual feature name)
+
         for rg in rgs:
             rgID = rgAsInt(rg["ID"])
             rgName = rg["PU"]
@@ -109,23 +110,38 @@ class _BamReaderBase(ReaderBase):
             triple = ds["BINDINGKIT"], ds["SEQUENCINGKIT"], basecallerVersion
             rgChem = decodeTriple(*triple)
             rgReadType = ds["READTYPE"]
-            readGroupTable_.append((rgID, rgName, rgReadType, rgChem))
-            pulseFeaturesInAll_ = pulseFeaturesInAll_.intersection(ds.keys())
+            # TODO(dalexander): need FRAMERATEHZ in RG::DS!
+            #rgFrameRate = ds["FRAMERATEHZ"]
+            rgFrameRate = 75.0
+            readGroupTable_.append((rgID, rgName, rgReadType, rgChem, rgFrameRate))
+
+            # Look for the features manifest entries within the DS tag,
+            # and build an "indirection layer", i.e. to get from
+            # "Ipd"  to "Ipd:Frames"
+            # (This is a bit messy.  Can we separate the manifest from
+            # the rest of the DS content?)
+            featureNameMapping = { key.split(":")[0] : key
+                                   for key in ds.keys()
+                                   if key in PULSE_FEATURE_TAGS }
+            self._featureNameMappings[rgID] = featureNameMapping
 
         self._readGroupTable = np.rec.fromrecords(
             readGroupTable_,
             dtype=[("ID"                 , np.int32),
                    ("MovieName"          , "O"),
                    ("ReadType"           , "O"),
-                   ("SequencingChemistry", "O")])
+                   ("SequencingChemistry", "O"),
+                   ("FrameRate",           float)])
         assert len(set(self._readGroupTable.ID)) == len(self._readGroupTable), \
             "First 8 chars of read group IDs must be unique!"
 
         self._readGroupDict = { rg.ID : rg
                                 for rg in self._readGroupTable }
 
-        self._pulseFeaturesAvailable = pulseFeaturesInAll_
-
+        # The pulse features "available" to clients of this file are the intersection
+        # of pulse features available from each read group.
+        self._pulseFeaturesAvailable = set.intersection(
+            *[set(mapping.keys()) for mapping in self._featureNameMappings.values()])
 
     def _loadProgramInfo(self):
         pgRecords = [ (pg["ID"], pg.get("VN", None), pg.get("CL", None))
@@ -152,13 +168,16 @@ class _BamReaderBase(ReaderBase):
 
     def _checkFileCompatibility(self):
         # Verify that this is a "pacbio" BAM file of version at least
-        # 3.0b3
+        # 3.0b7
         try:
             checkedVersion = self.version
+            if "b" in checkedVersion:
+                version, beta = checkedVersion.split("b")
+                if int(beta) < 7: raise Exception()
         except:
             raise IncompatibleFile(
                 "This BAM file is incompatible with this API " +
-                "(only PacBio BAM files version >= 3.0b3 are supported)")
+                "(only PacBio BAM files version >= 3.0b7 are supported)")
 
     def __init__(self, fname, referenceFastaFname=None):
         self.filename = fname = abspath(expanduser(fname))
@@ -307,13 +326,15 @@ class BamReader(_BamReaderBase, AlignmentReaderMixin):
     def __init__(self, fname, referenceFastaFname=None):
         super(BamReader, self).__init__(fname, referenceFastaFname)
 
+    @property
+    def index(self):
+        return None
+
     def __iter__(self):
         self.peer.reset()
         for a in self.peer:
             yield BamAlignment(self, a)
 
-    # TODO: cmp.h5 readsInRange only accepts int key, not string.
-    # that's just lame, fix it.
     def readsInRange(self, winId, winStart, winEnd, justIndices=False):
         # PYSAM BUG: fetch doesn't work if arg 1 is tid and not rname
         if not isinstance(winId, str):
@@ -336,14 +357,21 @@ class IndexedBamReader(_BamReaderBase, IndexedAlignmentReaderMixin):
     "row number" and to provide access to precomputed semantic
     information about the BAM records
     """
-    def __init__(self, fname, referenceFastaFname=None):
+    def __init__(self, fname, referenceFastaFname=None, sharedIndex=None):
         super(IndexedBamReader, self).__init__(fname, referenceFastaFname)
-        self.pbi = None
-        pbiFname = self.filename + ".pbi"
-        if exists(pbiFname):
-            self.pbi = PacBioBamIndex(pbiFname)
+        if sharedIndex is None:
+            self.pbi = None
+            pbiFname = self.filename + ".pbi"
+            if exists(pbiFname):
+                self.pbi = PacBioBamIndex(pbiFname)
+            else:
+                raise IOError, "IndexedBamReader requires bam.pbi index file"
         else:
-            raise IOError, "IndexedBamReader requires bam.pbi index file"
+            self.pbi = sharedIndex
+
+    @property
+    def index(self):
+        return self.pbi
 
     def atRowNumber(self, rn):
         offset = self.pbi.virtualFileOffset[rn]
@@ -371,22 +399,22 @@ class IndexedBamReader(_BamReaderBase, IndexedAlignmentReaderMixin):
             issubclass(type(rowNumbers), np.integer)):
             return self.atRowNumber(rowNumbers)
         elif isinstance(rowNumbers, slice):
-            return [ self.atRowNumber(r)
-                     for r in xrange(*rowNumbers.indices(len(self)))]
+            return ( self.atRowNumber(r)
+                     for r in xrange(*rowNumbers.indices(len(self))))
         elif isinstance(rowNumbers, list) or isinstance(rowNumbers, np.ndarray):
             if len(rowNumbers) == 0:
                 return []
             else:
                 entryType = type(rowNumbers[0])
                 if entryType == int or issubclass(entryType, np.integer):
-                    return [ self.atRowNumber(r) for r in rowNumbers ]
+                    return ( self.atRowNumber(r) for r in rowNumbers )
                 elif entryType == bool or issubclass(entryType, np.bool_):
-                    return [ self.atRowNumber(r) for r in np.flatnonzero(rowNumbers) ]
+                    return ( self.atRowNumber(r) for r in np.flatnonzero(rowNumbers) )
         raise TypeError, "Invalid type for IndexedBamReader slicing"
 
     def __getattr__(self, key):
         if key in self.pbi.columnNames:
-            return self.pbi[key]
+            return getattr(self.pbi, key)
         else:
             raise AttributeError, "no such column in pbi index"
 
diff --git a/pbcore/io/align/CmpH5IO.py b/pbcore/io/align/CmpH5IO.py
index b94126d..8b3d0cf 100755
--- a/pbcore/io/align/CmpH5IO.py
+++ b/pbcore/io/align/CmpH5IO.py
@@ -696,9 +696,9 @@ class CmpH5Reader(ReaderBase, IndexedAlignmentReaderMixin):
         26103
 
     """
-    def __init__(self, filenameOrH5File, sharedAlignmentIndex=None):
+    def __init__(self, filenameOrH5File, sharedIndex=None):
 
-        # The sharedAlignmentIndex is a copy of the /AlnInfo/AlnIndex dataset
+        # The sharedIndex is a copy of the /AlnInfo/AlnIndex dataset
         # for the file indicated by filenameOrH5File that's already opened and
         # held in memory by another process. When it isn't None, this process
         # doesn't have to keep its own copy of the dataset, which can save
@@ -706,7 +706,7 @@ class CmpH5Reader(ReaderBase, IndexedAlignmentReaderMixin):
         # master process that opens the cmph5 file and schedules slaves that
         # only need a read-only copy of the reader.
 
-        # It is an unchecked runtime error to supply a sharedAlignmentIndex
+        # It is an unchecked runtime error to supply a sharedIndex
         # that is not identical to the AlnIndex in the filenameOrH5File
 
         if isinstance(filenameOrH5File, h5py.File):
@@ -721,7 +721,7 @@ class CmpH5Reader(ReaderBase, IndexedAlignmentReaderMixin):
             except IOError:
                 raise IOError, ("Invalid or nonexistent cmp.h5 file %s" % filenameOrH5File)
 
-        self._loadAlignmentInfo(sharedAlignmentIndex)
+        self._loadAlignmentInfo(sharedIndex)
         self._loadMovieInfo()
         self._loadReferenceInfo()
         self._loadMiscInfo()
@@ -730,11 +730,11 @@ class CmpH5Reader(ReaderBase, IndexedAlignmentReaderMixin):
         self._readGroupTable = None
         self._readGroupDict  = None
 
-    def _loadAlignmentInfo(self, sharedAlignmentIndex=None):
-        # If a sharedAlignmentIndex is not provided, read it from the file. If
+    def _loadAlignmentInfo(self, sharedIndex=None):
+        # If a sharedIndex is not provided, read it from the file. If
         # it is provided, don't read anything from the file or store anything
         # else in memory
-        if sharedAlignmentIndex is None:
+        if sharedIndex is None:
             if len(self.file["/AlnInfo/AlnIndex"]) == 0:
                 raise EmptyCmpH5Error("Empty cmp.h5 file, cannot be read by CmpH5Reader")
             rawAlignmentIndex = self.file["/AlnInfo/AlnIndex"].value
@@ -742,7 +742,7 @@ class CmpH5Reader(ReaderBase, IndexedAlignmentReaderMixin):
                                                      .view(np.recarray)
                                                      .flatten())
         else:
-            self._alignmentIndex = sharedAlignmentIndex
+            self._alignmentIndex = sharedIndex
             self._alignmentIndex.setflags(write=False)
 
         # This is the only sneaky part of this whole class.  We do not
@@ -790,11 +790,13 @@ class CmpH5Reader(ReaderBase, IndexedAlignmentReaderMixin):
             zip(self._movieInfoTable.ID,
                 self._movieInfoTable.Name,
                 [self.readType] * len(self._movieInfoTable.ID),
-                self.sequencingChemistry),
+                self.sequencingChemistry,
+                self._movieInfoTable.FrameRate),
             dtype=[("ID"                 , np.int32),
                    ("MovieName"          , "O"),
                    ("ReadType"           , "O"),
-                   ("SequencingChemistry", "O")])
+                   ("SequencingChemistry", "O"),
+                   ("FrameRate"          , float)])
         self._readGroupDict = { rg.ID : rg
                                 for rg in self._readGroupTable }
 
@@ -893,6 +895,9 @@ class CmpH5Reader(ReaderBase, IndexedAlignmentReaderMixin):
                 raise ChemistryLookupError, "Chemistry information could not be found in cmp.h5!"
         return self._sequencingChemistry
 
+    @property
+    def index(self):
+        return self.alignmentIndex
 
     @property
     def alignmentIndex(self):
diff --git a/pbcore/io/align/PacBioBamIndex.py b/pbcore/io/align/PacBioBamIndex.py
index 12e4750..83e96af 100644
--- a/pbcore/io/align/PacBioBamIndex.py
+++ b/pbcore/io/align/PacBioBamIndex.py
@@ -30,11 +30,25 @@
 
 # Author: David Alexander
 
-import h5py
-import numpy as np
 from os.path import abspath, expanduser
-from functools import wraps
-from collections import namedtuple
+from _bgzf import BgzfReader
+from struct import unpack
+
+import numpy as np
+import numpy.lib.recfunctions as nlr
+
+from ._BamSupport import IncompatibleFile
+
+__all__ = [ "PacBioBamIndex" ]
+
+
+PBI_HEADER_LEN              = 32
+
+PBI_FLAGS_BASIC             = 0
+PBI_FLAGS_MAPPED            = 1
+PBI_FLAGS_COORDINATE_SORTED = 2
+PBI_FLAGS_BARCODE_ADAPTER   = 4
+
 
 class PacBioBamIndex(object):
     """
@@ -42,62 +56,103 @@ class PacBioBamIndex(object):
     *semantic* queries on PacBio BAM files without iterating over the
     entire file.  By convention, the PacBio BAM index has extension
     "bam.pbi".
-
-    The bam.pbi index is an HDF5 file containing two data frames
-    (groups containing arrays (frame columns) of common length):
-
-      - A table with a row per BAM record, columns reflecting
-        precomputed statistics per record
-
-      - A table with a row per reference contig (tid) in the BAM,
-        indicating the range of rows pertaining to the
     """
-    def _loadColumns(self, f):
-        g = f["PacBioBamIndex/Columns"]
-        columnNamesAndColumns = sorted([ (k, v[:]) for (k, v) in g.iteritems() ])
-        columnNames, columns = zip(*columnNamesAndColumns)
-        return np.rec.fromarrays(columns, names=columnNames)
-
-    def _loadVersion(self, f):
-        return f["PacBioBamIndex"].attrs["Version"]
+    def _loadHeader(self, f):
+        buf = f.read(PBI_HEADER_LEN)
+        header = unpack("< 4s BBBx H I 18x", buf)
+        (self.magic, self.vPatch, self.vMinor,
+         self.vMajor, self.pbiFlags, self.nReads) = header
+
+    def _loadMainIndex(self, f):
+
+        def peek(type_, length):
+            flavor, width = type_
+            return np.frombuffer(f.read(length*int(width)), "<" + type_)
+
+        if True:
+            # BASIC data always present
+            qId               = peek("i4", self.nReads)
+            qStart            = peek("i4", self.nReads)
+            qEnd              = peek("i4", self.nReads)
+            holeNumber        = peek("i4", self.nReads)
+            readQual          = peek("u2", self.nReads)
+            virtualFileOffset = peek("i8", self.nReads)
+
+            tbl = np.rec.fromarrays(
+                [qId, qStart, qEnd, holeNumber, readQual, virtualFileOffset],
+                names="qId, qStart, qEnd, holeNumber, readQual, virtualFileOffset")
+
+        if (self.pbiFlags & PBI_FLAGS_MAPPED):
+            tId               = peek("i4", self.nReads)
+            tStart            = peek("u4", self.nReads)
+            tEnd              = peek("u4", self.nReads)
+            aStart            = peek("u4", self.nReads)
+            aEnd              = peek("u4", self.nReads)
+            isReverseStrand   = peek("u1", self.nReads)
+            nM                = peek("u4", self.nReads)
+            nMM               = peek("u4", self.nReads)
+            mapQV             = peek("u1", self.nReads)
+
+            # Computed columns
+            nIns = aEnd - aStart - nM - nMM
+            nDel = tEnd - tStart - nM - nMM
+
+            mapping = np.rec.fromarrays(
+                [tId, tStart, tEnd, aStart, aEnd, isReverseStrand, nM, nMM, nIns, nDel, mapQV],
+                names="tId, tStart, tEnd, aStart, aEnd, isReverseStrand, nM, nMM, nIns, nDel, mapQV")
+
+            tbl = nlr.merge_arrays([tbl, mapping], flatten=True).view(np.recarray)
+
+        if (self.pbiFlags & PBI_FLAGS_BARCODE_ADAPTER):
+            # TODO!
+            pass
+
+        self._tbl = tbl
+        self._checkForBrokenColumns()
 
     def _loadOffsets(self, f):
-        pass
+        if (self.pbiFlags & PBI_FLAGS_COORDINATE_SORTED):
+            # TODO!
+            pass
 
     def __init__(self, pbiFilename):
         pbiFilename = abspath(expanduser(pbiFilename))
-        with h5py.File(pbiFilename, "r") as f:
+        with BgzfReader(pbiFilename) as f:
             try:
-                self._version = self._loadVersion(f)
-                self._columns = self._loadColumns(f)
-                self._offsets = self._loadOffsets(f)
+                self._loadHeader(f)
+                self._loadMainIndex(f)
+                self._loadOffsets(f)
             except Exception as e:
                 raise IOError, "Malformed bam.pbi file: " + str(e)
 
-
     @property
     def version(self):
-        return self._version
+        return (self.vMajor, self.vMinor, self.vPatch)
 
     @property
     def columnNames(self):
-        return list(self._columns.dtype.names)
+        return list(self._tbl.dtype.names)
 
     def __getattr__(self, columnName):
         if columnName in self.columnNames:
-            return self._columns[columnName]
+            return self._tbl[columnName]
         else:
             raise AttributeError, "pbi has no column named '%s'" % columnName
 
     def __getitem__(self, rowNumber):
-        return self._columns[rowNumber]
+        # We do this dance to get a useable recarray slice--to
+        # work around https://github.com/numpy/numpy/issues/3581
+        if not np.isscalar(rowNumber):
+            raise Exception, "Unimplemented!"
+        return np.rec.fromrecords([self._tbl[rowNumber]],
+                                  dtype=self._tbl.dtype)[0]
 
     def __dir__(self):
         # Special magic for IPython tab completion
         return self.columnNames
 
     def __len__(self):
-        return len(self._columns)
+        return len(self._tbl)
 
     def __iter__(self):
         for i in xrange(len(self)):
@@ -119,3 +174,10 @@ class PacBioBamIndex(object):
                             (self.tStart  < winEnd) &
                             (self.tEnd    > winStart))
         return ix
+
+    def _checkForBrokenColumns(self):
+        if np.all( (self.nM  == 0) &
+                   (self.nMM == 0) ):
+            raise IncompatibleFile, \
+                "This bam.pbi file was generated by a version of pbindex with" \
+                " a bug.  Please rerun pbindex."
diff --git a/pbcore/io/align/_BamSupport.py b/pbcore/io/align/_BamSupport.py
index 3175e49..4f8f92a 100644
--- a/pbcore/io/align/_BamSupport.py
+++ b/pbcore/io/align/_BamSupport.py
@@ -38,23 +38,24 @@ class ReferenceMismatch(Exception):  pass
 class IncompatibleFile(Exception):   pass
 
 
-PULSE_FEATURE_TAGS = { "InsertionQV"    : ("iq", "qv",   np.uint8),
-                       "DeletionQV"     : ("dq", "qv",   np.uint8),
-                       "DeletionTag"    : ("dt", "base", np.int8 ),
-                       "SubstitutionQV" : ("sq", "qv",   np.uint8),
-                       "MergeQV"        : ("mq", "qv",   np.uint8),
-                       "IPD"            : ("ip", "time", np.uint8),
-                       "PulseWidth"     : ("pw", "time", np.uint8) }
-
-COMPLEMENT_MAP = { "A" : "T",
-                   "T" : "A",
-                   "C" : "G",
-                   "G" : "C",
-                   "N" : "N",
-                   "-" : "-" }
-
-def complementAscii(a):
-    return np.array([ord(COMPLEMENT_MAP[chr(b)]) for b in a], dtype=np.int8)
+PULSE_FEATURE_TAGS = { "InsertionQV"        : ("iq", "qv",      np.uint8),
+                       "DeletionQV"         : ("dq", "qv",      np.uint8),
+                       "DeletionTag"        : ("dt", "base",    np.int8 ),
+                       "SubstitutionQV"     : ("sq", "qv",      np.uint8),
+                       "MergeQV"            : ("mq", "qv",      np.uint8),
+                       "Ipd:Frames"         : ("ip", "frames",  np.uint16),
+                       "Ipd:CodecV1"        : ("ip", "codecV1", np.uint8),
+                       "PulseWidth:Frames"  : ("pw", "frames",  np.uint16),
+                       "PulseWidth:CodecV1" : ("pw", "codecV1", np.uint8) }
+
+ASCII_COMPLEMENT_MAP = { ord("A") : ord("T"),
+                         ord("T") : ord("A"),
+                         ord("C") : ord("G"),
+                         ord("G") : ord("C"),
+                         ord("N") : ord("N"),
+                         ord("-") : ord("-") }
+
+complementAscii = np.vectorize(ASCII_COMPLEMENT_MAP.get, otypes=[np.int8])
 
 def reverseComplementAscii(a):
     return complementAscii(a)[::-1]
@@ -94,7 +95,7 @@ def _makeFramepoints():
         nextOnes = next + grain * np.arange(0, T)
         next = nextOnes[-1] + grain
         framepoints = framepoints + list(nextOnes)
-    return np.array(framepoints, dtype=int)
+    return np.array(framepoints, dtype=np.uint16)
 
 def _makeLookup(framepoints):
     # (frame -> code) involves some kind of rounding
diff --git a/pbcore/io/align/__init__.py b/pbcore/io/align/__init__.py
index 8cf3971..5a57ffe 100644
--- a/pbcore/io/align/__init__.py
+++ b/pbcore/io/align/__init__.py
@@ -28,7 +28,8 @@
 # POSSIBILITY OF SUCH DAMAGE.
 #################################################################################
 
-from CmpH5IO      import *
-from BamIO        import *
-from BamAlignment import *
-from BlasrIO      import *
+from CmpH5IO        import *
+from BamIO          import *
+from BamAlignment   import *
+from BlasrIO        import *
+from PacBioBamIndex import *
diff --git a/pbcore/io/align/_bgzf.py b/pbcore/io/align/_bgzf.py
new file mode 100644
index 0000000..457fb2d
--- /dev/null
+++ b/pbcore/io/align/_bgzf.py
@@ -0,0 +1,860 @@
+#!/usr/bin/env python
+# Copyright 2010-2013 by Peter Cock.
+# All rights reserved.
+# This code is part of the Biopython distribution and governed by its
+# license.  Please see the LICENSE file that should have been included
+# as part of this package.
+r"""Read and write BGZF compressed files (the GZIP variant used in BAM).
+
+The SAM/BAM file format (Sequence Alignment/Map) comes in a plain text
+format (SAM), and a compressed binary format (BAM). The latter uses a
+modified form of gzip compression called BGZF (Blocked GNU Zip Format),
+which can be applied to any file format to provide compression with
+efficient random access. BGZF is described together with the SAM/BAM
+file format at http://samtools.sourceforge.net/SAM1.pdf
+
+Please read the text below about 'virtual offsets' before using BGZF
+files for random access.
+
+
+Aim of this module
+------------------
+
+The Python gzip library can be used to read BGZF files, since for
+decompression they are just (specialised) gzip files. What this
+module aims to facilitate is random access to BGZF files (using the
+'virtual offset' idea), and writing BGZF files (which means using
+suitably sized gzip blocks and writing the extra 'BC' field in the
+gzip headers). As in the gzip library, the zlib library is used
+internally.
+
+In addition to being required for random access to and writing of
+BAM files, the BGZF format can also be used on other sequential
+data (in the sense of one record after another), such as most of
+the sequence data formats supported in Bio.SeqIO (like FASTA,
+FASTQ, GenBank, etc) or large MAF alignments.
+
+The Bio.SeqIO indexing functions use this module to support BGZF files.
+
+
+Technical Introduction to BGZF
+------------------------------
+
+The gzip file format allows multiple compressed blocks, each of which
+could be a stand alone gzip file. As an interesting bonus, this means
+you can use Unix "cat" to combined to gzip files into one by
+concatenating them. Also, each block can have one of several compression
+levels (including uncompressed, which actually takes up a little bit
+more space due to the gzip header).
+
+What the BAM designers realised was that while random access to data
+stored in traditional gzip files was slow, breaking the file into
+gzip blocks would allow fast random access to each block. To access
+a particular piece of the decompressed data, you just need to know
+which block it starts in (the offset of the gzip block start), and
+how far into the (decompressed) contents of the block you need to
+read.
+
+One problem with this is finding the gzip block sizes efficiently.
+You can do it with a standard gzip file, but it requires every block
+to be decompressed -- and that would be rather slow. Additionally
+typical gzip files may use very large blocks.
+
+All that differs in BGZF is that compressed size of each gzip block
+is limited to 2^16 bytes, and an extra 'BC' field in the gzip header
+records this size. Traditional decompression tools can ignore this,
+and unzip the file just like any other gzip file.
+
+The point of this is you can look at the first BGZF block, find out
+how big it is from this 'BC' header, and thus seek immediately to
+the second block, and so on.
+
+The BAM indexing scheme records read positions using a 64 bit
+'virtual offset', comprising coffset << 16 | uoffset, where coffset
+is the file offset of the BGZF block containing the start of the read
+(unsigned integer using up to 64-16 = 48 bits), and uoffset is the
+offset within the (decompressed) block (unsigned 16 bit integer).
+
+This limits you to BAM files where the last block starts by 2^48
+bytes, or 256 petabytes, and the decompressed size of each block
+is at most 2^16 bytes, or 64kb. Note that this matches the BGZF
+'BC' field size which limits the compressed size of each block to
+2^16 bytes, allowing for BAM files to use BGZF with no gzip
+compression (useful for intermediate files in memory to reduced
+CPU load).
+
+
+Warning about namespaces
+------------------------
+
+It is considered a bad idea to use "from XXX import ``*``" in Python, because
+it pollutes the namespace. This is a real issue with Bio.bgzf (and the
+standard Python library gzip) because they contain a function called open
+i.e. Suppose you do this:
+
+>>> from Bio.bgzf import *
+>>> print(open.__module__)
+Bio.bgzf
+
+Or,
+
+>>> from gzip import *
+>>> print(open.__module__)
+gzip
+
+Notice that the open function has been replaced. You can "fix" this if you
+need to by importing the built-in open function:
+
+>>> try:
+...     from __builtin__ import open # Python 2
+... except ImportError:
+...     from builtins import open # Python 3
+...
+
+However, what we recommend instead is to use the explicit namespace, e.g.
+
+>>> from Bio import bgzf
+>>> print(bgzf.open.__module__)
+Bio.bgzf
+
+
+Example
+-------
+
+This is an ordinary GenBank file compressed using BGZF, so it can
+be decompressed using gzip,
+
+>>> import gzip
+>>> handle = gzip.open("GenBank/NC_000932.gb.bgz", "r")
+>>> assert 0 == handle.tell()
+>>> line = handle.readline()
+>>> assert 80 == handle.tell()
+>>> line = handle.readline()
+>>> assert 143 == handle.tell()
+>>> data = handle.read(70000)
+>>> assert 70143 == handle.tell()
+>>> handle.close()
+
+We can also access the file using the BGZF reader - but pay
+attention to the file offsets which will be explained below:
+
+>>> handle = BgzfReader("GenBank/NC_000932.gb.bgz", "r")
+>>> assert 0 == handle.tell()
+>>> print(handle.readline().rstrip())
+LOCUS       NC_000932             154478 bp    DNA     circular PLN 15-APR-2009
+>>> assert 80 == handle.tell()
+>>> print(handle.readline().rstrip())
+DEFINITION  Arabidopsis thaliana chloroplast, complete genome.
+>>> assert 143 == handle.tell()
+>>> data = handle.read(70000)
+>>> assert 987828735 == handle.tell()
+>>> print(handle.readline().rstrip())
+f="GeneID:844718"
+>>> print(handle.readline().rstrip())
+     CDS             complement(join(84337..84771,85454..85843))
+>>> offset = handle.seek(make_virtual_offset(55074, 126))
+>>> print(handle.readline().rstrip())
+    68521 tatgtcattc gaaattgtat aaagacaact cctatttaat agagctattt gtgcaagtat
+>>> handle.close()
+
+Notice the handle's offset looks different as a BGZF file. This
+brings us to the key point about BGZF, which is the block structure:
+
+>>> handle = open("GenBank/NC_000932.gb.bgz", "rb")
+>>> for values in BgzfBlocks(handle):
+...     print("Raw start %i, raw length %i; data start %i, data length %i" % values)
+Raw start 0, raw length 15073; data start 0, data length 65536
+Raw start 15073, raw length 17857; data start 65536, data length 65536
+Raw start 32930, raw length 22144; data start 131072, data length 65536
+Raw start 55074, raw length 22230; data start 196608, data length 65536
+Raw start 77304, raw length 14939; data start 262144, data length 43478
+Raw start 92243, raw length 28; data start 305622, data length 0
+>>> handle.close()
+
+In this example the first three blocks are 'full' and hold 65536 bytes
+of uncompressed data. The fourth block isn't full and holds 43478 bytes.
+Finally there is a special empty fifth block which takes 28 bytes on
+disk and serves as an 'end of file' (EOF) marker. If this is missing,
+it is possible your BGZF file is incomplete.
+
+By reading ahead 70,000 bytes we moved into the second BGZF block,
+and at that point the BGZF virtual offsets start to look different
+to a simple offset into the decompressed data as exposed by the gzip
+library.
+
+As an example, consider seeking to the decompressed position 196734.
+Since 196734 = 65536 + 65536 + 65536 + 126 = 65536*3 + 126, this
+is equivalent to jumping the first three blocks (which in this
+specific example are all size 65536 after decompression - which
+does not always hold) and starting at byte 126 of the fourth block
+(after decompression). For BGZF, we need to know the fourth block's
+offset of 55074 and the offset within the block of 126 to get the
+BGZF virtual offset.
+
+>>> print(55074 << 16 | 126)
+3609329790
+>>> print(bgzf.make_virtual_offset(55074, 126))
+3609329790
+
+Thus for this BGZF file, decompressed position 196734 corresponds
+to the virtual offset 3609329790. However, another BGZF file with
+different contents would have compressed more or less efficiently,
+so the compressed blocks would be different sizes. What this means
+is the mapping between the uncompressed offset and the compressed
+virtual offset depends on the BGZF file you are using.
+
+If you are accessing a BGZF file via this module, just use the
+handle.tell() method to note the virtual offset of a position you
+may later want to return to using handle.seek().
+
+The catch with BGZF virtual offsets is while they can be compared
+(which offset comes first in the file), you cannot safely subtract
+them to get the size of the data between them, nor add/subtract
+a relative offset.
+
+Of course you can parse this file with Bio.SeqIO using BgzfReader,
+although there isn't any benefit over using gzip.open(...), unless
+you want to index BGZF compressed sequence files:
+
+>>> from Bio import SeqIO
+>>> handle = BgzfReader("GenBank/NC_000932.gb.bgz")
+>>> record = SeqIO.read(handle, "genbank")
+>>> handle.close()
+>>> print(record.id)
+NC_000932.1
+
+"""
+
+from __future__ import print_function
+
+import sys  # to detect when under Python 2
+import zlib
+import struct
+
+# from Bio._py3k import _as_bytes, _as_string
+# from Bio._py3k import open as _open
+
+def _as_bytes(s):
+    """Turn a (byte) string or a unicode string into a (byte) string."""
+    return str(s)
+
+_as_string = _as_bytes
+_open = open
+
+__docformat__ = "restructuredtext en"
+
+# For Python 2 can just use: _bgzf_magic = '\x1f\x8b\x08\x04'
+# but need to use bytes on Python 3
+_bgzf_magic = b"\x1f\x8b\x08\x04"
+_bgzf_header = b"\x1f\x8b\x08\x04\x00\x00\x00\x00\x00\xff\x06\x00\x42\x43\x02\x00"
+_bgzf_eof = b"\x1f\x8b\x08\x04\x00\x00\x00\x00\x00\xff\x06\x00BC\x02\x00\x1b\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+_bytes_BC = b"BC"
+
+
+def open(filename, mode="rb"):
+    """Open a BGZF file for reading, writing or appending."""
+    if "r" in mode.lower():
+        return BgzfReader(filename, mode)
+    elif "w" in mode.lower() or "a" in mode.lower():
+        return BgzfWriter(filename, mode)
+    else:
+        raise ValueError("Bad mode %r" % mode)
+
+
+def make_virtual_offset(block_start_offset, within_block_offset):
+    """Compute a BGZF virtual offset from block start and within block offsets.
+
+    The BAM indexing scheme records read positions using a 64 bit
+    'virtual offset', comprising in C terms:
+
+    block_start_offset << 16 | within_block_offset
+
+    Here block_start_offset is the file offset of the BGZF block
+    start (unsigned integer using up to 64-16 = 48 bits), and
+    within_block_offset within the (decompressed) block (unsigned
+    16 bit integer).
+
+    >>> make_virtual_offset(0, 0)
+    0
+    >>> make_virtual_offset(0, 1)
+    1
+    >>> make_virtual_offset(0, 2**16 - 1)
+    65535
+    >>> make_virtual_offset(0, 2**16)
+    Traceback (most recent call last):
+    ...
+    ValueError: Require 0 <= within_block_offset < 2**16, got 65536
+
+    >>> 65536 == make_virtual_offset(1, 0)
+    True
+    >>> 65537 == make_virtual_offset(1, 1)
+    True
+    >>> 131071 == make_virtual_offset(1, 2**16 - 1)
+    True
+
+    >>> 6553600000 == make_virtual_offset(100000, 0)
+    True
+    >>> 6553600001 == make_virtual_offset(100000, 1)
+    True
+    >>> 6553600010 == make_virtual_offset(100000, 10)
+    True
+
+    >>> make_virtual_offset(2**48, 0)
+    Traceback (most recent call last):
+    ...
+    ValueError: Require 0 <= block_start_offset < 2**48, got 281474976710656
+
+    """
+    if within_block_offset < 0 or within_block_offset >= 65536:
+        raise ValueError("Require 0 <= within_block_offset < 2**16, got %i" % within_block_offset)
+    if block_start_offset < 0 or block_start_offset >= 281474976710656:
+        raise ValueError("Require 0 <= block_start_offset < 2**48, got %i" % block_start_offset)
+    return (block_start_offset << 16) | within_block_offset
+
+
+def split_virtual_offset(virtual_offset):
+    """Divides a 64-bit BGZF virtual offset into block start & within block offsets.
+
+    >>> (100000, 0) == split_virtual_offset(6553600000)
+    True
+    >>> (100000, 10) == split_virtual_offset(6553600010)
+    True
+
+    """
+    start = virtual_offset >> 16
+    return start, virtual_offset ^ (start << 16)
+
+
+def BgzfBlocks(handle):
+    """Low level debugging function to inspect BGZF blocks.
+
+    Expects a BGZF compressed file opened in binary read mode using
+    the builtin open function. Do not use a handle from this bgzf
+    module or the gzip module's open function which will decompress
+    the file.
+
+    Returns the block start offset (see virtual offsets), the block
+    length (add these for the start of the next block), and the
+    decompressed length of the blocks contents (limited to 65536 in
+    BGZF), as an iterator - one tuple per BGZF block.
+
+    >>> try:
+    ...     from __builtin__ import open # Python 2
+    ... except ImportError:
+    ...     from builtins import open # Python 3
+    ...
+    >>> handle = open("SamBam/ex1.bam", "rb")
+    >>> for values in BgzfBlocks(handle):
+    ...     print("Raw start %i, raw length %i; data start %i, data length %i" % values)
+    Raw start 0, raw length 18239; data start 0, data length 65536
+    Raw start 18239, raw length 18223; data start 65536, data length 65536
+    Raw start 36462, raw length 18017; data start 131072, data length 65536
+    Raw start 54479, raw length 17342; data start 196608, data length 65536
+    Raw start 71821, raw length 17715; data start 262144, data length 65536
+    Raw start 89536, raw length 17728; data start 327680, data length 65536
+    Raw start 107264, raw length 17292; data start 393216, data length 63398
+    Raw start 124556, raw length 28; data start 456614, data length 0
+    >>> handle.close()
+
+    Indirectly we can tell this file came from an old version of
+    samtools because all the blocks (except the final one and the
+    dummy empty EOF marker block) are 65536 bytes.  Later versions
+    avoid splitting a read between two blocks, and give the header
+    its own block (useful to speed up replacing the header). You
+    can see this in ex1_refresh.bam created using samtools 0.1.18:
+
+    samtools view -b ex1.bam > ex1_refresh.bam
+
+    >>> handle = open("SamBam/ex1_refresh.bam", "rb")
+    >>> for values in BgzfBlocks(handle):
+    ...     print("Raw start %i, raw length %i; data start %i, data length %i" % values)
+    Raw start 0, raw length 53; data start 0, data length 38
+    Raw start 53, raw length 18195; data start 38, data length 65434
+    Raw start 18248, raw length 18190; data start 65472, data length 65409
+    Raw start 36438, raw length 18004; data start 130881, data length 65483
+    Raw start 54442, raw length 17353; data start 196364, data length 65519
+    Raw start 71795, raw length 17708; data start 261883, data length 65411
+    Raw start 89503, raw length 17709; data start 327294, data length 65466
+    Raw start 107212, raw length 17390; data start 392760, data length 63854
+    Raw start 124602, raw length 28; data start 456614, data length 0
+    >>> handle.close()
+
+    The above example has no embedded SAM header (thus the first block
+    is very small at just 38 bytes of decompressed data), while the next
+    example does (a larger block of 103 bytes). Notice that the rest of
+    the blocks show the same sizes (they contain the same read data):
+
+    >>> handle = open("SamBam/ex1_header.bam", "rb")
+    >>> for values in BgzfBlocks(handle):
+    ...     print("Raw start %i, raw length %i; data start %i, data length %i" % values)
+    Raw start 0, raw length 104; data start 0, data length 103
+    Raw start 104, raw length 18195; data start 103, data length 65434
+    Raw start 18299, raw length 18190; data start 65537, data length 65409
+    Raw start 36489, raw length 18004; data start 130946, data length 65483
+    Raw start 54493, raw length 17353; data start 196429, data length 65519
+    Raw start 71846, raw length 17708; data start 261948, data length 65411
+    Raw start 89554, raw length 17709; data start 327359, data length 65466
+    Raw start 107263, raw length 17390; data start 392825, data length 63854
+    Raw start 124653, raw length 28; data start 456679, data length 0
+    >>> handle.close()
+
+    """
+    data_start = 0
+    while True:
+        start_offset = handle.tell()
+        # This may raise StopIteration which is perfect here
+        block_length, data = _load_bgzf_block(handle)
+        data_len = len(data)
+        yield start_offset, block_length, data_start, data_len
+        data_start += data_len
+
+
+def _load_bgzf_block(handle, text_mode=False):
+    """Internal function to load the next BGZF function (PRIVATE)."""
+    magic = handle.read(4)
+    if not magic:
+        # End of file
+        raise StopIteration
+    if magic != _bgzf_magic:
+        raise ValueError(r"A BGZF (e.g. a BAM file) block should start with "
+                         r"%r, not %r; handle.tell() now says %r"
+                         % (_bgzf_magic, magic, handle.tell()))
+    gzip_mod_time, gzip_extra_flags, gzip_os, extra_len = \
+        struct.unpack("<LBBH", handle.read(8))
+
+    block_size = None
+    x_len = 0
+    while x_len < extra_len:
+        subfield_id = handle.read(2)
+        subfield_len = struct.unpack("<H", handle.read(2))[0]  # uint16_t
+        subfield_data = handle.read(subfield_len)
+        x_len += subfield_len + 4
+        if subfield_id == _bytes_BC:
+            assert subfield_len == 2, "Wrong BC payload length"
+            assert block_size is None, "Two BC subfields?"
+            block_size = struct.unpack("<H", subfield_data)[0] + 1  # uint16_t
+    assert x_len == extra_len, (x_len, extra_len)
+    assert block_size is not None, "Missing BC, this isn't a BGZF file!"
+    # Now comes the compressed data, CRC, and length of uncompressed data.
+    deflate_size = block_size - 1 - extra_len - 19
+    d = zlib.decompressobj(-15)  # Negative window size means no headers
+    data = d.decompress(handle.read(deflate_size)) + d.flush()
+    expected_crc = handle.read(4)
+    expected_size = struct.unpack("<I", handle.read(4))[0]
+    assert expected_size == len(data), \
+           "Decompressed to %i, not %i" % (len(data), expected_size)
+    # Should cope with a mix of Python platforms...
+    crc = zlib.crc32(data)
+    if crc < 0:
+        crc = struct.pack("<i", crc)
+    else:
+        crc = struct.pack("<I", crc)
+    assert expected_crc == crc, \
+           "CRC is %s, not %s" % (crc, expected_crc)
+    if text_mode:
+        return block_size, _as_string(data)
+    else:
+        return block_size, data
+
+
+class BgzfReader(object):
+    r"""BGZF reader, acts like a read only handle but seek/tell differ.
+
+    Let's use the BgzfBlocks function to have a peak at the BGZF blocks
+    in an example BAM file,
+
+    >>> try:
+    ...     from __builtin__ import open # Python 2
+    ... except ImportError:
+    ...     from builtins import open # Python 3
+    ...
+    >>> handle = open("SamBam/ex1.bam", "rb")
+    >>> for values in BgzfBlocks(handle):
+    ...     print("Raw start %i, raw length %i; data start %i, data length %i" % values)
+    Raw start 0, raw length 18239; data start 0, data length 65536
+    Raw start 18239, raw length 18223; data start 65536, data length 65536
+    Raw start 36462, raw length 18017; data start 131072, data length 65536
+    Raw start 54479, raw length 17342; data start 196608, data length 65536
+    Raw start 71821, raw length 17715; data start 262144, data length 65536
+    Raw start 89536, raw length 17728; data start 327680, data length 65536
+    Raw start 107264, raw length 17292; data start 393216, data length 63398
+    Raw start 124556, raw length 28; data start 456614, data length 0
+    >>> handle.close()
+
+    Now let's see how to use this block information to jump to
+    specific parts of the decompressed BAM file:
+
+    >>> handle = BgzfReader("SamBam/ex1.bam", "rb")
+    >>> assert 0 == handle.tell()
+    >>> magic = handle.read(4)
+    >>> assert 4 == handle.tell()
+
+    So far nothing so strange, we got the magic marker used at the
+    start of a decompressed BAM file, and the handle position makes
+    sense. Now however, let's jump to the end of this block and 4
+    bytes into the next block by reading 65536 bytes,
+
+    >>> data = handle.read(65536)
+    >>> len(data)
+    65536
+    >>> assert 1195311108 == handle.tell()
+
+    Expecting 4 + 65536 = 65540 were you? Well this is a BGZF 64-bit
+    virtual offset, which means:
+
+    >>> split_virtual_offset(1195311108)
+    (18239, 4)
+
+    You should spot 18239 as the start of the second BGZF block, while
+    the 4 is the offset into this block. See also make_virtual_offset,
+
+    >>> make_virtual_offset(18239, 4)
+    1195311108
+
+    Let's jump back to almost the start of the file,
+
+    >>> make_virtual_offset(0, 2)
+    2
+    >>> handle.seek(2)
+    2
+    >>> handle.close()
+
+    Note that you can use the max_cache argument to limit the number of
+    BGZF blocks cached in memory. The default is 100, and since each
+    block can be up to 64kb, the default cache could take up to 6MB of
+    RAM. The cache is not important for reading through the file in one
+    pass, but is important for improving performance of random access.
+    """
+
+    def __init__(self, filename=None, mode="r", fileobj=None, max_cache=100):
+        # TODO - Assuming we can seek, check for 28 bytes EOF empty block
+        # and if missing warn about possible truncation (as in samtools)?
+        if max_cache < 1:
+            raise ValueError("Use max_cache with a minimum of 1")
+        # Must open the BGZF file in binary mode, but we may want to
+        # treat the contents as either text or binary (unicode or
+        # bytes under Python 3)
+        if fileobj:
+            assert filename is None
+            handle = fileobj
+            assert "b" in handle.mode.lower()
+        else:
+            if "w" in mode.lower() \
+            or "a" in mode.lower():
+                raise ValueError("Must use read mode (default), not write or append mode")
+            handle = _open(filename, "rb")
+        self._text = "b" not in mode.lower()
+        if self._text:
+            self._newline = "\n"
+        else:
+            self._newline = b"\n"
+        self._handle = handle
+        self.max_cache = max_cache
+        self._buffers = {}
+        self._block_start_offset = None
+        self._block_raw_length = None
+        self._load_block(handle.tell())
+
+    def _load_block(self, start_offset=None):
+        if start_offset is None:
+            # If the file is being read sequentially, then _handle.tell()
+            # should be pointing at the start of the next block.
+            # However, if seek has been used, we can't assume that.
+            start_offset = self._block_start_offset + self._block_raw_length
+        if start_offset == self._block_start_offset:
+            self._within_block_offset = 0
+            return
+        elif start_offset in self._buffers:
+            # Already in cache
+            self._buffer, self._block_raw_length = self._buffers[start_offset]
+            self._within_block_offset = 0
+            self._block_start_offset = start_offset
+            return
+        # Must hit the disk... first check cache limits,
+        while len(self._buffers) >= self.max_cache:
+            # TODO - Implemente LRU cache removal?
+            self._buffers.popitem()
+        # Now load the block
+        handle = self._handle
+        if start_offset is not None:
+            handle.seek(start_offset)
+        self._block_start_offset = handle.tell()
+        try:
+            block_size, self._buffer = _load_bgzf_block(handle, self._text)
+        except StopIteration:
+            # EOF
+            block_size = 0
+            if self._text:
+                self._buffer = ""
+            else:
+                self._buffer = b""
+        self._within_block_offset = 0
+        self._block_raw_length = block_size
+        # Finally save the block in our cache,
+        self._buffers[self._block_start_offset] = self._buffer, block_size
+
+    def tell(self):
+        """Returns a 64-bit unsigned BGZF virtual offset."""
+        if 0 < self._within_block_offset == len(self._buffer):
+            # Special case where we're right at the end of a (non empty) block.
+            # For non-maximal blocks could give two possible virtual offsets,
+            # but for a maximal block can't use 65536 as the within block
+            # offset. Therefore for consistency, use the next block and a
+            # within block offset of zero.
+            return (self._block_start_offset + self._block_raw_length) << 16
+        else:
+            # return make_virtual_offset(self._block_start_offset,
+            #                           self._within_block_offset)
+            # TODO - Include bounds checking as in make_virtual_offset?
+            return (self._block_start_offset << 16) | self._within_block_offset
+
+    def seek(self, virtual_offset):
+        """Seek to a 64-bit unsigned BGZF virtual offset."""
+        # Do this inline to avoid a function call,
+        # start_offset, within_block = split_virtual_offset(virtual_offset)
+        start_offset = virtual_offset >> 16
+        within_block = virtual_offset ^ (start_offset << 16)
+        if start_offset != self._block_start_offset:
+            # Don't need to load the block if already there
+            # (this avoids a function call since _load_block would do nothing)
+            self._load_block(start_offset)
+            assert start_offset == self._block_start_offset
+        if within_block > len(self._buffer) \
+        and not (within_block == 0 and len(self._buffer) == 0):
+            raise ValueError("Within offset %i but block size only %i"
+                             % (within_block, len(self._buffer)))
+        self._within_block_offset = within_block
+        # assert virtual_offset == self.tell(), \
+        #    "Did seek to %i (%i, %i), but tell says %i (%i, %i)" \
+        #    % (virtual_offset, start_offset, within_block,
+        #       self.tell(), self._block_start_offset, self._within_block_offset)
+        return virtual_offset
+
+    def read(self, size=-1):
+        if size < 0:
+            raise NotImplementedError("Don't be greedy, that could be massive!")
+        elif size == 0:
+            if self._text:
+                return ""
+            else:
+                return b""
+        elif self._within_block_offset + size <= len(self._buffer):
+            # This may leave us right at the end of a block
+            # (lazy loading, don't load the next block unless we have too)
+            data = self._buffer[self._within_block_offset:self._within_block_offset + size]
+            self._within_block_offset += size
+            assert data  # Must be at least 1 byte
+            return data
+        else:
+            data = self._buffer[self._within_block_offset:]
+            size -= len(data)
+            self._load_block()  # will reset offsets
+            # TODO - Test with corner case of an empty block followed by
+            # a non-empty block
+            if not self._buffer:
+                return data  # EOF
+            elif size:
+                # TODO - Avoid recursion
+                return data + self.read(size)
+            else:
+                # Only needed the end of the last block
+                return data
+
+    def readline(self):
+        i = self._buffer.find(self._newline, self._within_block_offset)
+        # Three cases to consider,
+        if i == -1:
+            # No newline, need to read in more data
+            data = self._buffer[self._within_block_offset:]
+            self._load_block()  # will reset offsets
+            if not self._buffer:
+                return data  # EOF
+            else:
+                # TODO - Avoid recursion
+                return data + self.readline()
+        elif i + 1 == len(self._buffer):
+            # Found new line, but right at end of block (SPECIAL)
+            data = self._buffer[self._within_block_offset:]
+            # Must now load the next block to ensure tell() works
+            self._load_block()  # will reset offsets
+            assert data
+            return data
+        else:
+            # Found new line, not at end of block (easy case, no IO)
+            data = self._buffer[self._within_block_offset:i + 1]
+            self._within_block_offset = i + 1
+            # assert data.endswith(self._newline)
+            return data
+
+    def __next__(self):
+        line = self.readline()
+        if not line:
+            raise StopIteration
+        return line
+
+    if sys.version_info[0] < 3:
+        def next(self):
+            """Python 2 style alias for Python 3 style __next__ method."""
+            return self.__next__()
+
+    def __iter__(self):
+        return self
+
+    def close(self):
+        self._handle.close()
+        self._buffer = None
+        self._block_start_offset = None
+        self._buffers = None
+
+    def seekable(self):
+        return True
+
+    def isatty(self):
+        return False
+
+    def fileno(self):
+        return self._handle.fileno()
+
+    def __enter__(self):
+        return self
+
+    def __exit__(self, type, value, traceback):
+        self.close()
+
+
+class BgzfWriter(object):
+
+    def __init__(self, filename=None, mode="w", fileobj=None, compresslevel=6):
+        if fileobj:
+            assert filename is None
+            handle = fileobj
+        else:
+            if "w" not in mode.lower() \
+            and "a" not in mode.lower():
+                raise ValueError("Must use write or append mode, not %r" % mode)
+            if "a" in mode.lower():
+                handle = _open(filename, "ab")
+            else:
+                handle = _open(filename, "wb")
+        self._text = "b" not in mode.lower()
+        self._handle = handle
+        self._buffer = b""
+        self.compresslevel = compresslevel
+
+    def _write_block(self, block):
+        # print("Saving %i bytes" % len(block))
+        start_offset = self._handle.tell()
+        assert len(block) <= 65536
+        # Giving a negative window bits means no gzip/zlib headers, -15 used in samtools
+        c = zlib.compressobj(self.compresslevel,
+                             zlib.DEFLATED,
+                             -15,
+                             zlib.DEF_MEM_LEVEL,
+                             0)
+        compressed = c.compress(block) + c.flush()
+        del c
+        assert len(compressed) < 65536, "TODO - Didn't compress enough, try less data in this block"
+        crc = zlib.crc32(block)
+        # Should cope with a mix of Python platforms...
+        if crc < 0:
+            crc = struct.pack("<i", crc)
+        else:
+            crc = struct.pack("<I", crc)
+        bsize = struct.pack("<H", len(compressed) + 25)  # includes -1
+        crc = struct.pack("<I", zlib.crc32(block) & 0xffffffff)
+        uncompressed_length = struct.pack("<I", len(block))
+        # Fixed 16 bytes,
+        # gzip magic bytes (4) mod time (4),
+        # gzip flag (1), os (1), extra length which is six (2),
+        # sub field which is BC (2), sub field length of two (2),
+        # Variable data,
+        # 2 bytes: block length as BC sub field (2)
+        # X bytes: the data
+        # 8 bytes: crc (4), uncompressed data length (4)
+        data = _bgzf_header + bsize + compressed + crc + uncompressed_length
+        self._handle.write(data)
+
+    def write(self, data):
+        # TODO - Check bytes vs unicode
+        data = _as_bytes(data)
+        # block_size = 2**16 = 65536
+        data_len = len(data)
+        if len(self._buffer) + data_len < 65536:
+            # print("Cached %r" % data)
+            self._buffer += data
+            return
+        else:
+            # print("Got %r, writing out some data..." % data)
+            self._buffer += data
+            while len(self._buffer) >= 65536:
+                self._write_block(self._buffer[:65536])
+                self._buffer = self._buffer[65536:]
+
+    def flush(self):
+        while len(self._buffer) >= 65536:
+            self._write_block(self._buffer[:65535])
+            self._buffer = self._buffer[65535:]
+        self._write_block(self._buffer)
+        self._buffer = b""
+        self._handle.flush()
+
+    def close(self):
+        """Flush data, write 28 bytes empty BGZF EOF marker, and close the BGZF file."""
+        if self._buffer:
+            self.flush()
+        # samtools will look for a magic EOF marker, just a 28 byte empty BGZF block,
+        # and if it is missing warns the BAM file may be truncated. In addition to
+        # samtools writing this block, so too does bgzip - so we should too.
+        self._handle.write(_bgzf_eof)
+        self._handle.flush()
+        self._handle.close()
+
+    def tell(self):
+        """Returns a BGZF 64-bit virtual offset."""
+        return make_virtual_offset(self._handle.tell(), len(self._buffer))
+
+    def seekable(self):
+        # Not seekable, but we do support tell...
+        return False
+
+    def isatty(self):
+        return False
+
+    def fileno(self):
+        return self._handle.fileno()
+
+    def __enter__(self):
+        return self
+
+    def __exit__(self, type, value, traceback):
+        self.close()
+
+
+if __name__ == "__main__":
+    import sys
+    if len(sys.argv) > 1:
+        print("Call this with no arguments and pipe uncompressed data in on stdin")
+        print("and it will produce BGZF compressed data on stdout. e.g.")
+        print("")
+        print("./bgzf.py < example.fastq > example.fastq.bgz")
+        print("")
+        print("The extension convention of *.bgz is to distinugish these from *.gz")
+        print("used for standard gzipped files without the block structure of BGZF.")
+        print("You can use the standard gunzip command to decompress BGZF files,")
+        print("if it complains about the extension try something like this:")
+        print("")
+        print("cat example.fastq.bgz | gunzip > example.fastq")
+        print("")
+        print("See also the tool bgzip that comes with samtools")
+        sys.exit(0)
+
+    sys.stderr.write("Producing BGZF output from stdin...\n")
+    w = BgzfWriter(fileobj=sys.stdout)
+    while True:
+        data = sys.stdin.read(65536)
+        w.write(data)
+        if not data:
+            break
+    # Doing close with write an empty BGZF block as EOF marker:
+    w.close()
+    sys.stderr.write("BGZF data produced\n")
diff --git a/pbcore/io/base.py b/pbcore/io/base.py
index 292812c..fc2e5cf 100644
--- a/pbcore/io/base.py
+++ b/pbcore/io/base.py
@@ -70,6 +70,10 @@ class ReaderBase(object):
         Prepare for iteration through the records in the file
         """
         self.file = getFileHandle(f, "r")
+        if hasattr(self.file, "name"):
+            self.filename = self.file.name
+        else:
+            self.filename = "(anonymous)"
 
     def close(self):
         """
@@ -92,6 +96,10 @@ class WriterBase(object):
         Prepare for output to the file
         """
         self.file = getFileHandle(f, "w")
+        if hasattr(self.file, "name"):
+            self.filename = self.file.name
+        else:
+            self.filename = "(anonymous)"
 
     def close(self):
         """
diff --git a/pbcore/io/dataset/DataSetIO.py b/pbcore/io/dataset/DataSetIO.py
new file mode 100755
index 0000000..c4d12df
--- /dev/null
+++ b/pbcore/io/dataset/DataSetIO.py
@@ -0,0 +1,2127 @@
+"""
+Classes representing the elements of the DataSet type
+
+These classes are often instantiated by the parser and passed to the DataSet,
+where they are stored, manipulated, filtered, merged, etc.
+"""
+
+import hashlib
+import copy
+import os
+import logging
+from functools import wraps
+import numpy as np
+from urlparse import urlparse
+from pbcore.io.opener import (openAlignmentFile, openIndexedAlignmentFile,
+                              FastaReader, IndexedFastaReader, CmpH5Reader,
+                              IndexedBamReader)
+from pbcore.io.FastaIO import splitFastaHeader
+
+from pbcore.io.dataset import DataSetReader
+from pbcore.io.dataset.DataSetWriter import toXml
+from pbcore.io.dataset.DataSetValidator import validateString
+from pbcore.io.dataset.DataSetMembers import (DataSetMetadata,
+                                              SubreadSetMetadata,
+                                              ReferenceSetMetadata,
+                                              ContigSetMetadata,
+                                              BarcodeSetMetadata,
+                                              ExternalResources, Filters)
+
+log = logging.getLogger(__name__)
+
+def filtered(generator):
+    """Wrap a generator with postfiltering"""
+    @wraps(generator)
+    def wrapper(dset, *args, **kwargs):
+        filter_tests = dset.processFilters()
+        no_filter = dset.noFiltering
+        if no_filter:
+            for read in generator(dset, *args, **kwargs):
+                yield read
+        else:
+            for read in generator(dset, *args, **kwargs):
+                if any(filt(read) for filt in filter_tests):
+                    yield read
+    return wrapper
+
+
+def _toDsId(x):
+    return "PacBio.DataSet.{x}".format(x=x)
+
+
+class DataSetMetaTypes(object):
+    """
+    This mirrors the PacBioSecondaryDataModel.xsd definitions and be used
+    to reference a specific dataset type.
+    """
+    SUBREAD = _toDsId("SubreadSet")
+    HDF_SUBREAD = _toDsId("HdfSubreadSet")
+    ALIGNMENT = _toDsId("AlignmentSet")
+    BARCODE = _toDsId("BarcodeSet")
+    CCS_ALIGNMENT = _toDsId("ConsensusAlignmentSet")
+    CCS = _toDsId("ConsensusReadSet")
+    REFERENCE = _toDsId("ReferenceSet")
+    CONTIG = _toDsId("ContigSet")
+
+    ALL = (SUBREAD, HDF_SUBREAD, ALIGNMENT,
+           BARCODE, CCS, CCS_ALIGNMENT, REFERENCE, CONTIG)
+
+    @classmethod
+    def isValid(cls, dsId):
+        return dsId in cls.ALL
+
+
+def _fileType(fname):
+    """Get the extension of fname (with h5 type)"""
+    remainder, ftype = os.path.splitext(fname)
+    if ftype == '.h5':
+        _, prefix = os.path.splitext(remainder)
+        ftype = prefix + ftype
+    ftype = ftype.strip('.')
+    return ftype
+
+
+def openDataSet(*files):
+    """Generic factory function to open DataSets (or attempt to open a subtype
+    if one can be inferred from the file(s).
+
+    A replacement for the generic DataSet(*files) constructor"""
+    if files:
+        # The factory that does the heavy lifting:
+        dataset = DataSetReader.parseFiles(files)
+    else:
+        dataset = DataSet()
+    if not dataset.uuid:
+        dataset.newUuid()
+    log.debug('Updating counts')
+    dataset.fileNames = files
+    dataset.updateCounts()
+    dataset.close()
+    log.debug('Done creating {c}'.format(c=str(dataset)))
+    return dataset
+
+
+class MetaDataSet(type):
+    """This metaclass acts as a factory for DataSet and subtypes,
+    intercepting constructor calls and returning a DataSet or subclass
+    instance as appropriate (inferred from file contents)."""
+
+
+    def __call__(cls, *files):
+        """Factory function for DataSet and subtypes
+
+        Args:
+            files: one or more files to parse
+
+        Returns:
+            A dataset (or subtype) object.
+
+        """
+        if files:
+            # The factory that does the heavy lifting:
+            dataset = DataSetReader.parseFiles(files)
+            # give the user what they call for, usually
+            if cls != DataSet and type(dataset) == DataSet:
+                dataset = dataset.copy(asType=cls.__name__)
+        else:
+            dataset = object.__new__(cls)
+            dataset.__init__()
+        if not dataset.uuid:
+            dataset.newUuid()
+        log.debug('Updating counts')
+        dataset.fileNames = files
+        dataset.updateCounts()
+        dataset.close()
+        log.debug('Done creating {c}'.format(c=cls.__name__))
+        return dataset
+
+
+class DataSet(object):
+    """The record containing the DataSet information, with possible type
+    specific subclasses"""
+
+    __metaclass__ = MetaDataSet
+    datasetType = DataSetMetaTypes.ALL
+
+    def __init__(self, *files):
+        """DataSet constructor
+
+        Initialize representations of the ExternalResources, MetaData,
+        Filters, and LabeledSubsets, parse inputs if possible
+
+        Args:
+            (HANDLED BY METACLASS __call__) *files: one or more filenames or
+                                                    uris to read
+
+        Doctest:
+            >>> import os, tempfile
+            >>> import pbcore.data.datasets as data
+            >>> from pbcore.io import DataSet, SubreadSet
+            >>> # Prog like pbalign provides a .bam file:
+            >>> # e.g. d = DataSet("aligned.bam")
+            >>> # Something like the test files we have:
+            >>> inBam = data.getBam()
+            >>> inBam.endswith('.bam')
+            True
+            >>> d = DataSet(inBam)
+            >>> # A UniqueId is generated, despite being a BAM input
+            >>> bool(d.uuid)
+            True
+            >>> dOldUuid = d.uuid
+            >>> # They can write this BAM to an XML:
+            >>> # e.g. d.write("alignmentset.xml")
+            >>> outdir = tempfile.mkdtemp(suffix="dataset-doctest")
+            >>> outXml = os.path.join(outdir, 'tempfile.xml')
+            >>> d.write(outXml)
+            >>> # And then recover the same XML:
+            >>> d = DataSet(outXml)
+            >>> # The UniqueId will be the same
+            >>> d.uuid == dOldUuid
+            True
+            >>> # Inputs can be many and varied
+            >>> ds1 = DataSet(data.getXml(8), data.getBam(1))
+            >>> ds1.numExternalResources
+            2
+            >>> ds1 = DataSet(data.getFofn())
+            >>> ds1.numExternalResources
+            2
+            >>> # DataSet types are autodetected:
+            >>> DataSet(data.getSubreadSet()) # doctest:+ELLIPSIS
+            <SubreadSet...
+            >>> # But can also be used directly
+            >>> SubreadSet(data.getSubreadSet()) # doctest:+ELLIPSIS
+            <SubreadSet...
+            >>> # Even with untyped inputs
+            >>> DataSet(data.getBam()) # doctest:+ELLIPSIS
+            <DataSet...
+            >>> SubreadSet(data.getBam()) # doctest:+ELLIPSIS
+            <SubreadSet...
+            >>> # You can also cast up and down, but casting between siblings
+            >>> # is limited (abuse at your own risk)
+            >>> DataSet(data.getBam()).copy(asType='SubreadSet')
+            ... # doctest:+ELLIPSIS
+            <SubreadSet...
+            >>> SubreadSet(data.getBam()).copy(asType='DataSet')
+            ... # doctest:+ELLIPSIS
+            <DataSet...
+            >>> # DataSets can also be manipulated after opening:
+            >>> # Add external Resources:
+            >>> ds = DataSet()
+            >>> _ = ds.externalResources.addResources(["IdontExist.bam"])
+            >>> ds.externalResources[-1].resourceId == "IdontExist.bam"
+            True
+            >>> # Add an index file
+            >>> pbiName = "IdontExist.bam.pbi"
+            >>> ds.externalResources[-1].addIndices([pbiName])
+            >>> ds.externalResources[-1].indices[0].resourceId == pbiName
+            True
+
+        """
+        # The metadata concerning the DataSet or subtype itself (e.g.
+        # name, version, UniqueId)
+        self.objMetadata = {}
+
+        # The metadata contained in the DataSet or subtype (e.g.
+        # NumRecords, BioSamples, Collections, etc.
+        self._metadata = DataSetMetadata()
+
+        self.externalResources = ExternalResources()
+        self._filters = Filters()
+
+        # list of DataSet objects representing subsets
+        self.subdatasets = []
+
+        # Why not keep this around... (filled by file reader)
+        self.fileNames = []
+
+        # State tracking:
+        self._cachedFilters = []
+        self.noFiltering = False
+        self._openReaders = []
+
+    def __repr__(self):
+        """Represent the dataset with an informative string:
+
+        Returns:
+            "<type uuid filenames>"
+        """
+        repr_d = dict(k=self.__class__.__name__, u=self.uuid, f=self.fileNames)
+        return '<{k} uuid:{u} source files:{f}>'.format(**repr_d)
+
+    def __add__(self, otherDataset):
+        """Merge the representations of two DataSets without modifying
+        the original datasets. (Fails if filters are incompatible).
+
+        Args:
+            otherDataset: a DataSet to merge with self
+
+        Returns:
+            A new DataSet with members containing the union of the input
+            DataSets' members and subdatasets representing the input DataSets
+
+        Doctest:
+            >>> import pbcore.data.datasets as data
+            >>> from pbcore.io import AlignmentSet
+            >>> from pbcore.io.dataset.DataSetWriter import toXml
+            >>> # xmls with different resourceIds: success
+            >>> ds1 = AlignmentSet(data.getXml(no=8))
+            >>> ds2 = AlignmentSet(data.getXml(no=11))
+            >>> ds3 = ds1 + ds2
+            >>> expected = ds1.numExternalResources + ds2.numExternalResources
+            >>> ds3.numExternalResources == expected
+            True
+            >>> # xmls with different resourceIds but conflicting filters:
+            >>> # failure to merge
+            >>> ds2.filters.addRequirement(rname=[('=', 'E.faecalis.1')])
+            >>> ds3 = ds1 + ds2
+            >>> ds3
+            >>> # xmls with same resourceIds: ignores new inputs
+            >>> ds1 = AlignmentSet(data.getXml(no=8))
+            >>> ds2 = AlignmentSet(data.getXml(no=8))
+            >>> ds3 = ds1 + ds2
+            >>> expected = ds1.numExternalResources
+            >>> ds3.numExternalResources == expected
+            True
+        """
+        if (otherDataset.__class__.__name__ == self.__class__.__name__ or
+                otherDataset.__class__.__name__ == 'DataSet'):
+            if not self.filters.testCompatibility(otherDataset.filters):
+                log.warning("Filter incompatibility has blocked the addition "
+                            "of two datasets")
+                return None
+            self._cachedFilters = []
+            self._checkObjMetadata(otherDataset.objMetadata)
+            result = self.copy()
+            result.addMetadata(otherDataset.metadata)
+            result.addExternalResources(otherDataset.externalResources)
+            # DataSets may only be merged if they have identical filters,
+            # So there is nothing new to add.
+            result.addDatasets(otherDataset.copy())
+            # If this dataset has no subsets representing it, add self as a
+            # subdataset to the result
+            if not self.subdatasets:
+                result.addDatasets(self.copy())
+            return result
+        else:
+            raise TypeError('DataSets can only be merged with records of the '
+                            'same type or of type DataSet')
+
+    def __deepcopy__(self, memo):
+        """Deep copy this Dataset by recursively deep copying the members
+        (objMetadata, DataSet metadata, externalResources, filters and
+        subdatasets)
+        """
+        tbr = type(self)()
+        memo[id(self)] = tbr
+        tbr.objMetadata = copy.deepcopy(self.objMetadata, memo)
+        tbr.metadata = copy.deepcopy(self._metadata, memo)
+        tbr.externalResources = copy.deepcopy(self.externalResources, memo)
+        tbr.filters = copy.deepcopy(self._filters, memo)
+        tbr.subdatasets = copy.deepcopy(self.subdatasets, memo)
+        tbr.fileNames = copy.deepcopy(self.fileNames, memo)
+        return tbr
+
+    def __eq__(self, other):
+        """Test for DataSet equality. The method specified in the documentation
+        calls for md5 hashing the "Core XML" elements and comparing. This is
+        the same procedure for generating the Uuid, so the same method may be
+        used. However, as simultaneously or regularly updating the Uuid is not
+        specified, we opt to not set the newUuid when checking for equality.
+
+        Args:
+            other: The other DataSet to compare to this DataSet.
+
+        Returns:
+            T/F the Core XML elements of this and the other DataSet hash to the
+            same value
+        """
+        sXml = self.newUuid(setter=False)
+        oXml = other.newUuid(setter=False)
+        return sXml == oXml
+
+    def __enter__(self):
+        return self
+
+    def close(self):
+        """Close all of the opened resource readers"""
+        for reader in self._openReaders:
+            try:
+                reader.close()
+            except AttributeError:
+                log.info("Reader not opened properly, therefore not closed "
+                         "properly.")
+        self._openReaders = []
+
+    def __exit__(self, *exec_info):
+        self.close()
+
+    def __len__(self):
+        count = 0
+        if self._filters:
+            count = len(self.indexRecords)
+        else:
+            for reader in self.resourceReaders():
+                count += sum(1 for _ in reader)
+        return count
+
+    def newUuid(self, setter=True):
+        """Generate and enforce the uniqueness of an ID for a new DataSet.
+        While user setable fields are stripped out of the Core DataSet object
+        used for comparison, the previous UniqueId is not. That means that
+        copies will still be unique, despite having the same contents.
+
+        Args:
+            setter=True: Setting to False allows MD5 hashes to be generated
+                         (e.g. for comparison with other objects) without
+                         modifying the object's UniqueId
+        Returns:
+            The new Id, a properly formatted md5 hash of the Core DataSet
+
+        Doctest:
+            >>> from pbcore.io import AlignmentSet
+            >>> ds = AlignmentSet()
+            >>> old = ds.uuid
+            >>> _ = ds.newUuid()
+            >>> old != ds.uuid
+            True
+        """
+        coreXML = toXml(self, core=True)
+        newId = str(hashlib.md5(coreXML).hexdigest())
+
+        # Group appropriately
+        newId = '-'.join([newId[:8], newId[8:12], newId[12:16], newId[16:20],
+                          newId[20:]])
+
+        if setter:
+            self.objMetadata['UniqueId'] = newId
+        return newId
+
+    def copy(self, asType=None):
+        """Deep copy the representation of this DataSet
+
+        Args:
+            asType: The type of DataSet to return, e.g. 'AlignmentSet'
+
+        Returns:
+            A DataSet object that is identical but for UniqueId
+
+        Doctest:
+            >>> import pbcore.data.datasets as data
+            >>> from pbcore.io import DataSet, SubreadSet
+            >>> ds1 = DataSet(data.getXml())
+            >>> # Deep copying datasets is easy:
+            >>> ds2 = ds1.copy()
+            >>> # But the resulting uuid's should be different.
+            >>> ds1 == ds2
+            False
+            >>> ds1.uuid == ds2.uuid
+            False
+            >>> ds1 is ds2
+            False
+            >>> # Most members are identical
+            >>> ds1.name == ds2.name
+            True
+            >>> ds1.externalResources == ds2.externalResources
+            True
+            >>> ds1.filters == ds2.filters
+            True
+            >>> ds1.subdatasets == ds2.subdatasets
+            True
+            >>> len(ds1.subdatasets) == 2
+            True
+            >>> len(ds2.subdatasets) == 2
+            True
+            >>> # Except for the one that stores the uuid:
+            >>> ds1.objMetadata == ds2.objMetadata
+            False
+            >>> # And of course identical != the same object:
+            >>> assert not reduce(lambda x, y: x or y,
+            ...                   [ds1d is ds2d for ds1d in
+            ...                    ds1.subdatasets for ds2d in
+            ...                    ds2.subdatasets])
+            >>> # But types are maintained:
+            >>> ds1 = DataSet(data.getXml(no=10))
+            >>> ds1.metadata # doctest:+ELLIPSIS
+            <SubreadSetMetadata...
+            >>> ds2 = ds1.copy()
+            >>> ds2.metadata # doctest:+ELLIPSIS
+            <SubreadSetMetadata...
+            >>> # Lets try casting
+            >>> ds1 = DataSet(data.getBam())
+            >>> ds1 # doctest:+ELLIPSIS
+            <DataSet...
+            >>> ds1 = ds1.copy(asType='SubreadSet')
+            >>> ds1 # doctest:+ELLIPSIS
+            <SubreadSet...
+            >>> # Lets do some illicit casting
+            >>> ds1 = ds1.copy(asType='ReferenceSet')
+            Traceback (most recent call last):
+            TypeError: Cannot cast from SubreadSet to ReferenceSet
+            >>> # Lets try not having to cast
+            >>> ds1 = SubreadSet(data.getBam())
+            >>> ds1 # doctest:+ELLIPSIS
+            <SubreadSet...
+        """
+        if asType:
+            try:
+                tbr = self._castableTypes[asType]()
+            except KeyError:
+                raise TypeError("Cannot cast from {s} to "
+                                "{t}".format(s=type(self).__name__, t=asType))
+            tbr.__dict__.update(copy.deepcopy(self.__dict__))
+            # update the metatypes: (TODO: abstract out 'iterate over all
+            # resources and modify the element that contains them')
+            tbr.makePathsAbsolute()
+            return tbr
+        result = copy.deepcopy(self)
+        result.newUuid()
+        return result
+
+    def split(self, chunks=0, ignoreSubDatasets=False, contigs=False):
+        """Deep copy the DataSet into a number of new DataSets containing
+        roughly equal chunks of the ExternalResources or subdatasets.
+
+        Args:
+            chunks: the number of chunks to split the DataSet. When chunks=0,
+                    create one DataSet per subdataset, or failing that
+                    ExternalResource
+            ignoreSubDatasets: F/T (False) do not split on datasets, only split
+                               on ExternalResources
+            contigs: (False) split on contigs instead of external resources or
+                     subdatasets
+        Returns:
+            A list of new DataSet objects (all other information deep copied).
+
+        Doctest:
+            >>> import pbcore.data.datasets as data
+            >>> from pbcore.io import AlignmentSet
+            >>> # splitting is pretty intuitive:
+            >>> ds1 = AlignmentSet(data.getXml())
+            >>> # but divides up extRes's, so have more than one:
+            >>> ds1.numExternalResources > 1
+            True
+            >>> # the default is one AlignmentSet per ExtRes:
+            >>> dss = ds1.split()
+            >>> len(dss) == ds1.numExternalResources
+            True
+            >>> # but you can specify a number of AlignmentSets to produce:
+            >>> dss = ds1.split(chunks=1)
+            >>> len(dss) == 1
+            True
+            >>> dss = ds1.split(chunks=2, ignoreSubDatasets=True)
+            >>> len(dss) == 2
+            True
+            >>> # The resulting objects are similar:
+            >>> dss[0].uuid == dss[1].uuid
+            False
+            >>> dss[0].name == dss[1].name
+            True
+            >>> # Previously merged datasets are 'unmerged' upon split, unless
+            >>> # otherwise specified.
+            >>> # Lets try merging and splitting on subdatasets:
+            >>> ds1 = AlignmentSet(data.getXml(8))
+            >>> ds1.totalLength
+            123588
+            >>> ds1tl = ds1.totalLength
+            >>> ds2 = AlignmentSet(data.getXml(11))
+            >>> ds2.totalLength
+            117086
+            >>> ds2tl = ds2.totalLength
+            >>> # merge:
+            >>> dss = ds1 + ds2
+            >>> dss.totalLength == (ds1tl + ds2tl)
+            True
+            >>> # unmerge:
+            >>> ds1, ds2 = sorted(
+            ... dss.split(2), key=lambda x: x.totalLength, reverse=True)
+            >>> ds1.totalLength == ds1tl
+            True
+            >>> ds2.totalLength == ds2tl
+            True
+        """
+        if contigs:
+            return self._split_contigs(chunks)
+
+        # Lets only split on datasets if actual splitting will occur,
+        # And if all subdatasets have the required balancing key (totalLength)
+        if (len(self.subdatasets) > 1
+                and not ignoreSubDatasets):
+            return self._split_subdatasets(chunks)
+
+        atoms = self.externalResources
+        balanceKey = len
+
+        # If chunks not specified, split to one DataSet per
+        # ExternalResource, but no fewer than one ExternalResource per
+        # Dataset
+        if not chunks or chunks > len(atoms):
+            chunks = len(atoms)
+
+        # Nothing to split!
+        if chunks == 1:
+            tbr = [self.copy()]
+            return tbr
+
+        # duplicate
+        results = [self.copy() for _ in range(chunks)]
+
+        # replace default (complete) ExternalResource lists
+        log.debug("Starting chunking")
+        chunks = self._chunkList(atoms, chunks, balanceKey)
+        log.debug("Done chunking")
+        log.debug("Modifying filters or resources")
+        for result, chunk in zip(results, chunks):
+            result.externalResources.resources = copy.deepcopy(chunk)
+
+        # UniqueId was regenerated when the ExternalResource list was
+        # whole, therefore we need to regenerate it again here
+        log.debug("Generating new UUID")
+        for result in results:
+            result.newUuid()
+
+        # Update the basic metadata for the new DataSets from external
+        # resources, or at least mark as dirty
+        # TODO
+        return results
+
+    def _split_atoms(self, atoms, num_chunks):
+        """Divide up atomic units (e.g. contigs) into chunks (refId, size,
+        segments)
+        """
+        for _ in range(num_chunks - len(atoms)):
+            largest = max(atoms, key=lambda x: x[1]/x[2])
+            largest[2] += 1
+        return atoms
+
+    def _split_contigs(self, chunks):
+        """Split a dataset into reference windows based on contigs.
+
+        Args:
+            chunks: The number of chunks to emit. If chunks < # contigs,
+                    contigs are grouped by size. If chunks == contigs, one
+                    contig is assigned to each dataset regardless of size. If
+                    chunks >= contigs, contigs are split into roughly equal
+                    chunks (<= 1.0 contig per file).
+
+        """
+        # removed the non-trivial case so that it is still filtered to just
+        # contigs with associated records
+
+        # The format is rID, start, end, for a reference window
+        refNames = self.refNames
+        log.debug("{i} references found".format(i=len(refNames)))
+        log.debug("Finding contigs")
+        if len(refNames) < 100:
+            atoms = [(rn, None, None) for rn in refNames if
+                     next(self.readsInReference(rn), None)]
+        else:
+            log.debug("Skipping records for each reference check")
+            atoms = [(rn, None, None) for rn in self.refNames]
+
+        # The window length is used for balancing
+        # TODO switch it to countRecords
+        balanceKey = lambda x: x[2] - x[1]
+        if not chunks:
+            chunks = len(atoms)
+        log.debug("Fetching reference lengths")
+        refLens = self.refLengths
+        # refwindow format: rId, start, end
+        atoms = [(rn, 0, refLens[rn]) for rn, _, _ in atoms]
+        if chunks > len(atoms):
+            # splitting atom format is slightly different (but more compatible
+            # going forward with countRecords): (rId, size, segments)
+            atoms = [[rn, refLens[rn], 1] for rn, _, _ in atoms]
+            log.debug("Splitting atoms")
+            atoms = self._split_atoms(atoms, chunks)
+            segments = []
+            for atom in atoms:
+                segment_size = atom[1]/atom[2]
+                sub_segments = [(atom[0], segment_size * i, segment_size *
+                                 (i + 1)) for i in range(atom[2])]
+                # if you can't divide it evenly you may have some messiness
+                # with the last window. Fix it:
+                tmp = sub_segments.pop()
+                tmp = (tmp[0], tmp[1], refLens[tmp[0]])
+                sub_segments.append(tmp)
+                segments.extend(sub_segments)
+            atoms = segments
+        log.debug("Done defining chunks")
+
+        # duplicate
+        log.debug("Making copies")
+        results = [self.copy() for _ in range(chunks)]
+
+        # replace default (complete) ExternalResource lists
+        log.debug("Distributing chunks")
+        chunks = self._chunkList(atoms, chunks, balanceKey)
+        log.debug("Done chunking")
+        log.debug("Modifying filters or resources")
+        for result, chunk in zip(results, chunks):
+            if not atoms[0][2] is None:
+                result.filters.addRequirement(
+                    rname=[('=', c[0]) for c in chunk],
+                    tStart=[('>', c[1]) for c in chunk],
+                    tEnd=[('<', c[2]) for c in chunk])
+            else:
+                result.filters.addRequirement(
+                    rname=[('=', c[0]) for c in chunk])
+
+        # UniqueId was regenerated when the ExternalResource list was
+        # whole, therefore we need to regenerate it again here
+        log.debug("Generating new UUID")
+        for result in results:
+            result.newUuid()
+
+        # Update the basic metadata for the new DataSets from external
+        # resources, or at least mark as dirty
+        # TODO
+        return results
+
+    def _split_subdatasets(self, chunks):
+        """Split on subdatasets
+
+        Args:
+            chunks: Split in to <= chunks pieces. If chunks > subdatasets,
+                    fewer chunks will be produced.
+
+        """
+        if not chunks or chunks > len(self.subdatasets):
+            chunks = len(self.subdatasets)
+
+        if (chunks == len(self.subdatasets)
+                and all([sds.externalResources.resourceIds
+                         for sds in self.subdatasets])):
+            return self.subdatasets
+
+        # Chunk subdatasets into sets of subdatasets of roughly equal
+        # lengths
+        chunks = self._chunkList(
+            self.subdatasets, chunks,
+            balanceKey=lambda x: x.metadata.numRecords)
+
+        # Merge the lists of datasets into single datasets to return
+        results = []
+        for subDatasets in chunks:
+            newCopy = self.copy()
+            newCopy.subdatasets = subDatasets
+            newCopy.newUuid()
+            results.append(newCopy)
+        return results
+
+    def write(self, outFile, validate=True, relPaths=False):
+        """Write to disk as an XML file
+
+        Args:
+            outFile: The filename of the xml file to be created
+            validate: T/F (True) validate the ExternalResource ResourceIds
+            relPaths: T/F (False) make the ExternalResource ResourceIds
+                      relative instead of absolute filenames
+
+        Doctest:
+            >>> import pbcore.data.datasets as data
+            >>> from pbcore.io import DataSet
+            >>> import tempfile, os
+            >>> outdir = tempfile.mkdtemp(suffix="dataset-doctest")
+            >>> outfile = os.path.join(outdir, 'tempfile.xml')
+            >>> ds1 = DataSet(data.getXml())
+            >>> ds1.write(outfile, validate=False)
+            >>> ds2 = DataSet(outfile)
+            >>> ds1 == ds2
+            True
+        """
+        # prep for writing, fill some fields that aren't filled elsewhere:
+        self.objMetadata.setdefault(
+            "MetaType", "PacBio.DataSet." + self.__class__.__name__)
+        self.objMetadata.setdefault("Name", "")
+        self.objMetadata.setdefault("Tags", "")
+        # fix paths if validate:
+        if validate:
+            if relPaths:
+                self.makePathsRelative(os.path.dirname(outFile))
+            else:
+                self.makePathsAbsolute()
+        xml = toXml(self)
+        if validate:
+            validateString(xml, relTo=outFile)
+        fileName = urlparse(outFile).path.strip()
+        with open(fileName, 'w') as outFile:
+            outFile.writelines(xml)
+
+    def loadStats(self, filename):
+        """Load pipeline statistics from a <moviename>.sts.xml file. The subset
+        of these data that are defined in the DataSet XSD become available
+        through via DataSet.metadata.summaryStats.<...> and will be written out
+        to the DataSet XML format according to the DataSet XML XSD.
+
+        Args:
+            filename: the filename of a <moviename>.sts.xml file
+
+        Doctest:
+            >>> import pbcore.data.datasets as data
+            >>> from pbcore.io import AlignmentSet
+            >>> ds1 = AlignmentSet(data.getXml(8))
+            >>> # TODO: renable when up to date sts.xml test files available
+            >>> #ds1.loadStats(data.getStats())
+            >>> #ds2 = AlignmentSet(data.getXml(11))
+            >>> #ds2.loadStats(data.getStats())
+            >>> #ds3 = ds1 + ds2
+            >>> #ds1.metadata.summaryStats.prodDist.bins
+            >>> #[1576, 901, 399, 0]
+            >>> #ds2.metadata.summaryStats.prodDist.bins
+            >>> #[1576, 901, 399, 0]
+            >>> #ds3.metadata.summaryStats.prodDist.bins
+            >>> #[3152, 1802, 798, 0]
+
+        """
+        statsMetadata = DataSetReader.parseStats(filename)
+        self.metadata.append(statsMetadata)
+
+    def processFilters(self):
+        """Generate a list of functions to apply to a read, all of which return
+        T/F. Each function is an OR filter, so any() true passes the read.
+        These functions are the AND filters, and will likely check all() of
+        other functions. These filtration functions are cached so that they are
+        not regenerated from the base filters for every read"""
+        # Allows us to not process all of the filters each time. This is marked
+        # as dirty (= []) by addFilters etc. Filtration can be turned off by
+        # setting this to [lambda x: True], which can be reversed by marking
+        # the cache dirty. See disableFilters/enableFilters
+        if self._cachedFilters:
+            return self._cachedFilters
+        filters = self.filters.tests()
+        # Having no filters means no opportunity to pass. Fix by filling with
+        # always-true (similar to disableFilters())
+        if not filters:
+            self._cachedFilters = [lambda x: True]
+            return self._cachedFilters
+        self._cachedFilters = filters
+        return filters
+
+    def _resolveLocation(self, fname, possibleRelStart):
+        """Find the absolute path of a file that exists relative to '.' or
+        possibleRelStart."""
+        if os.path.exists(fname):
+            return os.path.abspath(fname)
+        if os.path.exists(possibleRelStart):
+            if os.path.exists(os.path.join(possibleRelStart, fname)):
+                return os.path.abspath(os.path.join(possibleRelStart, fname))
+        log.error("Including unresolved file: {f}".format(f=fname))
+        return fname
+
+    def makePathsAbsolute(self, curStart="."):
+        """As part of the validation process, make all ResourceIds absolute
+        URIs rather than relative paths. Generally not called by API users.
+
+        Args:
+            curStart: The location from which relative paths should emanate.
+        """
+        self._changePaths(
+            lambda x, s=curStart: self._resolveLocation(x, s))
+
+    def makePathsRelative(self, outDir=False):
+        """Make things easier for writing test cases: make all
+        ResourceIds relative paths rather than absolute paths.
+        A less common use case for API consumers.
+
+        Args:
+            outDir: The location from which relative paths should originate
+
+        """
+        if outDir:
+            self._changePaths(lambda x, s=outDir: os.path.relpath(x, s))
+        else:
+            self._changePaths(os.path.relpath)
+
+    def _changePaths(self, osPathFunc, checkMetaType=True):
+        """Change all resourceId paths in this DataSet according to the
+        osPathFunc provided.
+
+        Args:
+            osPathFunc: A function for modifying paths (e.g. os.path.abspath)
+            checkMetaType: Update the metatype of externalResources if needed
+        """
+        # check all ExternalResources
+        stack = list(self.externalResources)
+        while stack:
+            item = stack.pop()
+            resId = item.resourceId
+            if not resId:
+                continue
+            currentPath = urlparse(resId)
+            if currentPath.scheme == 'file' or not currentPath.scheme:
+                currentPath = currentPath.path
+                currentPath = osPathFunc(currentPath)
+                item.resourceId = currentPath
+                if checkMetaType:
+                    self._updateMetaType(item)
+            try:
+                stack.extend(list(item.indices))
+            except AttributeError:
+                # Some things just don't have indices
+                pass
+
+        # check all DataSetMetadata
+
+        # check all SubDatasets
+        for dataset in self.subdatasets:
+            dataset._changePaths(osPathFunc)
+
+    def _updateMetaType(self, resource):
+        """Infer and set the metatype of 'resource' if it doesn't already have
+        one."""
+        if not resource.metaType:
+            file_type = _fileType(resource.resourceId)
+            resource.metaType = self._metaTypeMapping().get(file_type, "")
+
+    @staticmethod
+    def _metaTypeMapping():
+        """The available mappings between file extension and MetaType (informed
+        by current class)."""
+        # no metatypes for generic DataSet
+        return {}
+
+    def disableFilters(self):
+        """Disable read filtering for this object"""
+        self.noFiltering = True
+        self._cachedFilters = [lambda x: True]
+
+    def enableFilters(self):
+        """Re-enable read filtering for this object"""
+        self.noFiltering = False
+        self._cachedFilters = []
+
+    def addFilters(self, newFilters):
+        """Add new or extend the current list of filters. Public because there
+        is already a reasonably compelling reason (the console script entry
+        point). Most often used by the __add__ method.
+
+        Args:
+            newFilters: a Filters object or properly formatted Filters record
+
+        Doctest:
+            >>> import pbcore.data.datasets as data
+            >>> from pbcore.io import DataSet
+            >>> from pbcore.io.dataset.DataSetMembers import Filters
+            >>> ds1 = DataSet()
+            >>> filt = Filters()
+            >>> filt.addRequirement(rq=[('>', '0.85')])
+            >>> ds1.addFilters(filt)
+            >>> print ds1.filters
+            ( rq > 0.85 )
+            >>> # Or load with a DataSet
+            >>> ds2 = DataSet(data.getXml(16))
+            >>> print ds2.filters
+            ... # doctest:+ELLIPSIS
+            ( rname = E.faecalis...
+        """
+        self.filters.merge(copy.deepcopy(newFilters))
+        self._cachedFilters = []
+
+    def _checkObjMetadata(self, newMetadata):
+        """Check new object metadata (as opposed to dataset metadata) against
+        the object metadata currently in this DataSet for compatibility.
+
+        Args:
+            newMetadata: The object metadata of a DataSet being considered for
+                         merging
+        """
+        if newMetadata.get('Version') > self.objMetadata.get('Version'):
+            raise ValueError("Wrong dataset version for merging {v1} vs "
+                             "{v2}".format(v1=newMetadata.get('Version'),
+                                           v2=self.objMetadata.get('Version')))
+
+
+    def addMetadata(self, newMetadata, **kwargs):
+        """Add dataset metadata.
+
+        Currently we ignore duplicates while merging (though perhaps other
+        transformations are more appropriate) and plan to remove/merge
+        conflicting metadata with identical attribute names.
+
+        All metadata elements should be strings, deepcopy shouldn't be
+        necessary.
+
+        This method is most often used by the __add__ method, rather than
+        directly.
+
+        Args:
+            newMetadata: a dictionary of object metadata from an XML file (or
+                         carefully crafted to resemble one), or a wrapper
+                         around said dictionary
+            kwargs: new metadata fields to be piled into the current metadata
+                    (as an attribute)
+
+        Doctest:
+            >>> import pbcore.data.datasets as data
+            >>> from pbcore.io import DataSet
+            >>> ds = DataSet()
+            >>> # it is possible to add new metadata:
+            >>> ds.addMetadata(None, Name='LongReadsRock')
+            >>> print ds._metadata.getV(container='attrib', tag='Name')
+            LongReadsRock
+            >>> # but most will be loaded and modified:
+            >>> ds2 = DataSet(data.getXml(no=8))
+            >>> ds2._metadata.totalLength
+            123588
+            >>> ds2._metadata.totalLength = 100000
+            >>> ds2._metadata.totalLength
+            100000
+            >>> ds2._metadata.totalLength += 100000
+            >>> ds2._metadata.totalLength
+            200000
+            >>> #TODO: renable when up to date sts.xml test files available
+            >>> #ds3 = DataSet(data.getXml(no=8))
+            >>> #ds3.loadStats(data.getStats())
+            >>> #ds4 = DataSet(data.getXml(no=11))
+            >>> #ds4.loadStats(data.getStats())
+            >>> #ds5 = ds3 + ds4
+        """
+        if newMetadata:
+            # if this record is not wrapped, wrap for easier merging
+            if not isinstance(newMetadata, DataSetMetadata):
+                newMetadata = DataSetMetadata(newMetadata)
+            # merge
+            if self.metadata:
+                self.metadata.merge(newMetadata)
+            # or initialize
+            else:
+                self._metadata = newMetadata
+
+        for key, value in kwargs.items():
+            self.metadata.addMetadata(key, value)
+
+    def updateCounts(self):
+        try:
+            if not self.hasPbi:
+                log.debug("Updating counts not supported without pbi")
+                return
+            self.metadata.numRecords = len(self)
+            self.metadata.totalLength = self._totalLength
+        # I would prefer to just catch IOError and UnavailableFeature
+        except Exception:
+            log.debug("Files not found, metadata not "
+                      "populated")
+            self.metadata.numRecords = -1
+            self.metadata.totalLength = -1
+
+
+    def addExternalResources(self, newExtResources):
+        """Add additional ExternalResource objects, ensuring no duplicate
+        resourceIds. Most often used by the __add__ method, rather than
+        directly.
+
+        Args:
+            newExtResources: A list of new ExternalResource objects, either
+                             created de novo from a raw bam input, parsed from
+                             an xml input, or already contained in a separate
+                             DataSet object and being merged.
+        Doctest:
+            >>> from pbcore.io.dataset.DataSetMembers import ExternalResource
+            >>> from pbcore.io import DataSet
+            >>> ds = DataSet()
+            >>> # it is possible to add ExtRes's as ExternalResource objects:
+            >>> er1 = ExternalResource()
+            >>> er1.resourceId = "test1.bam"
+            >>> er2 = ExternalResource()
+            >>> er2.resourceId = "test2.bam"
+            >>> er3 = ExternalResource()
+            >>> er3.resourceId = "test1.bam"
+            >>> ds.addExternalResources([er1])
+            >>> len(ds.externalResources)
+            1
+            >>> # different resourceId: succeeds
+            >>> ds.addExternalResources([er2])
+            >>> len(ds.externalResources)
+            2
+            >>> # same resourceId: fails
+            >>> ds.addExternalResources([er3])
+            >>> len(ds.externalResources)
+            2
+            >>> # but it is probably better to add them a little deeper:
+            >>> ds.externalResources.addResources(
+            ...     ["test3.bam"])[0].addIndices(["test3.bam.bai"])
+        """
+        # Build list of current resourceIds
+        resourceIds = [extRes.resourceId for extRes in
+                       self.externalResources]
+
+        for newExtRes in newExtResources:
+            # merge duplicates instead of adding them
+            if newExtRes.resourceId in resourceIds:
+                first = resourceIds.index(newExtRes.resourceId)
+                self.externalResources[first].merge(newExtRes)
+
+            # add non-duplicates, update the list of current resourceIds
+            else:
+                self.externalResources.append(newExtRes)
+                resourceIds.append(newExtRes.resourceId)
+
+    def addDatasets(self, otherDataSet):
+        """Add subsets to a DataSet object using other DataSets.
+
+        The following method of enabling merge-based split prevents nesting of
+        datasets more than one deep. Nested relationships are flattened.
+
+        .. note::
+
+            Most often used by the __add__ method, rather than directly.
+
+        """
+        if otherDataSet.subdatasets:
+            self.subdatasets.extend(otherDataSet.subdatasets)
+        else:
+            self.subdatasets.append(otherDataSet)
+
+    def _openFiles(self, refFile=None):
+        """Open the files (assert they exist, assert they are of the proper
+        type before accessing any file)
+        """
+        log.debug("Opening resources")
+        for extRes in self.externalResources:
+            location = urlparse(extRes.resourceId).path
+            try:
+                resource = openIndexedAlignmentFile(
+                    location,
+                    referenceFastaFname=refFile)
+            except (IOError, ValueError):
+                log.info("pbi file missing for {f}, operating with "
+                         "reduced speed and functionality".format(
+                             f=location))
+                resource = openAlignmentFile(location,
+                                             referenceFastaFname=refFile)
+            if not resource:
+                raise IOError("{f} fails to open".format(f=location))
+            self._openReaders.append(resource)
+        log.debug("Done opening resources")
+
+
+    def resourceReaders(self, refName=False):
+        """A generator of Indexed*Reader objects for the ExternalResources
+        in this DataSet.
+
+        Args:
+            refName: Only yield open resources if they have refName in their
+                     referenceInfoTable
+
+        Yields:
+            An open indexed alignment file
+
+        Doctest:
+            >>> import pbcore.data.datasets as data
+            >>> from pbcore.io import DataSet
+            >>> ds = DataSet(data.getBam())
+            >>> for seqFile in ds.resourceReaders():
+            ...     for record in seqFile:
+            ...         print 'hn: %i' % record.holeNumber # doctest:+ELLIPSIS
+            hn: ...
+
+        """
+        if refName:
+            if (not refName in self.refNames and
+                    not refName in self.fullRefNames):
+                _ = int(refName)
+                refName = self._idToRname(refName)
+
+        if not self._openReaders:
+            self._openFiles()
+        if refName:
+            return [resource for resource in self._openReaders
+                    if refName in resource.referenceInfoTable['FullName'] or
+                    refName in resource.referenceInfoTable['Name']]
+        else:
+            return self._openReaders
+
+    @property
+    def indexRecords(self):
+        """Return a recarray summarizing all of the records in all of the
+        resources that conform to those filters addressing parameters cached in
+        the pbi.
+
+        """
+        assert self.hasPbi
+        tbr = []
+        for rr in self.resourceReaders():
+            indices = rr.index
+            tIdMap = {n: name
+                      for n, name in enumerate(rr.referenceInfoTable['Name'])}
+            filts = self._filters.tests(readType='pbi', tIdMap=tIdMap)
+
+            if not filts or self.noFiltering:
+                tbr.append(indices)
+                continue
+
+            mask = np.zeros(len(indices), dtype=bool)
+            log.info("{n} rows found in this pbi".format(n=len(indices)))
+            # remove reads per filter
+            for i, read in enumerate(indices):
+                if any([filt(read) for filt in filts]):
+                    mask[i] = True
+            tbr.append(np.extract(mask, indices))
+        tbr = reduce(np.append, tbr)
+        return tbr
+
+    @property
+    @filtered
+    def records(self):
+        """A generator of (usually) BamAlignment objects for the
+        records in one or more Bam files pointed to by the
+        ExternalResources in this DataSet.
+
+        Yields:
+            A BamAlignment object
+
+        Doctest:
+            >>> import pbcore.data.datasets as data
+            >>> from pbcore.io import DataSet
+            >>> ds = DataSet(data.getBam())
+            >>> for record in ds.records:
+            ...     print 'hn: %i' % record.holeNumber # doctest:+ELLIPSIS
+            hn: ...
+        """
+        for resource in self.resourceReaders():
+            for record in resource:
+                yield record
+
+    @filtered
+    def __iter__(self):
+        """ Iterate over the records. (sorted for AlignmentSet objects)"""
+        for record in self.records:
+            yield record
+
+
+    @property
+    def _totalLength(self):
+        """Used to populate metadata in updateCounts"""
+        tot = 0
+        for record in self.indexRecords:
+            tot += record.aEnd - record.aStart
+        return tot
+
+
+    @property
+    def subSetNames(self):
+        """The subdataset names present in this DataSet"""
+        subNames = []
+        for sds in self.subdatasets:
+            subNames.extend(sds.name)
+        return subNames
+
+    @filtered
+    def readsInSubDatasets(self, subNames=[]):
+        """To be used in conjunction with self.subSetNames"""
+        if self.subdatasets:
+            for sds in self.subdatasets:
+                if subNames and sds.name not in subNames:
+                    continue
+                # subdatasets often don't have the same resourcess
+                if not sds.externalResources.resourceIds:
+                    sds.externalResources = self.externalResources
+                # this should enforce the subdataset filters:
+                for read in sds.records:
+                    yield read
+        else:
+            for read in self.records:
+                yield read
+
+    @property
+    def refWindows(self):
+        """Going to be tricky unless the filters are really focused on
+        windowing the reference. Much nesting or duplication and the correct
+        results are really not guaranteed"""
+        windowTuples = []
+        nameIDs = self.refInfo('Name')
+        refLens = None
+        for name, refID in nameIDs:
+            for filt in self._filters:
+                thisOne = False
+                for param in filt:
+                    if param.name == 'rname':
+                        if param.value == name:
+                            thisOne = True
+                if thisOne:
+                    winstart = 0
+                    winend = -1
+                    for param in filt:
+                        if param.name == 'tstart':
+                            winstart = param.value
+                        if param.name == 'tend':
+                            winend = param.value
+                    # If the filter is just for rname, fill the window
+                    # boundaries (pricey but worth the guaranteed behavior)
+                    if winend == -1:
+                        if not refLens:
+                            refLens = self.refLengths
+                        winend = refLens[name]
+                    windowTuples.append((refID, int(winstart), int(winend)))
+        # no tuples found: return full length of each reference
+        if not windowTuples:
+            for name, refId in nameIDs:
+                if not refLens:
+                    refLens = self.refLengths
+                refLen = refLens[name]
+                windowTuples.append((refId, 0, refLen))
+        return windowTuples
+
+    @property
+    def refNames(self):
+        """A list of reference names (id)."""
+        if self.isCmpH5:
+            return [self._cleanCmpName(name) for _, name in
+                    self.refInfo('FullName')]
+        return sorted([name for _, name in self.refInfo('Name')])
+
+    def _cleanCmpName(self, name):
+        return splitFastaHeader(name)[0]
+
+    @property
+    def refLengths(self):
+        """A dict of refName: refLength"""
+        return {name: length for name, length in self.refInfo('Length')}
+
+    def refLength(self, rname):
+        """The length of reference 'rname'. This is expensive, so if you're
+        going to do many lookups cache self.refLengths locally and use that."""
+        lut = self.refLengths
+        return lut[rname]
+
+    @property
+    def fullRefNames(self):
+        """A list of reference full names (full header)."""
+        return [name for _, name in self.refInfo('FullName')]
+
+    def refInfo(self, key):
+        """The reference names present in the referenceInfoTable of the
+        ExtResources.
+
+        Args:
+            key: a key for the referenceInfoTable of each resource
+        Returns:
+            A dictionary of refrence name: key_result pairs"""
+        # sample
+        names = []
+        infos = []
+        #for resource in self.resourceReaders():
+            #names.extend(resource.referenceInfoTable['FullName'])
+            #infos.extend(resource.referenceInfoTable[key])
+        names = self.referenceInfoTable['Name']
+        infos = self.referenceInfoTable[key]
+        # remove dupes
+        sampled = zip(names, infos)
+        sampled = list(set(sampled))
+        # filter
+        if not self.noFiltering:
+            sampled = [(name, info) for name, info in sampled
+                       if self._filters.testParam('rname', name)]
+        return sampled
+
+    @filtered
+    def readsInReference(self, refName, justIndices=False):
+        """A generator of (usually) BamAlignment objects for the
+        reads in one or more Bam files pointed to by the ExternalResources in
+        this DataSet that are mapped to the specified reference genome.
+
+        Args:
+            refName: the name of the reference that we are sampling.
+
+        Yields:
+            BamAlignment objects
+
+        Doctest:
+            >>> import pbcore.data.datasets as data
+            >>> from pbcore.io import DataSet
+            >>> ds = DataSet(data.getBam())
+            >>> for read in ds.readsInReference(ds.refNames[15]):
+            ...     print 'hn: %i' % read.holeNumber # doctest:+ELLIPSIS
+            hn: ...
+        """
+
+        if not refName in self.refNames and not refName in self.fullRefNames:
+            try:
+                _ = int(refName)
+            except ValueError:
+                raise StopIteration
+            refName = self._idToRname(refName)
+
+        # I would love to use readsInRange(refName, None, None), but
+        # IndexedBamReader breaks this (works for regular BamReader).
+
+        # So I have to do a little hacking...
+        refLen = 0
+        for resource in self.resourceReaders():
+            if (refName in resource.referenceInfoTable['Name'] or
+                    #refName in resource.referenceInfoTable['ID'] or
+                    refName in resource.referenceInfoTable['FullName']):
+                refLen = resource.referenceInfo(refName).Length
+        if refLen:
+            # TODO if the bam file is indexed readsInRange returns a list.
+            # Calling this on the alignment results in every read in a list all
+            # at once. We can block it into smaller calls...
+            for read in self.readsInRange(refName, 0, refLen, justIndices):
+                yield read
+
+    @filtered
+    def readsInRange(self, refName, start, end, justIndices=False):
+        """A generator of (usually) BamAlignment objects for the reads in one
+        or more Bam files pointed to by the ExternalResources in this DataSet
+        that have at least one coordinate within the specified range in the
+        reference genome.
+
+        Rather than developing some convoluted approach for dealing with
+        auto-inferring the desired references, this method and self.refNames
+        should allow users to compose the desired query.
+
+        Args:
+            refName: the name of the reference that we are sampling
+            start: the start of the range (inclusive, index relative to
+                   reference)
+            end: the end of the range (inclusive, index relative to reference)
+            justIndices: Not yet implemented
+
+        Yields:
+            BamAlignment objects
+
+        Doctest:
+            >>> import pbcore.data.datasets as data
+            >>> from pbcore.io import DataSet
+            >>> ds = DataSet(data.getBam())
+            >>> for read in ds.readsInRange(ds.refNames[15], 100, 150):
+            ...     print 'hn: %i' % read.holeNumber # doctest:+ELLIPSIS
+            hn: ...
+        """
+        # This all breaks pretty horribly if refName is actually a refId.
+        if not refName in self.refNames and not refName in self.fullRefNames:
+            # we can think of this as an id then, I guess
+            _ = int(refName)
+            # we need the real refName, which may be hidden behind a mapping to
+            # resolve duplicate refIds between resources...
+            refName = self._idToRname(refName)
+
+        # merge sort before yield
+        if self.numExternalResources > 1:
+            if justIndices:
+                try:
+                    read_its = [iter(rr.readsInRange(refName, start, end,
+                                                     justIndices))
+                                for rr in self.resourceReaders()]
+                except Exception:
+                    log.warn("This would be faster with a .pbi file")
+                    read_its = [iter(rr.readsInRange(refName, start, end))
+                                for rr in self.resourceReaders()]
+            else:
+                read_its = [iter(rr.readsInRange(refName, start, end))
+                            for rr in self.resourceReaders()]
+            # buffer one element from each generator
+            currents = [next(its, None) for its in read_its]
+            # remove empty iterators
+            read_its = [it for it, cur in zip(read_its, currents) if cur]
+            currents = [cur for cur in currents if cur]
+            while len(read_its) != 0:
+                # pick the first one to yield
+                first_i, first = min(enumerate(currents),
+                                     key=lambda x: x[1].tStart)
+                # update the buffer
+                try:
+                    currents[first_i] = next(read_its[first_i])
+                except StopIteration:
+                    del read_its[first_i]
+                    del currents[first_i]
+                yield first
+        else:
+            # the above will work in either case, but this might be ever so
+            # slightly faster
+            for resource in self.resourceReaders():
+                for read in resource.readsInRange(refName, start, end):
+                    yield read
+
+    def _idToRname(self, rId):
+        """Map the DataSet.referenceInfoTable.ID to the superior unique
+        reference identifier: referenceInfoTable.Name
+
+        Args:
+            rId: The DataSet.referenceInfoTable.ID of interest
+
+        Returns:
+            The referenceInfoTable.Name corresponding to rId
+        """
+        resNo, rId = self._referenceIdMap[rId]
+        if self.isCmpH5:
+            rId -= 1
+        if self.isCmpH5:
+            # This is so not how it is supposed to be. This is what CmpIO
+            # recognizes as the 'shortname' pretty much throughout...
+            refName = self.resourceReaders()[
+                resNo].referenceInfoTable[rId]['FullName']
+        else:
+            refName = self.resourceReaders()[
+                resNo].referenceInfoTable[rId]['Name']
+        return refName
+
+    def toFofn(self, outfn=None, uri=False, relative=False):
+        """Return a list of resource filenames (and write to optional outfile)
+
+        Args:
+            outfn: (None) the file to which the resouce filenames are to be
+                   written. If None, the only emission is a returned list of
+                   file names.
+            uri: T/F (False) write the resource filenames as URIs.
+            relative: (False) emit paths relative to outfofn or '.' if no
+                      outfofn
+
+        Returns:
+            A list of filenames or uris
+
+        Writes:
+            (Optional) A file containing a list of filenames or uris
+
+        Doctest:
+            >>> from pbcore.io import DataSet
+            >>> DataSet("bam1.bam", "bam2.bam").toFofn(uri=False)
+            ['bam1.bam', 'bam2.bam']
+        """
+        lines = [er.resourceId for er in self.externalResources]
+        if not uri:
+            lines = [urlparse(line).path for line in lines]
+        if relative is True:
+            # make it relative to the fofn location
+            if outfn:
+                lines = [os.path.relpath(line, os.path.dirname(outfn))
+                         for line in lines]
+            # or current location
+            else:
+                lines = [os.path.relpath(line) for line in lines]
+        if outfn:
+            with open(outfn, 'w') as outFile:
+                outFile.writelines(line + '\n' for line in lines)
+        return lines
+
+    def toExternalFiles(self):
+        """Returns a list of top level external resources (no indices)."""
+        files = self.externalResources.resourceIds
+        tbr = []
+        for fname in files:
+            tbr.append(self._resolveLocation(fname, '.'))
+        return tbr
+
+    @property
+    def _castableTypes(self):
+        """The types to which this DataSet type may be cast. This is a property
+        instead of a member variable as we can enforce casting limits here (and
+        modify if needed by overriding them in subclasses).
+
+        Returns:
+            A dictionary of MetaType->Class mappings, e.g. 'DataSet': DataSet
+        """
+        if type(self).__name__ != 'DataSet':
+            return {'DataSet': DataSet,
+                    type(self).__name__: type(self)}
+        return {'DataSet': DataSet,
+                'SubreadSet': SubreadSet,
+                'HdfSubreadSet': HdfSubreadSet,
+                'AlignmentSet': AlignmentSet,
+                'ContigSet': ContigSet,
+                'ConsensusReadSet': ConsensusReadSet,
+                'ReferenceSet': ReferenceSet,
+                'BarcodeSet': BarcodeSet}
+    @property
+    def metadata(self):
+        """Return the DataSet metadata as a DataSetMetadata object. Attributes
+        should be populated intuitively, but see DataSetMetadata documentation
+        for more detail."""
+        return self._metadata
+
+    @metadata.setter
+    def metadata(self, newDict):
+        """Set the metadata for this object. This is reasonably dangerous, as
+        the argument must be a properly formated data structure, as specified
+        in the DataSetMetadata documentation. This setter is primarily used
+        by other DataSet objects, rather than users or API consumers."""
+        if isinstance(newDict, DataSetMetadata):
+            self._metadata = newDict
+        else:
+            self._metadata = self._metadata.__class__(newDict)
+
+    @property
+    def filters(self):
+        """Limit setting to ensure cache hygiene and filter compatibility"""
+        self._filters.registerCallback(lambda x=self: x.reFilter())
+        return self._filters
+
+    @filters.setter
+    def filters(self, value):
+        """Limit setting to ensure cache hygiene and filter compatibility"""
+        self._filters = value
+
+    def reFilter(self):
+        """
+        The filters on this dataset have changed, update DataSet state as
+        needed
+        """
+        self._cachedFilters = []
+        self.updateCounts()
+        # TODO, somethign like this but that works:
+        #if self.metadata.summaryStats:
+            #self.metadata.summaryStats = None
+
+    @property
+    def numRecords(self):
+        """The number of records in this DataSet (from the metadata)"""
+        return self._metadata.numRecords
+
+    def countRecords(self, rname=None, window=None):
+        """Count the number of records mapped to 'rname' that overlap with
+        'window'
+        """
+        def count(iterable):
+            count = 0
+            for _ in iterable:
+                count += 1
+            return count
+
+        if window:
+            return count(self.readsInRange(rname, *window))
+        if rname:
+            return count(self.readsInReference(rname))
+        else:
+            count(self.records)
+
+    @property
+    def totalLength(self):
+        """The total length of this DataSet"""
+        return self._metadata.totalLength
+
+    @property
+    def uuid(self):
+        """The UniqueId of this DataSet"""
+        return self.objMetadata.get('UniqueId')
+
+    @property
+    def name(self):
+        """The name of this DataSet"""
+        return self.objMetadata.get('Name', '')
+
+    @name.setter
+    def name(self, value):
+        """The name of this DataSet"""
+        self.objMetadata['Name'] = value
+
+    @property
+    def numExternalResources(self):
+        """The number of ExternalResources in this DataSet"""
+        return len(self.externalResources)
+
+    def _pollResources(self, func, refName=None):
+        """Collect the responses to func on each resource (or those with reads
+        mapping to refName)."""
+        return [func(resource) for resource in self.resourceReaders(refName)]
+
+    def _unifyResponses(self, responses, keyFunc=lambda x: x):
+        """Make sure all of the responses from resources are the same."""
+        if len(responses) > 1:
+            # Check the rest against the first:
+            for res in responses[1:]:
+                if keyFunc(responses[0]) != keyFunc(res):
+                    raise ResourceMismatchError(responses)
+        return responses[0]
+
+    @property
+    def isCmpH5(self):
+        """Test whether all resources are cmp.h5 files"""
+        res = self._pollResources(lambda x: isinstance(x, CmpH5Reader))
+        return self._unifyResponses(res)
+
+    @property
+    def hasPbi(self):
+        """Test whether all resources are opened as IndexedBamReader objects"""
+        try:
+            res = self._pollResources(lambda x: isinstance(x,
+                                                           IndexedBamReader))
+            return self._unifyResponses(res)
+        except ResourceMismatchError:
+            log.error("Resources inconsistently indexed")
+            return False
+
+    def referenceInfo(self, refName):
+        """Select a row from the DataSet.referenceInfoTable using the reference
+        name as a unique key"""
+        if not self.isCmpH5:
+            for row in self.referenceInfoTable:
+                if row.Name == refName:
+                    return row
+        else:
+            for row in self.referenceInfoTable:
+                if row.FullName.startswith(refName):
+                    return row
+
+    @property
+    def referenceInfoTable(self):
+        """The merged reference info tables from the external resources.
+        Record.ID is remapped to a unique integer key (though using record.Name
+        is preferred). Record.Names are remapped for cmp.h5 files to be
+        consistent with bam files.
+        """
+        # This isn't really possible for cmp.h5 files (rowStart, rowEnd, for
+        # instance). Use the resource readers directly instead.
+        responses = self._pollResources(lambda x: x.referenceInfoTable)
+        if len(responses) > 1:
+            assert not self.isCmpH5 # see above
+            tbr = reduce(np.append, responses)
+            tbr = np.unique(tbr)
+            for i, rec in enumerate(tbr):
+                rec.ID = i
+            return tbr
+        else:
+            table = responses[0]
+            if self.isCmpH5:
+                for rec in table:
+                    rec.Name = self._cleanCmpName(rec.FullName)
+            return table
+
+    @property
+    def _referenceIdMap(self):
+        """Map the dataset shifted refIds to the [resource, refId] they came
+        from.
+        """
+        # This isn't really possible for cmp.h5 files (rowStart, rowEnd, for
+        # instance). Use the resource readers directly instead.
+        responses = self._pollResources(lambda x: x.referenceInfoTable)
+        if len(responses) > 1:
+            assert not self.isCmpH5 # see above
+            tbr = reduce(np.append, responses)
+            tbrMeta = []
+            for i, res in enumerate(responses):
+                for j in res['ID']:
+                    tbrMeta.append([i, j])
+            _, indices = np.unique(tbr, return_index=True)
+            tbrMeta = list(tbrMeta[i] for i in indices)
+            return {i: meta for i, meta in enumerate(tbrMeta)}
+        else:
+            return {i: [0, i] for i in responses[0]['ID']}
+
+    @property
+    def readGroupTable(self):
+        """Combine the readGroupTables of each external resource"""
+        responses = self._pollResources(lambda x: x.readGroupTable)
+        if len(responses) > 1:
+            tbr = reduce(np.append, responses)
+            return tbr
+        else:
+            return responses[0]
+
+    def hasPulseFeature(self, featureName):
+        responses = self._pollResources(
+            lambda x: x.hasPulseFeature(featureName))
+        return self._unifyResponses(responses)
+
+    def pulseFeaturesAvailable(self):
+        responses = self._pollResources(lambda x: x.pulseFeaturesAvailable())
+        return self._unifyResponses(responses)
+
+    def __getattr__(self, key):
+        identicalList = ['sequencingChemistry', 'isSorted', 'isEmpty',
+                         'readType', 'tStart', 'tEnd']
+        if key in identicalList:
+            responses = self._pollResources(lambda x: getattr(x, key))
+            return self._unifyResponses(responses)
+        else:
+            raise AttributeError("{c} has no attribute {a}".format(
+                c=self.__class__.__name__, a=key))
+
+    def _chunkList(self, inlist, chunknum, balanceKey=len):
+        """Divide <inlist> members into <chunknum> chunks roughly evenly using
+        a round-robin binning system, return list of lists.
+
+        This is a method so that balanceKey functions can access self."""
+        chunks = [[] for _ in range(chunknum)]
+        # a lightweight accounting of how big (entry 0) each sublist (numbered
+        # by entry 1) is getting
+        chunkSizes = [[0, i] for i in range(chunknum)]
+        for i, item in enumerate(sorted(inlist, key=balanceKey, reverse=True)):
+            # Refresh measure of bin fullness
+            chunkSizes.sort()
+            # Add one to the emptiest bin
+            chunks[chunkSizes[0][1]].append(item)
+            chunkSizes[0][0] += balanceKey(item)
+        return chunks
+
+class ResourceMismatchError(Exception):
+
+    def __init__(self, responses):
+        super(ResourceMismatchError, self).__init__()
+        self.responses = responses
+
+    def __str__(self):
+        return "Resources responded differently: " + ', '.join(
+            map(str, self.responses))
+
+class ReadSet(DataSet):
+    """Base type for read sets, should probably never be used as a concrete
+    class"""
+
+    def __init__(self, *files):
+        super(ReadSet, self).__init__()
+        self._metadata = SubreadSetMetadata()
+
+    def addMetadata(self, newMetadata, **kwargs):
+        """Add metadata specific to this subtype, while leaning on the
+        superclass method for generic metadata. Also enforce metadata type
+        correctness."""
+        # Validate, clean and prep input data
+        if newMetadata:
+            if isinstance(newMetadata, dict):
+                newMetadata = SubreadSetMetadata(newMetadata)
+            elif isinstance(newMetadata, SubreadSetMetadata) or (
+                    type(newMetadata).__name__ == 'DataSetMetadata'):
+                newMetadata = SubreadSetMetadata(newMetadata.record)
+            else:
+                raise TypeError("Cannot extend SubreadSetMetadata with "
+                                "{t}".format(t=type(newMetadata).__name__))
+
+        # Pull generic values, kwargs, general treatment in super
+        super(ReadSet, self).addMetadata(newMetadata, **kwargs)
+
+class HdfSubreadSet(ReadSet):
+
+    datasetType = DataSetMetaTypes.HDF_SUBREAD
+
+    @staticmethod
+    def _metaTypeMapping():
+        return {'bax.h5':'PacBio.SubreadFile.SubreadBaxFile', }
+
+
+class SubreadSet(ReadSet):
+    """DataSet type specific to Subreads
+
+    DocTest:
+
+        >>> from pbcore.io import DataSet, SubreadSet
+        >>> from pbcore.io.dataset.DataSetMembers import ExternalResources
+        >>> import pbcore.data.datasets as data
+        >>> ds1 = DataSet(data.getXml(no=5))
+        >>> ds2 = DataSet(data.getXml(no=5))
+        >>> # So they don't conflict:
+        >>> ds2.externalResources = ExternalResources()
+        >>> ds1 # doctest:+ELLIPSIS
+        <SubreadSet...
+        >>> ds1._metadata # doctest:+ELLIPSIS
+        <SubreadSetMetadata...
+        >>> ds1._metadata # doctest:+ELLIPSIS
+        <SubreadSetMetadata...
+        >>> ds1.metadata # doctest:+ELLIPSIS
+        <SubreadSetMetadata...
+        >>> len(ds1.metadata.collections)
+        1
+        >>> len(ds2.metadata.collections)
+        1
+        >>> ds3 = ds1 + ds2
+        >>> len(ds3.metadata.collections)
+        2
+        >>> ds4 = SubreadSet(data.getSubreadSet())
+        >>> ds4 # doctest:+ELLIPSIS
+        <SubreadSet...
+        >>> ds4._metadata # doctest:+ELLIPSIS
+        <SubreadSetMetadata...
+        >>> len(ds4.metadata.collections)
+        1
+    """
+
+    datasetType = DataSetMetaTypes.SUBREAD
+
+    @staticmethod
+    def _metaTypeMapping():
+        # This doesn't work for scraps.bam, whenever that is implemented
+        return {'bam':'PacBio.SubreadFile.SubreadBamFile',
+                'bai':'PacBio.Index.BamIndex',
+                'pbi':'PacBio.Index.PacBioIndex',
+                }
+
+
+class ConsensusReadSet(ReadSet):
+    """DataSet type specific to CCSreads. No type specific Metadata exists, so
+    the base class version is OK (this just ensures type representation on
+    output and expandability
+
+    Doctest:
+        >>> import pbcore.data.datasets as data
+        >>> from pbcore.io import DataSet, ConsensusReadSet
+        >>> ds1 = DataSet(data.getXml(2))
+        >>> ds1 # doctest:+ELLIPSIS
+        <ConsensusReadSet...
+        >>> ds1._metadata # doctest:+ELLIPSIS
+        <SubreadSetMetadata...
+        >>> ds2 = ConsensusReadSet(data.getXml(2))
+        >>> ds2 # doctest:+ELLIPSIS
+        <ConsensusReadSet...
+        >>> ds2._metadata # doctest:+ELLIPSIS
+        <SubreadSetMetadata...
+    """
+
+    datasetType = DataSetMetaTypes.CCS
+
+class AlignmentSet(DataSet):
+    """DataSet type specific to Alignments. No type specific Metadata exists,
+    so the base class version is OK (this just ensures type representation on
+    output and expandability"""
+
+    datasetType = DataSetMetaTypes.ALIGNMENT
+
+    def addReference(self, fname):
+        reference = ReferenceSet(fname).externalResources.resourceIds
+        if len(reference) > 1:
+            log.warn("Multiple references found, cannot open with reads")
+        else:
+            self._openFiles(refFile=reference[0])
+
+    @property
+    def records(self):
+        """ The records in this AlignmentSet, sorted by tStart. """
+        # we only care about aligned sequences here, so we can make this a
+        # chain of readsInReferences to add pre-filtering by rname, instead of
+        # going through every record and performing downstream filtering.
+        # This will make certain operations, like len(), potentially faster
+        for rname in self.refNames:
+            for read in self.readsInReference(rname):
+                yield read
+
+    @staticmethod
+    def _metaTypeMapping():
+        # This doesn't work for scraps.bam, whenever that is implemented
+        return {'bam':'PacBio.SubreadFile.SubreadBamFile',
+                'bai':'PacBio.Index.BamIndex',
+                'pbi':'PacBio.Index.PacBioIndex',
+               }
+
+
+class ReferenceSet(DataSet):
+    """DataSet type specific to References"""
+
+    datasetType = DataSetMetaTypes.REFERENCE
+
+    def updateCounts(self):
+        try:
+            self.metadata.numRecords = 0
+            self.metadata.totalLength = 0
+            for res in self.resourceReaders():
+                #self.metadata.numRecords += len(res)
+                self.metadata.numRecords += sum(1 for _ in res)
+                for index in res.fai:
+                    self.metadata.totalLength += index.length
+        except Exception:
+            # This will be fixed soon, or log an appropriate error
+            # (additionally, unindexed fasta files will soon be disallowed)
+            self.metadata.numRecords = -1
+            self.metadata.totalLength = -1
+
+    def __init__(self, *files):
+        super(ReferenceSet, self).__init__()
+        self._metadata = ReferenceSetMetadata()
+        self._indexedOnly = False
+
+    def processFilters(self):
+        # Allows us to not process all of the filters each time. This is marked
+        # as dirty (= []) by addFilters etc. Filtration can be turned off by
+        # setting this to [lambda x: True], which can be reversed by marking
+        # the cache dirty. See disableFilters/enableFilters
+        if self._cachedFilters:
+            return self._cachedFilters
+        filters = self.filters.tests(readType="fasta")
+        # Having no filters means no opportunity to pass. Fix by filling with
+        # always-true (e.g. disableFilters())
+        if not filters:
+            self._cachedFilters = [lambda x: True]
+            return self._cachedFilters
+        self._cachedFilters = filters
+        return filters
+
+    def addMetadata(self, newMetadata, **kwargs):
+        """Add metadata specific to this subtype, while leaning on the
+        superclass method for generic metadata. Also enforce metadata type
+        correctness."""
+        # Validate, clean and prep input data
+        if newMetadata:
+            if isinstance(newMetadata, dict):
+                newMetadata = ReferenceSetMetadata(newMetadata)
+            elif isinstance(newMetadata, ReferenceSetMetadata) or (
+                    type(newMetadata).__name__ == 'DataSetMetadata'):
+                newMetadata = ReferenceSetMetadata(newMetadata.record)
+            else:
+                raise TypeError("Cannot extend ReferenceSetMetadata with "
+                                "{t}".format(t=type(newMetadata).__name__))
+
+        # Pull generic values, kwargs, general treatment in super
+        super(ReferenceSet, self).addMetadata(newMetadata, **kwargs)
+
+        # Pull subtype specific values where important
+        if newMetadata:
+            if newMetadata.contigs:
+                self._metadata.contigs.extend(newMetadata.contigs)
+
+    def _openFiles(self):
+        """Open the files (assert they exist, assert they are of the proper
+        type before accessing any file)
+        """
+        if self._openReaders:
+            log.debug("Closing old readers...")
+            self.close()
+        log.debug("Opening resources")
+        for extRes in self.externalResources:
+            location = urlparse(extRes.resourceId).path
+            try:
+                resource = IndexedFastaReader(location)
+            except IOError:
+                if not self._indexedOnly:
+                    log.debug('Companion reference index (.fai) missing. '
+                             'Use "samtools faidx <refname>" to generate one.')
+                    resource = FastaReader(location)
+                else:
+                    raise
+            self._openReaders.append(resource)
+        log.debug("Done opening resources")
+
+    def assertIndexed(self):
+        self._indexedOnly = True
+        self._openFiles()
+        return True
+
+    @property
+    def isIndexed(self):
+        try:
+            res = self._pollResources(
+                lambda x: isinstance(x, IndexedFastaReader))
+            return self._unifyResponses(res)
+        except ResourceMismatchError:
+            log.error("Not all resource are equally indexed.")
+            return False
+
+    def resourceReaders(self, refName=None):
+        """A generator of fastaReader objects for the ExternalResources in this
+        ReferenceSet.
+
+        Yields:
+            An open fasta file
+        Doctest:
+            >>> # Either way:
+            >>> import pbcore.data.datasets as data
+            >>> from pbcore.io import DataSet
+            >>> ds = DataSet(data.getBam())
+            >>> for seqFile in ds.resourceReaders():
+            ...     for row in seqFile:
+            ...         print 'hn: %i' % row.holeNumber # doctest:+ELLIPSIS
+            hn: ...
+        """
+        if refName:
+            log.error("Specifying a contig name not yet implemented")
+        self._openFiles()
+        return self._openReaders
+        #for resource in self._openReaders:
+            #yield resource
+        #self.close()
+
+    @property
+    def refNames(self):
+        """The reference names assigned to the External Resources, or contigs,
+        if no name assigned."""
+        refNames = []
+        for contig in self.contigs:
+            if (self.noFiltering
+                    or self._filters.testParam('id', contig.id, str)):
+                refNames.append(contig.id)
+        return sorted(list(set(refNames)))
+
+    @property
+    @filtered
+    def contigs(self):
+        """A generator of contigs from the fastaReader objects for the
+        ExternalResources in this ReferenceSet.
+
+        Yields:
+            A fasta file entry
+
+        Doctest:
+            >>> # Either way:
+            >>> import pbcore.data.datasets as data
+            >>> from pbcore.io import DataSet
+            >>> ds = DataSet(data.getBam())
+            >>> for seqFile in ds.resourceReaders():
+            ...     for row in seqFile:
+            ...         print 'hn: %i' % row.holeNumber # doctest:+ELLIPSIS
+            hn: ...
+        """
+        for resource in self.resourceReaders():
+            for contig in resource:
+                yield contig
+
+    def get_contig(self, contig_id):
+        """Get a contig by ID"""
+        for contig in self.contigs:
+            if contig.id == contig_id or contig.name == contig_id:
+                return contig
+
+    @staticmethod
+    def _metaTypeMapping():
+        return {'fasta':'PacBio.ReferenceFile.ReferenceFastaFile',
+                'fai':'PacBio.Index.SamIndex',
+                'sa':'PacBio.Index.SaWriterIndex',
+               }
+
+
+class ContigSet(DataSet):
+    """DataSet type specific to Contigs"""
+
+    datasetType = DataSetMetaTypes.CONTIG
+
+    def __init__(self, *files):
+        super(ContigSet, self).__init__()
+        self._metadata = ContigSetMetadata()
+
+    def addMetadata(self, newMetadata, **kwargs):
+        """Add metadata specific to this subtype, while leaning on the
+        superclass method for generic metadata. Also enforce metadata type
+        correctness."""
+        # Validate, clean and prep input data
+        if newMetadata:
+            if isinstance(newMetadata, dict):
+                newMetadata = ContigSetMetadata(newMetadata)
+            elif isinstance(newMetadata, ContigSetMetadata) or (
+                    type(newMetadata).__name__ == 'DataSetMetadata'):
+                newMetadata = ContigSetMetadata(newMetadata.record)
+            else:
+                raise TypeError("Cannot extend ContigSetMetadata with "
+                                "{t}".format(t=type(newMetadata).__name__))
+
+        # Pull generic values, kwargs, general treatment in super
+        super(ContigSet, self).addMetadata(newMetadata, **kwargs)
+
+        # Pull subtype specific values where important
+        if newMetadata:
+            if newMetadata.contigs:
+                self._metadata.contigs.extend(newMetadata.contigs)
+
+class BarcodeSet(DataSet):
+    """DataSet type specific to Barcodes"""
+
+    datasetType = DataSetMetaTypes.BARCODE
+
+    def __init__(self, *files):
+        super(BarcodeSet, self).__init__()
+        self._metadata = BarcodeSetMetadata()
+
+    def addMetadata(self, newMetadata, **kwargs):
+        """Add metadata specific to this subtype, while leaning on the
+        superclass method for generic metadata. Also enforce metadata type
+        correctness."""
+        # Validate, clean and prep input data
+        if newMetadata:
+            if isinstance(newMetadata, dict):
+                newMetadata = BarcodeSetMetadata(newMetadata)
+            elif isinstance(newMetadata, BarcodeSetMetadata) or (
+                    type(newMetadata).__name__ == 'DataSetMetadata'):
+                newMetadata = BarcodeSetMetadata(newMetadata.record)
+            else:
+                raise TypeError("Cannot extend BarcodeSetMetadata with "
+                                "{t}".format(t=type(newMetadata).__name__))
+
+        # Pull generic values, kwargs, general treatment in super
+        super(BarcodeSet, self).addMetadata(newMetadata, **kwargs)
+
+        # Pull subtype specific values where important
+        # -> No type specific merging necessary, for now
diff --git a/pbcore/io/dataset/DataSetMembers.py b/pbcore/io/dataset/DataSetMembers.py
new file mode 100755
index 0000000..809a218
--- /dev/null
+++ b/pbcore/io/dataset/DataSetMembers.py
@@ -0,0 +1,1582 @@
+"""DataSetMetadata (also the tag of the Element in the DataSet XML
+representation) is somewhat challening to store, access, and (de)serialize
+efficiently. Here, we maintain a bulk representation of all of the dataset
+metadata (or any other XML data, like ExternalResources) found in the XML file
+in the following data structure:
+
+    An Element is a turned into a dictionary:
+        XmlElement => {'tag': 'ElementTag',
+                       'text': 'ElementText',
+                       'attrib': {'ElementAttributeName': 'AttributeValue',
+                                  'AnotherAttrName': 'AnotherAttrValue'},
+                       'children': [XmlElementDict,
+                                    XmlElementDictWithSameOrDifferentTag]}
+
+    Child elements are represented similarly and stored (recursively) as a list
+    in 'children'. The top level we store for DataSetMetadata is just a list,
+    which can be thought of as the list of children of a different element
+    (say, a DataSet or SubreadSet element, if we stored that):
+        DataSetMetadata = [XmlTag, XmlTagWithSameOrDifferentTag]
+
+We keep this for two reasons:
+    1. We don't want to have to write a lot of logic to go from XML to an
+       internal representation and then back to XML.
+    2. We want to be able to store and at least write metadata that doesn't yet
+       exist, even if we can't merge it intelligently.
+    3. Keeping and manipulating a dictionary is ~10x faster than an
+       OrderedAttrDict, and probably faster to use than a full stack of
+       objects.
+
+Instead, we keep and modify this list:dictionary structure, wrapping it in
+classes as necessary. The classes and methods that wrap this datastructure
+serve two pruposes:
+    1. Provide an interface for our code (and making merging clean) e.g.:
+        - DataSet("test.xml").metadata.numRecords += 1
+    2. Provide an interface for users of the DataSet API, e.g.:
+        - numRecords = DataSet("test.xml").metadata.numRecords
+        - bioSamplePointer = (DataSet("test.xml")
+                                .metadata.collections[0]
+                                .wellSample.bioSamplePointers[0])
+        a. Though users can still access novel metadata types the hard way
+           e.g.:
+            - bioSamplePointer = (DataSet("test.xml")
+                                    .metadata.collections[0]
+                                    ['WellSample']['BioSamplePointers']
+                                    ['BioSamplePointer'].record['text'])
+            note: Assuming __getitem__ is implemented for the 'children' list
+"""
+
+import copy
+import operator as OP
+import re
+import logging
+from functools import partial as P
+
+log = logging.getLogger(__name__)
+
+class RecordWrapper(object):
+    """The base functionality of a metadata element.
+
+    Many of the methods here are intended for use with children of
+    RecordWrapper (e.g. append, extend). Methods in child classes often provide
+    similar functionality for more raw inputs (e.g. resourceIds as strings)"""
+
+
+    def __init__(self, record=None):
+        """Here, record is any element in the Metadata Element tree and a
+        dictionary with four members: 'tag', 'attrib', 'text', and 'children'.
+
+        Do not deepcopy, we rely on side effects for all persistent
+        modifications.
+        """
+        if record:
+            try:
+                self.record = record.record
+            except AttributeError:
+                self.record = record
+        else:
+            self.record = _emptyMember()
+        assert 'tag' in self.record.keys()
+
+    def __len__(self):
+        """Return the number of children in this node"""
+        return len(self.record['children'])
+
+    def __nonzero__(self):
+        if self.record['tag'] != '':
+            return True
+        if self.record['text'] != '':
+            return True
+        if self.record['attrib'] != {}:
+            return True
+        if self.record['children'] != []:
+            return True
+        return False
+
+    def __deepcopy__(self, memo):
+        tbr = type(self)()
+        memo[id(self)] = tbr
+        tbr.record = copy.deepcopy(self.record, memo)
+        return tbr
+
+    def __getitem__(self, tag):
+        """Try to get the a specific child (only useful in simple cases where
+        children will not be wrapped in a special wrapper object, returns the
+        first instance of 'tag')"""
+        if isinstance(tag, str):
+            return RecordWrapper(self.getV('children', tag))
+        elif isinstance(tag, int):
+            return RecordWrapper(self.record['children'][tag])
+
+    def __iter__(self):
+        """Get each child iteratively (only useful in simple cases where
+        children will not be wrapped in a special wrapper object)"""
+        for child in self.record['children']:
+            yield RecordWrapper(child)
+            #yield child['text']
+
+    def __repr__(self):
+        """Return a pretty string represenation of this object:
+
+            "<type tag text attribs children>"
+        """
+        c_tags = [c.record['tag'] for c in self]
+        repr_d = dict(k=self.__class__.__name__, t=self.record['tag'],
+                      x=self.record['text'], a=self.record['attrib'],
+                      c=c_tags)
+        rep = '<{k} tag:{t} text:{x} attribs:{a} children:{c}>'.format(
+            **repr_d)
+        return rep
+
+    def pop(self, index):
+        return self.record['children'].pop(index)
+
+    def merge(self, other):
+        pass
+
+    def getMemberV(self, tag, container='text'):
+        """Generic accessor for the contents of the children of this element,
+        without having to interface with them directly"""
+        try:
+            return self.record['children'][self.index(str(tag))][
+                str(container)]
+        except KeyError:
+            return None
+
+    def setMemberV(self, tag, value, container='text'):
+        """Generic accessor for the contents of the children of this element,
+        without having to interface with them directly"""
+        try:
+            self.record['children'][self.index(str(tag))][str(container)] = (
+                str(value))
+        except ValueError:
+            if container == 'text':
+                newMember = _emptyMember(tag=tag, text=value)
+                self.append(newMember)
+            else:
+                raise
+        return self
+
+    def getV(self, container='text', tag=None):
+        """Generic accessor for the contents of this element's 'attrib' or
+        'text' fields"""
+        try:
+            if container == 'children':
+                return self.record['children'][self.index(str(tag))]
+            if tag:
+                return self.record[str(container)][tag]
+            else:
+                return self.record[str(container)]
+        except (KeyError, ValueError):
+            return None
+
+    def setV(self, value, container='text', tag=None):
+        """Generic accessor for the contents of this element's 'attrib' or
+        'text' fields"""
+        if tag:
+            self.record[str(container)][tag] = value
+        else:
+            self.record[str(container)] = value
+        return self
+
+    def extend(self, newMembers):
+        """Extend the actual list of child elements"""
+        newMembers = [nM.record if isinstance(nM, RecordWrapper) else nM
+                      for nM in newMembers]
+        self.record['children'].extend(newMembers)
+
+    def append(self, newMember):
+        """Append to the actual list of child elements"""
+        if isinstance(newMember, RecordWrapper):
+            self.record['children'].append(newMember.record)
+        else:
+            self.record['children'].append(newMember)
+
+    def index(self, tag):
+        """Return the index in 'children' list of item with 'tag' member"""
+        return self.tags.index(tag)
+
+    @property
+    def tags(self):
+        """Return the list of tags for children in this element"""
+        return [child['tag'] for child in self.record['children']]
+
+    @property
+    def metaname(self):
+        """Cleaner accessor for this node's tag"""
+        return self.record['tag']
+
+    @metaname.setter
+    def metaname(self, value):
+        """Cleaner accessor for this node's tag"""
+        self.record['tag'] = value
+
+    @property
+    def metavalue(self):
+        """Cleaner accessor for this node's text"""
+        return self.record['text']
+
+    @metavalue.setter
+    def metavalue(self, value):
+        """Cleaner accessor for this node's text"""
+        self.record['text'] = value
+
+    @property
+    def metadata(self):
+        """Cleaner accessor for this node's attributes. Returns mutable,
+        doesn't need setter"""
+        return self.record['attrib']
+
+    def addMetadata(self, key, value):
+        """Add a key, value pair to this metadata object (attributes)"""
+        self.metadata[key] = value
+
+    @property
+    def submetadata(self):
+        """Cleaner accessor for wrapped versions of this node's children."""
+        return [RecordWrapper(child) for child in self.record['children']]
+
+    @property
+    def subrecords(self):
+        """Cleaner accessor for this node's children. Returns mutable, doesn't
+        need setter"""
+        return self.record['children']
+
+    def findChildren(self, tag):
+        for child in self.submetadata:
+            if child.metaname == tag:
+                yield child
+
+    def removeChildren(self, tag):
+        keepers = []
+        for child in self.record['children']:
+            if child['tag'] != tag:
+                keepers.append(child)
+        self.record['children'] = keepers
+
+    def pruneChildrenTo(self, whitelist):
+        newChildren = []
+        oldChildren = self.record['children']
+        for child in oldChildren:
+            if child['tag'] in whitelist:
+                newChildren.append(child)
+        self.record['children'] = newChildren
+
+    # Some common attributes (to reduce code duplication):
+
+    @property
+    def name(self):
+        return self.getV('attrib', 'Name')
+
+    @name.setter
+    def name(self, value):
+        self.setV(value, 'attrib', 'Name')
+
+    @property
+    def value(self):
+        return self.getV('attrib', 'Value')
+
+    @value.setter
+    def value(self, value):
+        self.setV(value, 'attrib', 'Value')
+
+    @property
+    def version(self):
+        return self.getV('attrib', 'Version')
+
+    @property
+    def description(self):
+        return self.getV('attrib', 'Description')
+
+def filter_read(accessor, operator, value, read):
+    return operator(accessor(read), value)
+
+class Filters(RecordWrapper):
+
+    def __init__(self, record=None):
+        super(self.__class__, self).__init__(record)
+        self.record['tag'] = self.__class__.__name__
+        self._callbacks = []
+
+    def registerCallback(self, func):
+        if func not in self._callbacks:
+            self._callbacks.append(func)
+
+    def _runCallbacks(self):
+        for func in self._callbacks:
+            func()
+
+    def __getitem__(self, index):
+        return Filter(self.record['children'][index])
+
+    def __iter__(self):
+        for child in self.record['children']:
+            yield Filter(child)
+
+    def __eq__(self, other):
+        if len(self) != len(other):
+            return False
+        if len(self) == 0:
+            return True
+        return all([sFilt == oFilt for sFilt, oFilt in zip(
+            sorted(list(self)),
+            sorted(list(other)))])
+
+    def __nonzero__(self):
+        for filt in self:
+            for req in filt:
+                if req.name:
+                    return True
+        return False
+
+    def __str__(self):
+        buff = []
+        for filt in self:
+            temp = ['(']
+            for req in filt:
+                temp.append(' '.join([req.name, req.operator, req.value]))
+                temp.append('AND')
+            if temp:
+                temp.pop()
+                temp.append(')')
+                buff.extend(temp)
+                buff.append('OR')
+        if buff:
+            if buff[-1] == 'OR':
+                buff.pop()
+
+        return ' '.join(buff)
+
+    def testCompatibility(self, other):
+        if self == other:
+            return True
+        else:
+            return False
+
+    def merge(self, other):
+        # Just add it to the or list
+        self.extend(Filters(other).submetadata)
+
+    def testParam(self, param, value, testType=str, oper='='):
+        options = [True] * len(list(self))
+        if not options:
+            return True
+        for i, filt in enumerate(self):
+            for req in filt:
+                if req.name == param:
+                    if not self.opMap(oper)(testType(req.value),
+                                            testType(value)):
+                        options[i] = False
+        return any(options)
+
+    def opMap(self, op):
+        ops = {'>=': OP.le,
+               '>=': OP.le,
+               '<=': OP.ge,
+               '<=': OP.ge,
+               '==': OP.eq,
+               '!=': OP.ne,
+               '=': OP.eq,
+               '>': OP.gt,
+               '>': OP.gt,
+               '<': OP.lt,
+               '<': OP.lt,
+              }
+        return ops[op]
+
+    @property
+    def _bamAccMap(self):
+        # tStart/tEnd is a hack for overlapping ranges. you're not testing
+        # whether the tStart/tEnd is within a range, you're testing if it
+        # overlaps with the tStart/tEnd in the filter (overlaps with a
+        # reference window)
+        return {'rname': (lambda x: x.referenceName),
+                'length': (lambda x: int(x.readLength)),
+                'qname': (lambda x: x.qNameA),
+                'zm': (lambda x: int(x.HoleNumber)),
+                'bc': (lambda x: x.barcode),
+                'qs': (lambda x: int(x.qStart)),
+                'rq': (lambda x: int(x.MapQV)),
+                'pos': (lambda x: int(x.tStart)),
+                'accuracy': (lambda x: int(x.identity)),
+                'readstart': (lambda x: int(x.aStart)),
+                'tstart': (lambda x: int(x.tEnd)), # see above
+                'tend': (lambda x: int(x.tStart)), # see above
+               }
+
+    def _pbiAccMap(self, tIdMap):
+        # tStart/tEnd is a hack for overlapping ranges. you're not testing
+        # whether the tStart/tEnd is within a range, you're testing if it
+        # overlaps with the tStart/tEnd in the filter (overlaps with a
+        # reference window)
+        return {'rname': (lambda x, m=tIdMap: m[x.tId]),
+                'length': (lambda x: int(x.aEnd)-int(x.aStart)),
+                'qname': (lambda x: x.qId),
+                'zm': (lambda x: int(x.holeNumber)),
+                'pos': (lambda x: int(x.tStart)),
+                'readstart': (lambda x: int(x.aStart)),
+                'tstart': (lambda x: int(x.tEnd)), # see above
+                'tend': (lambda x: int(x.tStart)), # see above
+               }
+
+    @property
+    def _bamTypeMap(self):
+        return {'rname': str,
+                'length': int,
+                'qname': str,
+                'zm': int,
+                'bc': str,
+                'qs': int,
+                'rq': float,
+                'pos': int,
+                'tstart': int,
+                'tend': int,
+                'accuracy': int,
+                'readstart': int,
+               }
+
+    def tests(self, readType="bam", tIdMap=None):
+        # Allows us to not process all of the filters each time. This is marked
+        # as dirty (= []) by addFilters etc. Filtration can be turned off by
+        # setting this to [lambda x: True], which can be reversed by marking
+        # the cache dirty see disableFilters/enableFilters
+        if readType.lower() == "bam":
+            accMap = self._bamAccMap
+            typeMap = self._bamTypeMap
+        elif readType.lower() == "fasta":
+            accMap = {'id': (lambda x: x.id),
+                      'length': (lambda x: int(x.length)),
+                     }
+            typeMap = {'id': str,
+                       'length': int,
+                      }
+        elif readType.lower() == "pbi":
+            accMap = self._pbiAccMap(tIdMap)
+            typeMap = self._bamTypeMap
+        else:
+            raise TypeError("Read type not properly specified")
+        tests = []
+        for filt in self:
+            reqTests = []
+            for req in filt:
+                param = req.name
+                value = typeMap[param](req.value)
+                operator = self.opMap(req.operator)
+                reqTests.append(P(filter_read, accMap[param], operator, value))
+            tests.append(lambda x, reqTests=reqTests: all([f(x) for f in reqTests]))
+        return tests
+
+    def addRequirement(self, **kwargs):
+        """Use this to add requirements. Members of the list will be considered
+        options for fulfilling this requirement, all other filters will be
+        duplicated for each option. Use multiple calls to add multiple
+        requirements to the existing filters. Use removeRequirement first to
+        not add conflicting filters.
+
+        Args:
+            name: The name of the requirement, e.g. 'rq'
+            options: A list of (operator, value) tuples, e.g. ('>', '0.85')
+        """
+        # if there are already filters, you must copy the filters for each new
+        # option and add one set of requirements to each option:
+        if self.submetadata:
+            origFilts = copy.deepcopy(list(self))
+            self.record['children'] = []
+            newFilts = [copy.deepcopy(origFilts) for _ in kwargs.values()[0]]
+            for name, options in kwargs.items():
+                for i, (oper, val) in enumerate(options):
+                    for filt in newFilts[i]:
+                        filt.addRequirement(name, oper, val)
+            for filtList in newFilts:
+                self.extend(filtList)
+        else:
+            newFilts = [Filter() for _ in kwargs.values()[0]]
+            for name, options in kwargs.items():
+                for i, (oper, val) in enumerate(options):
+                    newFilts[i].addRequirement(name, oper, val)
+            self.extend(newFilts)
+        self._runCallbacks()
+
+    def removeRequirement(self, req):
+        log.debug("Removing requirement {r}".format(r=req))
+        for i, filt in enumerate(self):
+            empty = filt.removeRequirement(req)
+            if empty:
+                self.pop(i)
+        self._runCallbacks()
+
+
+class Filter(RecordWrapper):
+
+    def __init__(self, record=None):
+        super(self.__class__, self).__init__(record)
+        self.record['tag'] = self.__class__.__name__
+
+    def __getitem__(self, index):
+        return self.plist[index]
+
+    def __iter__(self):
+        for param in self.plist:
+            yield param
+
+    def __eq__(self, other):
+        return (sorted([str(p) for p in self]) ==
+                sorted([str(p) for p in other]))
+
+    def __lt__(self, other):
+        return sorted([p.name for p in self]) < sorted([p.name for p in other])
+
+    def pop(self, index):
+        self.record['children'][0]['children'].pop(index)
+
+    def addRequirement(self, name, operator, value):
+        param = Parameter()
+        param.name = name
+        param.operator = operator
+        param.value = value
+        self.plist.append(param)
+
+    def removeRequirement(self, req):
+        for i, param in enumerate(self):
+            if param.name == req:
+                self.pop(i)
+        if len(self.plist):
+            return False
+        else:
+            return True
+
+    @property
+    def plist(self):
+        if self.record['children']:
+            return Parameters(self.record['children'][0])
+        else:
+            temp = Parameters()
+            self.append(temp)
+            return temp
+
+    def merge(self, other):
+        pass
+
+
+class Parameters(RecordWrapper):
+
+    def __init__(self, record=None):
+        super(self.__class__, self).__init__(record)
+        self.record['tag'] = self.__class__.__name__
+
+    def __getitem__(self, index):
+        return Parameter(self.record['children'][index])
+
+    def __iter__(self):
+        for child in self.record['children']:
+            yield Parameter(child)
+
+    def merge(self, other):
+        pass
+
+
+class Parameter(RecordWrapper):
+
+    def __init__(self, record=None):
+        super(self.__class__, self).__init__(record)
+        self.record['tag'] = self.__class__.__name__
+
+    def __str__(self):
+        return ''.join(["(", self.name, " ", self.operator, " ", self.value,
+                        ")"])
+
+    @property
+    def name(self):
+        return self.metadata['Name'].lower()
+
+    @name.setter
+    def name(self, value):
+        self.metadata['Name'] = value.lower()
+
+    @property
+    def operator(self):
+        return self.metadata['Operator']
+
+    @operator.setter
+    def operator(self, value):
+        self.metadata['Operator'] = value
+
+    @property
+    def value(self):
+        return self.metadata['Value']
+
+    @value.setter
+    def value(self, value):
+        self.metadata['Value'] = str(value)
+
+
+class ExternalResources(RecordWrapper):
+
+    def __init__(self, record=None):
+        super(self.__class__, self).__init__(record)
+        self.record['tag'] = self.__class__.__name__
+
+    def __eq__(self, other):
+        for extRef in self:
+            found = False
+            for oExtRef in other:
+                if extRef == oExtRef:
+                    found = True
+            if not found:
+                return False
+        return True
+
+    def sort(self):
+        """In theory we could sort the ExternalResource objects, but that
+        would require opening them"""
+
+    def __getitem__(self, index):
+        return ExternalResource(self.record['children'][index])
+
+    def __iter__(self):
+        for child in self.record['children']:
+            yield ExternalResource(child)
+
+    def addResources(self, resourceIds):
+        """Add a new external reference with the given uris. If you're looking
+        to add ExternalResource objects, append() or extend() them instead.
+
+        Args:
+            resourceIds: a list of uris as strings
+        """
+        templist = []
+        for ref in resourceIds:
+            temp = ExternalResource()
+            temp.resourceId = ref
+            self.append(temp)
+            templist.append(temp)
+        return templist
+
+    @property
+    def resources(self):
+        return [ExternalResource(extRef) for extRef in self]
+
+    @resources.setter
+    def resources(self, resources):
+        """This is primarily used with split, where a list of ExternalResource
+        Objects is divided up and passed to a new ExternalResources object
+        through this method. We can't set the list directly, as the contents
+        aren't in record form, but append will fix that for us automatically. A
+        bit messy, but fairly concise.
+        """
+        self.record['children'] = []
+        for res in resources:
+            self.append(res)
+
+    @property
+    def resourceIds(self):
+        return [res.resourceId for res in self]
+
+
+class ExternalResource(RecordWrapper):
+
+    def __init__(self, record=None):
+        super(self.__class__, self).__init__(record)
+        self.record['tag'] = self.__class__.__name__
+
+    def __eq__(self, other):
+        if self.resourceId == other.resourceId:
+            return True
+        return False
+
+    #def __getitem__(self, index):
+        #return FileIndex(self.record['children'][index])
+
+    #def __iter__(self):
+        #for child in self.record['children']:
+            #yield FileIndex(child)
+
+    def merge(self, other):
+        if self.metaType:
+            if self.metaType != other.metaType:
+                raise IOError("Two ExternalResources have same ResourceId "
+                              "and different types")
+        if self.tags:
+            self.tags = ', '.join([self.tags, other.tags])
+
+    @property
+    def metaType(self):
+        return self.getV('attrib', 'MetaType')
+
+    @metaType.setter
+    def metaType(self, value):
+        return self.setV(value, 'attrib', 'MetaType')
+
+    @property
+    def resourceId(self):
+        return self.getV('attrib', 'ResourceId')
+
+    @resourceId.setter
+    def resourceId(self, value):
+        self.setV(value, 'attrib', 'ResourceId')
+
+    @property
+    def tags(self):
+        return self.getV('attrib', 'Tags')
+
+    @tags.setter
+    def tags(self, value):
+        self.setV(value, 'attrib', 'Tags')
+
+    @property
+    def indices(self):
+        current = list(self.findChildren('FileIndices'))
+        if current:
+            return FileIndices(current[0])
+        else:
+            return FileIndices()
+        #return [ind for ind in self]
+
+    @indices.setter
+    def indices(self, indexList):
+        self.removeChildren('FileIndices')
+        tempList = FileIndices()
+        for ind in indexList:
+            temp = FileIndex()
+            temp.resourceId = ind
+            tempList.append(temp)
+        self.append(tempList)
+
+    def addIndices(self, indices):
+        fileIndices = list(self.findChildren('FileIndices'))
+        if fileIndices:
+            fileIndices = FileIndices(fileIndices)
+        else:
+            fileIndices = FileIndices()
+        for index in indices:
+            temp = FileIndex()
+            temp.resourceId = index
+            fileIndices.append(temp)
+        self.append(fileIndices)
+
+class FileIndices(RecordWrapper):
+
+    def __init__(self, record=None):
+        super(self.__class__, self).__init__(record)
+        self.record['tag'] = self.__class__.__name__
+
+    def __getitem__(self, index):
+        return FileIndex(self.record['children'][index])
+
+    def __iter__(self):
+        for child in self.record['children']:
+            yield FileIndex(child)
+
+
+class FileIndex(RecordWrapper):
+
+    def __init__(self, record=None):
+        super(self.__class__, self).__init__(record)
+        self.record['tag'] = self.__class__.__name__
+
+    @property
+    def resourceId(self):
+        return self.getV('attrib', 'ResourceId')
+
+    @resourceId.setter
+    def resourceId(self, value):
+        self.setV(value, 'attrib', 'ResourceId')
+
+    @property
+    def metaType(self):
+        return self.getV('attrib', 'MetaType')
+
+    @metaType.setter
+    def metaType(self, value):
+        return self.setV(value, 'attrib', 'MetaType')
+
+
+class DataSetMetadata(RecordWrapper):
+    """The root of the DataSetMetadata element tree, used as base for subtype
+    specific DataSet or for generic "DataSet" records."""
+
+
+    def __init__(self, record=None):
+        """Here, record is the root element of the Metadata Element tree"""
+        super(DataSetMetadata, self).__init__(record)
+
+    def merge(self, other):
+        self.numRecords += other.numRecords
+        self.totalLength += other.totalLength
+        if other.summaryStats:
+            if self.summaryStats:
+                self.summaryStats.merge(other.summaryStats)
+            else:
+                self.append(other.summaryStats)
+
+    @property
+    def numRecords(self):
+        """Return the number of records in a DataSet using helper functions
+        defined in the base class"""
+        try:
+            return int(self.getMemberV('NumRecords'))
+        except ValueError:
+            return 0
+
+    @numRecords.setter
+    def numRecords(self, value):
+        """Set the number of records, primarily when merging two DataSets"""
+        self.setMemberV('NumRecords', str(value))
+
+    @property
+    def totalLength(self):
+        """Return the TotalLength property of this dataset.
+        TODO: update the value from the actual external reference on
+        ValueError"""
+        try:
+            return int(self.getMemberV('TotalLength'))
+        except ValueError:
+            return 0
+
+    @totalLength.setter
+    def totalLength(self, value):
+        """The total length of the dataset may merge differently for different
+        datatypes. This will commonly be overridden by subclasses"""
+        self.setMemberV('TotalLength', str(value))
+
+    @property
+    def summaryStats(self):
+        try:
+            return StatsMetadata(self.getV('children', 'SummaryStats'))
+        except ValueError:
+            return None
+
+    @property
+    def provenance(self):
+        try:
+            return Provenance(self.getV('children', 'Provenance'))
+        except ValueError:
+            return None
+
+
+class SubreadSetMetadata(DataSetMetadata):
+    """The DataSetMetadata subtype specific to SubreadSets. Deals explicitly
+    with the merging of Collections and BioSamples metadata hierarchies."""
+
+    def __init__(self, record=None):
+        # This doesn't really need to happen unless there are contextual
+        # differences in the meanings of subtypes (e.g. BioSamples mean
+        # something different in SubreadSetMetadata vs ReferenceSetMetadata)
+        if record:
+            if (not isinstance(record, dict) and
+                    not isinstance(record, SubreadSetMetadata) and
+                    type(record).__name__ != 'DataSetMetadata'):
+                raise TypeError("Cannot create SubreadSetMetadata from "
+                                "{t}".format(t=type(record).__name__))
+        super(SubreadSetMetadata, self).__init__(record)
+
+    def merge(self, other):
+        super(self.__class__, self).merge(other)
+        self.collections.merge(other.collections)
+        self.bioSamples.merge(other.bioSamples)
+
+    @property
+    def collections(self):
+        """Return a list of wrappers around Collections elements of the
+        Metadata Record"""
+        return CollectionsMetadata(self.getV(tag='Collections',
+                                             container='children'))
+
+    @property
+    def bioSamples(self):
+        """Return a list of wrappers around BioSamples elements of the Metadata
+        Record"""
+        return BioSamplesMetadata(self.getV(tag='BioSamples',
+                                            container='children'))
+
+
+class ReferenceSetMetadata(DataSetMetadata):
+    """The DataSetMetadata subtype specific to ReferenceSets."""
+
+
+    def __init__(self, record=None):
+        if record:
+            if (not isinstance(record, dict) and
+                    not isinstance(record, ReferenceSetMetadata) and
+                    type(record).__name__ != 'DataSetMetadata'):
+                raise TypeError("Cannot create ReferenceSetMetadata from "
+                                "{t}".format(t=type(record).__name__))
+        super(ReferenceSetMetadata, self).__init__(record)
+
+    def merge(self, other):
+        super(self.__class__, self).merge(other)
+        self.contigs.merge(other.contigs)
+
+    @property
+    def organism(self):
+        return self.getMemberV('Organism')
+
+    @property
+    def ploidy(self):
+        return self.getMemberV('Ploidy')
+
+    @property
+    def contigs(self):
+        return ContigsMetadata(self.getV('children', 'Contigs'))
+
+
+class ContigSetMetadata(DataSetMetadata):
+    """The DataSetMetadata subtype specific to ContigSets."""
+
+
+    def __init__(self, record=None):
+        if record:
+            if (not isinstance(record, dict) and
+                    not isinstance(record, ContigMetadata) and
+                    type(record).__name__ != 'DataSetMetadata'):
+                raise TypeError("Cannot create ContigSetMetadata from "
+                                "{t}".format(t=type(record).__name__))
+        super(ContigSetMetadata, self).__init__(record)
+
+    def merge(self, other):
+        super(self.__class__, self).merge(other)
+        self.contigs.merge(other.contigs)
+
+    @property
+    def contigs(self):
+        return ContigsMetadata(self.getV('children', 'Contigs'))
+
+
+class BarcodeSetMetadata(DataSetMetadata):
+    """The DataSetMetadata subtype specific to BarcodeSets."""
+
+
+    def __init__(self, record=None):
+        if record:
+            if (not isinstance(record, dict) and
+                    not isinstance(record, BarcodeSetMetadata) and
+                    type(record).__name__ != 'DataSetMetadata'):
+                raise TypeError("Cannot create BarcodeSetMetadata from "
+                                "{t}".format(t=type(record).__name__))
+        super(BarcodeSetMetadata, self).__init__(record)
+
+    @property
+    def barcodeConstruction(self):
+        return self.getMemberV('BarcodeConstruction')
+
+
+class ContigsMetadata(RecordWrapper):
+
+
+    def __getitem__(self, index):
+        return ContigMetadata(self.record['children'][index])
+
+    def __iter__(self):
+        for child in self.record['children']:
+            yield ContigMetadata(child)
+
+    def merge(self, other):
+        self.extend([child for child in other])
+
+
+class ContigMetadata(RecordWrapper):
+
+
+    @property
+    def digest(self):
+        return self.getV('attrib', 'Digest')
+
+    @property
+    def length(self):
+        return self.getV('attrib', 'Length')
+
+
+class CollectionsMetadata(RecordWrapper):
+    """The Element should just have children: a list of
+    CollectionMetadataTags"""
+
+
+    def __getitem__(self, index):
+        return CollectionMetadata(self.record['children'][index])
+
+    def __iter__(self):
+        for child in self.record['children']:
+            yield CollectionMetadata(child)
+
+    def merge(self, other):
+        self.extend([child for child in other])
+
+
+class CollectionMetadata(RecordWrapper):
+    """The metadata for a single collection. It contains Context,
+    InstrumentName etc. as attribs, InstCtrlVer etc. for children"""
+
+
+    @property
+    def context(self):
+        return self.getV('attrib', 'Context')
+
+    @property
+    def instrumentName(self):
+        return self.getV('attrib', 'InstrumentName')
+
+    @property
+    def instrumentId(self):
+        return self.getV('attrib', 'InstrumentId')
+
+    @property
+    def instCtrlVer(self):
+        return self.getMemberV('InstCtrlVer')
+
+    @property
+    def sigProcVer(self):
+        return self.getMemberV('SigProcVer')
+
+    @property
+    def automation(self):
+        return Automation(self.getMemberV('Automation'))
+
+    @property
+    def collectionNumber(self):
+        return self.getMemberV('collectionNumber')
+
+    @property
+    def cellIndex(self):
+        return self.getMemberV('cellIndex')
+
+    @property
+    def cellPac(self):
+        return self.getMemberV('cellPac', 'attrib')
+
+    @property
+    def runDetails(self):
+        return RunDetailsMetadata(self.getV('children', 'RunDetails'))
+
+    @property
+    def wellSample(self):
+        return WellSampleMetadata(self.getV('children', 'WellSample'))
+
+    @property
+    def primary(self):
+        return PrimaryMetadata(self.getV('children', 'Primary'))
+
+class Automation(RecordWrapper):
+
+    @property
+    def automationParameters(self):
+        return AutomationParameters(self.getV('children',
+                                              'AutomationParameters'))
+
+class AutomationParameters(RecordWrapper):
+
+    def __init__(self, record=None):
+        super(self.__class__, self).__init__(record)
+        self.record['tag'] = self.__class__.__name__
+
+    @property
+    def automationParameter(self):
+        return AutomationParameter(self.getV('children',
+                                             'AutomationParameter'))
+
+    def addParameter(self, key, value):
+        temp = AutomationParameter()
+        if key:
+            temp.name = key
+        if value:
+            temp.value = value
+        self.append(temp)
+
+class AutomationParameter(RecordWrapper):
+
+    def __init__(self, record=None):
+        super(self.__class__, self).__init__(record)
+        self.record['tag'] = self.__class__.__name__
+
+class Provenance(RecordWrapper):
+    """The metadata concerning this dataset's provenance"""
+
+    @property
+    def createdBy(self):
+        return self.getV(container='attrib', tag='CreatedBy')
+
+    @property
+    def parentTool(self):
+        return ParentTool(self.getV('children', 'ParentTool'))
+
+class ParentTool(RecordWrapper):
+    pass
+
+class StatsMetadata(RecordWrapper):
+    """The metadata from the machine sts.xml"""
+
+    def merge(self, other):
+        self.shortInsertFraction = (self.shortInsertFraction *
+                                    self.prodDist.bins[1] +
+                                    other.shortInsertFraction *
+                                    other.prodDist.bins[1])/(
+                                        self.prodDist.bins[1]
+                                        + other.prodDist.bins[1])
+        self.adapterDimerFraction = (self.adapterDimerFraction *
+                                     self.prodDist.bins[1] +
+                                     other.adapterDimerFraction *
+                                     other.prodDist.bins[1])/(
+                                         self.prodDist.bins[1]
+                                         + other.prodDist.bins[1])
+        self.numSequencingZmws += other.numSequencingZmws
+        toHandle = [
+            (self.prodDist, other.prodDist),
+            (self.readTypeDist, other.readTypeDist),
+            (self.readLenDist, other.readLenDist),
+            (self.readQualDist, other.readQualDist),
+            (self.medianInsertDist, other.medianInsertDist),
+            (self.insertReadQualDist, other.insertReadQualDist),
+            (self.insertReadLenDist, other.insertReadLenDist),
+            (self.controlReadQualDist, other.controlReadQualDist),
+            (self.controlReadLenDist, other.controlReadLenDist),
+            ]
+        for selfDist, otherDist in toHandle:
+            try:
+                selfDist.merge(otherDist)
+            except BinMismatchError:
+                self.append(otherDist)
+            except ValueError:
+                if otherDist:
+                    self.append(otherDist)
+
+    @property
+    def prodDist(self):
+        return DiscreteDistribution(self.getV('children', 'ProdDist'))
+
+    @property
+    def readTypeDist(self):
+        return DiscreteDistribution(self.getV('children', 'ReadTypeDist'))
+
+    @property
+    def readLenDist(self):
+        return ContinuousDistribution(self.getV('children', 'ReadLenDist'))
+
+    @property
+    def readLenDists(self):
+        return [ContinuousDistribution(child) for child in
+                self.findChildren('ReadLenDist')]
+
+    @property
+    def readQualDist(self):
+        return ContinuousDistribution(self.getV('children', 'ReadQualDist'))
+
+    @property
+    def readQualDists(self):
+        return [ContinuousDistribution(child) for child in
+                self.findChildren('ReadQualDist')]
+
+    @property
+    def insertReadQualDist(self):
+        return ContinuousDistribution(self.getV('children',
+                                                'InsertReadQualDist'))
+
+    @property
+    def insertReadLenDist(self):
+        return ContinuousDistribution(self.getV('children',
+                                                'InsertReadLenDist'))
+    @property
+    def controlReadQualDist(self):
+        return ContinuousDistribution(self.getV('children',
+                                                'ControlReadQualDist'))
+
+    @property
+    def controlReadLenDist(self):
+        return ContinuousDistribution(self.getV('children',
+                                                'ControlReadLenDist'))
+
+    @property
+    def medianInsertDist(self):
+        return ContinuousDistribution(self.getV('children',
+                                                'MedianInsertDist'))
+    @property
+    def medianInsertDists(self):
+        return [ContinuousDistribution(child)
+                for child in self.findChildren('MedianInsertDist')]
+
+    @property
+    def adapterDimerFraction(self):
+        return float(self.getMemberV('AdapterDimerFraction'))
+
+    @adapterDimerFraction.setter
+    def adapterDimerFraction(self, value):
+        self.setMemberV('AdapterDimerFraction', float(value))
+
+    @property
+    def numSequencingZmws(self):
+        return float(self.getMemberV('NumSequencingZmws'))
+
+    @numSequencingZmws.setter
+    def numSequencingZmws(self, value):
+        self.setMemberV('NumSequencingZmws', float(value))
+
+    @property
+    def shortInsertFraction(self):
+        return float(self.getMemberV('ShortInsertFraction'))
+
+    @shortInsertFraction.setter
+    def shortInsertFraction(self, value):
+        self.setMemberV('ShortInsertFraction', float(value))
+
+
+def _staggeredZip(binWidth, start1, start2, bins1, bins2):
+    tupleList = [(start1, bins1), (start2, bins2)]
+    tupleList.sort(key=lambda x: x[0])
+    tuple1, tuple2 = tupleList
+    start1, bins1 = tuple1
+    start2, bins2 = tuple2
+    index = start1
+    while bins1 and bins2:
+        # pull from the first if it starts first
+        if index != start2:
+            index += binWidth
+            yield bins1.pop(0)
+        else:
+            yield bins1.pop(0) + bins2.pop(0)
+    # fill with zeros if the second hasn't started yet (they don't overlap)
+    while index != start2:
+        index += binWidth
+        yield 0
+    # then run out whichever still has items
+    for scrap in bins1 or bins2:
+        yield scrap
+
+class ContinuousDistribution(RecordWrapper):
+
+    def merge(self, other):
+        if self.binWidth != other.binWidth:
+            raise BinWidthMismatchError(self.binWidth, other.binWidth)
+        if (self.minBinValue % self.binWidth
+                != other.minBinValue % other.binWidth):
+            raise BinBoundaryMismatchError(self.minBinValue, other.minBinValue)
+        self.bins = list(_staggeredZip(self.binWidth, self.minBinValue,
+                                       other.minBinValue, self.bins,
+                                       other.bins))
+        self.minBinValue = min(self.minBinValue, other.minBinValue)
+
+    @property
+    def numBins(self):
+        return int(self.getMemberV('NumBins'))
+
+    @property
+    def sampleSize(self):
+        return int(self.getMemberV('SampleSize'))
+
+    @property
+    def sampleMean(self):
+        return float(self.getMemberV('SampleMean'))
+
+    @property
+    def sampleMed(self):
+        return float(self.getMemberV('SampleMed'))
+
+    @property
+    def sampleStd(self):
+        return float(self.getMemberV('SampleStd'))
+
+    @property
+    def sample95thPct(self):
+        return float(self.getMemberV('Sample95thPct'))
+
+    @property
+    def binWidth(self):
+        return float(self.getMemberV('BinWidth'))
+
+    @binWidth.setter
+    def binWidth(self, value):
+        self.setMemberV('BinWidth', str(value))
+
+    @property
+    def minOutlierValue(self):
+        return float(self.getMemberV('MinOutlierValue'))
+
+    @property
+    def maxOutlierValue(self):
+        return float(self.getMemberV('MaxOutlierValue'))
+
+    @property
+    def minBinValue(self):
+        return float(self.getMemberV('MinBinValue'))
+
+    @minBinValue.setter
+    def minBinValue(self, value):
+        self.setMemberV('MinBinValue', str(value))
+
+    @property
+    def maxBinValue(self):
+        return float(self.getMemberV('MaxBinValue'))
+
+    @property
+    def description(self):
+        return self.getMemberV('MetricDescription')
+
+    @property
+    def bins(self):
+        binCounts = RecordWrapper(self.getV('children', 'BinCounts'))
+        counts = binCounts.findChildren('BinCount')
+        counts = [int(count.metavalue) for count in counts]
+        return counts
+
+    @bins.setter
+    def bins(self, newBins):
+        """Replace the bins."""
+        binCounts = RecordWrapper(self.getV('children', 'BinCounts'))
+        binCounts.removeChildren('BinCount')
+        binCounts.extend([_emptyMember(tag='BinCount', text=str(mem))
+                          for mem in newBins])
+
+    @property
+    def labels(self):
+        """Label the bins with the min value of each bin"""
+        # numBins appears to be wrong in the sts.xml files. Otherwise, it would
+        # work well here:
+        return [self.minBinValue + i * self.binWidth for i in
+                range(len(self.bins))]
+
+class BinMismatchError(Exception):
+    pass
+
+class BinWidthMismatchError(BinMismatchError):
+
+    def __init__(self, width1, width2):
+        self.width1 = width1
+        self.width2 = width2
+
+    def __str__(self):
+        return "Bin width mismatch: {w1} != {w2}".format(w1=self.width1,
+                                                         w2=self.width2)
+
+class BinNumberMismatchError(BinMismatchError):
+
+    def __init__(self, num1, num2):
+        self.num1 = num1
+        self.num2 = num2
+
+    def __str__(self):
+        return "Bin number mismatch: {w1} != {w2}".format(w1=self.num1,
+                                                          w2=self.num2)
+
+class BinBoundaryMismatchError(BinMismatchError):
+
+    def __init__(self, min1, min2):
+        self.min1 = min1
+        self.min2 = min2
+
+    def __str__(self):
+        return "Bin boundary offset mismatch, minVals: {w1} != {w2}".format(
+            w1=self.min1, w2=self.min2)
+
+class DiscreteDistribution(RecordWrapper):
+
+    def merge(self, other):
+        if self.numBins != other.numBins:
+            raise BinNumberMismatchError(self.numBins, other.numBins)
+        if set(self.labels) != set(other.labels):
+            raise BinMismatchError
+        sBins = zip(self.labels, self.bins)
+        oBins = dict(zip(other.labels, other.bins))
+        self.bins = [value + oBins[key] for key, value in sBins]
+
+    @property
+    def numBins(self):
+        return int(self.getMemberV('NumBins'))
+
+    @property
+    def bins(self):
+        binCounts = RecordWrapper(self.getV('children', 'BinCounts'))
+        return [int(child.metavalue)
+                for child in binCounts.findChildren('BinCount')]
+
+    @bins.setter
+    def bins(self, newBins):
+        """Replace the bin values. This assumes the label order is
+        maintained"""
+        binCounts = RecordWrapper(self.getV('children', 'BinCounts'))
+        for child, value in zip(binCounts.findChildren('BinCount'), newBins):
+            child.metavalue = str(value)
+
+    @property
+    def labels(self):
+        return [child.metavalue for child in self.findChildren('BinLabel')]
+
+    @property
+    def description(self):
+        return self.getMemberV('MetricDescription')
+
+
+class RunDetailsMetadata(RecordWrapper):
+
+
+    @property
+    def runId(self):
+        return self.getMemberV('runId')
+
+    @property
+    def name(self):
+        return self.getMemberV('Name')
+
+
+class WellSampleMetadata(RecordWrapper):
+
+
+    @property
+    def uniqueId(self):
+        return self.getV('attrib', 'UniqueId')
+
+    @property
+    def plateId(self):
+        return self.getMemberV('PlateId')
+
+    @property
+    def wellName(self):
+        return self.getMemberV('WellName')
+
+    @property
+    def concentration(self):
+        return self.getMemberV('Concentration')
+
+    @property
+    def sampleReuseEnabled(self):
+        return self.getMemberV('SampleReuseEnabled')
+
+    @property
+    def stageHotstartEnabled(self):
+        return self.getMemberV('StageHotstartEnabled')
+
+    @property
+    def sizeSelectionEnabled(self):
+        return self.getMemberV('SizeSelectionEnabled')
+
+    @property
+    def useCount(self):
+        return self.getMemberV('UseCount')
+
+    @property
+    def comments(self):
+        return self.getMemberV('Comments')
+
+    @property
+    def bioSamplePointers(self):
+        return BioSamplePointersMetadata(
+            self.getV('children', 'BioSamplePointers'))
+
+
+class BioSamplePointersMetadata(RecordWrapper):
+    """The BioSamplePointer members don't seem complex enough to justify
+    class representation, instead rely on base class methods to provide
+    iterators and accessors"""
+    pass
+
+
+class PrimaryMetadata(RecordWrapper):
+    """
+
+    Doctest:
+        >>> import os, tempfile
+        >>> from pbcore.io import SubreadSet
+        >>> import pbcore.data.datasets as data
+        >>> ds1 = SubreadSet(data.getXml(5))
+        >>> ds1.metadata.collections[0].primary.resultsFolder
+        'Analysis_Results'
+        >>> ds1.metadata.collections[0].primary.resultsFolder = (
+        ...     'BetterAnalysis_Results')
+        >>> ds1.metadata.collections[0].primary.resultsFolder
+        'BetterAnalysis_Results'
+        >>> outdir = tempfile.mkdtemp(suffix="dataset-doctest")
+        >>> outXml = 'xml:' + os.path.join(outdir, 'tempfile.xml')
+        >>> ds1.write(outXml, validate=False)
+        >>> ds2 = SubreadSet(outXml)
+        >>> ds2.metadata.collections[0].primary.resultsFolder
+        'BetterAnalysis_Results'
+    """
+
+    @property
+    def automationName(self):
+        return self.getMemberV('AutomationName')
+
+    @property
+    def configFileName(self):
+        return self.getMemberV('ConfigFileName')
+
+    @property
+    def sequencingCondition(self):
+        return self.getMemberV('SequencingCondition')
+
+    @property
+    def resultsFolder(self):
+        return self.getMemberV('ResultsFolder')
+
+    @resultsFolder.setter
+    def resultsFolder(self, value):
+        self.setMemberV('ResultsFolder', value)
+
+    @property
+    def collectionPathUri(self):
+        return self.getMemberV('CollectionPathUri')
+
+    @property
+    def copyFiles(self):
+        return CopyFilesMetadata(self.getV('children', 'CopyFiles'))
+
+
+class CopyFilesMetadata(RecordWrapper):
+    """The CopyFile members don't seem complex enough to justify
+    class representation, instead rely on base class methods"""
+    pass
+
+
+class BioSamplesMetadata(RecordWrapper):
+    """The metadata for the list of BioSamples
+
+        Doctest:
+            >>> from pbcore.io import DataSet
+            >>> import pbcore.data.datasets as data
+            >>> ds = DataSet(data.getSubreadSet())
+            >>> ds.metadata.bioSamples[0].name
+            'consectetur purus'
+            >>> for bs in ds.metadata.bioSamples:
+            ...     print bs.name
+            consectetur purus
+            >>> em = {'tag':'BioSample', 'text':'', 'children':[],
+            ...       'attrib':{'Name':'great biosample'}}
+            >>> ds.metadata.bioSamples.extend([em])
+            >>> ds.metadata.bioSamples[1].name
+            'great biosample'
+        """
+
+
+    def __getitem__(self, index):
+        """Get a biosample"""
+        return BioSampleMetadata(self.record['children'][index])
+
+    def __iter__(self):
+        """Iterate over biosamples"""
+        for child in self.record['children']:
+            yield BioSampleMetadata(child)
+
+    def merge(self, other):
+        self.extend([child for child in other])
+
+
+class BioSampleMetadata(RecordWrapper):
+    """The metadata for a single BioSample"""
+
+
+    @property
+    def uniqueId(self):
+        return self.getV('attrib', 'UniqueId')
+
+    @property
+    def createdAt(self):
+        return self.getV('attrib', 'CreatedAt')
+
+
+def _emptyMember(tag=None, text=None, attrib=None, children=None):
+    """Return an empty stock Element representation"""
+    if not tag:
+        tag = ''
+    if not text:
+        text = ''
+    if not attrib:
+        attrib = {}
+    if not children:
+        children = []
+    return {'tag': tag, 'text': text, 'attrib': attrib, 'children': children}
diff --git a/pbcore/io/dataset/DataSetReader.py b/pbcore/io/dataset/DataSetReader.py
new file mode 100755
index 0000000..22b3b39
--- /dev/null
+++ b/pbcore/io/dataset/DataSetReader.py
@@ -0,0 +1,304 @@
+""" Input and output functions for DataSet XML files"""
+
+import os.path
+import functools
+import xml.etree.ElementTree as ET
+import logging
+from urlparse import urlparse
+import DataSetIO
+from pbcore.io.dataset.DataSetMembers import (ExternalResource,
+                                              ExternalResources,
+                                              DataSetMetadata, RecordWrapper,
+                                              Filters, AutomationParameters)
+from pbcore.io.dataset.DataSetWriter import _eleFromDictList
+
+XMLNS = "http://pacificbiosciences.com/PacBioDataModel.xsd"
+
+__all__ = ['parseFiles']
+
+log = logging.getLogger(__name__)
+
+def parseFiles(filenames):
+    """Open files with a helper function, feed any available members into a
+    dictionary to be collected by the DataSet object
+
+    Args:
+        filenames: a list of filenames to parse
+    Returns:
+        A list of dictionaries of what will be copied into DataSet members
+    Doctest:
+        >>> from pbcore.io import DataSet
+        >>> import pbcore.data.datasets as data
+        >>> inBam = data.getBam()
+        >>> ds = parseFiles([inBam])
+        >>> type(ds).__name__
+        'DataSet'
+    """
+    dataSetRecords = []
+    # Create a DataSet object for each filename
+    for filename in filenames:
+        dataSetRecords.append(_parseFile(filename))
+    tbr = reduce(lambda x, y: x + y, dataSetRecords)
+    log.debug("Done parsing files")
+    return tbr
+
+def _parseFile(filename):
+    """Opens a single filename, returns a list of one or more member
+    dictionaries (more than one in the case of XML files or malformed
+    concatenated XML
+    files)."""
+    handledTypes = {'xml': _openXmlFile,
+                    'bam': _openBamFile,
+                    'fofn': _openFofnFile,
+                    '': _openUnknownFile,
+                    'file': _openUnknownFile}
+    url = urlparse(filename)
+    fileType = url.scheme
+    fileLocation = url.path.strip()
+    if url.netloc:
+        fileLocation = url.netloc
+    elif os.path.exists(fileLocation):
+        fileLocation = os.path.abspath(fileLocation)
+    else:
+        log.error("{f} not found".format(f=fileLocation))
+    dataSetRecord = handledTypes[fileType](fileLocation)
+    dataSetRecord.makePathsAbsolute(curStart=os.path.dirname(fileLocation))
+    return dataSetRecord
+
+def _openFofnFile(path):
+    """Open a fofn file by calling parseFiles on the new filename list"""
+    with open(path, 'r') as fofnFile:
+        files = []
+        for infn in fofnFile:
+            tmp = os.path.abspath(infn)
+            if os.path.exists(tmp):
+                files.append(tmp)
+            else:
+                files.append(os.path.join(os.path.dirname(path), infn))
+        return parseFiles(files)
+
+def _openUnknownFile(path):
+    """Open non-uri files
+    """
+    if path.endswith('xml'):
+        return _openXmlFile(path)
+    elif path.endswith('bam'):
+        return _openBamFile(path)
+    elif path.endswith('fofn'):
+        return _openFofnFile(path)
+    else:
+        return _openGenericFile(path)
+
+def _openGenericFile(path):
+    """Create and populate an Element object, put it in an available members
+    dictionary, return"""
+    extRes = ExternalResource()
+    extRes.resourceId = path
+    # Perhaps this should be in its own _openFastaFile function. Or
+    # _openBamFile should be rolled into this...
+    possible_indices = ['.fai']
+    extRes.addIndices([path + ext for ext in possible_indices if
+                       os.path.exists(path + ext)])
+    extRess = ExternalResources()
+    extRess.append(extRes)
+    tbr = DataSetIO.DataSet()
+    tbr.addExternalResources(extRess)
+    tbr.newUuid()
+    return tbr
+
+def _openBamFile(path):
+    """Create and populate an Element object, put it in an available members
+    dictionary, return"""
+    extRes = ExternalResource()
+    extRes.resourceId = path
+    possible_indices = ['.pbi', '.bai', '.metadata.xml']
+    extRes.addIndices([path + ext for ext in possible_indices if
+                       os.path.exists(path + ext)])
+    extRess = ExternalResources()
+    extRess.append(extRes)
+    tbr = DataSetIO.DataSet()
+    tbr.addExternalResources(extRess)
+    tbr.newUuid()
+    return tbr
+
+def _openXmlFile(path):
+    """Open the XML file, extract information, create and populate Element
+    objects, put them in an available members dictionary, return
+
+    Doctest:
+        >>> import pbcore.data.datasets as data
+        >>> import xml.etree.ElementTree as ET
+        >>> dsr = _openXmlFile(data.getXml(8).split(':')[1])
+        >>> dsr.externalResources != None
+        True
+        >>> dsr.filters != None
+        True
+    """
+    with open(path, 'rb') as xml_file:
+        tree = ET.parse(xml_file)
+    root = tree.getroot()
+    return _parseXmlDataSet(root)
+
+def _parseXmlDataSet(element):
+    """Parse an XML DataSet tag, or the root tag of a DataSet XML file (they
+    should be equivalent)
+
+    Doctest:
+        >>> import pbcore.data.datasets as data
+        >>> ds = _openXmlFile(data.getXml(no=8).split(':')[-1])
+        >>> type(ds).__name__
+        'SubreadSet'
+    """
+    dsTypeMap = {'DataSet': DataSetIO.DataSet,
+                 'SubreadSet': DataSetIO.SubreadSet,
+                 'HdfSubreadSet': DataSetIO.HdfSubreadSet,
+                 'ConsensusReadSet': DataSetIO.ConsensusReadSet,
+                 'AlignmentSet': DataSetIO.AlignmentSet,
+                 'ReferenceSet': DataSetIO.ReferenceSet,
+                 'ContigSet': DataSetIO.ContigSet,
+                 'BarcodeSet': DataSetIO.BarcodeSet}
+    try:
+        result = dsTypeMap[_tagCleaner(element.tag)]()
+    except KeyError:
+        # Fall back to the base type (from which the others are formed) for
+        # unkown DataSet types
+        result = dsTypeMap['DataSet']()
+    result.objMetadata = element.attrib
+    namer = functools.partial(_namespaceTag, XMLNS)
+    element = _updateDataset(element)
+    for child in element:
+        if child.tag == namer('ExternalResources'):
+            result.externalResources = _parseXmlExtResources(child)
+        elif child.tag == namer('DataSets'):
+            result.subdatasets = _parseXmlDataSets(child)
+        elif child.tag == namer('Filters'):
+            result.filters = _parseXmlFilters(child)
+        elif child.tag == namer('DataSetMetadata'):
+            result.metadata = _parseXmlDataSetMetadata(child)
+        else:
+            # Unknown tag found in XML
+            pass
+    return result
+
+def _updateDataset(element):
+    namer = functools.partial(_namespaceTag, XMLNS)
+    updateMap = {
+        './/' + namer('ExternalDataReferences'): 'ExternalResources',
+        './/' + namer('ExternalReference'): 'ExternalResource',
+        './/' + namer('BioSampleReferences'): 'BioSamplePointers',
+        './/' + namer('BioSampleReference'): 'BioSamplePointer',
+        './/' + namer('PacBioIndex'): 'FileIndex',
+        './/' + namer('CCSreadSet'): 'ConsensusReadSet',
+        }
+    for old, new in updateMap.items():
+        #while element.find('.//' + namer(old)) is not None:
+        while element.find(old) is not None:
+            log.error("Outdated XML received: {t}".format(
+                t=old.split('}')[-1]))
+            element.find(old).tag = namer(new)
+
+    auton = ('.//' + namer('CollectionMetadata') + '/' +
+             namer('AutomationName'))
+    if element.find(auton) is not None:
+        log.error("Outdated XML received: AutomationName")
+        autonele = element.find(auton)
+        autonele.tag = namer('Automation')
+        val = autonele.text
+        autonele.text = None
+        newParams = AutomationParameters()
+        newParams.addParameter(None, None)
+        autonele.append(_eleFromDictList(newParams.record))
+    return element
+
+def _namespaceTag(xmlns, tagName):
+    """Preface an XML tag name with the provided namespace"""
+    return ''.join(["{", xmlns, "}", tagName])
+
+def _tagCleaner(tagName):
+    """Remove the namespace prefix from a tag name"""
+    return tagName.split('}')[-1]
+
+def _parseXmlExtResources(element):
+    """Parse the ExternalResources tag, populating a list of
+    ExternalResource objects"""
+    return ExternalResources(_eleToDictList(element))
+
+def _parseXmlDataSetMetadata(element):
+    """Parse the DataSetMetadata field of XML inputs. This data can be
+    extremely extensive."""
+    result = []
+    for child in element:
+        result.append(_eleToDictList(child))
+    tbr = DataSetMetadata()
+    tbr.extend(result)
+    return tbr.record
+
+def _eleToDictList(element):
+    """A last ditch capture method for uknown Elements"""
+    tag = _tagCleaner(element.tag)
+    text = element.text
+    if text:
+        text = text.strip()
+    attrib = element.attrib
+    children = []
+    for child in element:
+        children.append(_eleToDictList(child))
+    return {'tag': tag, 'text': text, 'attrib': attrib,
+            'children': children}
+
+def _parseXmlDataSets(element):
+    """DataSets can exist as elements in other datasets, representing subsets.
+    Pull these datasets, parse them, and return a list of them."""
+    result = []
+    for child in element:
+        result.append(_parseXmlDataSet(child))
+    return result
+
+def _parseXmlFilters(element):
+    """Pull filters from XML file, put them in a list of dictionaries, where
+    each dictionary contains a representation of a Filter tag: key, value pairs
+    with parameter names and value expressions.
+
+    Doctest:
+        >>> import xml.etree.ElementTree as ET
+        >>> import pbcore.data.datasets as data
+        >>> tree = ET.parse(data.getXml(no=8).split(':')[1])
+        >>> root = tree.getroot()
+        >>> filters = root[1]
+        >>> str(_parseXmlFilters(filters))
+        '( rq > 0.75 ) OR ( qname == 100/0/0_100 )'
+    """
+    """
+    namer = functools.partial(_namespaceTag, XMLNS)
+    result = []
+    for filtTag in filters:
+        #filt = Filter()
+        filt = {}
+        # This is essentially to skip the <Parameters> level
+        for child in filtTag:
+            if child.tag == namer('Parameters'):
+                for param in child:
+                    filt[param.attrib['Name'].lower()] = param.attrib['Value']
+        result.append(filt)
+    return result
+    """
+    return Filters(_eleToDictList(element))
+
+def parseStats(filename):
+    url = urlparse(filename)
+    fileType = url.scheme
+    fileLocation = url.path.strip()
+    if url.netloc:
+        fileLocation = url.netloc
+    tree = ET.parse(fileLocation)
+    root = tree.getroot()
+    stats = RecordWrapper(_eleToDictList(root))
+    stats.record['tag'] = 'SummaryStats'
+    whitelist = ['ShortInsertFraction', 'AdapterDimerFraction',
+                 'MedianInsertDist', 'ProdDist', 'ReadTypeDist',
+                 'ReadLenDist', 'ReadQualDist', 'InsertReadQualDist',
+                 'InsertReadLenDist', 'ControlReadQualDist',
+                 'ControlReadLenDist', 'NumSequencingZmws']
+    stats.pruneChildrenTo(whitelist)
+    return stats
+
diff --git a/pbcore/io/dataset/DataSetValidator.py b/pbcore/io/dataset/DataSetValidator.py
new file mode 100755
index 0000000..20f12d0
--- /dev/null
+++ b/pbcore/io/dataset/DataSetValidator.py
@@ -0,0 +1,53 @@
+"""Validate DataSet XML files"""
+
+import os
+import re
+from urlparse import urlparse
+import xml.etree.ElementTree as ET
+
+XMLNS = "http://pacificbiosciences.com/PacBioDataModel.xsd"
+
+def validateResources(xmlroot, relTo=False):
+    stack = [xmlroot]
+    while stack:
+        element = stack.pop()
+        stack.extend(element.getchildren())
+        resId = element.get('ResourceId')
+        if resId:
+            parsedId = urlparse(resId)
+            rfn = urlparse(resId).path.strip()
+            if not os.path.isfile(rfn):
+                if not os.path.isfile(os.path.join(os.path.dirname(relTo),
+                                                   rfn)):
+                    raise IOError, "{f} not found".format(f=rfn)
+
+def validateXml(xmlroot):
+    # pyxb precompiles and therefore does not need the original xsd file.
+    #if not os.path.isfile(XSD):
+        #raise SystemExit, "Validation xsd {s} not found".format(s=XSD)
+
+    validateResources(xmlroot)
+
+    # Conceal the first characters of UniqueIds if they are legal numbers that
+    # would for some odd reason be considered invalid. Let all illegal
+    # characters fall through to the validator.
+    from pbcore.io.dataset import DataSetXsd
+    fixedString = re.sub('UniqueId="[0-9]', 'UniqueId="f',
+                         ET.tostring(xmlroot))
+    DataSetXsd.CreateFromDocument(fixedString)
+
+def validateFile(xmlfn):
+    if ':' in xmlfn:
+        xmlfn = urlparse(xmlfn).path.strip()
+    with open(xmlfn, 'r') as xmlfile:
+        #root = etree.parse(xmlfile)
+        root = ET.parse(xmlfile).getroot()
+        return validateXml(root)
+
+def validateString(xmlstring, relTo=None):
+    #root = etree.parse(xmlfile)
+    root = ET.fromstring(xmlstring)
+    validateResources(root, relTo=relTo)
+    #return validateXml(root)
+
+
diff --git a/pbcore/io/dataset/DataSetWriter.py b/pbcore/io/dataset/DataSetWriter.py
new file mode 100755
index 0000000..160fb70
--- /dev/null
+++ b/pbcore/io/dataset/DataSetWriter.py
@@ -0,0 +1,185 @@
+""" Input and output functions for DataSet XML files"""
+
+import copy, time
+import xml.etree.ElementTree as ET
+
+XMLNS = "http://pacificbiosciences.com/PacBioDataModel.xsd"
+# Not actually sure what this should be:
+XMLVERSION = '2.3.0'
+
+__all__ = ['toXml']
+
+# XML Writer:
+
+def toXml(dataset, core=False):
+    """Generate an XML representation of this object. This is a function
+    independent of "write" so that it can also be used to generate new
+    UniqueIds, which are based on the concept of a Core Dataset.
+
+    Args:
+        core: T/F whether or not to strip out user editable attributes
+              throughout the xml.
+    Returns:
+        The XML representation as a string.
+    """
+    root = _toElementTree(dataset, root=None, core=core)
+    return ET.tostring(root, encoding="UTF-8")
+
+def _toElementTree(dataSet, root=None, core=False):
+    """Generate an ElementTree representation of this object. This is a
+    function independent of "write" and "toXml" so that it can also be used
+    to generate DataSet Elements, which can be nested into other Dataset
+    elements but don't share the same root tag.
+
+    Args:
+        root: The root to which to append the elementTree
+        core: T/F whether or not to strip out user editable attributes
+              throughout the xml.
+    Returns:
+        The XML representation as an ElementTree.
+    """
+    # 'if not root:' would conflict with testing root for children
+    if root is None:
+        rootType = type(dataSet).__name__
+        #rootType = dataSet.metadata.get(
+            #'MetaType', 'PacBio.DataSet.SubreadSet').split('.')[2]
+        attribs = dataSet.objMetadata
+        if core:
+            attribs = _coreClean(attribs)
+        root = ET.Element(rootType, attribs)
+
+    _addExternalResourcesElement(dataSet, root, core)
+    _addDataSetMetadataElement(dataSet, root)
+    _addFiltersElement(dataSet, root)
+    _addDataSetsElement(dataSet, root)
+    xsi = "{http://www.w3.org/2001/XMLSchema-instance}"
+    # The ElementTree element dictionary doesn't quite work the same as a
+    # regular dictionary, it seems, thus the convoluted get/set business
+    # instead of setdefault
+    if not root.get('CreatedAt') and not core:
+        root.set('CreatedAt', time.strftime("%Y-%m-%dT%H:%M:%S"))
+    if not root.get('Version'):
+        root.set('Version', XMLVERSION)
+    if not root.get(xsi + 'schemaLocation'):
+        root.set(xsi + 'schemaLocation', ("http://pacificbiosciences.com"
+                                          "/PacBioDataModel.xsd"))
+    root.set('xmlns', XMLNS)
+    return root
+
+def _coreClean(attribs):
+    """Remove the non-core elements from any attributes dictionary. This will
+    allow the same toXml function to serve as both the XML output
+    generator and the core for the newUuid hashing function.
+
+    Args:
+        attribs: a dictionary of attributes (both XML and DataSet)
+    Returns:
+        a dictionary of attributes less user-mutable members
+    """
+    attribs = copy.deepcopy(attribs)
+    if 'Name' in attribs:
+        del attribs['Name']
+    if 'Description' in attribs:
+        del attribs['Description']
+    if 'Tags' in attribs:
+        del attribs['Tags']
+    if 'CreatedAt' in attribs:
+        del attribs['CreatedAt']
+    # Whether or not the hash should salt future hashes is up for debate
+    #if 'UniqueId' in attribs:
+        #del attribs['UniqueId']
+    return attribs
+
+
+def _addExternalResourcesElement(dataSet, root, core=False):
+    """Add ExternalResource Elements to root, complete with resourceIds,
+    PacBioIndex, PacBioMetadata, tags, etc.
+
+    Args:
+        root: The root ElementTree object. Extended here using SubElement
+        core=False: T/F strip out user editable attributes
+    """
+    if dataSet.externalResources:
+        dsmd = ET.SubElement(root, 'ExternalResources')
+        for child in dataSet.externalResources.record['children']:
+            dsmd.append(_eleFromDictList(child, core))
+
+def _addDataSetMetadataElement(dataSet, root):
+    """Add DataSetMetadata Elements to the root ElementTree object. Full
+    depth serialization will be both difficult and necessary.
+
+    Args:
+        root: The root ElementTree object. Extended here using SubElement
+    """
+    if dataSet.metadata:
+        dsmd = ET.SubElement(root, 'DataSetMetadata')
+        #for key, value in dataSet.datasetMetadata.items():
+        #for key, value in dataSet.metadata.record.items():
+        for child in dataSet.metadata.record['children']:
+            #dsmd.append(_eleFromEleDict(key, value))
+            #if isinstance(value, (int, float, str)):
+                #ET.SubElement(dsmd, key).text = value
+            #elif isinstance(value, dict):
+                #dsmd.append(_eleFromDict(key, value))
+            dsmd.append(_eleFromDictList(child))
+
+def _eleFromDict(tag, eleAsDict):
+    """A last ditch capture method for uknown Elements"""
+    ele = ET.Element(tag, eleAsDict['attrib'])
+    ele.text = eleAsDict['text']
+    for childTag, childDict in eleAsDict['children'].items():
+        ele.append(_eleFromDict(childTag, childDict))
+    return ele
+
+def _eleFromDictList(eleAsDict, core=False):
+    """A last ditch capture method for uknown Elements"""
+    if core:
+        ele = ET.Element(eleAsDict['tag'], _coreClean(eleAsDict['attrib']))
+    else:
+        ele = ET.Element(eleAsDict['tag'], eleAsDict['attrib'])
+    ele.text = eleAsDict['text']
+    for child in eleAsDict['children']:
+        ele.append(_eleFromDictList(child))
+    return ele
+
+def _addFiltersElement(dataset, root, core=False):
+    """Add Filter Elements to root, which are deep but uncluttered. Core
+    option not really necessary, as filter names are fundamentally
+    different than other (e.g. ExternalResource) names.
+
+    Args:
+        root: The root ElementTree object. Extended here using SubElement
+    """
+    if dataset.filters:
+        filters = ET.SubElement(root, 'Filters')
+        for child in dataset.filters.record['children']:
+            filters.append(_eleFromDictList(child, core))
+        #for filt in dataset.filters:
+            #filtElement = ET.SubElement(filters, 'Filter')
+            #parameters = ET.SubElement(filtElement, 'Parameters')
+            #for key, value in filt.items():
+                #ET.SubElement(parameters, 'Parameter', Name=key, Value=value)
+
+def _addDataSetsElement(dataset, root):
+    """Add DataSet Elements to root, which essentially nests ElementTrees.
+
+    Args:
+        root: The root ElementTree object. Extended here using SubElement
+    """
+    if dataset.subdatasets:
+        dse = ET.SubElement(root, 'DataSets')
+        for subSet in dataset.subdatasets:
+            subSetRoot = ET.SubElement(dse, subSet.__class__.__name__,
+                                       subSet.objMetadata)
+            _toElementTree(subSet, subSetRoot)
+
+def _extResToXMLAttribs(extRes):
+    """Clean the members of the ExternalResource dictionary into XML
+    appropriate objects. This shouldn't be a method of ExternalResource,
+    as it requires knowledge of which members are appropriate for XML
+    attributes and which are not."""
+    attr = {}
+    for key, value in extRes.toDict().items():
+        if value and not (key == 'PacBioIndex' or key == 'PacBioMetadata'):
+            attr[key] = value
+    return attr
diff --git a/pbcore/io/dataset/DataSetXsd.py b/pbcore/io/dataset/DataSetXsd.py
new file mode 100755
index 0000000..e8b1330
--- /dev/null
+++ b/pbcore/io/dataset/DataSetXsd.py
@@ -0,0 +1,13921 @@
+# ./DataSetXsd.py
+# -*- coding: utf-8 -*-
+# PyXB bindings for NM:3c1eccef1b156ac43379b476cb78e3eecd9f5c97
+# Generated 2015-06-23 13:50:43.883039 by PyXB version 1.2.4 using Python 2.7.6.final.0
+# Namespace http://pacificbiosciences.com/PacBioDataModel.xsd
+
+from __future__ import unicode_literals
+import pyxb
+import pyxb.binding
+import pyxb.binding.saxer
+import io
+import pyxb.utils.utility
+import pyxb.utils.domutils
+import sys
+import pyxb.utils.six as _six
+
+# Unique identifier for bindings created at the same time
+_GenerationUID = pyxb.utils.utility.UniqueIdentifier('urn:uuid:83991eee-19e9-11e5-8315-001a4acb6b14')
+
+# Version of PyXB used to generate the bindings
+_PyXBVersion = '1.2.4'
+# Generated bindings are not compatible across PyXB versions
+if pyxb.__version__ != _PyXBVersion:
+    raise pyxb.PyXBVersionError(_PyXBVersion)
+
+# Import bindings for namespaces imported into schema
+import pyxb.binding.datatypes
+
+# NOTE: All namespace declarations are reserved within the binding
+Namespace = pyxb.namespace.NamespaceForURI('http://pacificbiosciences.com/PacBioDataModel.xsd', create_if_missing=True)
+Namespace.configureCategories(['typeBinding', 'elementBinding'])
+
+def CreateFromDocument (xml_text, default_namespace=None, location_base=None):
+    """Parse the given XML and use the document element to create a
+    Python instance.
+
+    @param xml_text An XML document.  This should be data (Python 2
+    str or Python 3 bytes), or a text (Python 2 unicode or Python 3
+    str) in the L{pyxb._InputEncoding} encoding.
+
+    @keyword default_namespace The L{pyxb.Namespace} instance to use as the
+    default namespace where there is no default namespace in scope.
+    If unspecified or C{None}, the namespace of the module containing
+    this function will be used.
+
+    @keyword location_base: An object to be recorded as the base of all
+    L{pyxb.utils.utility.Location} instances associated with events and
+    objects handled by the parser.  You might pass the URI from which
+    the document was obtained.
+    """
+
+    if pyxb.XMLStyle_saxer != pyxb._XMLStyle:
+        dom = pyxb.utils.domutils.StringToDOM(xml_text)
+        return CreateFromDOM(dom.documentElement, default_namespace=default_namespace)
+    if default_namespace is None:
+        default_namespace = Namespace.fallbackNamespace()
+    saxer = pyxb.binding.saxer.make_parser(fallback_namespace=default_namespace, location_base=location_base)
+    handler = saxer.getContentHandler()
+    xmld = xml_text
+    if isinstance(xmld, _six.text_type):
+        xmld = xmld.encode(pyxb._InputEncoding)
+    saxer.parse(io.BytesIO(xmld))
+    instance = handler.rootObject()
+    return instance
+
+def CreateFromDOM (node, default_namespace=None):
+    """Create a Python instance from the given DOM node.
+    The node tag must correspond to an element declaration in this module.
+
+    @deprecated: Forcing use of DOM interface is unnecessary; use L{CreateFromDocument}."""
+    if default_namespace is None:
+        default_namespace = Namespace.fallbackNamespace()
+    return pyxb.binding.basis.element.AnyCreateFromDOM(node, default_namespace)
+
+
+# Atomic simple type: [anonymous]
+class STD_ANON (pyxb.binding.datatypes.ID):
+
+    """An atomic simple type."""
+
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 69, 3)
+    _Documentation = None
+STD_ANON._CF_pattern = pyxb.binding.facets.CF_pattern()
+STD_ANON._CF_pattern.addPattern(pattern='[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}')
+STD_ANON._InitializeFacetMap(STD_ANON._CF_pattern)
+
+# Atomic simple type: {http://pacificbiosciences.com/PacBioDataModel.xsd}SupportedAcquisitionStates
+class SupportedAcquisitionStates (pyxb.binding.datatypes.string, pyxb.binding.basis.enumeration_mixin):
+
+    """An atomic simple type."""
+
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'SupportedAcquisitionStates')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 555, 1)
+    _Documentation = None
+SupportedAcquisitionStates._CF_enumeration = pyxb.binding.facets.CF_enumeration(value_datatype=SupportedAcquisitionStates, enum_prefix=None)
+SupportedAcquisitionStates.Ready = SupportedAcquisitionStates._CF_enumeration.addEnumeration(unicode_value='Ready', tag='Ready')
+SupportedAcquisitionStates.Initializing = SupportedAcquisitionStates._CF_enumeration.addEnumeration(unicode_value='Initializing', tag='Initializing')
+SupportedAcquisitionStates.Acquiring = SupportedAcquisitionStates._CF_enumeration.addEnumeration(unicode_value='Acquiring', tag='Acquiring')
+SupportedAcquisitionStates.Aligning = SupportedAcquisitionStates._CF_enumeration.addEnumeration(unicode_value='Aligning', tag='Aligning')
+SupportedAcquisitionStates.Aligned = SupportedAcquisitionStates._CF_enumeration.addEnumeration(unicode_value='Aligned', tag='Aligned')
+SupportedAcquisitionStates.Aborting = SupportedAcquisitionStates._CF_enumeration.addEnumeration(unicode_value='Aborting', tag='Aborting')
+SupportedAcquisitionStates.Aborted = SupportedAcquisitionStates._CF_enumeration.addEnumeration(unicode_value='Aborted', tag='Aborted')
+SupportedAcquisitionStates.Failed = SupportedAcquisitionStates._CF_enumeration.addEnumeration(unicode_value='Failed', tag='Failed')
+SupportedAcquisitionStates.Completing = SupportedAcquisitionStates._CF_enumeration.addEnumeration(unicode_value='Completing', tag='Completing')
+SupportedAcquisitionStates.Complete = SupportedAcquisitionStates._CF_enumeration.addEnumeration(unicode_value='Complete', tag='Complete')
+SupportedAcquisitionStates.Calibrating = SupportedAcquisitionStates._CF_enumeration.addEnumeration(unicode_value='Calibrating', tag='Calibrating')
+SupportedAcquisitionStates.Unknown = SupportedAcquisitionStates._CF_enumeration.addEnumeration(unicode_value='Unknown', tag='Unknown')
+SupportedAcquisitionStates._InitializeFacetMap(SupportedAcquisitionStates._CF_enumeration)
+Namespace.addCategoryObject('typeBinding', 'SupportedAcquisitionStates', SupportedAcquisitionStates)
+
+# Atomic simple type: {http://pacificbiosciences.com/PacBioDataModel.xsd}SupportedDataTypes
+class SupportedDataTypes (pyxb.binding.datatypes.string, pyxb.binding.basis.enumeration_mixin):
+
+    """An atomic simple type."""
+
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'SupportedDataTypes')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 571, 1)
+    _Documentation = None
+SupportedDataTypes._CF_enumeration = pyxb.binding.facets.CF_enumeration(value_datatype=SupportedDataTypes, enum_prefix=None)
+SupportedDataTypes.Int16 = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Int16', tag='Int16')
+SupportedDataTypes.Int32 = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Int32', tag='Int32')
+SupportedDataTypes.Int64 = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Int64', tag='Int64')
+SupportedDataTypes.UInt16 = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='UInt16', tag='UInt16')
+SupportedDataTypes.UInt32 = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='UInt32', tag='UInt32')
+SupportedDataTypes.UInt64 = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='UInt64', tag='UInt64')
+SupportedDataTypes.Single = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Single', tag='Single')
+SupportedDataTypes.Double = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Double', tag='Double')
+SupportedDataTypes.String = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='String', tag='String')
+SupportedDataTypes.DateTime = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='DateTime', tag='DateTime')
+SupportedDataTypes.Int16_1D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Int16_1D', tag='Int16_1D')
+SupportedDataTypes.Int32_1D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Int32_1D', tag='Int32_1D')
+SupportedDataTypes.Int64_1D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Int64_1D', tag='Int64_1D')
+SupportedDataTypes.UInt16_1D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='UInt16_1D', tag='UInt16_1D')
+SupportedDataTypes.UInt32_1D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='UInt32_1D', tag='UInt32_1D')
+SupportedDataTypes.UInt64_1D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='UInt64_1D', tag='UInt64_1D')
+SupportedDataTypes.Single_1D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Single_1D', tag='Single_1D')
+SupportedDataTypes.Double_1D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Double_1D', tag='Double_1D')
+SupportedDataTypes.String_1D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='String_1D', tag='String_1D')
+SupportedDataTypes.DateTime_1D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='DateTime_1D', tag='DateTime_1D')
+SupportedDataTypes.Int16_2D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Int16_2D', tag='Int16_2D')
+SupportedDataTypes.Int32_2D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Int32_2D', tag='Int32_2D')
+SupportedDataTypes.Int64_2D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Int64_2D', tag='Int64_2D')
+SupportedDataTypes.UInt16_2D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='UInt16_2D', tag='UInt16_2D')
+SupportedDataTypes.UInt32_2D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='UInt32_2D', tag='UInt32_2D')
+SupportedDataTypes.UInt64_2D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='UInt64_2D', tag='UInt64_2D')
+SupportedDataTypes.Single_2D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Single_2D', tag='Single_2D')
+SupportedDataTypes.Double_2D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Double_2D', tag='Double_2D')
+SupportedDataTypes.String_2D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='String_2D', tag='String_2D')
+SupportedDataTypes.DateTime_2D = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='DateTime_2D', tag='DateTime_2D')
+SupportedDataTypes.XML = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='XML', tag='XML')
+SupportedDataTypes.JSON = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='JSON', tag='JSON')
+SupportedDataTypes.Object = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Object', tag='Object')
+SupportedDataTypes.Other = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Other', tag='Other')
+SupportedDataTypes.Unknown = SupportedDataTypes._CF_enumeration.addEnumeration(unicode_value='Unknown', tag='Unknown')
+SupportedDataTypes._InitializeFacetMap(SupportedDataTypes._CF_enumeration)
+Namespace.addCategoryObject('typeBinding', 'SupportedDataTypes', SupportedDataTypes)
+
+# Atomic simple type: {http://pacificbiosciences.com/PacBioDataModel.xsd}SupportedNucleotides
+class SupportedNucleotides (pyxb.binding.datatypes.string, pyxb.binding.basis.enumeration_mixin):
+
+    """An atomic simple type."""
+
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'SupportedNucleotides')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 610, 1)
+    _Documentation = None
+SupportedNucleotides._CF_enumeration = pyxb.binding.facets.CF_enumeration(value_datatype=SupportedNucleotides, enum_prefix=None)
+SupportedNucleotides.A = SupportedNucleotides._CF_enumeration.addEnumeration(unicode_value='A', tag='A')
+SupportedNucleotides.C = SupportedNucleotides._CF_enumeration.addEnumeration(unicode_value='C', tag='C')
+SupportedNucleotides.T = SupportedNucleotides._CF_enumeration.addEnumeration(unicode_value='T', tag='T')
+SupportedNucleotides.G = SupportedNucleotides._CF_enumeration.addEnumeration(unicode_value='G', tag='G')
+SupportedNucleotides._InitializeFacetMap(SupportedNucleotides._CF_enumeration)
+Namespace.addCategoryObject('typeBinding', 'SupportedNucleotides', SupportedNucleotides)
+
+# Atomic simple type: {http://pacificbiosciences.com/PacBioDataModel.xsd}SupportedRunStates
+class SupportedRunStates (pyxb.binding.datatypes.string, pyxb.binding.basis.enumeration_mixin):
+
+    """An atomic simple type."""
+
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'SupportedRunStates')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 618, 1)
+    _Documentation = None
+SupportedRunStates._CF_enumeration = pyxb.binding.facets.CF_enumeration(value_datatype=SupportedRunStates, enum_prefix=None)
+SupportedRunStates.Ready = SupportedRunStates._CF_enumeration.addEnumeration(unicode_value='Ready', tag='Ready')
+SupportedRunStates.Idle = SupportedRunStates._CF_enumeration.addEnumeration(unicode_value='Idle', tag='Idle')
+SupportedRunStates.System_Test = SupportedRunStates._CF_enumeration.addEnumeration(unicode_value='System Test', tag='System_Test')
+SupportedRunStates.Starting = SupportedRunStates._CF_enumeration.addEnumeration(unicode_value='Starting', tag='Starting')
+SupportedRunStates.Running = SupportedRunStates._CF_enumeration.addEnumeration(unicode_value='Running', tag='Running')
+SupportedRunStates.Aborting = SupportedRunStates._CF_enumeration.addEnumeration(unicode_value='Aborting', tag='Aborting')
+SupportedRunStates.Aborted = SupportedRunStates._CF_enumeration.addEnumeration(unicode_value='Aborted', tag='Aborted')
+SupportedRunStates.Terminated = SupportedRunStates._CF_enumeration.addEnumeration(unicode_value='Terminated', tag='Terminated')
+SupportedRunStates.Completing = SupportedRunStates._CF_enumeration.addEnumeration(unicode_value='Completing', tag='Completing')
+SupportedRunStates.Complete = SupportedRunStates._CF_enumeration.addEnumeration(unicode_value='Complete', tag='Complete')
+SupportedRunStates.Unknown = SupportedRunStates._CF_enumeration.addEnumeration(unicode_value='Unknown', tag='Unknown')
+SupportedRunStates._InitializeFacetMap(SupportedRunStates._CF_enumeration)
+Namespace.addCategoryObject('typeBinding', 'SupportedRunStates', SupportedRunStates)
+
+# Atomic simple type: [anonymous]
+class STD_ANON_ (pyxb.binding.datatypes.string, pyxb.binding.basis.enumeration_mixin):
+
+    """An atomic simple type."""
+
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 47, 6)
+    _Documentation = None
+STD_ANON_._CF_enumeration = pyxb.binding.facets.CF_enumeration(value_datatype=STD_ANON_, enum_prefix=None)
+STD_ANON_.Instrument = STD_ANON_._CF_enumeration.addEnumeration(unicode_value='Instrument', tag='Instrument')
+STD_ANON_.User = STD_ANON_._CF_enumeration.addEnumeration(unicode_value='User', tag='User')
+STD_ANON_.AnalysisJob = STD_ANON_._CF_enumeration.addEnumeration(unicode_value='AnalysisJob', tag='AnalysisJob')
+STD_ANON_._InitializeFacetMap(STD_ANON_._CF_enumeration)
+
+# Atomic simple type: {http://pacificbiosciences.com/PacBioDataModel.xsd}PapOutputFile
+class PapOutputFile (pyxb.binding.datatypes.string, pyxb.binding.basis.enumeration_mixin):
+
+    """Defines a list of available file output types from primary output that can be copied out to the CollectionPathUri. The types Pulse, Base, Fasta, and Fastq are for legacy use only."""
+
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'PapOutputFile')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 624, 1)
+    _Documentation = 'Defines a list of available file output types from primary output that can be copied out to the CollectionPathUri. The types Pulse, Base, Fasta, and Fastq are for legacy use only.'
+PapOutputFile._CF_enumeration = pyxb.binding.facets.CF_enumeration(value_datatype=PapOutputFile, enum_prefix=None)
+PapOutputFile.Movie = PapOutputFile._CF_enumeration.addEnumeration(unicode_value='Movie', tag='Movie')
+PapOutputFile.Trace = PapOutputFile._CF_enumeration.addEnumeration(unicode_value='Trace', tag='Trace')
+PapOutputFile.Pulse = PapOutputFile._CF_enumeration.addEnumeration(unicode_value='Pulse', tag='Pulse')
+PapOutputFile.Base = PapOutputFile._CF_enumeration.addEnumeration(unicode_value='Base', tag='Base')
+PapOutputFile.Baz = PapOutputFile._CF_enumeration.addEnumeration(unicode_value='Baz', tag='Baz')
+PapOutputFile.Bam = PapOutputFile._CF_enumeration.addEnumeration(unicode_value='Bam', tag='Bam')
+PapOutputFile.Fasta = PapOutputFile._CF_enumeration.addEnumeration(unicode_value='Fasta', tag='Fasta')
+PapOutputFile.Bam_ = PapOutputFile._CF_enumeration.addEnumeration(unicode_value='Bam', tag='Bam_')
+PapOutputFile._InitializeFacetMap(PapOutputFile._CF_enumeration)
+Namespace.addCategoryObject('typeBinding', 'PapOutputFile', PapOutputFile)
+
+# Atomic simple type: [anonymous]
+class STD_ANON_2 (pyxb.binding.datatypes.string, pyxb.binding.basis.enumeration_mixin):
+
+    """An atomic simple type."""
+
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 72, 4)
+    _Documentation = None
+STD_ANON_2._CF_enumeration = pyxb.binding.facets.CF_enumeration(value_datatype=STD_ANON_2, enum_prefix=None)
+STD_ANON_2.AverageReadLength = STD_ANON_2._CF_enumeration.addEnumeration(unicode_value='AverageReadLength', tag='AverageReadLength')
+STD_ANON_2.AcquisitionTime = STD_ANON_2._CF_enumeration.addEnumeration(unicode_value='AcquisitionTime', tag='AcquisitionTime')
+STD_ANON_2.InsertSize = STD_ANON_2._CF_enumeration.addEnumeration(unicode_value='InsertSize', tag='InsertSize')
+STD_ANON_2.ReuseComplex = STD_ANON_2._CF_enumeration.addEnumeration(unicode_value='ReuseComplex', tag='ReuseComplex')
+STD_ANON_2.StageHS = STD_ANON_2._CF_enumeration.addEnumeration(unicode_value='StageHS', tag='StageHS')
+STD_ANON_2.JobId = STD_ANON_2._CF_enumeration.addEnumeration(unicode_value='JobId', tag='JobId')
+STD_ANON_2.JobName = STD_ANON_2._CF_enumeration.addEnumeration(unicode_value='JobName', tag='JobName')
+STD_ANON_2.NumberOfCollections = STD_ANON_2._CF_enumeration.addEnumeration(unicode_value='NumberOfCollections', tag='NumberOfCollections')
+STD_ANON_2.StrobeByTime = STD_ANON_2._CF_enumeration.addEnumeration(unicode_value='StrobeByTime', tag='StrobeByTime')
+STD_ANON_2.UsedControl = STD_ANON_2._CF_enumeration.addEnumeration(unicode_value='UsedControl', tag='UsedControl')
+STD_ANON_2.Use2ndLook = STD_ANON_2._CF_enumeration.addEnumeration(unicode_value='Use2ndLook', tag='Use2ndLook')
+STD_ANON_2._InitializeFacetMap(STD_ANON_2._CF_enumeration)
+
+# Atomic simple type: [anonymous]
+class STD_ANON_3 (pyxb.binding.datatypes.string, pyxb.binding.basis.enumeration_mixin):
+
+    """An atomic simple type."""
+
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 182, 4)
+    _Documentation = None
+STD_ANON_3._CF_enumeration = pyxb.binding.facets.CF_enumeration(value_datatype=STD_ANON_3, enum_prefix=None)
+STD_ANON_3.PlateId = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='PlateId', tag='PlateId')
+STD_ANON_3.PlateDefinition = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='PlateDefinition', tag='PlateDefinition')
+STD_ANON_3.SchemaVersion = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='SchemaVersion', tag='SchemaVersion')
+STD_ANON_3.DefType = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='DefType', tag='DefType')
+STD_ANON_3.Owner = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='Owner', tag='Owner')
+STD_ANON_3.CreatedBy = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='CreatedBy', tag='CreatedBy')
+STD_ANON_3.Comments = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='Comments', tag='Comments')
+STD_ANON_3.OutputPath = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='OutputPath', tag='OutputPath')
+STD_ANON_3.Collections = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='Collections', tag='Collections')
+STD_ANON_3.Collection = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='Collection', tag='Collection')
+STD_ANON_3.DNATemplatePrepKitDefinition = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='DNATemplatePrepKitDefinition', tag='DNATemplatePrepKitDefinition')
+STD_ANON_3.BindingKitDefinition = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='BindingKitDefinition', tag='BindingKitDefinition')
+STD_ANON_3.RunResources = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='RunResources', tag='RunResources')
+STD_ANON_3.CompatibleChipLayouts = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='CompatibleChipLayouts', tag='CompatibleChipLayouts')
+STD_ANON_3.ChipLayout = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='ChipLayout', tag='ChipLayout')
+STD_ANON_3.CompatibleSequencingKits = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='CompatibleSequencingKits', tag='CompatibleSequencingKits')
+STD_ANON_3.SequencingKit = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='SequencingKit', tag='SequencingKit')
+STD_ANON_3.RequiredTips = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='RequiredTips', tag='RequiredTips')
+STD_ANON_3.EstimatedTotalRunTime = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='EstimatedTotalRunTime', tag='EstimatedTotalRunTime')
+STD_ANON_3.RequiredSMRTCells = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='RequiredSMRTCells', tag='RequiredSMRTCells')
+STD_ANON_3.CollectionAutomation = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='CollectionAutomation', tag='CollectionAutomation')
+STD_ANON_3.Basecaller = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='Basecaller', tag='Basecaller')
+STD_ANON_3.SecondaryAnalysisAutomation = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='SecondaryAnalysisAutomation', tag='SecondaryAnalysisAutomation')
+STD_ANON_3.WellNo = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='WellNo', tag='WellNo')
+STD_ANON_3.SampleName = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='SampleName', tag='SampleName')
+STD_ANON_3.Barcode = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='Barcode', tag='Barcode')
+STD_ANON_3.AcquisitionTime = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='AcquisitionTime', tag='AcquisitionTime')
+STD_ANON_3.InsertSize = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='InsertSize', tag='InsertSize')
+STD_ANON_3.ReuseComplex = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='ReuseComplex', tag='ReuseComplex')
+STD_ANON_3.StageHS = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='StageHS', tag='StageHS')
+STD_ANON_3.NumberOfCollections = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='NumberOfCollections', tag='NumberOfCollections')
+STD_ANON_3.Confidence = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='Confidence', tag='Confidence')
+STD_ANON_3.SampleComment = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='SampleComment', tag='SampleComment')
+STD_ANON_3.StrobeByTime = STD_ANON_3._CF_enumeration.addEnumeration(unicode_value='StrobeByTime', tag='StrobeByTime')
+STD_ANON_3._InitializeFacetMap(STD_ANON_3._CF_enumeration)
+
+# Atomic simple type: {http://pacificbiosciences.com/PacBioDataModel.xsd}TubeLocation
+class TubeLocation (pyxb.binding.datatypes.string, pyxb.binding.basis.enumeration_mixin):
+
+    """An atomic simple type."""
+
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'TubeLocation')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 128, 1)
+    _Documentation = None
+TubeLocation._CF_enumeration = pyxb.binding.facets.CF_enumeration(value_datatype=TubeLocation, enum_prefix=None)
+TubeLocation.ReagentTube0 = TubeLocation._CF_enumeration.addEnumeration(unicode_value='ReagentTube0', tag='ReagentTube0')
+TubeLocation.ReagentTube1 = TubeLocation._CF_enumeration.addEnumeration(unicode_value='ReagentTube1', tag='ReagentTube1')
+TubeLocation._InitializeFacetMap(TubeLocation._CF_enumeration)
+Namespace.addCategoryObject('typeBinding', 'TubeLocation', TubeLocation)
+
+# Atomic simple type: {http://pacificbiosciences.com/PacBioDataModel.xsd}TubeSize
+class TubeSize (pyxb.binding.datatypes.string, pyxb.binding.basis.enumeration_mixin):
+
+    """An atomic simple type."""
+
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'TubeSize')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 134, 1)
+    _Documentation = None
+TubeSize._CF_enumeration = pyxb.binding.facets.CF_enumeration(value_datatype=TubeSize, enum_prefix=None)
+TubeSize.DeepTube = TubeSize._CF_enumeration.addEnumeration(unicode_value='DeepTube', tag='DeepTube')
+TubeSize.ShallowTube = TubeSize._CF_enumeration.addEnumeration(unicode_value='ShallowTube', tag='ShallowTube')
+TubeSize._InitializeFacetMap(TubeSize._CF_enumeration)
+Namespace.addCategoryObject('typeBinding', 'TubeSize', TubeSize)
+
+# Atomic simple type: {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentKey
+class ReagentKey (pyxb.binding.datatypes.string, pyxb.binding.basis.enumeration_mixin):
+
+    """An atomic simple type."""
+
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'ReagentKey')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 140, 1)
+    _Documentation = None
+ReagentKey._CF_enumeration = pyxb.binding.facets.CF_enumeration(value_datatype=ReagentKey, enum_prefix=None)
+ReagentKey.Base = ReagentKey._CF_enumeration.addEnumeration(unicode_value='Base', tag='Base')
+ReagentKey.DTT = ReagentKey._CF_enumeration.addEnumeration(unicode_value='DTT', tag='DTT')
+ReagentKey.DilBuffer = ReagentKey._CF_enumeration.addEnumeration(unicode_value='DilBuffer', tag='DilBuffer')
+ReagentKey.MineralOil = ReagentKey._CF_enumeration.addEnumeration(unicode_value='MineralOil', tag='MineralOil')
+ReagentKey.MIXED_DilBuffer = ReagentKey._CF_enumeration.addEnumeration(unicode_value='MIXED_DilBuffer', tag='MIXED_DilBuffer')
+ReagentKey.MIXED_OS = ReagentKey._CF_enumeration.addEnumeration(unicode_value='MIXED_OS', tag='MIXED_OS')
+ReagentKey.OSbuffer = ReagentKey._CF_enumeration.addEnumeration(unicode_value='OSbuffer', tag='OSbuffer')
+ReagentKey.OSenzyme = ReagentKey._CF_enumeration.addEnumeration(unicode_value='OSenzyme', tag='OSenzyme')
+ReagentKey.PhospholinkedNT = ReagentKey._CF_enumeration.addEnumeration(unicode_value='PhospholinkedNT', tag='PhospholinkedNT')
+ReagentKey.SABuffer = ReagentKey._CF_enumeration.addEnumeration(unicode_value='SABuffer', tag='SABuffer')
+ReagentKey.Spike = ReagentKey._CF_enumeration.addEnumeration(unicode_value='Spike', tag='Spike')
+ReagentKey.Streptavidin = ReagentKey._CF_enumeration.addEnumeration(unicode_value='Streptavidin', tag='Streptavidin')
+ReagentKey.SubstrateOS = ReagentKey._CF_enumeration.addEnumeration(unicode_value='SubstrateOS', tag='SubstrateOS')
+ReagentKey.TSQ = ReagentKey._CF_enumeration.addEnumeration(unicode_value='TSQ', tag='TSQ')
+ReagentKey.WashBuffer = ReagentKey._CF_enumeration.addEnumeration(unicode_value='WashBuffer', tag='WashBuffer')
+ReagentKey.WettingBuffer = ReagentKey._CF_enumeration.addEnumeration(unicode_value='WettingBuffer', tag='WettingBuffer')
+ReagentKey.PCA = ReagentKey._CF_enumeration.addEnumeration(unicode_value='PCA', tag='PCA')
+ReagentKey.PCD = ReagentKey._CF_enumeration.addEnumeration(unicode_value='PCD', tag='PCD')
+ReagentKey.Analog = ReagentKey._CF_enumeration.addEnumeration(unicode_value='Analog', tag='Analog')
+ReagentKey.Sample = ReagentKey._CF_enumeration.addEnumeration(unicode_value='Sample', tag='Sample')
+ReagentKey._InitializeFacetMap(ReagentKey._CF_enumeration)
+Namespace.addCategoryObject('typeBinding', 'ReagentKey', ReagentKey)
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON (pyxb.binding.basis.complexTypeDefinition):
+    """The root element of the Automation Constraints """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 13, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}AutomationConstraints uses Python identifier AutomationConstraints
+    __AutomationConstraints = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'AutomationConstraints'), 'AutomationConstraints', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_httppacificbiosciences_comPacBioDataModel_xsdAutomationConstraints', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 19, 1), )
+
+    
+    AutomationConstraints = property(__AutomationConstraints.value, __AutomationConstraints.set, None, None)
+
+    _ElementMap.update({
+        __AutomationConstraints.name() : __AutomationConstraints
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_ (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 20, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}AutomationConstraint uses Python identifier AutomationConstraint
+    __AutomationConstraint = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'AutomationConstraint'), 'AutomationConstraint', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON__httppacificbiosciences_comPacBioDataModel_xsdAutomationConstraint', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 26, 1), )
+
+    
+    AutomationConstraint = property(__AutomationConstraint.value, __AutomationConstraint.set, None, None)
+
+    _ElementMap.update({
+        __AutomationConstraint.name() : __AutomationConstraint
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_2 (pyxb.binding.basis.complexTypeDefinition):
+    """Names of automations that are all similarly constrained"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 38, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Automation uses Python identifier Automation
+    __Automation = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Automation'), 'Automation', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_2_httppacificbiosciences_comPacBioDataModel_xsdAutomation', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 40, 8), )
+
+    
+    Automation = property(__Automation.value, __Automation.set, None, None)
+
+    _ElementMap.update({
+        __Automation.name() : __Automation
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_3 (pyxb.binding.basis.complexTypeDefinition):
+    """A list of insert sizes (buckets) recommended for use"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 48, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}InsertSize uses Python identifier InsertSize
+    __InsertSize = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'InsertSize'), 'InsertSize', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_3_httppacificbiosciences_comPacBioDataModel_xsdInsertSize', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 50, 8), )
+
+    
+    InsertSize = property(__InsertSize.value, __InsertSize.set, None, None)
+
+    _ElementMap.update({
+        __InsertSize.name() : __InsertSize
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_4 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 58, 4)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ExtensionElement uses Python identifier ExtensionElement
+    __ExtensionElement = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ExtensionElement'), 'ExtensionElement', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_4_httppacificbiosciences_comPacBioDataModel_xsdExtensionElement', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 640, 1), )
+
+    
+    ExtensionElement = property(__ExtensionElement.value, __ExtensionElement.set, None, 'A generic element whose contents are undefined at the schema level.  This is used to extend the data model.')
+
+    _ElementMap.update({
+        __ExtensionElement.name() : __ExtensionElement
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_5 (pyxb.binding.basis.complexTypeDefinition):
+    """Pointer to Run/Outputs/Output/@UniqueId"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 172, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}DataPointer uses Python identifier DataPointer
+    __DataPointer = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'DataPointer'), 'DataPointer', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_5_httppacificbiosciences_comPacBioDataModel_xsdDataPointer', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 174, 4), )
+
+    
+    DataPointer = property(__DataPointer.value, __DataPointer.set, None, None)
+
+    _ElementMap.update({
+        __DataPointer.name() : __DataPointer
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_6 (pyxb.binding.basis.complexTypeDefinition):
+    """Pointers to data that do not reside inside the parent structure"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 206, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ExternalResource uses Python identifier ExternalResource
+    __ExternalResource = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ExternalResource'), 'ExternalResource', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_6_httppacificbiosciences_comPacBioDataModel_xsdExternalResource', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 662, 1), )
+
+    
+    ExternalResource = property(__ExternalResource.value, __ExternalResource.set, None, 'for example, an output file could be the BAM file, which could be associated with multiple indices into it.')
+
+    _ElementMap.update({
+        __ExternalResource.name() : __ExternalResource
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_7 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 222, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}FileIndex uses Python identifier FileIndex
+    __FileIndex = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'FileIndex'), 'FileIndex', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_7_httppacificbiosciences_comPacBioDataModel_xsdFileIndex', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 224, 8), )
+
+    
+    FileIndex = property(__FileIndex.value, __FileIndex.set, None, 'e.g. index for output files, allowing one to find information in the output file')
+
+    _ElementMap.update({
+        __FileIndex.name() : __FileIndex
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_8 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 242, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}AutomationParameter uses Python identifier AutomationParameter
+    __AutomationParameter = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'AutomationParameter'), 'AutomationParameter', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_8_httppacificbiosciences_comPacBioDataModel_xsdAutomationParameter', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 253, 1), )
+
+    
+    AutomationParameter = property(__AutomationParameter.value, __AutomationParameter.set, None, 'One or more collection parameters, such as MovieLength, InsertSize, UseStageStart, IsControl, etc..')
+
+    _ElementMap.update({
+        __AutomationParameter.name() : __AutomationParameter
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_9 (pyxb.binding.basis.complexTypeDefinition):
+    """By default, a PN is compatible for use with other PNs in the system.  In order to exclude the usage of one or more PNs with this one, the incompatible PNs are listed here."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 271, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}IncompatiblePartNumber uses Python identifier IncompatiblePartNumber
+    __IncompatiblePartNumber = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'IncompatiblePartNumber'), 'IncompatiblePartNumber', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_9_httppacificbiosciences_comPacBioDataModel_xsdIncompatiblePartNumber', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 273, 8), )
+
+    
+    IncompatiblePartNumber = property(__IncompatiblePartNumber.value, __IncompatiblePartNumber.set, None, 'A reference to the incompatible part number UID')
+
+    _ElementMap.update({
+        __IncompatiblePartNumber.name() : __IncompatiblePartNumber
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_10 (pyxb.binding.basis.complexTypeDefinition):
+    """By default, a PN is compatible for use with all automations in the system.  In order to exclude the usage of automations with this PN, the incompatible automation names are listed here."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 285, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}IncompatibleAutomation uses Python identifier IncompatibleAutomation
+    __IncompatibleAutomation = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'IncompatibleAutomation'), 'IncompatibleAutomation', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_10_httppacificbiosciences_comPacBioDataModel_xsdIncompatibleAutomation', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 287, 8), )
+
+    
+    IncompatibleAutomation = property(__IncompatibleAutomation.value, __IncompatibleAutomation.set, None, 'A reference to the incompatible automation type UID')
+
+    _ElementMap.update({
+        __IncompatibleAutomation.name() : __IncompatibleAutomation
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_11 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 347, 11)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Analog uses Python identifier Analog
+    __Analog = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Analog'), 'Analog', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_11_httppacificbiosciences_comPacBioDataModel_xsdAnalog', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 349, 13), )
+
+    
+    Analog = property(__Analog.value, __Analog.set, None, None)
+
+    _ElementMap.update({
+        __Analog.name() : __Analog
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_12 (pyxb.binding.basis.complexTypeDefinition):
+    """Root element for document containing the container of analog set, SequencingChemistryConfig"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 366, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ChemistryConfig uses Python identifier ChemistryConfig
+    __ChemistryConfig = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ChemistryConfig'), 'ChemistryConfig', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_12_httppacificbiosciences_comPacBioDataModel_xsdChemistryConfig', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 368, 4), )
+
+    
+    ChemistryConfig = property(__ChemistryConfig.value, __ChemistryConfig.set, None, None)
+
+    _ElementMap.update({
+        __ChemistryConfig.name() : __ChemistryConfig
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_13 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 380, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Analog uses Python identifier Analog
+    __Analog = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Analog'), 'Analog', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_13_httppacificbiosciences_comPacBioDataModel_xsdAnalog', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 382, 8), )
+
+    
+    Analog = property(__Analog.value, __Analog.set, None, None)
+
+    _ElementMap.update({
+        __Analog.name() : __Analog
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_14 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 404, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BinCount uses Python identifier BinCount
+    __BinCount = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BinCount'), 'BinCount', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_14_httppacificbiosciences_comPacBioDataModel_xsdBinCount', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 406, 8), )
+
+    
+    BinCount = property(__BinCount.value, __BinCount.set, None, None)
+
+    _ElementMap.update({
+        __BinCount.name() : __BinCount
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_15 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 430, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BinCount uses Python identifier BinCount
+    __BinCount = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BinCount'), 'BinCount', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_15_httppacificbiosciences_comPacBioDataModel_xsdBinCount', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 432, 8), )
+
+    
+    BinCount = property(__BinCount.value, __BinCount.set, None, None)
+
+    _ElementMap.update({
+        __BinCount.name() : __BinCount
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_16 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 438, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BinLabel uses Python identifier BinLabel
+    __BinLabel = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BinLabel'), 'BinLabel', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_16_httppacificbiosciences_comPacBioDataModel_xsdBinLabel', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 440, 8), )
+
+    
+    BinLabel = property(__BinLabel.value, __BinLabel.set, None, None)
+
+    _ElementMap.update({
+        __BinLabel.name() : __BinLabel
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_17 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 460, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Val uses Python identifier Val
+    __Val = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Val'), 'Val', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_17_httppacificbiosciences_comPacBioDataModel_xsdVal', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 462, 8), )
+
+    
+    Val = property(__Val.value, __Val.set, None, None)
+
+    _ElementMap.update({
+        __Val.name() : __Val
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}UserDefinedFieldsType with content type ELEMENT_ONLY
+class UserDefinedFieldsType (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}UserDefinedFieldsType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'UserDefinedFieldsType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 633, 1)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntities uses Python identifier DataEntities
+    __DataEntities = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'DataEntities'), 'DataEntities', '__httppacificbiosciences_comPacBioDataModel_xsd_UserDefinedFieldsType_httppacificbiosciences_comPacBioDataModel_xsdDataEntities', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 635, 3), )
+
+    
+    DataEntities = property(__DataEntities.value, __DataEntities.set, None, None)
+
+    _ElementMap.update({
+        __DataEntities.name() : __DataEntities
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'UserDefinedFieldsType', UserDefinedFieldsType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}FilterType with content type ELEMENT_ONLY
+class FilterType (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}FilterType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'FilterType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 645, 1)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Properties uses Python identifier Properties
+    __Properties = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Properties'), 'Properties', '__httppacificbiosciences_comPacBioDataModel_xsd_FilterType_httppacificbiosciences_comPacBioDataModel_xsdProperties', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 647, 3), )
+
+    
+    Properties = property(__Properties.value, __Properties.set, None, None)
+
+    _ElementMap.update({
+        __Properties.name() : __Properties
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'FilterType', FilterType)
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_18 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 648, 4)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Property uses Python identifier Property
+    __Property = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Property'), 'Property', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_18_httppacificbiosciences_comPacBioDataModel_xsdProperty', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 650, 6), )
+
+    
+    Property = property(__Property.value, __Property.set, None, None)
+
+    _ElementMap.update({
+        __Property.name() : __Property
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type EMPTY
+class CTD_ANON_19 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type EMPTY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_EMPTY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 651, 7)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Attribute Name uses Python identifier Name
+    __Name = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Name'), 'Name', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_19_Name', pyxb.binding.datatypes.string, required=True)
+    __Name._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 652, 8)
+    __Name._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 652, 8)
+    
+    Name = property(__Name.value, __Name.set, None, None)
+
+    
+    # Attribute Value uses Python identifier Value
+    __Value = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Value'), 'Value', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_19_Value', pyxb.binding.datatypes.string, required=True)
+    __Value._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 653, 8)
+    __Value._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 653, 8)
+    
+    Value = property(__Value.value, __Value.set, None, None)
+
+    
+    # Attribute Operator uses Python identifier Operator
+    __Operator = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Operator'), 'Operator', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_19_Operator', pyxb.binding.datatypes.string, required=True)
+    __Operator._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 654, 8)
+    __Operator._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 654, 8)
+    
+    Operator = property(__Operator.value, __Operator.set, None, None)
+
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        __Name.name() : __Name,
+        __Value.name() : __Value,
+        __Operator.name() : __Operator
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_20 (pyxb.binding.basis.complexTypeDefinition):
+    """Root element of a standalone CollectionMetadata file."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 13, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CollectionMetadata uses Python identifier CollectionMetadata
+    __CollectionMetadata = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CollectionMetadata'), 'CollectionMetadata', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_20_httppacificbiosciences_comPacBioDataModel_xsdCollectionMetadata', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 136, 1), )
+
+    
+    CollectionMetadata = property(__CollectionMetadata.value, __CollectionMetadata.set, None, 'Root-level element for the metadata.  The purpose of which is to contain pertinent instrument information related to the conditions present during a movie acquisition.  It also serves to provide key pieces of information for integration with primary and secondary analysis.  This file is associated with 1 movie. ')
+
+    _ElementMap.update({
+        __CollectionMetadata.name() : __CollectionMetadata
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadataType with content type ELEMENT_ONLY
+class DataSetMetadataType (pyxb.binding.basis.complexTypeDefinition):
+    """Extend this type to provide DataSetMetadata element in each DataSet."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadataType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 31, 1)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}TotalLength uses Python identifier TotalLength
+    __TotalLength = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'TotalLength'), 'TotalLength', '__httppacificbiosciences_comPacBioDataModel_xsd_DataSetMetadataType_httppacificbiosciences_comPacBioDataModel_xsdTotalLength', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 36, 3), )
+
+    
+    TotalLength = property(__TotalLength.value, __TotalLength.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}NumRecords uses Python identifier NumRecords
+    __NumRecords = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'NumRecords'), 'NumRecords', '__httppacificbiosciences_comPacBioDataModel_xsd_DataSetMetadataType_httppacificbiosciences_comPacBioDataModel_xsdNumRecords', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 37, 3), )
+
+    
+    NumRecords = property(__NumRecords.value, __NumRecords.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Provenance uses Python identifier Provenance
+    __Provenance = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Provenance'), 'Provenance', '__httppacificbiosciences_comPacBioDataModel_xsd_DataSetMetadataType_httppacificbiosciences_comPacBioDataModel_xsdProvenance', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 38, 3), )
+
+    
+    Provenance = property(__Provenance.value, __Provenance.set, None, None)
+
+    _ElementMap.update({
+        __TotalLength.name() : __TotalLength,
+        __NumRecords.name() : __NumRecords,
+        __Provenance.name() : __Provenance
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'DataSetMetadataType', DataSetMetadataType)
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_21 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 66, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}AdapterDimerFraction uses Python identifier AdapterDimerFraction
+    __AdapterDimerFraction = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'AdapterDimerFraction'), 'AdapterDimerFraction', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_21_httppacificbiosciences_comPacBioDataModel_xsdAdapterDimerFraction', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 68, 8), )
+
+    
+    AdapterDimerFraction = property(__AdapterDimerFraction.value, __AdapterDimerFraction.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ShortInsertFraction uses Python identifier ShortInsertFraction
+    __ShortInsertFraction = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ShortInsertFraction'), 'ShortInsertFraction', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_21_httppacificbiosciences_comPacBioDataModel_xsdShortInsertFraction', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 69, 8), )
+
+    
+    ShortInsertFraction = property(__ShortInsertFraction.value, __ShortInsertFraction.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}NumSequencingZmws uses Python identifier NumSequencingZmws
+    __NumSequencingZmws = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'NumSequencingZmws'), 'NumSequencingZmws', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_21_httppacificbiosciences_comPacBioDataModel_xsdNumSequencingZmws', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 70, 8), )
+
+    
+    NumSequencingZmws = property(__NumSequencingZmws.value, __NumSequencingZmws.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ProdDist uses Python identifier ProdDist
+    __ProdDist = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ProdDist'), 'ProdDist', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_21_httppacificbiosciences_comPacBioDataModel_xsdProdDist', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 71, 8), )
+
+    
+    ProdDist = property(__ProdDist.value, __ProdDist.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ReadTypeDist uses Python identifier ReadTypeDist
+    __ReadTypeDist = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ReadTypeDist'), 'ReadTypeDist', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_21_httppacificbiosciences_comPacBioDataModel_xsdReadTypeDist', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 72, 8), )
+
+    
+    ReadTypeDist = property(__ReadTypeDist.value, __ReadTypeDist.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ReadLenDist uses Python identifier ReadLenDist
+    __ReadLenDist = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ReadLenDist'), 'ReadLenDist', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_21_httppacificbiosciences_comPacBioDataModel_xsdReadLenDist', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 73, 8), )
+
+    
+    ReadLenDist = property(__ReadLenDist.value, __ReadLenDist.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ReadQualDist uses Python identifier ReadQualDist
+    __ReadQualDist = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ReadQualDist'), 'ReadQualDist', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_21_httppacificbiosciences_comPacBioDataModel_xsdReadQualDist', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 74, 8), )
+
+    
+    ReadQualDist = property(__ReadQualDist.value, __ReadQualDist.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ControlReadLenDist uses Python identifier ControlReadLenDist
+    __ControlReadLenDist = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ControlReadLenDist'), 'ControlReadLenDist', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_21_httppacificbiosciences_comPacBioDataModel_xsdControlReadLenDist', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 75, 8), )
+
+    
+    ControlReadLenDist = property(__ControlReadLenDist.value, __ControlReadLenDist.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ControlReadQualDist uses Python identifier ControlReadQualDist
+    __ControlReadQualDist = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ControlReadQualDist'), 'ControlReadQualDist', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_21_httppacificbiosciences_comPacBioDataModel_xsdControlReadQualDist', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 76, 8), )
+
+    
+    ControlReadQualDist = property(__ControlReadQualDist.value, __ControlReadQualDist.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}MedianInsertDist uses Python identifier MedianInsertDist
+    __MedianInsertDist = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'MedianInsertDist'), 'MedianInsertDist', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_21_httppacificbiosciences_comPacBioDataModel_xsdMedianInsertDist', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 77, 8), )
+
+    
+    MedianInsertDist = property(__MedianInsertDist.value, __MedianInsertDist.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}InsertReadLenDist uses Python identifier InsertReadLenDist
+    __InsertReadLenDist = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'InsertReadLenDist'), 'InsertReadLenDist', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_21_httppacificbiosciences_comPacBioDataModel_xsdInsertReadLenDist', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 78, 8), )
+
+    
+    InsertReadLenDist = property(__InsertReadLenDist.value, __InsertReadLenDist.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}InsertReadQualDist uses Python identifier InsertReadQualDist
+    __InsertReadQualDist = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'InsertReadQualDist'), 'InsertReadQualDist', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_21_httppacificbiosciences_comPacBioDataModel_xsdInsertReadQualDist', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 79, 8), )
+
+    
+    InsertReadQualDist = property(__InsertReadQualDist.value, __InsertReadQualDist.set, None, None)
+
+    _ElementMap.update({
+        __AdapterDimerFraction.name() : __AdapterDimerFraction,
+        __ShortInsertFraction.name() : __ShortInsertFraction,
+        __NumSequencingZmws.name() : __NumSequencingZmws,
+        __ProdDist.name() : __ProdDist,
+        __ReadTypeDist.name() : __ReadTypeDist,
+        __ReadLenDist.name() : __ReadLenDist,
+        __ReadQualDist.name() : __ReadQualDist,
+        __ControlReadLenDist.name() : __ControlReadLenDist,
+        __ControlReadQualDist.name() : __ControlReadQualDist,
+        __MedianInsertDist.name() : __MedianInsertDist,
+        __InsertReadLenDist.name() : __InsertReadLenDist,
+        __InsertReadQualDist.name() : __InsertReadQualDist
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_22 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 108, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Filter uses Python identifier Filter
+    __Filter = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Filter'), 'Filter', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_22_httppacificbiosciences_comPacBioDataModel_xsdFilter', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 110, 8), )
+
+    
+    Filter = property(__Filter.value, __Filter.set, None, None)
+
+    _ElementMap.update({
+        __Filter.name() : __Filter
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_23 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 115, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSet uses Python identifier DataSet
+    __DataSet = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'DataSet'), 'DataSet', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_23_httppacificbiosciences_comPacBioDataModel_xsdDataSet', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 135, 1), )
+
+    
+    DataSet = property(__DataSet.value, __DataSet.set, None, None)
+
+    _ElementMap.update({
+        __DataSet.name() : __DataSet
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_24 (pyxb.binding.basis.complexTypeDefinition):
+    """A set of acquisition definitions"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 129, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CollectionMetadata uses Python identifier CollectionMetadata
+    __CollectionMetadata = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CollectionMetadata'), 'CollectionMetadata', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_24_httppacificbiosciences_comPacBioDataModel_xsdCollectionMetadata', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 136, 1), )
+
+    
+    CollectionMetadata = property(__CollectionMetadata.value, __CollectionMetadata.set, None, 'Root-level element for the metadata.  The purpose of which is to contain pertinent instrument information related to the conditions present during a movie acquisition.  It also serves to provide key pieces of information for integration with primary and secondary analysis.  This file is associated with 1 movie. ')
+
+    _ElementMap.update({
+        __CollectionMetadata.name() : __CollectionMetadata
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_25 (pyxb.binding.basis.complexTypeDefinition):
+    """Information related to an instrument run.  A run can contain multiple chips, wells, and movies. """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 252, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}RunId uses Python identifier RunId
+    __RunId = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'RunId'), 'RunId', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_25_httppacificbiosciences_comPacBioDataModel_xsdRunId', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 254, 4), )
+
+    
+    RunId = property(__RunId.value, __RunId.set, None, 'A unique identifier for this run.  Format is r[sid]_[iname]_[ts]. Where [id] is a system generated id and [iname] is the instrument name and [ts] is a timestamp YYMMDD Example:  r000123_00117_100713 ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Name uses Python identifier Name
+    __Name = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Name'), 'Name', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_25_httppacificbiosciences_comPacBioDataModel_xsdName', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 259, 4), )
+
+    
+    Name = property(__Name.value, __Name.set, None, 'Assigned name for a run, which consists of multiple wells. There is no constraint on the uniqueness of this data. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CreatedBy uses Python identifier CreatedBy
+    __CreatedBy = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CreatedBy'), 'CreatedBy', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_25_httppacificbiosciences_comPacBioDataModel_xsdCreatedBy', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 264, 4), )
+
+    
+    CreatedBy = property(__CreatedBy.value, __CreatedBy.set, None, 'Who created the run. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}WhenCreated uses Python identifier WhenCreated
+    __WhenCreated = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'WhenCreated'), 'WhenCreated', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_25_httppacificbiosciences_comPacBioDataModel_xsdWhenCreated', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 269, 4), )
+
+    
+    WhenCreated = property(__WhenCreated.value, __WhenCreated.set, None, 'Date and time of when the overall run was created in the system. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}StartedBy uses Python identifier StartedBy
+    __StartedBy = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'StartedBy'), 'StartedBy', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_25_httppacificbiosciences_comPacBioDataModel_xsdStartedBy', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 274, 4), )
+
+    
+    StartedBy = property(__StartedBy.value, __StartedBy.set, None, 'Who started the run. Could be different from who created it. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}WhenStarted uses Python identifier WhenStarted
+    __WhenStarted = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'WhenStarted'), 'WhenStarted', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_25_httppacificbiosciences_comPacBioDataModel_xsdWhenStarted', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 279, 4), )
+
+    
+    WhenStarted = property(__WhenStarted.value, __WhenStarted.set, None, 'Date and time of when the overall run was started. ')
+
+    _ElementMap.update({
+        __RunId.name() : __RunId,
+        __Name.name() : __Name,
+        __CreatedBy.name() : __CreatedBy,
+        __WhenCreated.name() : __WhenCreated,
+        __StartedBy.name() : __StartedBy,
+        __WhenStarted.name() : __WhenStarted
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_26 (pyxb.binding.basis.complexTypeDefinition):
+    """A movie corresponds to one acquisition for a chip, one set (look) and one strobe. """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 291, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}WhenStarted uses Python identifier WhenStarted
+    __WhenStarted = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'WhenStarted'), 'WhenStarted', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_26_httppacificbiosciences_comPacBioDataModel_xsdWhenStarted', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 293, 4), )
+
+    
+    WhenStarted = property(__WhenStarted.value, __WhenStarted.set, None, 'Date and time of when this movie acquisition started. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}DurationInSec uses Python identifier DurationInSec
+    __DurationInSec = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'DurationInSec'), 'DurationInSec', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_26_httppacificbiosciences_comPacBioDataModel_xsdDurationInSec', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 298, 4), )
+
+    
+    DurationInSec = property(__DurationInSec.value, __DurationInSec.set, None, 'The actual length of the movie acquisition (in seconds), irrespective of the movie duration specified by an automation parameter. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Number uses Python identifier Number
+    __Number = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Number'), 'Number', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_26_httppacificbiosciences_comPacBioDataModel_xsdNumber', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 303, 4), )
+
+    
+    Number = property(__Number.value, __Number.set, None, "The number of this movie within the set (i.e., look).  This is unique when combined with the 'SetNumber'. ")
+
+    _ElementMap.update({
+        __WhenStarted.name() : __WhenStarted,
+        __DurationInSec.name() : __DurationInSec,
+        __Number.name() : __Number
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_27 (pyxb.binding.basis.complexTypeDefinition):
+    """Container for the expired consumable data. """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 315, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}EightPacPastExpiration uses Python identifier EightPacPastExpiration
+    __EightPacPastExpiration = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'EightPacPastExpiration'), 'EightPacPastExpiration', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_27_httppacificbiosciences_comPacBioDataModel_xsdEightPacPastExpiration', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 317, 4), )
+
+    
+    EightPacPastExpiration = property(__EightPacPastExpiration.value, __EightPacPastExpiration.set, None, 'Number of days past expiration the eight pac was (if at all). ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentKitPastExpiration uses Python identifier ReagentKitPastExpiration
+    __ReagentKitPastExpiration = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ReagentKitPastExpiration'), 'ReagentKitPastExpiration', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_27_httppacificbiosciences_comPacBioDataModel_xsdReagentKitPastExpiration', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 322, 4), )
+
+    
+    ReagentKitPastExpiration = property(__ReagentKitPastExpiration.value, __ReagentKitPastExpiration.set, None, 'Number of days past expiration the reagent kit was (if at all). ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentTube0PastExpiration uses Python identifier ReagentTube0PastExpiration
+    __ReagentTube0PastExpiration = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ReagentTube0PastExpiration'), 'ReagentTube0PastExpiration', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_27_httppacificbiosciences_comPacBioDataModel_xsdReagentTube0PastExpiration', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 327, 4), )
+
+    
+    ReagentTube0PastExpiration = property(__ReagentTube0PastExpiration.value, __ReagentTube0PastExpiration.set, None, 'Number of days past expiration the reagent tube 0 was (if at all). ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentTube1PastExpiration uses Python identifier ReagentTube1PastExpiration
+    __ReagentTube1PastExpiration = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ReagentTube1PastExpiration'), 'ReagentTube1PastExpiration', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_27_httppacificbiosciences_comPacBioDataModel_xsdReagentTube1PastExpiration', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 332, 4), )
+
+    
+    ReagentTube1PastExpiration = property(__ReagentTube1PastExpiration.value, __ReagentTube1PastExpiration.set, None, 'Number of days past expiration the reagent tube 1 was (if at all). ')
+
+    _ElementMap.update({
+        __EightPacPastExpiration.name() : __EightPacPastExpiration,
+        __ReagentKitPastExpiration.name() : __ReagentKitPastExpiration,
+        __ReagentTube0PastExpiration.name() : __ReagentTube0PastExpiration,
+        __ReagentTube1PastExpiration.name() : __ReagentTube1PastExpiration
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_28 (pyxb.binding.basis.complexTypeDefinition):
+    """A list of barcodes associated with the biological sample"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 351, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Barcode uses Python identifier Barcode
+    __Barcode = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Barcode'), 'Barcode', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_28_httppacificbiosciences_comPacBioDataModel_xsdBarcode', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 353, 8), )
+
+    
+    Barcode = property(__Barcode.value, __Barcode.set, None, 'A sequence of barcodes associated with the biological sample')
+
+    _ElementMap.update({
+        __Barcode.name() : __Barcode
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_29 (pyxb.binding.basis.complexTypeDefinition):
+    """Container for the primary analysis related data. """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 507, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SampleTrace uses Python identifier SampleTrace
+    __SampleTrace = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SampleTrace'), 'SampleTrace', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_29_httppacificbiosciences_comPacBioDataModel_xsdSampleTrace', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 509, 4), )
+
+    
+    SampleTrace = property(__SampleTrace.value, __SampleTrace.set, None, 'Tag to indicate that the trace file will be sampled. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}AutomationName uses Python identifier AutomationName
+    __AutomationName = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'AutomationName'), 'AutomationName', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_29_httppacificbiosciences_comPacBioDataModel_xsdAutomationName', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 528, 4), )
+
+    
+    AutomationName = property(__AutomationName.value, __AutomationName.set, None, 'Name of primary analysis protocol. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ConfigFileName uses Python identifier ConfigFileName
+    __ConfigFileName = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ConfigFileName'), 'ConfigFileName', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_29_httppacificbiosciences_comPacBioDataModel_xsdConfigFileName', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 533, 4), )
+
+    
+    ConfigFileName = property(__ConfigFileName.value, __ConfigFileName.set, None, 'Name of primary analysis config file. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SequencingCondition uses Python identifier SequencingCondition
+    __SequencingCondition = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SequencingCondition'), 'SequencingCondition', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_29_httppacificbiosciences_comPacBioDataModel_xsdSequencingCondition', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 538, 4), )
+
+    
+    SequencingCondition = property(__SequencingCondition.value, __SequencingCondition.set, None, 'A sequencing condition tag to be used by primary analysis, e.g., to select basecaller calibration or training parameters. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ResultsFolder uses Python identifier ResultsFolder
+    __ResultsFolder = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ResultsFolder'), 'ResultsFolder', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_29_httppacificbiosciences_comPacBioDataModel_xsdResultsFolder', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 543, 4), )
+
+    
+    ResultsFolder = property(__ResultsFolder.value, __ResultsFolder.set, None, "NOTE: not for customers. A sub-folder under the CollectionPath created by Primary Analysis. This is a field that will be updated by the primary analysis pipeline.  The default (as created by homer) should be set to 'Reports_Sms' for now.  Consumers of the data should be aware that they will find collection metadata (and trace files if acquisition is so-configured) at the CollectionPathUri, and all primary ana [...]
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CollectionPathUri uses Python identifier CollectionPathUri
+    __CollectionPathUri = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CollectionPathUri'), 'CollectionPathUri', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_29_httppacificbiosciences_comPacBioDataModel_xsdCollectionPathUri', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 548, 4), )
+
+    
+    CollectionPathUri = property(__CollectionPathUri.value, __CollectionPathUri.set, None, 'User-specified location of where the results should be copied after an analysis has been completed. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CopyFiles uses Python identifier CopyFiles
+    __CopyFiles = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CopyFiles'), 'CopyFiles', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_29_httppacificbiosciences_comPacBioDataModel_xsdCopyFiles', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 553, 4), )
+
+    
+    CopyFiles = property(__CopyFiles.value, __CopyFiles.set, None, None)
+
+    _ElementMap.update({
+        __SampleTrace.name() : __SampleTrace,
+        __AutomationName.name() : __AutomationName,
+        __ConfigFileName.name() : __ConfigFileName,
+        __SequencingCondition.name() : __SequencingCondition,
+        __ResultsFolder.name() : __ResultsFolder,
+        __CollectionPathUri.name() : __CollectionPathUri,
+        __CopyFiles.name() : __CopyFiles
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_30 (pyxb.binding.basis.complexTypeDefinition):
+    """Tag to indicate that the trace file will be sampled. """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 513, 5)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}TraceSamplingFactor uses Python identifier TraceSamplingFactor
+    __TraceSamplingFactor = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'TraceSamplingFactor'), 'TraceSamplingFactor', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_30_httppacificbiosciences_comPacBioDataModel_xsdTraceSamplingFactor', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 515, 7), )
+
+    
+    TraceSamplingFactor = property(__TraceSamplingFactor.value, __TraceSamplingFactor.set, None, 'Percentage of traces to sample. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}FullPulseFile uses Python identifier FullPulseFile
+    __FullPulseFile = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'FullPulseFile'), 'FullPulseFile', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_30_httppacificbiosciences_comPacBioDataModel_xsdFullPulseFile', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 520, 7), )
+
+    
+    FullPulseFile = property(__FullPulseFile.value, __FullPulseFile.set, None, 'Whether full or sampled pulse file is transferred if requested. ')
+
+    _ElementMap.update({
+        __TraceSamplingFactor.name() : __TraceSamplingFactor,
+        __FullPulseFile.name() : __FullPulseFile
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_31 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 554, 5)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CollectionFileCopy uses Python identifier CollectionFileCopy
+    __CollectionFileCopy = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CollectionFileCopy'), 'CollectionFileCopy', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_31_httppacificbiosciences_comPacBioDataModel_xsdCollectionFileCopy', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 556, 7), )
+
+    
+    CollectionFileCopy = property(__CollectionFileCopy.value, __CollectionFileCopy.set, None, 'Defines the set of files to be copied to the CollectionPathUri. 1 or more. ')
+
+    _ElementMap.update({
+        __CollectionFileCopy.name() : __CollectionFileCopy
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_32 (pyxb.binding.basis.complexTypeDefinition):
+    """Container for the primary analysis related data. """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 572, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}AutomationName uses Python identifier AutomationName
+    __AutomationName = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'AutomationName'), 'AutomationName', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_32_httppacificbiosciences_comPacBioDataModel_xsdAutomationName', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 574, 4), )
+
+    
+    AutomationName = property(__AutomationName.value, __AutomationName.set, None, 'The secondary analysis protocol name specified in the sample sheet. Ignored by secondary. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}AutomationParameters uses Python identifier AutomationParameters
+    __AutomationParameters = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'AutomationParameters'), 'AutomationParameters', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_32_httppacificbiosciences_comPacBioDataModel_xsdAutomationParameters', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 579, 4), )
+
+    
+    AutomationParameters = property(__AutomationParameters.value, __AutomationParameters.set, None, 'The parameters for secondary analysis specified in the sample sheet. Ignored by secondary. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CellCountInJob uses Python identifier CellCountInJob
+    __CellCountInJob = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CellCountInJob'), 'CellCountInJob', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_32_httppacificbiosciences_comPacBioDataModel_xsdCellCountInJob', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 593, 4), )
+
+    
+    CellCountInJob = property(__CellCountInJob.value, __CellCountInJob.set, None, "The number of cells in this secondary analysis job, identified by the secondary analysis parameter 'JobName'.  Supports automated secondary analysis. ")
+
+    _ElementMap.update({
+        __AutomationName.name() : __AutomationName,
+        __AutomationParameters.name() : __AutomationParameters,
+        __CellCountInJob.name() : __CellCountInJob
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_33 (pyxb.binding.basis.complexTypeDefinition):
+    """The parameters for secondary analysis specified in the sample sheet. Ignored by secondary. """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 583, 5)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}AutomationParameter uses Python identifier AutomationParameter
+    __AutomationParameter = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'AutomationParameter'), 'AutomationParameter', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_33_httppacificbiosciences_comPacBioDataModel_xsdAutomationParameter', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 585, 7), )
+
+    
+    AutomationParameter = property(__AutomationParameter.value, __AutomationParameter.set, None, 'One or more secondary analysis parameters, such as JobName, Workflow, etc..')
+
+    _ElementMap.update({
+        __AutomationParameter.name() : __AutomationParameter
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type SIMPLE
+class CTD_ANON_34 (pyxb.binding.basis.complexTypeDefinition):
+    """One custom, possibly non-unique, key-value pair. """
+    _TypeDefinition = pyxb.binding.datatypes.string
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_SIMPLE
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 611, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.string
+    
+    # Attribute key uses Python identifier key
+    __key = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'key'), 'key', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_34_key', pyxb.binding.datatypes.string, required=True)
+    __key._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 614, 5)
+    __key._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 614, 5)
+    
+    key = property(__key.value, __key.set, None, 'Key (attribute) and Value (element content). ')
+
+    
+    # Attribute label uses Python identifier label
+    __label = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'label'), 'label', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_34_label', pyxb.binding.datatypes.string)
+    __label._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 619, 5)
+    __label._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 619, 5)
+    
+    label = property(__label.value, __label.set, None, None)
+
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        __key.name() : __key,
+        __label.name() : __label
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_35 (pyxb.binding.basis.complexTypeDefinition):
+    """Back references to other BarcodedSampleType object UniqueIds which utilize this sample"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 643, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSamplePointer uses Python identifier BioSamplePointer
+    __BioSamplePointer = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BioSamplePointer'), 'BioSamplePointer', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_35_httppacificbiosciences_comPacBioDataModel_xsdBioSamplePointer', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 650, 5), )
+
+    
+    BioSamplePointer = property(__BioSamplePointer.value, __BioSamplePointer.set, None, 'Pointer to a single biological sample')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BarcodedSamplePointers uses Python identifier BarcodedSamplePointers
+    __BarcodedSamplePointers = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BarcodedSamplePointers'), 'BarcodedSamplePointers', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_35_httppacificbiosciences_comPacBioDataModel_xsdBarcodedSamplePointers', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 659, 1), )
+
+    
+    BarcodedSamplePointers = property(__BarcodedSamplePointers.value, __BarcodedSamplePointers.set, None, 'Back references to other BarcodedSampleType object UniqueIds which utilize this sample')
+
+    _ElementMap.update({
+        __BioSamplePointer.name() : __BioSamplePointer,
+        __BarcodedSamplePointers.name() : __BarcodedSamplePointers
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_36 (pyxb.binding.basis.complexTypeDefinition):
+    """Back references to other BarcodedSampleType object UniqueIds which utilize this sample"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 663, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BarcodedSamplePointer uses Python identifier BarcodedSamplePointer
+    __BarcodedSamplePointer = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BarcodedSamplePointer'), 'BarcodedSamplePointer', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_36_httppacificbiosciences_comPacBioDataModel_xsdBarcodedSamplePointer', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 665, 4), )
+
+    
+    BarcodedSamplePointer = property(__BarcodedSamplePointer.value, __BarcodedSamplePointer.set, None, 'Pointer to a group of barcoded samples')
+
+    _ElementMap.update({
+        __BarcodedSamplePointer.name() : __BarcodedSamplePointer
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_37 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 674, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSample uses Python identifier BioSample
+    __BioSample = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BioSample'), 'BioSample', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_37_httppacificbiosciences_comPacBioDataModel_xsdBioSample', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 680, 1), )
+
+    
+    BioSample = property(__BioSample.value, __BioSample.set, None, None)
+
+    _ElementMap.update({
+        __BioSample.name() : __BioSample
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_38 (pyxb.binding.basis.complexTypeDefinition):
+    """Part of the RunResources; specifies a ChipLayout which is compatible with the collection protocols defined on the plate"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 16, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Validation uses Python identifier Validation
+    __Validation = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Validation'), 'Validation', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_38_httppacificbiosciences_comPacBioDataModel_xsdValidation', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1), )
+
+    
+    Validation = property(__Validation.value, __Validation.set, None, '\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ')
+
+    
+    # Attribute Name uses Python identifier Name
+    __Name = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Name'), 'Name', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_38_Name', pyxb.binding.datatypes.string, required=True)
+    __Name._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 20, 3)
+    __Name._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 20, 3)
+    
+    Name = property(__Name.value, __Name.set, None, None)
+
+    
+    # Attribute PartNumber uses Python identifier PartNumber
+    __PartNumber = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'PartNumber'), 'PartNumber', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_38_PartNumber', pyxb.binding.datatypes.string, required=True)
+    __PartNumber._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 21, 3)
+    __PartNumber._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 21, 3)
+    
+    PartNumber = property(__PartNumber.value, __PartNumber.set, None, None)
+
+    _ElementMap.update({
+        __Validation.name() : __Validation
+    })
+    _AttributeMap.update({
+        __Name.name() : __Name,
+        __PartNumber.name() : __PartNumber
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_39 (pyxb.binding.basis.complexTypeDefinition):
+    """A set of Chip Layouts deemed compatible with the current plate"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 28, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ChipLayout uses Python identifier ChipLayout
+    __ChipLayout = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ChipLayout'), 'ChipLayout', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_39_httppacificbiosciences_comPacBioDataModel_xsdChipLayout', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 12, 1), )
+
+    
+    ChipLayout = property(__ChipLayout.value, __ChipLayout.set, None, 'Part of the RunResources; specifies a ChipLayout which is compatible with the collection protocols defined on the plate')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}RequiredSMRTCells uses Python identifier RequiredSMRTCells
+    __RequiredSMRTCells = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'RequiredSMRTCells'), 'RequiredSMRTCells', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_39_httppacificbiosciences_comPacBioDataModel_xsdRequiredSMRTCells', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 106, 1), )
+
+    
+    RequiredSMRTCells = property(__RequiredSMRTCells.value, __RequiredSMRTCells.set, None, 'Part of the RunResources; specifies the required number of SMRT cells')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Validation uses Python identifier Validation
+    __Validation = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Validation'), 'Validation', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_39_httppacificbiosciences_comPacBioDataModel_xsdValidation', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1), )
+
+    
+    Validation = property(__Validation.value, __Validation.set, None, '\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ')
+
+    _ElementMap.update({
+        __ChipLayout.name() : __ChipLayout,
+        __RequiredSMRTCells.name() : __RequiredSMRTCells,
+        __Validation.name() : __Validation
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_40 (pyxb.binding.basis.complexTypeDefinition):
+    """A set of reagent kits deemed compatible with the current plate"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 40, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}EstimatedTotalRunTime uses Python identifier EstimatedTotalRunTime
+    __EstimatedTotalRunTime = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'EstimatedTotalRunTime'), 'EstimatedTotalRunTime', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_40_httppacificbiosciences_comPacBioDataModel_xsdEstimatedTotalRunTime', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 48, 1), )
+
+    
+    EstimatedTotalRunTime = property(__EstimatedTotalRunTime.value, __EstimatedTotalRunTime.set, None, 'The total amount of time the run is estimated to require.  A confidence value (defaulted to 90%) indicates the degree of certainty associated with the estimate')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}RequiredTips uses Python identifier RequiredTips
+    __RequiredTips = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'RequiredTips'), 'RequiredTips', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_40_httppacificbiosciences_comPacBioDataModel_xsdRequiredTips', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 117, 1), )
+
+    
+    RequiredTips = property(__RequiredTips.value, __RequiredTips.set, None, 'Part of the RunResources; specifies the required number of tips via two attributes, Left and Right')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SequencingKit uses Python identifier SequencingKit
+    __SequencingKit = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SequencingKit'), 'SequencingKit', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_40_httppacificbiosciences_comPacBioDataModel_xsdSequencingKit', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 67, 1), )
+
+    
+    SequencingKit = property(__SequencingKit.value, __SequencingKit.set, None, None)
+
+    _ElementMap.update({
+        __EstimatedTotalRunTime.name() : __EstimatedTotalRunTime,
+        __RequiredTips.name() : __RequiredTips,
+        __SequencingKit.name() : __SequencingKit
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_41 (pyxb.binding.basis.complexTypeDefinition):
+    """The total amount of time the run is estimated to require.  A confidence value (defaulted to 90%) indicates the degree of certainty associated with the estimate"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 52, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Validation uses Python identifier Validation
+    __Validation = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Validation'), 'Validation', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_41_httppacificbiosciences_comPacBioDataModel_xsdValidation', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1), )
+
+    
+    Validation = property(__Validation.value, __Validation.set, None, '\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ')
+
+    
+    # Attribute Value uses Python identifier Value
+    __Value = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Value'), 'Value', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_41_Value', pyxb.binding.datatypes.string, required=True)
+    __Value._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 56, 3)
+    __Value._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 56, 3)
+    
+    Value = property(__Value.value, __Value.set, None, None)
+
+    
+    # Attribute Confidence uses Python identifier Confidence
+    __Confidence = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Confidence'), 'Confidence', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_41_Confidence', pyxb.binding.datatypes.int, required=True)
+    __Confidence._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 57, 3)
+    __Confidence._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 57, 3)
+    
+    Confidence = property(__Confidence.value, __Confidence.set, None, None)
+
+    _ElementMap.update({
+        __Validation.name() : __Validation
+    })
+    _AttributeMap.update({
+        __Value.name() : __Value,
+        __Confidence.name() : __Confidence
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_42 (pyxb.binding.basis.complexTypeDefinition):
+    """PacBio Data Model root element"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 95, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ExperimentContainer uses Python identifier ExperimentContainer
+    __ExperimentContainer = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ExperimentContainer'), 'ExperimentContainer', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_42_httppacificbiosciences_comPacBioDataModel_xsdExperimentContainer', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 97, 4), )
+
+    
+    ExperimentContainer = property(__ExperimentContainer.value, __ExperimentContainer.set, None, None)
+
+    _HasWildcardElement = True
+    _ElementMap.update({
+        __ExperimentContainer.name() : __ExperimentContainer
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_43 (pyxb.binding.basis.complexTypeDefinition):
+    """Part of the RunResources; specifies the required number of SMRT cells"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 110, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Validation uses Python identifier Validation
+    __Validation = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Validation'), 'Validation', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_43_httppacificbiosciences_comPacBioDataModel_xsdValidation', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1), )
+
+    
+    Validation = property(__Validation.value, __Validation.set, None, '\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ')
+
+    
+    # Attribute Quantity uses Python identifier Quantity
+    __Quantity = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Quantity'), 'Quantity', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_43_Quantity', pyxb.binding.datatypes.int, required=True)
+    __Quantity._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 114, 3)
+    __Quantity._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 114, 3)
+    
+    Quantity = property(__Quantity.value, __Quantity.set, None, None)
+
+    _ElementMap.update({
+        __Validation.name() : __Validation
+    })
+    _AttributeMap.update({
+        __Quantity.name() : __Quantity
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_44 (pyxb.binding.basis.complexTypeDefinition):
+    """Part of the RunResources; specifies the required number of tips via two attributes, Left and Right"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 121, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Validation uses Python identifier Validation
+    __Validation = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Validation'), 'Validation', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_44_httppacificbiosciences_comPacBioDataModel_xsdValidation', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1), )
+
+    
+    Validation = property(__Validation.value, __Validation.set, None, '\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ')
+
+    
+    # Attribute Left uses Python identifier Left
+    __Left = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Left'), 'Left', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_44_Left', pyxb.binding.datatypes.int, required=True)
+    __Left._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 125, 3)
+    __Left._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 125, 3)
+    
+    Left = property(__Left.value, __Left.set, None, None)
+
+    
+    # Attribute Right uses Python identifier Right
+    __Right = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Right'), 'Right', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_44_Right', pyxb.binding.datatypes.int, required=True)
+    __Right._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 126, 3)
+    __Right._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 126, 3)
+    
+    Right = property(__Right.value, __Right.set, None, None)
+
+    _ElementMap.update({
+        __Validation.name() : __Validation
+    })
+    _AttributeMap.update({
+        __Left.name() : __Left,
+        __Right.name() : __Right
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_45 (pyxb.binding.basis.complexTypeDefinition):
+    """This is an output field specifying the requirements for the run, e.g. number of tips, estimated run time, etc."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 133, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CompatibleChipLayouts uses Python identifier CompatibleChipLayouts
+    __CompatibleChipLayouts = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CompatibleChipLayouts'), 'CompatibleChipLayouts', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_45_httppacificbiosciences_comPacBioDataModel_xsdCompatibleChipLayouts', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 24, 1), )
+
+    
+    CompatibleChipLayouts = property(__CompatibleChipLayouts.value, __CompatibleChipLayouts.set, None, 'A set of Chip Layouts deemed compatible with the current plate')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CompatibleSequencingKits uses Python identifier CompatibleSequencingKits
+    __CompatibleSequencingKits = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CompatibleSequencingKits'), 'CompatibleSequencingKits', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_45_httppacificbiosciences_comPacBioDataModel_xsdCompatibleSequencingKits', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 36, 1), )
+
+    
+    CompatibleSequencingKits = property(__CompatibleSequencingKits.value, __CompatibleSequencingKits.set, None, 'A set of reagent kits deemed compatible with the current plate')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Validation uses Python identifier Validation
+    __Validation = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Validation'), 'Validation', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_45_httppacificbiosciences_comPacBioDataModel_xsdValidation', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1), )
+
+    
+    Validation = property(__Validation.value, __Validation.set, None, '\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ')
+
+    _ElementMap.update({
+        __CompatibleChipLayouts.name() : __CompatibleChipLayouts,
+        __CompatibleSequencingKits.name() : __CompatibleSequencingKits,
+        __Validation.name() : __Validation
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type MIXED
+class CTD_ANON_46 (pyxb.binding.basis.complexTypeDefinition):
+    """A general sample description"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_MIXED
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 145, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Validation uses Python identifier Validation
+    __Validation = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Validation'), 'Validation', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_46_httppacificbiosciences_comPacBioDataModel_xsdValidation', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1), )
+
+    
+    Validation = property(__Validation.value, __Validation.set, None, '\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ')
+
+    
+    # Attribute Value uses Python identifier Value
+    __Value = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Value'), 'Value', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_46_Value', pyxb.binding.datatypes.string)
+    __Value._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 149, 3)
+    __Value._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 149, 3)
+    
+    Value = property(__Value.value, __Value.set, None, None)
+
+    _ElementMap.update({
+        __Validation.name() : __Validation
+    })
+    _AttributeMap.update({
+        __Value.name() : __Value
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_47 (pyxb.binding.basis.complexTypeDefinition):
+    """Multiple acquisitions from different instrument runs"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 271, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Run uses Python identifier Run
+    __Run = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Run'), 'Run', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_47_httppacificbiosciences_comPacBioDataModel_xsdRun', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 273, 8), )
+
+    
+    Run = property(__Run.value, __Run.set, None, None)
+
+    _ElementMap.update({
+        __Run.name() : __Run
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_48 (pyxb.binding.basis.complexTypeDefinition):
+    """Pointers to various data elements associated with the acquisitions"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 281, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSet uses Python identifier DataSet
+    __DataSet = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'DataSet'), 'DataSet', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_48_httppacificbiosciences_comPacBioDataModel_xsdDataSet', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 135, 1), )
+
+    
+    DataSet = property(__DataSet.value, __DataSet.set, None, None)
+
+    _ElementMap.update({
+        __DataSet.name() : __DataSet
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_49 (pyxb.binding.basis.complexTypeDefinition):
+    """Journal of metrics, system events, or alarms that were generated during this container's lifetime"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 291, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}RecordedEvent uses Python identifier RecordedEvent
+    __RecordedEvent = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'RecordedEvent'), 'RecordedEvent', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_49_httppacificbiosciences_comPacBioDataModel_xsdRecordedEvent', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 293, 8), )
+
+    
+    RecordedEvent = property(__RecordedEvent.value, __RecordedEvent.set, None, "Journal of metrics, system events, or alarms that were generated during this container's lifetime")
+
+    _ElementMap.update({
+        __RecordedEvent.name() : __RecordedEvent
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_50 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 302, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSample uses Python identifier BioSample
+    __BioSample = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BioSample'), 'BioSample', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_50_httppacificbiosciences_comPacBioDataModel_xsdBioSample', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 304, 8), )
+
+    
+    BioSample = property(__BioSample.value, __BioSample.set, None, None)
+
+    _ElementMap.update({
+        __BioSample.name() : __BioSample
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_51 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 322, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Input uses Python identifier Input
+    __Input = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Input'), 'Input', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_51_httppacificbiosciences_comPacBioDataModel_xsdInput', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 61, 1), )
+
+    
+    Input = property(__Input.value, __Input.set, None, None)
+
+    _ElementMap.update({
+        __Input.name() : __Input
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_52 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 329, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Output uses Python identifier Output
+    __Output = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Output'), 'Output', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_52_httppacificbiosciences_comPacBioDataModel_xsdOutput', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 62, 1), )
+
+    
+    Output = property(__Output.value, __Output.set, None, None)
+
+    _ElementMap.update({
+        __Output.name() : __Output
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_53 (pyxb.binding.basis.complexTypeDefinition):
+    """Journal of metrics, system events, or alarms that were generated during this run's lifetime"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 345, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}RecordedEvent uses Python identifier RecordedEvent
+    __RecordedEvent = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'RecordedEvent'), 'RecordedEvent', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_53_httppacificbiosciences_comPacBioDataModel_xsdRecordedEvent', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 347, 8), )
+
+    
+    RecordedEvent = property(__RecordedEvent.value, __RecordedEvent.set, None, "Journal of metrics, system events, or alarms that were generated during this run's lifetime.\nIn the case of Primary generating the DataSet containing the sts.xml, this RecordedEvent object should be a pointer to the DataSet object generated.")
+
+    _ElementMap.update({
+        __RecordedEvent.name() : __RecordedEvent
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_54 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 388, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CollectionMetadataRef uses Python identifier CollectionMetadataRef
+    __CollectionMetadataRef = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CollectionMetadataRef'), 'CollectionMetadataRef', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_54_httppacificbiosciences_comPacBioDataModel_xsdCollectionMetadataRef', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 390, 4), )
+
+    
+    CollectionMetadataRef = property(__CollectionMetadataRef.value, __CollectionMetadataRef.set, None, None)
+
+    _ElementMap.update({
+        __CollectionMetadataRef.name() : __CollectionMetadataRef
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_55 (pyxb.binding.basis.complexTypeDefinition):
+    """The root element of the Part Numbers """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 12, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SequencingKits uses Python identifier SequencingKits
+    __SequencingKits = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SequencingKits'), 'SequencingKits', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_55_httppacificbiosciences_comPacBioDataModel_xsdSequencingKits', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 14, 4), )
+
+    
+    SequencingKits = property(__SequencingKits.value, __SequencingKits.set, None, 'List the sequencing kit part numbers.  A list of incompatible part numbers and automations is available to specify in the PartNumber subtype.')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BindingKits uses Python identifier BindingKits
+    __BindingKits = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BindingKits'), 'BindingKits', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_55_httppacificbiosciences_comPacBioDataModel_xsdBindingKits', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 24, 4), )
+
+    
+    BindingKits = property(__BindingKits.value, __BindingKits.set, None, 'List the binding kit part numbers.  A list of incompatible part numbers and automations is available to specify in the PartNumber subtype.')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}TemplatePrepKits uses Python identifier TemplatePrepKits
+    __TemplatePrepKits = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'TemplatePrepKits'), 'TemplatePrepKits', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_55_httppacificbiosciences_comPacBioDataModel_xsdTemplatePrepKits', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 34, 4), )
+
+    
+    TemplatePrepKits = property(__TemplatePrepKits.value, __TemplatePrepKits.set, None, 'List the sample prep kit part numbers.  A list of incompatible part numbers and automations is available to specify in the PartNumber subtype.')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ControlKits uses Python identifier ControlKits
+    __ControlKits = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ControlKits'), 'ControlKits', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_55_httppacificbiosciences_comPacBioDataModel_xsdControlKits', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 44, 4), )
+
+    
+    ControlKits = property(__ControlKits.value, __ControlKits.set, None, 'List the DNA control complex part numbers.  A list of incompatible part numbers and automations is available to specify in the PartNumber subtype.')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CellPackKits uses Python identifier CellPackKits
+    __CellPackKits = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CellPackKits'), 'CellPackKits', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_55_httppacificbiosciences_comPacBioDataModel_xsdCellPackKits', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 54, 4), )
+
+    
+    CellPackKits = property(__CellPackKits.value, __CellPackKits.set, None, 'List the cell tray part numbers.  A list of incompatible part numbers and automations is available to specify in the PartNumber subtype.')
+
+    _ElementMap.update({
+        __SequencingKits.name() : __SequencingKits,
+        __BindingKits.name() : __BindingKits,
+        __TemplatePrepKits.name() : __TemplatePrepKits,
+        __ControlKits.name() : __ControlKits,
+        __CellPackKits.name() : __CellPackKits
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_56 (pyxb.binding.basis.complexTypeDefinition):
+    """List the sequencing kit part numbers.  A list of incompatible part numbers and automations is available to specify in the PartNumber subtype."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 18, 5)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SequencingKit uses Python identifier SequencingKit
+    __SequencingKit = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SequencingKit'), 'SequencingKit', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_56_httppacificbiosciences_comPacBioDataModel_xsdSequencingKit', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 67, 1), )
+
+    
+    SequencingKit = property(__SequencingKit.value, __SequencingKit.set, None, None)
+
+    _ElementMap.update({
+        __SequencingKit.name() : __SequencingKit
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_57 (pyxb.binding.basis.complexTypeDefinition):
+    """List the binding kit part numbers.  A list of incompatible part numbers and automations is available to specify in the PartNumber subtype."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 28, 5)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BindingKit uses Python identifier BindingKit
+    __BindingKit = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BindingKit'), 'BindingKit', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_57_httppacificbiosciences_comPacBioDataModel_xsdBindingKit', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 68, 1), )
+
+    
+    BindingKit = property(__BindingKit.value, __BindingKit.set, None, None)
+
+    _ElementMap.update({
+        __BindingKit.name() : __BindingKit
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_58 (pyxb.binding.basis.complexTypeDefinition):
+    """List the sample prep kit part numbers.  A list of incompatible part numbers and automations is available to specify in the PartNumber subtype."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 38, 5)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}TemplatePrepKit uses Python identifier TemplatePrepKit
+    __TemplatePrepKit = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'TemplatePrepKit'), 'TemplatePrepKit', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_58_httppacificbiosciences_comPacBioDataModel_xsdTemplatePrepKit', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 69, 1), )
+
+    
+    TemplatePrepKit = property(__TemplatePrepKit.value, __TemplatePrepKit.set, None, None)
+
+    _ElementMap.update({
+        __TemplatePrepKit.name() : __TemplatePrepKit
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_59 (pyxb.binding.basis.complexTypeDefinition):
+    """List the DNA control complex part numbers.  A list of incompatible part numbers and automations is available to specify in the PartNumber subtype."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 48, 5)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ControlKit uses Python identifier ControlKit
+    __ControlKit = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ControlKit'), 'ControlKit', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_59_httppacificbiosciences_comPacBioDataModel_xsdControlKit', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 70, 1), )
+
+    
+    ControlKit = property(__ControlKit.value, __ControlKit.set, None, None)
+
+    _ElementMap.update({
+        __ControlKit.name() : __ControlKit
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_60 (pyxb.binding.basis.complexTypeDefinition):
+    """List the cell tray part numbers.  A list of incompatible part numbers and automations is available to specify in the PartNumber subtype."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 58, 5)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CellPackKit uses Python identifier CellPackKit
+    __CellPackKit = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CellPackKit'), 'CellPackKit', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_60_httppacificbiosciences_comPacBioDataModel_xsdCellPackKit', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 71, 1), )
+
+    
+    CellPackKit = property(__CellPackKit.value, __CellPackKit.set, None, None)
+
+    _ElementMap.update({
+        __CellPackKit.name() : __CellPackKit
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_61 (pyxb.binding.basis.complexTypeDefinition):
+    """The root element of the reagent kit standalone file"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 11, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentKit uses Python identifier ReagentKit
+    __ReagentKit = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ReagentKit'), 'ReagentKit', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_61_httppacificbiosciences_comPacBioDataModel_xsdReagentKit', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 18, 1), )
+
+    
+    ReagentKit = property(__ReagentKit.value, __ReagentKit.set, None, None)
+
+    _ElementMap.update({
+        __ReagentKit.name() : __ReagentKit
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_62 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 70, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Reagent uses Python identifier Reagent
+    __Reagent = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Reagent'), 'Reagent', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_62_httppacificbiosciences_comPacBioDataModel_xsdReagent', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 17, 1), )
+
+    
+    Reagent = property(__Reagent.value, __Reagent.set, None, None)
+
+    _ElementMap.update({
+        __Reagent.name() : __Reagent
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_63 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 77, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentTube uses Python identifier ReagentTube
+    __ReagentTube = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ReagentTube'), 'ReagentTube', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_63_httppacificbiosciences_comPacBioDataModel_xsdReagentTube', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 19, 1), )
+
+    
+    ReagentTube = property(__ReagentTube.value, __ReagentTube.set, None, None)
+
+    _ElementMap.update({
+        __ReagentTube.name() : __ReagentTube
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_64 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 84, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentPlateRow uses Python identifier ReagentPlateRow
+    __ReagentPlateRow = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ReagentPlateRow'), 'ReagentPlateRow', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_64_httppacificbiosciences_comPacBioDataModel_xsdReagentPlateRow', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 20, 1), )
+
+    
+    ReagentPlateRow = property(__ReagentPlateRow.value, __ReagentPlateRow.set, None, None)
+
+    _ElementMap.update({
+        __ReagentPlateRow.name() : __ReagentPlateRow
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_65 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 91, 6)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CompatibleAutomation uses Python identifier CompatibleAutomation
+    __CompatibleAutomation = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CompatibleAutomation'), 'CompatibleAutomation', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_65_httppacificbiosciences_comPacBioDataModel_xsdCompatibleAutomation', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 93, 8), )
+
+    
+    CompatibleAutomation = property(__CompatibleAutomation.value, __CompatibleAutomation.set, None, None)
+
+    _ElementMap.update({
+        __CompatibleAutomation.name() : __CompatibleAutomation
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType with content type ELEMENT_ONLY
+class BaseEntityType (pyxb.binding.basis.complexTypeDefinition):
+    """This is the base element type for all types in this data model"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'BaseEntityType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 52, 1)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions uses Python identifier Extensions
+    __Extensions = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Extensions'), 'Extensions', '__httppacificbiosciences_comPacBioDataModel_xsd_BaseEntityType_httppacificbiosciences_comPacBioDataModel_xsdExtensions', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3), )
+
+    
+    Extensions = property(__Extensions.value, __Extensions.set, None, None)
+
+    
+    # Attribute UniqueId uses Python identifier UniqueId
+    __UniqueId = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'UniqueId'), 'UniqueId', '__httppacificbiosciences_comPacBioDataModel_xsd_BaseEntityType_UniqueId', STD_ANON)
+    __UniqueId._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 65, 2)
+    __UniqueId._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 65, 2)
+    
+    UniqueId = property(__UniqueId.value, __UniqueId.set, None, 'A unique identifier, such as a GUID - likely autogenerated')
+
+    
+    # Attribute Name uses Python identifier Name
+    __Name = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Name'), 'Name', '__httppacificbiosciences_comPacBioDataModel_xsd_BaseEntityType_Name', pyxb.binding.datatypes.string)
+    __Name._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 75, 2)
+    __Name._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 75, 2)
+    
+    Name = property(__Name.value, __Name.set, None, 'A short text identifier; uniqueness not necessary')
+
+    
+    # Attribute TimeStampedName uses Python identifier TimeStampedName
+    __TimeStampedName = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'TimeStampedName'), 'TimeStampedName', '__httppacificbiosciences_comPacBioDataModel_xsd_BaseEntityType_TimeStampedName', pyxb.binding.datatypes.string)
+    __TimeStampedName._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 80, 2)
+    __TimeStampedName._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 80, 2)
+    
+    TimeStampedName = property(__TimeStampedName.value, __TimeStampedName.set, None, 'This is NOT intended to be used as a unique field.  For uniqueness, use UniqueId.  In order to not utilize customer provided names, this attribute may be used as an alternative means of Human Readable ID, e.g. Run-20150304_231155')
+
+    
+    # Attribute Description uses Python identifier Description
+    __Description = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Description'), 'Description', '__httppacificbiosciences_comPacBioDataModel_xsd_BaseEntityType_Description', pyxb.binding.datatypes.string)
+    __Description._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 85, 2)
+    __Description._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 85, 2)
+    
+    Description = property(__Description.value, __Description.set, None, 'A long text description of the object')
+
+    
+    # Attribute MetaType uses Python identifier MetaType
+    __MetaType = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'MetaType'), 'MetaType', '__httppacificbiosciences_comPacBioDataModel_xsd_BaseEntityType_MetaType', pyxb.binding.datatypes.string)
+    __MetaType._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 90, 2)
+    __MetaType._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 90, 2)
+    
+    MetaType = property(__MetaType.value, __MetaType.set, None, 'Controlled Vocabulary, meant as a means to group similar entities; the type of the object, e.g. Instrument Run, Secondary Run, Assay, Sample, Barcode, Alignment File, Alarm, Exception, Metric, SystemEvent, etc.')
+
+    
+    # Attribute Tags uses Python identifier Tags
+    __Tags = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Tags'), 'Tags', '__httppacificbiosciences_comPacBioDataModel_xsd_BaseEntityType_Tags', pyxb.binding.datatypes.string)
+    __Tags._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 95, 2)
+    __Tags._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 95, 2)
+    
+    Tags = property(__Tags.value, __Tags.set, None, 'A set of keywords assigned to the object to help describe it and allow it to be found via search')
+
+    
+    # Attribute ResourceId uses Python identifier ResourceId
+    __ResourceId = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'ResourceId'), 'ResourceId', '__httppacificbiosciences_comPacBioDataModel_xsd_BaseEntityType_ResourceId', pyxb.binding.datatypes.anyURI)
+    __ResourceId._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 100, 2)
+    __ResourceId._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 100, 2)
+    
+    ResourceId = property(__ResourceId.value, __ResourceId.set, None, 'A uniform resource identifier used to identify a "web" resource. e.g. svc://run/acquisition/alignment/gridding')
+
+    
+    # Attribute Format uses Python identifier Format
+    __Format = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Format'), 'Format', '__httppacificbiosciences_comPacBioDataModel_xsd_BaseEntityType_Format', pyxb.binding.datatypes.string)
+    __Format._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 105, 2)
+    __Format._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 105, 2)
+    
+    Format = property(__Format.value, __Format.set, None, 'Optional, but recommended.  The MIME-Type of the referenced file.  See http://www.iana.org/assignments/media-types/media-types.xhtml for examples')
+
+    
+    # Attribute Version uses Python identifier Version
+    __Version = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Version'), 'Version', '__httppacificbiosciences_comPacBioDataModel_xsd_BaseEntityType_Version', pyxb.binding.datatypes.string)
+    __Version._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 110, 2)
+    __Version._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 110, 2)
+    
+    Version = property(__Version.value, __Version.set, None, 'An optional identifier denoting the revision of this particular entity')
+
+    
+    # Attribute CreatedAt uses Python identifier CreatedAt
+    __CreatedAt = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'CreatedAt'), 'CreatedAt', '__httppacificbiosciences_comPacBioDataModel_xsd_BaseEntityType_CreatedAt', pyxb.binding.datatypes.dateTime)
+    __CreatedAt._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 115, 2)
+    __CreatedAt._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 115, 2)
+    
+    CreatedAt = property(__CreatedAt.value, __CreatedAt.set, None, 'Timestamp designating the creation of this object, relative to UTC; millisecond precision is expected.')
+
+    
+    # Attribute ModifiedAt uses Python identifier ModifiedAt
+    __ModifiedAt = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'ModifiedAt'), 'ModifiedAt', '__httppacificbiosciences_comPacBioDataModel_xsd_BaseEntityType_ModifiedAt', pyxb.binding.datatypes.dateTime)
+    __ModifiedAt._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 120, 2)
+    __ModifiedAt._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 120, 2)
+    
+    ModifiedAt = property(__ModifiedAt.value, __ModifiedAt.set, None, 'Timestamp designating the modification of this object, relative to UTC; millisecond precision is expected.')
+
+    _ElementMap.update({
+        __Extensions.name() : __Extensions
+    })
+    _AttributeMap.update({
+        __UniqueId.name() : __UniqueId,
+        __Name.name() : __Name,
+        __TimeStampedName.name() : __TimeStampedName,
+        __Description.name() : __Description,
+        __MetaType.name() : __MetaType,
+        __Tags.name() : __Tags,
+        __ResourceId.name() : __ResourceId,
+        __Format.name() : __Format,
+        __Version.name() : __Version,
+        __CreatedAt.name() : __CreatedAt,
+        __ModifiedAt.name() : __ModifiedAt
+    })
+Namespace.addCategoryObject('typeBinding', 'BaseEntityType', BaseEntityType)
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_66 (pyxb.binding.basis.complexTypeDefinition):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 39, 4)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CommonServicesInstanceId uses Python identifier CommonServicesInstanceId
+    __CommonServicesInstanceId = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CommonServicesInstanceId'), 'CommonServicesInstanceId', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_66_httppacificbiosciences_comPacBioDataModel_xsdCommonServicesInstanceId', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 41, 6), )
+
+    
+    CommonServicesInstanceId = property(__CommonServicesInstanceId.value, __CommonServicesInstanceId.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CreatorUserId uses Python identifier CreatorUserId
+    __CreatorUserId = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CreatorUserId'), 'CreatorUserId', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_66_httppacificbiosciences_comPacBioDataModel_xsdCreatorUserId', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 42, 6), )
+
+    
+    CreatorUserId = property(__CreatorUserId.value, __CreatorUserId.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ParentJobId uses Python identifier ParentJobId
+    __ParentJobId = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ParentJobId'), 'ParentJobId', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_66_httppacificbiosciences_comPacBioDataModel_xsdParentJobId', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 43, 6), )
+
+    
+    ParentJobId = property(__ParentJobId.value, __ParentJobId.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ParentTool uses Python identifier ParentTool
+    __ParentTool = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ParentTool'), 'ParentTool', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_66_httppacificbiosciences_comPacBioDataModel_xsdParentTool', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 44, 6), )
+
+    
+    ParentTool = property(__ParentTool.value, __ParentTool.set, None, None)
+
+    
+    # Attribute CreatedBy uses Python identifier CreatedBy
+    __CreatedBy = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'CreatedBy'), 'CreatedBy', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_66_CreatedBy', STD_ANON_, required=True)
+    __CreatedBy._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 46, 5)
+    __CreatedBy._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 46, 5)
+    
+    CreatedBy = property(__CreatedBy.value, __CreatedBy.set, None, None)
+
+    _ElementMap.update({
+        __CommonServicesInstanceId.name() : __CommonServicesInstanceId,
+        __CreatorUserId.name() : __CreatorUserId,
+        __ParentJobId.name() : __ParentJobId,
+        __ParentTool.name() : __ParentTool
+    })
+    _AttributeMap.update({
+        __CreatedBy.name() : __CreatedBy
+    })
+
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}ReadSetMetadataType with content type ELEMENT_ONLY
+class ReadSetMetadataType (DataSetMetadataType):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}ReadSetMetadataType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'ReadSetMetadataType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 59, 1)
+    _ElementMap = DataSetMetadataType._ElementMap.copy()
+    _AttributeMap = DataSetMetadataType._AttributeMap.copy()
+    # Base type is DataSetMetadataType
+    
+    # Element TotalLength ({http://pacificbiosciences.com/PacBioDataModel.xsd}TotalLength) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadataType
+    
+    # Element NumRecords ({http://pacificbiosciences.com/PacBioDataModel.xsd}NumRecords) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadataType
+    
+    # Element Provenance ({http://pacificbiosciences.com/PacBioDataModel.xsd}Provenance) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadataType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SummaryStats uses Python identifier SummaryStats
+    __SummaryStats = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SummaryStats'), 'SummaryStats', '__httppacificbiosciences_comPacBioDataModel_xsd_ReadSetMetadataType_httppacificbiosciences_comPacBioDataModel_xsdSummaryStats', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 65, 5), )
+
+    
+    SummaryStats = property(__SummaryStats.value, __SummaryStats.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Collections uses Python identifier Collections
+    __Collections = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Collections'), 'Collections', '__httppacificbiosciences_comPacBioDataModel_xsd_ReadSetMetadataType_httppacificbiosciences_comPacBioDataModel_xsdCollections', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 125, 1), )
+
+    
+    Collections = property(__Collections.value, __Collections.set, None, 'A set of acquisition definitions')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSamples uses Python identifier BioSamples
+    __BioSamples = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BioSamples'), 'BioSamples', '__httppacificbiosciences_comPacBioDataModel_xsd_ReadSetMetadataType_httppacificbiosciences_comPacBioDataModel_xsdBioSamples', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 673, 1), )
+
+    
+    BioSamples = property(__BioSamples.value, __BioSamples.set, None, None)
+
+    _ElementMap.update({
+        __SummaryStats.name() : __SummaryStats,
+        __Collections.name() : __Collections,
+        __BioSamples.name() : __BioSamples
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'ReadSetMetadataType', ReadSetMetadataType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}SubreadSetMetadataType with content type ELEMENT_ONLY
+class SubreadSetMetadataType (DataSetMetadataType):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}SubreadSetMetadataType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'SubreadSetMetadataType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 87, 1)
+    _ElementMap = DataSetMetadataType._ElementMap.copy()
+    _AttributeMap = DataSetMetadataType._AttributeMap.copy()
+    # Base type is DataSetMetadataType
+    
+    # Element TotalLength ({http://pacificbiosciences.com/PacBioDataModel.xsd}TotalLength) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadataType
+    
+    # Element NumRecords ({http://pacificbiosciences.com/PacBioDataModel.xsd}NumRecords) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadataType
+    
+    # Element Provenance ({http://pacificbiosciences.com/PacBioDataModel.xsd}Provenance) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadataType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}AverageSubreadLength uses Python identifier AverageSubreadLength
+    __AverageSubreadLength = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'AverageSubreadLength'), 'AverageSubreadLength', '__httppacificbiosciences_comPacBioDataModel_xsd_SubreadSetMetadataType_httppacificbiosciences_comPacBioDataModel_xsdAverageSubreadLength', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 91, 5), )
+
+    
+    AverageSubreadLength = property(__AverageSubreadLength.value, __AverageSubreadLength.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}AverageSubreadQuality uses Python identifier AverageSubreadQuality
+    __AverageSubreadQuality = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'AverageSubreadQuality'), 'AverageSubreadQuality', '__httppacificbiosciences_comPacBioDataModel_xsd_SubreadSetMetadataType_httppacificbiosciences_comPacBioDataModel_xsdAverageSubreadQuality', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 92, 5), )
+
+    
+    AverageSubreadQuality = property(__AverageSubreadQuality.value, __AverageSubreadQuality.set, None, None)
+
+    _ElementMap.update({
+        __AverageSubreadLength.name() : __AverageSubreadLength,
+        __AverageSubreadQuality.name() : __AverageSubreadQuality
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'SubreadSetMetadataType', SubreadSetMetadataType)
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_67 (pyxb.binding.basis.complexTypeDefinition):
+    """A variable, as a name/value pair, associated with a protocol (one of Collection, Primary, and Secondary)"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 67, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Validation uses Python identifier Validation
+    __Validation = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Validation'), 'Validation', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_67_httppacificbiosciences_comPacBioDataModel_xsdValidation', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1), )
+
+    
+    Validation = property(__Validation.value, __Validation.set, None, '\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ')
+
+    
+    # Attribute Name uses Python identifier Name
+    __Name = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Name'), 'Name', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_67_Name', STD_ANON_2, required=True)
+    __Name._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 71, 3)
+    __Name._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 71, 3)
+    
+    Name = property(__Name.value, __Name.set, None, None)
+
+    
+    # Attribute Value uses Python identifier Value
+    __Value = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Value'), 'Value', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_67_Value', pyxb.binding.datatypes.string, required=True)
+    __Value._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 88, 3)
+    __Value._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 88, 3)
+    
+    Value = property(__Value.value, __Value.set, None, None)
+
+    _ElementMap.update({
+        __Validation.name() : __Validation
+    })
+    _AttributeMap.update({
+        __Name.name() : __Name,
+        __Value.name() : __Value
+    })
+
+
+
+# Complex type [anonymous] with content type EMPTY
+class CTD_ANON_68 (pyxb.binding.basis.complexTypeDefinition):
+    """
+        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.
+      """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_EMPTY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 158, 2)
+    _ElementMap = {}
+    _AttributeMap = {}
+    # Base type is pyxb.binding.datatypes.anyType
+    
+    # Attribute IsValid uses Python identifier IsValid
+    __IsValid = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'IsValid'), 'IsValid', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_68_IsValid', pyxb.binding.datatypes.boolean, required=True)
+    __IsValid._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 159, 3)
+    __IsValid._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 159, 3)
+    
+    IsValid = property(__IsValid.value, __IsValid.set, None, '\n            Indicates whether or not the element is valid.  The assumption is that the\n            Validation element is omitted unless the element is invalid, in which case,\n            the Validation element would describe the problem.\n          ')
+
+    
+    # Attribute ID uses Python identifier ID
+    __ID = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'ID'), 'ID', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_68_ID', pyxb.binding.datatypes.string, required=True)
+    __ID._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 168, 3)
+    __ID._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 168, 3)
+    
+    ID = property(__ID.value, __ID.set, None, '\n            An identifier which can be used by client applications to translate/map\n            to a human decipherable message.\n          ')
+
+    
+    # Attribute Source uses Python identifier Source
+    __Source = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Source'), 'Source', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_68_Source', STD_ANON_3, required=True)
+    __Source._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 176, 3)
+    __Source._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 176, 3)
+    
+    Source = property(__Source.value, __Source.set, None, '\n            This is the element which has experienced a validation issue.\n          ')
+
+    
+    # Attribute ElementPath uses Python identifier ElementPath
+    __ElementPath = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'ElementPath'), 'ElementPath', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_68_ElementPath', pyxb.binding.datatypes.string)
+    __ElementPath._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 221, 3)
+    __ElementPath._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 221, 3)
+    
+    ElementPath = property(__ElementPath.value, __ElementPath.set, None, '\n            An optional string attribute which holds the path to the offending element.\n          ')
+
+    
+    # Attribute SupplementalInfo uses Python identifier SupplementalInfo
+    __SupplementalInfo = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'SupplementalInfo'), 'SupplementalInfo', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_68_SupplementalInfo', pyxb.binding.datatypes.string)
+    __SupplementalInfo._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 228, 3)
+    __SupplementalInfo._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 228, 3)
+    
+    SupplementalInfo = property(__SupplementalInfo.value, __SupplementalInfo.set, None, '\n            An optional string attribute which holds extraneous information.\n          ')
+
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        __IsValid.name() : __IsValid,
+        __ID.name() : __ID,
+        __Source.name() : __Source,
+        __ElementPath.name() : __ElementPath,
+        __SupplementalInfo.name() : __SupplementalInfo
+    })
+
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}AlignmentSetMetadataType with content type ELEMENT_ONLY
+class AlignmentSetMetadataType (DataSetMetadataType):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}AlignmentSetMetadataType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'AlignmentSetMetadataType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 137, 1)
+    _ElementMap = DataSetMetadataType._ElementMap.copy()
+    _AttributeMap = DataSetMetadataType._AttributeMap.copy()
+    # Base type is DataSetMetadataType
+    
+    # Element TotalLength ({http://pacificbiosciences.com/PacBioDataModel.xsd}TotalLength) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadataType
+    
+    # Element NumRecords ({http://pacificbiosciences.com/PacBioDataModel.xsd}NumRecords) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadataType
+    
+    # Element Provenance ({http://pacificbiosciences.com/PacBioDataModel.xsd}Provenance) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadataType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Aligner uses Python identifier Aligner
+    __Aligner = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Aligner'), 'Aligner', '__httppacificbiosciences_comPacBioDataModel_xsd_AlignmentSetMetadataType_httppacificbiosciences_comPacBioDataModel_xsdAligner', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 141, 5), )
+
+    
+    Aligner = property(__Aligner.value, __Aligner.set, None, None)
+
+    _ElementMap.update({
+        __Aligner.name() : __Aligner
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'AlignmentSetMetadataType', AlignmentSetMetadataType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}ContigSetMetadataType with content type ELEMENT_ONLY
+class ContigSetMetadataType (DataSetMetadataType):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}ContigSetMetadataType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'ContigSetMetadataType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 146, 1)
+    _ElementMap = DataSetMetadataType._ElementMap.copy()
+    _AttributeMap = DataSetMetadataType._AttributeMap.copy()
+    # Base type is DataSetMetadataType
+    
+    # Element TotalLength ({http://pacificbiosciences.com/PacBioDataModel.xsd}TotalLength) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadataType
+    
+    # Element NumRecords ({http://pacificbiosciences.com/PacBioDataModel.xsd}NumRecords) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadataType
+    
+    # Element Provenance ({http://pacificbiosciences.com/PacBioDataModel.xsd}Provenance) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadataType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Contigs uses Python identifier Contigs
+    __Contigs = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Contigs'), 'Contigs', '__httppacificbiosciences_comPacBioDataModel_xsd_ContigSetMetadataType_httppacificbiosciences_comPacBioDataModel_xsdContigs', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 114, 1), )
+
+    
+    Contigs = property(__Contigs.value, __Contigs.set, None, 'List of contigs in a ContigSet')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Organism uses Python identifier Organism
+    __Organism = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Organism'), 'Organism', '__httppacificbiosciences_comPacBioDataModel_xsd_ContigSetMetadataType_httppacificbiosciences_comPacBioDataModel_xsdOrganism', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 150, 5), )
+
+    
+    Organism = property(__Organism.value, __Organism.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Ploidy uses Python identifier Ploidy
+    __Ploidy = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Ploidy'), 'Ploidy', '__httppacificbiosciences_comPacBioDataModel_xsd_ContigSetMetadataType_httppacificbiosciences_comPacBioDataModel_xsdPloidy', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 151, 5), )
+
+    
+    Ploidy = property(__Ploidy.value, __Ploidy.set, None, None)
+
+    _ElementMap.update({
+        __Contigs.name() : __Contigs,
+        __Organism.name() : __Organism,
+        __Ploidy.name() : __Ploidy
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'ContigSetMetadataType', ContigSetMetadataType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}BarcodeSetMetadataType with content type ELEMENT_ONLY
+class BarcodeSetMetadataType (DataSetMetadataType):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}BarcodeSetMetadataType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'BarcodeSetMetadataType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 157, 1)
+    _ElementMap = DataSetMetadataType._ElementMap.copy()
+    _AttributeMap = DataSetMetadataType._AttributeMap.copy()
+    # Base type is DataSetMetadataType
+    
+    # Element TotalLength ({http://pacificbiosciences.com/PacBioDataModel.xsd}TotalLength) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadataType
+    
+    # Element NumRecords ({http://pacificbiosciences.com/PacBioDataModel.xsd}NumRecords) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadataType
+    
+    # Element Provenance ({http://pacificbiosciences.com/PacBioDataModel.xsd}Provenance) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadataType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BarcodeConstruction uses Python identifier BarcodeConstruction
+    __BarcodeConstruction = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BarcodeConstruction'), 'BarcodeConstruction', '__httppacificbiosciences_comPacBioDataModel_xsd_BarcodeSetMetadataType_httppacificbiosciences_comPacBioDataModel_xsdBarcodeConstruction', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 161, 5), )
+
+    
+    BarcodeConstruction = property(__BarcodeConstruction.value, __BarcodeConstruction.set, None, None)
+
+    _ElementMap.update({
+        __BarcodeConstruction.name() : __BarcodeConstruction
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'BarcodeSetMetadataType', BarcodeSetMetadataType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}AutomationConstraintType with content type ELEMENT_ONLY
+class AutomationConstraintType (BaseEntityType):
+    """This data type defines constraints that an automation has.  The information here, along with the availability of an exclusionary list of automations in the PartNumberType, allows for defining a robust compatibility matrix."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'AutomationConstraintType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 27, 1)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Automations uses Python identifier Automations
+    __Automations = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Automations'), 'Automations', '__httppacificbiosciences_comPacBioDataModel_xsd_AutomationConstraintType_httppacificbiosciences_comPacBioDataModel_xsdAutomations', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 34, 5), )
+
+    
+    Automations = property(__Automations.value, __Automations.set, None, 'Names of automations that are all similarly constrained')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}InsertSizes uses Python identifier InsertSizes
+    __InsertSizes = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'InsertSizes'), 'InsertSizes', '__httppacificbiosciences_comPacBioDataModel_xsd_AutomationConstraintType_httppacificbiosciences_comPacBioDataModel_xsdInsertSizes', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 44, 5), )
+
+    
+    InsertSizes = property(__InsertSizes.value, __InsertSizes.set, None, 'A list of insert sizes (buckets) recommended for use')
+
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute SupportsCellReuse uses Python identifier SupportsCellReuse
+    __SupportsCellReuse = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'SupportsCellReuse'), 'SupportsCellReuse', '__httppacificbiosciences_comPacBioDataModel_xsd_AutomationConstraintType_SupportsCellReuse', pyxb.binding.datatypes.boolean)
+    __SupportsCellReuse._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 55, 4)
+    __SupportsCellReuse._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 55, 4)
+    
+    SupportsCellReuse = property(__SupportsCellReuse.value, __SupportsCellReuse.set, None, 'Does this automation support cell reuse?')
+
+    
+    # Attribute MaxCollectionsPerCell uses Python identifier MaxCollectionsPerCell
+    __MaxCollectionsPerCell = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'MaxCollectionsPerCell'), 'MaxCollectionsPerCell', '__httppacificbiosciences_comPacBioDataModel_xsd_AutomationConstraintType_MaxCollectionsPerCell', pyxb.binding.datatypes.int)
+    __MaxCollectionsPerCell._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 60, 4)
+    __MaxCollectionsPerCell._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 60, 4)
+    
+    MaxCollectionsPerCell = property(__MaxCollectionsPerCell.value, __MaxCollectionsPerCell.set, None, 'If cell reuse is supported (i.e. above attribute is true) how many times can the cell be reused?')
+
+    
+    # Attribute MinMovieLength uses Python identifier MinMovieLength
+    __MinMovieLength = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'MinMovieLength'), 'MinMovieLength', '__httppacificbiosciences_comPacBioDataModel_xsd_AutomationConstraintType_MinMovieLength', pyxb.binding.datatypes.int)
+    __MinMovieLength._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 65, 4)
+    __MinMovieLength._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 65, 4)
+    
+    MinMovieLength = property(__MinMovieLength.value, __MinMovieLength.set, None, 'Minimum length of movie acquisition')
+
+    
+    # Attribute MaxMovieLength uses Python identifier MaxMovieLength
+    __MaxMovieLength = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'MaxMovieLength'), 'MaxMovieLength', '__httppacificbiosciences_comPacBioDataModel_xsd_AutomationConstraintType_MaxMovieLength', pyxb.binding.datatypes.int)
+    __MaxMovieLength._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 70, 4)
+    __MaxMovieLength._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 70, 4)
+    
+    MaxMovieLength = property(__MaxMovieLength.value, __MaxMovieLength.set, None, 'Maximum length of movie acquisition')
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        __Automations.name() : __Automations,
+        __InsertSizes.name() : __InsertSizes
+    })
+    _AttributeMap.update({
+        __SupportsCellReuse.name() : __SupportsCellReuse,
+        __MaxCollectionsPerCell.name() : __MaxCollectionsPerCell,
+        __MinMovieLength.name() : __MinMovieLength,
+        __MaxMovieLength.name() : __MaxMovieLength
+    })
+Namespace.addCategoryObject('typeBinding', 'AutomationConstraintType', AutomationConstraintType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType with content type ELEMENT_ONLY
+class AnalogType (BaseEntityType):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'AnalogType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 6, 1)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Base uses Python identifier Base
+    __Base = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Base'), 'Base', '__httppacificbiosciences_comPacBioDataModel_xsd_AnalogType_Base', SupportedNucleotides)
+    __Base._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 9, 4)
+    __Base._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 9, 4)
+    
+    Base = property(__Base.value, __Base.set, None, 'The base label, A, C, T, or G')
+
+    
+    # Attribute SpectralAngle uses Python identifier SpectralAngle
+    __SpectralAngle = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'SpectralAngle'), 'SpectralAngle', '__httppacificbiosciences_comPacBioDataModel_xsd_AnalogType_SpectralAngle', pyxb.binding.datatypes.float)
+    __SpectralAngle._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 14, 4)
+    __SpectralAngle._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 14, 4)
+    
+    SpectralAngle = property(__SpectralAngle.value, __SpectralAngle.set, None, 'In radians (0 \u2264 \u03b1 \u2264 \u03c0/2), it is the estimate of arctan(red_pixel / green_pixel), where red[green]_pixel is the relative amplitude, as measured by the instrument\u2019s detector, of emitted light that is collected in the red[green] pixel channel.')
+
+    
+    # Attribute RelativeAmplitude uses Python identifier RelativeAmplitude
+    __RelativeAmplitude = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'RelativeAmplitude'), 'RelativeAmplitude', '__httppacificbiosciences_comPacBioDataModel_xsd_AnalogType_RelativeAmplitude', pyxb.binding.datatypes.float)
+    __RelativeAmplitude._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 19, 4)
+    __RelativeAmplitude._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 19, 4)
+    
+    RelativeAmplitude = property(__RelativeAmplitude.value, __RelativeAmplitude.set, None, 'Relative intensity vs. a specific molecule used as a baseline measure.  The expected relative amplitude (DWS-normalized) of the analog label relative to 542 as measured on Astro.')
+
+    
+    # Attribute Label uses Python identifier Label
+    __Label = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Label'), 'Label', '__httppacificbiosciences_comPacBioDataModel_xsd_AnalogType_Label', pyxb.binding.datatypes.string)
+    __Label._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 24, 4)
+    __Label._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 24, 4)
+    
+    Label = property(__Label.value, __Label.set, None, 'Identifier of the acceptor dye which determines the emission spectrum')
+
+    
+    # Attribute Nucleotide uses Python identifier Nucleotide
+    __Nucleotide = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Nucleotide'), 'Nucleotide', '__httppacificbiosciences_comPacBioDataModel_xsd_AnalogType_Nucleotide', pyxb.binding.datatypes.string)
+    __Nucleotide._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 29, 4)
+    __Nucleotide._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 29, 4)
+    
+    Nucleotide = property(__Nucleotide.value, __Nucleotide.set, None, 'The type and number of nucleotides on a given analog. e.g. (dT6P)6')
+
+    
+    # Attribute Wavelength uses Python identifier Wavelength
+    __Wavelength = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Wavelength'), 'Wavelength', '__httppacificbiosciences_comPacBioDataModel_xsd_AnalogType_Wavelength', pyxb.binding.datatypes.float)
+    __Wavelength._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 34, 4)
+    __Wavelength._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 34, 4)
+    
+    Wavelength = property(__Wavelength.value, __Wavelength.set, None, 'The peak emission wavelength associated with the dye label in nm.')
+
+    
+    # Attribute CompoundID uses Python identifier CompoundID
+    __CompoundID = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'CompoundID'), 'CompoundID', '__httppacificbiosciences_comPacBioDataModel_xsd_AnalogType_CompoundID', pyxb.binding.datatypes.string)
+    __CompoundID._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 39, 4)
+    __CompoundID._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 39, 4)
+    
+    CompoundID = property(__CompoundID.value, __CompoundID.set, None, 'Identification code of the final compound.  The suffix \u2018N\u2019 should be used to distinguish these values from enzyme identifiers.\te.g. 5031N')
+
+    
+    # Attribute LotID uses Python identifier LotID
+    __LotID = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'LotID'), 'LotID', '__httppacificbiosciences_comPacBioDataModel_xsd_AnalogType_LotID', pyxb.binding.datatypes.string)
+    __LotID._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 44, 4)
+    __LotID._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 44, 4)
+    
+    LotID = property(__LotID.value, __LotID.set, None, 'Identification code for the build of the final compound, written as initials/date, where date is written as YYYY-MM-DD.\te.g. js/2014-06-30')
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        __Base.name() : __Base,
+        __SpectralAngle.name() : __SpectralAngle,
+        __RelativeAmplitude.name() : __RelativeAmplitude,
+        __Label.name() : __Label,
+        __Nucleotide.name() : __Nucleotide,
+        __Wavelength.name() : __Wavelength,
+        __CompoundID.name() : __CompoundID,
+        __LotID.name() : __LotID
+    })
+Namespace.addCategoryObject('typeBinding', 'AnalogType', AnalogType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType with content type ELEMENT_ONLY
+class DataEntityType (BaseEntityType):
+    """Extends BaseEntityType and adds a value element.  The intent is to have only one of the value elements exist at any point in time; however, this is not enforced."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'DataEntityType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 137, 1)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}EncodedValue uses Python identifier EncodedValue
+    __EncodedValue = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'EncodedValue'), 'EncodedValue', '__httppacificbiosciences_comPacBioDataModel_xsd_DataEntityType_httppacificbiosciences_comPacBioDataModel_xsdEncodedValue', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5), )
+
+    
+    EncodedValue = property(__EncodedValue.value, __EncodedValue.set, None, 'A complex data type element, such as an image, file, binary object, etc.')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CheckSum uses Python identifier CheckSum
+    __CheckSum = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CheckSum'), 'CheckSum', '__httppacificbiosciences_comPacBioDataModel_xsd_DataEntityType_httppacificbiosciences_comPacBioDataModel_xsdCheckSum', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5), )
+
+    
+    CheckSum = property(__CheckSum.value, __CheckSum.set, None, 'small-size datum of the attached value for the purpose of detecting errors or modification which may have been introduced during its transmission or storage')
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ValueDataType uses Python identifier ValueDataType
+    __ValueDataType = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'ValueDataType'), 'ValueDataType', '__httppacificbiosciences_comPacBioDataModel_xsd_DataEntityType_ValueDataType', SupportedDataTypes, unicode_default='Object')
+    __ValueDataType._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 155, 4)
+    __ValueDataType._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 155, 4)
+    
+    ValueDataType = property(__ValueDataType.value, __ValueDataType.set, None, 'The datatype of the simple or encoded value.  If not specified, a string is assumed.')
+
+    
+    # Attribute SimpleValue uses Python identifier SimpleValue
+    __SimpleValue = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'SimpleValue'), 'SimpleValue', '__httppacificbiosciences_comPacBioDataModel_xsd_DataEntityType_SimpleValue', pyxb.binding.datatypes.anySimpleType)
+    __SimpleValue._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 160, 4)
+    __SimpleValue._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 160, 4)
+    
+    SimpleValue = property(__SimpleValue.value, __SimpleValue.set, None, 'A simple data type element, such as a string, int, float, etc.')
+
+    _ElementMap.update({
+        __EncodedValue.name() : __EncodedValue,
+        __CheckSum.name() : __CheckSum
+    })
+    _AttributeMap.update({
+        __ValueDataType.name() : __ValueDataType,
+        __SimpleValue.name() : __SimpleValue
+    })
+Namespace.addCategoryObject('typeBinding', 'DataEntityType', DataEntityType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}DNABarcode with content type ELEMENT_ONLY
+class DNABarcode (BaseEntityType):
+    """Composite of uuid, sequence, and name"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'DNABarcode')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 178, 1)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute DNASequence uses Python identifier DNASequence
+    __DNASequence = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'DNASequence'), 'DNASequence', '__httppacificbiosciences_comPacBioDataModel_xsd_DNABarcode_DNASequence', pyxb.binding.datatypes.anySimpleType)
+    __DNASequence._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 184, 4)
+    __DNASequence._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 184, 4)
+    
+    DNASequence = property(__DNASequence.value, __DNASequence.set, None, "This is the sample's DNA barcode")
+
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        __DNASequence.name() : __DNASequence
+    })
+Namespace.addCategoryObject('typeBinding', 'DNABarcode', DNABarcode)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}AutomationType with content type ELEMENT_ONLY
+class AutomationType (BaseEntityType):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}AutomationType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'AutomationType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 237, 1)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}AutomationParameters uses Python identifier AutomationParameters
+    __AutomationParameters = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'AutomationParameters'), 'AutomationParameters', '__httppacificbiosciences_comPacBioDataModel_xsd_AutomationType_httppacificbiosciences_comPacBioDataModel_xsdAutomationParameters', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 241, 5), )
+
+    
+    AutomationParameters = property(__AutomationParameters.value, __AutomationParameters.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute IsObsolete uses Python identifier IsObsolete
+    __IsObsolete = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'IsObsolete'), 'IsObsolete', '__httppacificbiosciences_comPacBioDataModel_xsd_AutomationType_IsObsolete', pyxb.binding.datatypes.boolean)
+    __IsObsolete._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 249, 4)
+    __IsObsolete._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 249, 4)
+    
+    IsObsolete = property(__IsObsolete.value, __IsObsolete.set, None, None)
+
+    _ElementMap.update({
+        __AutomationParameters.name() : __AutomationParameters
+    })
+    _AttributeMap.update({
+        __IsObsolete.name() : __IsObsolete
+    })
+Namespace.addCategoryObject('typeBinding', 'AutomationType', AutomationType)
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_69 (BaseEntityType):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 342, 6)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Analogs uses Python identifier Analogs
+    __Analogs = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Analogs'), 'Analogs', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_69_httppacificbiosciences_comPacBioDataModel_xsdAnalogs', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 346, 10), )
+
+    
+    Analogs = property(__Analogs.value, __Analogs.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        __Analogs.name() : __Analogs
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}SequencingChemistryConfig with content type ELEMENT_ONLY
+class SequencingChemistryConfig (BaseEntityType):
+    """A container for a set of analogs"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'SequencingChemistryConfig')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 372, 1)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Analogs uses Python identifier Analogs
+    __Analogs = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Analogs'), 'Analogs', '__httppacificbiosciences_comPacBioDataModel_xsd_SequencingChemistryConfig_httppacificbiosciences_comPacBioDataModel_xsdAnalogs', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 379, 5), )
+
+    
+    Analogs = property(__Analogs.value, __Analogs.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        __Analogs.name() : __Analogs
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'SequencingChemistryConfig', SequencingChemistryConfig)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}StatsContinuousDistType with content type ELEMENT_ONLY
+class StatsContinuousDistType (BaseEntityType):
+    """Continuous distribution class"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'StatsContinuousDistType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 390, 1)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SampleSize uses Python identifier SampleSize
+    __SampleSize = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SampleSize'), 'SampleSize', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsContinuousDistType_httppacificbiosciences_comPacBioDataModel_xsdSampleSize', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 397, 5), )
+
+    
+    SampleSize = property(__SampleSize.value, __SampleSize.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SampleMean uses Python identifier SampleMean
+    __SampleMean = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SampleMean'), 'SampleMean', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsContinuousDistType_httppacificbiosciences_comPacBioDataModel_xsdSampleMean', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 398, 5), )
+
+    
+    SampleMean = property(__SampleMean.value, __SampleMean.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SampleMed uses Python identifier SampleMed
+    __SampleMed = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SampleMed'), 'SampleMed', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsContinuousDistType_httppacificbiosciences_comPacBioDataModel_xsdSampleMed', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 399, 5), )
+
+    
+    SampleMed = property(__SampleMed.value, __SampleMed.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SampleStd uses Python identifier SampleStd
+    __SampleStd = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SampleStd'), 'SampleStd', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsContinuousDistType_httppacificbiosciences_comPacBioDataModel_xsdSampleStd', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 400, 5), )
+
+    
+    SampleStd = property(__SampleStd.value, __SampleStd.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Sample95thPct uses Python identifier Sample95thPct
+    __Sample95thPct = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Sample95thPct'), 'Sample95thPct', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsContinuousDistType_httppacificbiosciences_comPacBioDataModel_xsdSample95thPct', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 401, 5), )
+
+    
+    Sample95thPct = property(__Sample95thPct.value, __Sample95thPct.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}NumBins uses Python identifier NumBins
+    __NumBins = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'NumBins'), 'NumBins', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsContinuousDistType_httppacificbiosciences_comPacBioDataModel_xsdNumBins', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 402, 5), )
+
+    
+    NumBins = property(__NumBins.value, __NumBins.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BinCounts uses Python identifier BinCounts
+    __BinCounts = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BinCounts'), 'BinCounts', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsContinuousDistType_httppacificbiosciences_comPacBioDataModel_xsdBinCounts', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 403, 5), )
+
+    
+    BinCounts = property(__BinCounts.value, __BinCounts.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BinWidth uses Python identifier BinWidth
+    __BinWidth = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BinWidth'), 'BinWidth', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsContinuousDistType_httppacificbiosciences_comPacBioDataModel_xsdBinWidth', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 410, 5), )
+
+    
+    BinWidth = property(__BinWidth.value, __BinWidth.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}MinOutlierValue uses Python identifier MinOutlierValue
+    __MinOutlierValue = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'MinOutlierValue'), 'MinOutlierValue', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsContinuousDistType_httppacificbiosciences_comPacBioDataModel_xsdMinOutlierValue', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 411, 5), )
+
+    
+    MinOutlierValue = property(__MinOutlierValue.value, __MinOutlierValue.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}MinBinValue uses Python identifier MinBinValue
+    __MinBinValue = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'MinBinValue'), 'MinBinValue', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsContinuousDistType_httppacificbiosciences_comPacBioDataModel_xsdMinBinValue', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 412, 5), )
+
+    
+    MinBinValue = property(__MinBinValue.value, __MinBinValue.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}MaxBinValue uses Python identifier MaxBinValue
+    __MaxBinValue = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'MaxBinValue'), 'MaxBinValue', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsContinuousDistType_httppacificbiosciences_comPacBioDataModel_xsdMaxBinValue', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 413, 5), )
+
+    
+    MaxBinValue = property(__MaxBinValue.value, __MaxBinValue.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}MaxOutlierValue uses Python identifier MaxOutlierValue
+    __MaxOutlierValue = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'MaxOutlierValue'), 'MaxOutlierValue', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsContinuousDistType_httppacificbiosciences_comPacBioDataModel_xsdMaxOutlierValue', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 414, 5), )
+
+    
+    MaxOutlierValue = property(__MaxOutlierValue.value, __MaxOutlierValue.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}MetricDescription uses Python identifier MetricDescription
+    __MetricDescription = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'MetricDescription'), 'MetricDescription', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsContinuousDistType_httppacificbiosciences_comPacBioDataModel_xsdMetricDescription', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 415, 5), )
+
+    
+    MetricDescription = property(__MetricDescription.value, __MetricDescription.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Channel uses Python identifier Channel
+    __Channel = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Channel'), 'Channel', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsContinuousDistType_Channel', pyxb.binding.datatypes.string)
+    __Channel._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 417, 4)
+    __Channel._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 417, 4)
+    
+    Channel = property(__Channel.value, __Channel.set, None, None)
+
+    _ElementMap.update({
+        __SampleSize.name() : __SampleSize,
+        __SampleMean.name() : __SampleMean,
+        __SampleMed.name() : __SampleMed,
+        __SampleStd.name() : __SampleStd,
+        __Sample95thPct.name() : __Sample95thPct,
+        __NumBins.name() : __NumBins,
+        __BinCounts.name() : __BinCounts,
+        __BinWidth.name() : __BinWidth,
+        __MinOutlierValue.name() : __MinOutlierValue,
+        __MinBinValue.name() : __MinBinValue,
+        __MaxBinValue.name() : __MaxBinValue,
+        __MaxOutlierValue.name() : __MaxOutlierValue,
+        __MetricDescription.name() : __MetricDescription
+    })
+    _AttributeMap.update({
+        __Channel.name() : __Channel
+    })
+Namespace.addCategoryObject('typeBinding', 'StatsContinuousDistType', StatsContinuousDistType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}StatsDiscreteDistType with content type ELEMENT_ONLY
+class StatsDiscreteDistType (BaseEntityType):
+    """Discrete distribution class"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'StatsDiscreteDistType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 421, 1)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}NumBins uses Python identifier NumBins
+    __NumBins = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'NumBins'), 'NumBins', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsDiscreteDistType_httppacificbiosciences_comPacBioDataModel_xsdNumBins', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 428, 5), )
+
+    
+    NumBins = property(__NumBins.value, __NumBins.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BinCounts uses Python identifier BinCounts
+    __BinCounts = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BinCounts'), 'BinCounts', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsDiscreteDistType_httppacificbiosciences_comPacBioDataModel_xsdBinCounts', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 429, 5), )
+
+    
+    BinCounts = property(__BinCounts.value, __BinCounts.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}MetricDescription uses Python identifier MetricDescription
+    __MetricDescription = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'MetricDescription'), 'MetricDescription', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsDiscreteDistType_httppacificbiosciences_comPacBioDataModel_xsdMetricDescription', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 436, 5), )
+
+    
+    MetricDescription = property(__MetricDescription.value, __MetricDescription.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BinLabels uses Python identifier BinLabels
+    __BinLabels = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BinLabels'), 'BinLabels', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsDiscreteDistType_httppacificbiosciences_comPacBioDataModel_xsdBinLabels', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 437, 5), )
+
+    
+    BinLabels = property(__BinLabels.value, __BinLabels.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        __NumBins.name() : __NumBins,
+        __BinCounts.name() : __BinCounts,
+        __MetricDescription.name() : __MetricDescription,
+        __BinLabels.name() : __BinLabels
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'StatsDiscreteDistType', StatsDiscreteDistType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}StatsTimeSeriesType with content type ELEMENT_ONLY
+class StatsTimeSeriesType (BaseEntityType):
+    """Time series (for time-dependent metrics)"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'StatsTimeSeriesType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 448, 1)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}TimeUnits uses Python identifier TimeUnits
+    __TimeUnits = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'TimeUnits'), 'TimeUnits', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsTimeSeriesType_httppacificbiosciences_comPacBioDataModel_xsdTimeUnits', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 455, 5), )
+
+    
+    TimeUnits = property(__TimeUnits.value, __TimeUnits.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ValueUnits uses Python identifier ValueUnits
+    __ValueUnits = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ValueUnits'), 'ValueUnits', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsTimeSeriesType_httppacificbiosciences_comPacBioDataModel_xsdValueUnits', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 456, 5), )
+
+    
+    ValueUnits = property(__ValueUnits.value, __ValueUnits.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}StartTime uses Python identifier StartTime
+    __StartTime = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'StartTime'), 'StartTime', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsTimeSeriesType_httppacificbiosciences_comPacBioDataModel_xsdStartTime', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 457, 5), )
+
+    
+    StartTime = property(__StartTime.value, __StartTime.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}MeasInterval uses Python identifier MeasInterval
+    __MeasInterval = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'MeasInterval'), 'MeasInterval', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsTimeSeriesType_httppacificbiosciences_comPacBioDataModel_xsdMeasInterval', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 458, 5), )
+
+    
+    MeasInterval = property(__MeasInterval.value, __MeasInterval.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Values uses Python identifier Values
+    __Values = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Values'), 'Values', '__httppacificbiosciences_comPacBioDataModel_xsd_StatsTimeSeriesType_httppacificbiosciences_comPacBioDataModel_xsdValues', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 459, 5), )
+
+    
+    Values = property(__Values.value, __Values.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        __TimeUnits.name() : __TimeUnits,
+        __ValueUnits.name() : __ValueUnits,
+        __StartTime.name() : __StartTime,
+        __MeasInterval.name() : __MeasInterval,
+        __Values.name() : __Values
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'StatsTimeSeriesType', StatsTimeSeriesType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType with content type ELEMENT_ONLY
+class DataSetType (BaseEntityType):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'DataSetType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 102, 1)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ExternalResources uses Python identifier ExternalResources
+    __ExternalResources = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources'), 'ExternalResources', '__httppacificbiosciences_comPacBioDataModel_xsd_DataSetType_httppacificbiosciences_comPacBioDataModel_xsdExternalResources', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 202, 1), )
+
+    
+    ExternalResources = property(__ExternalResources.value, __ExternalResources.set, None, 'Pointers to data that do not reside inside the parent structure')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Filters uses Python identifier Filters
+    __Filters = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Filters'), 'Filters', '__httppacificbiosciences_comPacBioDataModel_xsd_DataSetType_httppacificbiosciences_comPacBioDataModel_xsdFilters', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5), )
+
+    
+    Filters = property(__Filters.value, __Filters.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSets uses Python identifier DataSets
+    __DataSets = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'DataSets'), 'DataSets', '__httppacificbiosciences_comPacBioDataModel_xsd_DataSetType_httppacificbiosciences_comPacBioDataModel_xsdDataSets', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5), )
+
+    
+    DataSets = property(__DataSets.value, __DataSets.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        __ExternalResources.name() : __ExternalResources,
+        __Filters.name() : __Filters,
+        __DataSets.name() : __DataSets
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'DataSetType', DataSetType)
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_70 (BaseEntityType):
+    """Root-level element for the metadata.  The purpose of which is to contain pertinent instrument information related to the conditions present during a movie acquisition.  It also serves to provide key pieces of information for integration with primary and secondary analysis.  This file is associated with 1 movie. """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 140, 2)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}InstCtrlVer uses Python identifier InstCtrlVer
+    __InstCtrlVer = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'InstCtrlVer'), 'InstCtrlVer', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdInstCtrlVer', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 144, 6), )
+
+    
+    InstCtrlVer = property(__InstCtrlVer.value, __InstCtrlVer.set, None, 'Instrument control software version. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SigProcVer uses Python identifier SigProcVer
+    __SigProcVer = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SigProcVer'), 'SigProcVer', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdSigProcVer', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 149, 6), )
+
+    
+    SigProcVer = property(__SigProcVer.value, __SigProcVer.set, None, 'Signal processing software version. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Automation uses Python identifier Automation
+    __Automation = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Automation'), 'Automation', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdAutomation', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 171, 6), )
+
+    
+    Automation = property(__Automation.value, __Automation.set, None, 'Defines the collection workflow (e.g., robotic movement, movie acquisition) for a particular cell. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CollectionNumber uses Python identifier CollectionNumber
+    __CollectionNumber = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CollectionNumber'), 'CollectionNumber', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdCollectionNumber', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 176, 6), )
+
+    
+    CollectionNumber = property(__CollectionNumber.value, __CollectionNumber.set, None, 'Collection number for this plate well. Sample from one plate well or tube can be distributed to more than one cell. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CellIndex uses Python identifier CellIndex
+    __CellIndex = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CellIndex'), 'CellIndex', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdCellIndex', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 181, 6), )
+
+    
+    CellIndex = property(__CellIndex.value, __CellIndex.set, None, 'The zero-based index of this particular cell within the cell tray.  Likely to be in the range of [0-3]')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SetNumber uses Python identifier SetNumber
+    __SetNumber = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SetNumber'), 'SetNumber', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdSetNumber', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 186, 6), )
+
+    
+    SetNumber = property(__SetNumber.value, __SetNumber.set, None, 'Formerly known as the look number.  1 - N.  Defaults to 1. 0 if the look is unknown. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CellPac uses Python identifier CellPac
+    __CellPac = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CellPac'), 'CellPac', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdCellPac', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 191, 6), )
+
+    
+    CellPac = property(__CellPac.value, __CellPac.set, None, 'The SMRT cell packaging supply information. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}TemplatePrepKit uses Python identifier TemplatePrepKit
+    __TemplatePrepKit = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'TemplatePrepKit'), 'TemplatePrepKit', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdTemplatePrepKit', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 196, 6), )
+
+    
+    TemplatePrepKit = property(__TemplatePrepKit.value, __TemplatePrepKit.set, None, 'Defines the template (sample) prep kit used for this experiment. Can be used to get back to the primary and adapter used. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BindingKit uses Python identifier BindingKit
+    __BindingKit = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BindingKit'), 'BindingKit', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdBindingKit', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 201, 6), )
+
+    
+    BindingKit = property(__BindingKit.value, __BindingKit.set, None, 'The binding kit supply information. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SequencingKitPlate uses Python identifier SequencingKitPlate
+    __SequencingKitPlate = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SequencingKitPlate'), 'SequencingKitPlate', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdSequencingKitPlate', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 206, 6), )
+
+    
+    SequencingKitPlate = property(__SequencingKitPlate.value, __SequencingKitPlate.set, None, 'The sequencing kit supply information. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}RunDetails uses Python identifier RunDetails
+    __RunDetails = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'RunDetails'), 'RunDetails', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdRunDetails', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 248, 1), )
+
+    
+    RunDetails = property(__RunDetails.value, __RunDetails.set, None, 'Information related to an instrument run.  A run can contain multiple chips, wells, and movies. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Movie uses Python identifier Movie
+    __Movie = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Movie'), 'Movie', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdMovie', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 287, 1), )
+
+    
+    Movie = property(__Movie.value, __Movie.set, None, 'A movie corresponds to one acquisition for a chip, one set (look) and one strobe. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ExpirationData uses Python identifier ExpirationData
+    __ExpirationData = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ExpirationData'), 'ExpirationData', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdExpirationData', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 311, 1), )
+
+    
+    ExpirationData = property(__ExpirationData.value, __ExpirationData.set, None, 'Container for the expired consumable data. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}WellSample uses Python identifier WellSample
+    __WellSample = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'WellSample'), 'WellSample', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdWellSample', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 432, 1), )
+
+    
+    WellSample = property(__WellSample.value, __WellSample.set, None, 'Container for the sample related data. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Primary uses Python identifier Primary
+    __Primary = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Primary'), 'Primary', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdPrimary', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 503, 1), )
+
+    
+    Primary = property(__Primary.value, __Primary.set, None, 'Container for the primary analysis related data. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Secondary uses Python identifier Secondary
+    __Secondary = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Secondary'), 'Secondary', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdSecondary', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 568, 1), )
+
+    
+    Secondary = property(__Secondary.value, __Secondary.set, None, 'Container for the primary analysis related data. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}UserDefinedFields uses Python identifier UserDefinedFields
+    __UserDefinedFields = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'UserDefinedFields'), 'UserDefinedFields', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_httppacificbiosciences_comPacBioDataModel_xsdUserDefinedFields', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 602, 1), )
+
+    
+    UserDefinedFields = property(__UserDefinedFields.value, __UserDefinedFields.set, None, 'A set of key-value pairs specified by a user via the run input mechanism. Note that uniqueness of keys is not enforced here and so may contain duplicate keys. ')
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Context uses Python identifier Context
+    __Context = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Context'), 'Context', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_Context', pyxb.binding.datatypes.string)
+    __Context._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 232, 5)
+    __Context._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 232, 5)
+    
+    Context = property(__Context.value, __Context.set, None, None)
+
+    
+    # Attribute Status uses Python identifier Status
+    __Status = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Status'), 'Status', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_Status', SupportedAcquisitionStates)
+    __Status._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 233, 5)
+    __Status._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 233, 5)
+    
+    Status = property(__Status.value, __Status.set, None, None)
+
+    
+    # Attribute InstrumentId uses Python identifier InstrumentId
+    __InstrumentId = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'InstrumentId'), 'InstrumentId', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_InstrumentId', pyxb.binding.datatypes.string)
+    __InstrumentId._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 234, 5)
+    __InstrumentId._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 234, 5)
+    
+    InstrumentId = property(__InstrumentId.value, __InstrumentId.set, None, 'World unique id assigned by PacBio. ')
+
+    
+    # Attribute InstrumentName uses Python identifier InstrumentName
+    __InstrumentName = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'InstrumentName'), 'InstrumentName', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_70_InstrumentName', pyxb.binding.datatypes.string)
+    __InstrumentName._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 239, 5)
+    __InstrumentName._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 239, 5)
+    
+    InstrumentName = property(__InstrumentName.value, __InstrumentName.set, None, 'Friendly name assigned by customer')
+
+    _ElementMap.update({
+        __InstCtrlVer.name() : __InstCtrlVer,
+        __SigProcVer.name() : __SigProcVer,
+        __Automation.name() : __Automation,
+        __CollectionNumber.name() : __CollectionNumber,
+        __CellIndex.name() : __CellIndex,
+        __SetNumber.name() : __SetNumber,
+        __CellPac.name() : __CellPac,
+        __TemplatePrepKit.name() : __TemplatePrepKit,
+        __BindingKit.name() : __BindingKit,
+        __SequencingKitPlate.name() : __SequencingKitPlate,
+        __RunDetails.name() : __RunDetails,
+        __Movie.name() : __Movie,
+        __ExpirationData.name() : __ExpirationData,
+        __WellSample.name() : __WellSample,
+        __Primary.name() : __Primary,
+        __Secondary.name() : __Secondary,
+        __UserDefinedFields.name() : __UserDefinedFields
+    })
+    _AttributeMap.update({
+        __Context.name() : __Context,
+        __Status.name() : __Status,
+        __InstrumentId.name() : __InstrumentId,
+        __InstrumentName.name() : __InstrumentName
+    })
+
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSampleType with content type ELEMENT_ONLY
+class BioSampleType (BaseEntityType):
+    """The actual biological sample; this could be prep'd, or in original form; could be bound, or annealed..."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'BioSampleType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 365, 1)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSamples uses Python identifier BioSamples
+    __BioSamples = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BioSamples'), 'BioSamples', '__httppacificbiosciences_comPacBioDataModel_xsd_BioSampleType_httppacificbiosciences_comPacBioDataModel_xsdBioSamples', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 673, 1), )
+
+    
+    BioSamples = property(__BioSamples.value, __BioSamples.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute DateReceived uses Python identifier DateReceived
+    __DateReceived = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'DateReceived'), 'DateReceived', '__httppacificbiosciences_comPacBioDataModel_xsd_BioSampleType_DateReceived', pyxb.binding.datatypes.dateTime)
+    __DateReceived._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 374, 4)
+    __DateReceived._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 374, 4)
+    
+    DateReceived = property(__DateReceived.value, __DateReceived.set, None, 'Date the sample was received by the lab')
+
+    
+    # Attribute Organism uses Python identifier Organism
+    __Organism = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Organism'), 'Organism', '__httppacificbiosciences_comPacBioDataModel_xsd_BioSampleType_Organism', pyxb.binding.datatypes.string)
+    __Organism._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 379, 4)
+    __Organism._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 379, 4)
+    
+    Organism = property(__Organism.value, __Organism.set, None, 'e.g. HIV, E.coli')
+
+    
+    # Attribute Reference uses Python identifier Reference
+    __Reference = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Reference'), 'Reference', '__httppacificbiosciences_comPacBioDataModel_xsd_BioSampleType_Reference', pyxb.binding.datatypes.string)
+    __Reference._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 384, 4)
+    __Reference._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 384, 4)
+    
+    Reference = property(__Reference.value, __Reference.set, None, 'Name of reference, or pointer to one at e.g. NCBI RefSeq')
+
+    
+    # Attribute DNAType uses Python identifier DNAType
+    __DNAType = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'DNAType'), 'DNAType', '__httppacificbiosciences_comPacBioDataModel_xsd_BioSampleType_DNAType', pyxb.binding.datatypes.string)
+    __DNAType._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 389, 4)
+    __DNAType._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 389, 4)
+    
+    DNAType = property(__DNAType.value, __DNAType.set, None, 'shotgun library, amplicon, etc.')
+
+    
+    # Attribute Concentration uses Python identifier Concentration
+    __Concentration = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Concentration'), 'Concentration', '__httppacificbiosciences_comPacBioDataModel_xsd_BioSampleType_Concentration', pyxb.binding.datatypes.float)
+    __Concentration._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 394, 4)
+    __Concentration._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 394, 4)
+    
+    Concentration = property(__Concentration.value, __Concentration.set, None, 'in ng/uL, e.g. 250')
+
+    
+    # Attribute QuantificationMethod uses Python identifier QuantificationMethod
+    __QuantificationMethod = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'QuantificationMethod'), 'QuantificationMethod', '__httppacificbiosciences_comPacBioDataModel_xsd_BioSampleType_QuantificationMethod', pyxb.binding.datatypes.string)
+    __QuantificationMethod._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 399, 4)
+    __QuantificationMethod._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 399, 4)
+    
+    QuantificationMethod = property(__QuantificationMethod.value, __QuantificationMethod.set, None, 'e.g. Qubit')
+
+    
+    # Attribute SMRTBellConcentration uses Python identifier SMRTBellConcentration
+    __SMRTBellConcentration = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'SMRTBellConcentration'), 'SMRTBellConcentration', '__httppacificbiosciences_comPacBioDataModel_xsd_BioSampleType_SMRTBellConcentration', pyxb.binding.datatypes.float)
+    __SMRTBellConcentration._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 404, 4)
+    __SMRTBellConcentration._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 404, 4)
+    
+    SMRTBellConcentration = property(__SMRTBellConcentration.value, __SMRTBellConcentration.set, None, 'in ng/uL, e.g. 4.5')
+
+    
+    # Attribute SMRTBellQuantificationMethod uses Python identifier SMRTBellQuantificationMethod
+    __SMRTBellQuantificationMethod = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'SMRTBellQuantificationMethod'), 'SMRTBellQuantificationMethod', '__httppacificbiosciences_comPacBioDataModel_xsd_BioSampleType_SMRTBellQuantificationMethod', pyxb.binding.datatypes.string)
+    __SMRTBellQuantificationMethod._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 409, 4)
+    __SMRTBellQuantificationMethod._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 409, 4)
+    
+    SMRTBellQuantificationMethod = property(__SMRTBellQuantificationMethod.value, __SMRTBellQuantificationMethod.set, None, 'e.g. Qubit')
+
+    
+    # Attribute BufferName uses Python identifier BufferName
+    __BufferName = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'BufferName'), 'BufferName', '__httppacificbiosciences_comPacBioDataModel_xsd_BioSampleType_BufferName', pyxb.binding.datatypes.string)
+    __BufferName._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 414, 4)
+    __BufferName._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 414, 4)
+    
+    BufferName = property(__BufferName.value, __BufferName.set, None, 'e.g. Tris HCl')
+
+    
+    # Attribute SamplePrepKit uses Python identifier SamplePrepKit
+    __SamplePrepKit = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'SamplePrepKit'), 'SamplePrepKit', '__httppacificbiosciences_comPacBioDataModel_xsd_BioSampleType_SamplePrepKit', pyxb.binding.datatypes.string)
+    __SamplePrepKit._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 419, 4)
+    __SamplePrepKit._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 419, 4)
+    
+    SamplePrepKit = property(__SamplePrepKit.value, __SamplePrepKit.set, None, 'e.g. SMRTbell Template Prep Kit')
+
+    
+    # Attribute TargetLibrarySize uses Python identifier TargetLibrarySize
+    __TargetLibrarySize = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'TargetLibrarySize'), 'TargetLibrarySize', '__httppacificbiosciences_comPacBioDataModel_xsd_BioSampleType_TargetLibrarySize', pyxb.binding.datatypes.string)
+    __TargetLibrarySize._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 424, 4)
+    __TargetLibrarySize._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 424, 4)
+    
+    TargetLibrarySize = property(__TargetLibrarySize.value, __TargetLibrarySize.set, None, '2000, 10000, 20000')
+
+    _ElementMap.update({
+        __BioSamples.name() : __BioSamples
+    })
+    _AttributeMap.update({
+        __DateReceived.name() : __DateReceived,
+        __Organism.name() : __Organism,
+        __Reference.name() : __Reference,
+        __DNAType.name() : __DNAType,
+        __Concentration.name() : __Concentration,
+        __QuantificationMethod.name() : __QuantificationMethod,
+        __SMRTBellConcentration.name() : __SMRTBellConcentration,
+        __SMRTBellQuantificationMethod.name() : __SMRTBellQuantificationMethod,
+        __BufferName.name() : __BufferName,
+        __SamplePrepKit.name() : __SamplePrepKit,
+        __TargetLibrarySize.name() : __TargetLibrarySize
+    })
+Namespace.addCategoryObject('typeBinding', 'BioSampleType', BioSampleType)
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_71 (BaseEntityType):
+    """Container for the sample related data. """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 436, 2)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}PlateId uses Python identifier PlateId
+    __PlateId = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'PlateId'), 'PlateId', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_71_httppacificbiosciences_comPacBioDataModel_xsdPlateId', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 440, 6), )
+
+    
+    PlateId = property(__PlateId.value, __PlateId.set, None, 'The ID of the sample plate. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}WellName uses Python identifier WellName
+    __WellName = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'WellName'), 'WellName', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_71_httppacificbiosciences_comPacBioDataModel_xsdWellName', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 445, 6), )
+
+    
+    WellName = property(__WellName.value, __WellName.set, None, 'Identifies which well this sample came from (e.g., coordinate on a plate). ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Concentration uses Python identifier Concentration
+    __Concentration = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Concentration'), 'Concentration', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_71_httppacificbiosciences_comPacBioDataModel_xsdConcentration', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 450, 6), )
+
+    
+    Concentration = property(__Concentration.value, __Concentration.set, None, 'Sample input concentration. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SampleReuseEnabled uses Python identifier SampleReuseEnabled
+    __SampleReuseEnabled = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SampleReuseEnabled'), 'SampleReuseEnabled', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_71_httppacificbiosciences_comPacBioDataModel_xsdSampleReuseEnabled', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 455, 6), )
+
+    
+    SampleReuseEnabled = property(__SampleReuseEnabled.value, __SampleReuseEnabled.set, None, 'Whether or not complex reuse is enabled for this well. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}StageHotstartEnabled uses Python identifier StageHotstartEnabled
+    __StageHotstartEnabled = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'StageHotstartEnabled'), 'StageHotstartEnabled', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_71_httppacificbiosciences_comPacBioDataModel_xsdStageHotstartEnabled', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 460, 6), )
+
+    
+    StageHotstartEnabled = property(__StageHotstartEnabled.value, __StageHotstartEnabled.set, None, 'Whether or not hotstart at the stage is enabled for this well. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SizeSelectionEnabled uses Python identifier SizeSelectionEnabled
+    __SizeSelectionEnabled = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SizeSelectionEnabled'), 'SizeSelectionEnabled', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_71_httppacificbiosciences_comPacBioDataModel_xsdSizeSelectionEnabled', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 465, 6), )
+
+    
+    SizeSelectionEnabled = property(__SizeSelectionEnabled.value, __SizeSelectionEnabled.set, None, 'Whether or not size selection is enabled for this well. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}UseCount uses Python identifier UseCount
+    __UseCount = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'UseCount'), 'UseCount', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_71_httppacificbiosciences_comPacBioDataModel_xsdUseCount', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 470, 6), )
+
+    
+    UseCount = property(__UseCount.value, __UseCount.set, None, 'Count of usages for this batch of complex. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Comments uses Python identifier Comments
+    __Comments = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Comments'), 'Comments', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_71_httppacificbiosciences_comPacBioDataModel_xsdComments', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 475, 6), )
+
+    
+    Comments = property(__Comments.value, __Comments.set, None, 'User-supplied comments about the sample. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}DNAControlComplex uses Python identifier DNAControlComplex
+    __DNAControlComplex = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'DNAControlComplex'), 'DNAControlComplex', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_71_httppacificbiosciences_comPacBioDataModel_xsdDNAControlComplex', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 480, 6), )
+
+    
+    DNAControlComplex = property(__DNAControlComplex.value, __DNAControlComplex.set, None, 'Indicating what kind (if any) control was used. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SampleBarcodeInfo uses Python identifier SampleBarcodeInfo
+    __SampleBarcodeInfo = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SampleBarcodeInfo'), 'SampleBarcodeInfo', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_71_httppacificbiosciences_comPacBioDataModel_xsdSampleBarcodeInfo', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 485, 6), )
+
+    
+    SampleBarcodeInfo = property(__SampleBarcodeInfo.value, __SampleBarcodeInfo.set, None, 'When utilizing DNA barcoding, store the list of smaple barcodes in this element.')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSamplePointers uses Python identifier BioSamplePointers
+    __BioSamplePointers = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BioSamplePointers'), 'BioSamplePointers', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_71_httppacificbiosciences_comPacBioDataModel_xsdBioSamplePointers', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 639, 1), )
+
+    
+    BioSamplePointers = property(__BioSamplePointers.value, __BioSamplePointers.set, None, 'Back references to other BarcodedSampleType object UniqueIds which utilize this sample')
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        __PlateId.name() : __PlateId,
+        __WellName.name() : __WellName,
+        __Concentration.name() : __Concentration,
+        __SampleReuseEnabled.name() : __SampleReuseEnabled,
+        __StageHotstartEnabled.name() : __StageHotstartEnabled,
+        __SizeSelectionEnabled.name() : __SizeSelectionEnabled,
+        __UseCount.name() : __UseCount,
+        __Comments.name() : __Comments,
+        __DNAControlComplex.name() : __DNAControlComplex,
+        __SampleBarcodeInfo.name() : __SampleBarcodeInfo,
+        __BioSamplePointers.name() : __BioSamplePointers
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentType with content type ELEMENT_ONLY
+class ReagentType (BaseEntityType):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'ReagentType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 54, 1)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ReagentKey uses Python identifier ReagentKey
+    __ReagentKey = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'ReagentKey'), 'ReagentKey', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentType_ReagentKey', ReagentKey, required=True)
+    __ReagentKey._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 57, 4)
+    __ReagentKey._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 57, 4)
+    
+    ReagentKey = property(__ReagentKey.value, __ReagentKey.set, None, None)
+
+    
+    # Attribute PlateColumn uses Python identifier PlateColumn
+    __PlateColumn = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'PlateColumn'), 'PlateColumn', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentType_PlateColumn', pyxb.binding.datatypes.string, required=True)
+    __PlateColumn._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 58, 4)
+    __PlateColumn._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 58, 4)
+    
+    PlateColumn = property(__PlateColumn.value, __PlateColumn.set, None, None)
+
+    
+    # Attribute Volume uses Python identifier Volume
+    __Volume = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Volume'), 'Volume', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentType_Volume', pyxb.binding.datatypes.int, required=True)
+    __Volume._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 59, 4)
+    __Volume._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 59, 4)
+    
+    Volume = property(__Volume.value, __Volume.set, None, None)
+
+    
+    # Attribute DeadVolume uses Python identifier DeadVolume
+    __DeadVolume = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'DeadVolume'), 'DeadVolume', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentType_DeadVolume', pyxb.binding.datatypes.int, required=True)
+    __DeadVolume._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 60, 4)
+    __DeadVolume._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 60, 4)
+    
+    DeadVolume = property(__DeadVolume.value, __DeadVolume.set, None, None)
+
+    
+    # Attribute ActiveInHour uses Python identifier ActiveInHour
+    __ActiveInHour = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'ActiveInHour'), 'ActiveInHour', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentType_ActiveInHour', pyxb.binding.datatypes.int, required=True)
+    __ActiveInHour._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 61, 4)
+    __ActiveInHour._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 61, 4)
+    
+    ActiveInHour = property(__ActiveInHour.value, __ActiveInHour.set, None, None)
+
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        __ReagentKey.name() : __ReagentKey,
+        __PlateColumn.name() : __PlateColumn,
+        __Volume.name() : __Volume,
+        __DeadVolume.name() : __DeadVolume,
+        __ActiveInHour.name() : __ActiveInHour
+    })
+Namespace.addCategoryObject('typeBinding', 'ReagentType', ReagentType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentKitType with content type ELEMENT_ONLY
+class ReagentKitType (BaseEntityType):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentKitType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'ReagentKitType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 65, 1)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Reagents uses Python identifier Reagents
+    __Reagents = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Reagents'), 'Reagents', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentKitType_httppacificbiosciences_comPacBioDataModel_xsdReagents', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 69, 5), )
+
+    
+    Reagents = property(__Reagents.value, __Reagents.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentTubes uses Python identifier ReagentTubes
+    __ReagentTubes = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ReagentTubes'), 'ReagentTubes', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentKitType_httppacificbiosciences_comPacBioDataModel_xsdReagentTubes', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 76, 5), )
+
+    
+    ReagentTubes = property(__ReagentTubes.value, __ReagentTubes.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentPlateRows uses Python identifier ReagentPlateRows
+    __ReagentPlateRows = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ReagentPlateRows'), 'ReagentPlateRows', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentKitType_httppacificbiosciences_comPacBioDataModel_xsdReagentPlateRows', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 83, 5), )
+
+    
+    ReagentPlateRows = property(__ReagentPlateRows.value, __ReagentPlateRows.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CompatibleAutomations uses Python identifier CompatibleAutomations
+    __CompatibleAutomations = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CompatibleAutomations'), 'CompatibleAutomations', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentKitType_httppacificbiosciences_comPacBioDataModel_xsdCompatibleAutomations', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 90, 5), )
+
+    
+    CompatibleAutomations = property(__CompatibleAutomations.value, __CompatibleAutomations.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ProductCode uses Python identifier ProductCode
+    __ProductCode = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'ProductCode'), 'ProductCode', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentKitType_ProductCode', pyxb.binding.datatypes.string)
+    __ProductCode._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 98, 4)
+    __ProductCode._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 98, 4)
+    
+    ProductCode = property(__ProductCode.value, __ProductCode.set, None, None)
+
+    
+    # Attribute PlateType uses Python identifier PlateType
+    __PlateType = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'PlateType'), 'PlateType', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentKitType_PlateType', pyxb.binding.datatypes.string)
+    __PlateType._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 99, 4)
+    __PlateType._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 99, 4)
+    
+    PlateType = property(__PlateType.value, __PlateType.set, None, None)
+
+    
+    # Attribute ActiveInHour uses Python identifier ActiveInHour
+    __ActiveInHour = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'ActiveInHour'), 'ActiveInHour', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentKitType_ActiveInHour', pyxb.binding.datatypes.int)
+    __ActiveInHour._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 100, 4)
+    __ActiveInHour._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 100, 4)
+    
+    ActiveInHour = property(__ActiveInHour.value, __ActiveInHour.set, None, None)
+
+    
+    # Attribute BasesPerSecond uses Python identifier BasesPerSecond
+    __BasesPerSecond = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'BasesPerSecond'), 'BasesPerSecond', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentKitType_BasesPerSecond', pyxb.binding.datatypes.decimal)
+    __BasesPerSecond._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 101, 4)
+    __BasesPerSecond._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 101, 4)
+    
+    BasesPerSecond = property(__BasesPerSecond.value, __BasesPerSecond.set, None, None)
+
+    
+    # Attribute AcquisitionCount uses Python identifier AcquisitionCount
+    __AcquisitionCount = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'AcquisitionCount'), 'AcquisitionCount', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentKitType_AcquisitionCount', pyxb.binding.datatypes.int)
+    __AcquisitionCount._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 102, 4)
+    __AcquisitionCount._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 102, 4)
+    
+    AcquisitionCount = property(__AcquisitionCount.value, __AcquisitionCount.set, None, None)
+
+    _ElementMap.update({
+        __Reagents.name() : __Reagents,
+        __ReagentTubes.name() : __ReagentTubes,
+        __ReagentPlateRows.name() : __ReagentPlateRows,
+        __CompatibleAutomations.name() : __CompatibleAutomations
+    })
+    _AttributeMap.update({
+        __ProductCode.name() : __ProductCode,
+        __PlateType.name() : __PlateType,
+        __ActiveInHour.name() : __ActiveInHour,
+        __BasesPerSecond.name() : __BasesPerSecond,
+        __AcquisitionCount.name() : __AcquisitionCount
+    })
+Namespace.addCategoryObject('typeBinding', 'ReagentKitType', ReagentKitType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentTubeType with content type ELEMENT_ONLY
+class ReagentTubeType (BaseEntityType):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentTubeType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'ReagentTubeType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 106, 1)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ProductCode uses Python identifier ProductCode
+    __ProductCode = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'ProductCode'), 'ProductCode', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentTubeType_ProductCode', pyxb.binding.datatypes.string, required=True)
+    __ProductCode._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 109, 4)
+    __ProductCode._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 109, 4)
+    
+    ProductCode = property(__ProductCode.value, __ProductCode.set, None, None)
+
+    
+    # Attribute ReagentKey uses Python identifier ReagentKey
+    __ReagentKey = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'ReagentKey'), 'ReagentKey', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentTubeType_ReagentKey', ReagentKey, required=True)
+    __ReagentKey._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 110, 4)
+    __ReagentKey._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 110, 4)
+    
+    ReagentKey = property(__ReagentKey.value, __ReagentKey.set, None, None)
+
+    
+    # Attribute Volume uses Python identifier Volume
+    __Volume = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Volume'), 'Volume', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentTubeType_Volume', pyxb.binding.datatypes.short, required=True)
+    __Volume._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 111, 4)
+    __Volume._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 111, 4)
+    
+    Volume = property(__Volume.value, __Volume.set, None, None)
+
+    
+    # Attribute DeadVolume uses Python identifier DeadVolume
+    __DeadVolume = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'DeadVolume'), 'DeadVolume', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentTubeType_DeadVolume', pyxb.binding.datatypes.short, required=True)
+    __DeadVolume._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 112, 4)
+    __DeadVolume._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 112, 4)
+    
+    DeadVolume = property(__DeadVolume.value, __DeadVolume.set, None, None)
+
+    
+    # Attribute ActiveInHour uses Python identifier ActiveInHour
+    __ActiveInHour = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'ActiveInHour'), 'ActiveInHour', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentTubeType_ActiveInHour', pyxb.binding.datatypes.int, required=True)
+    __ActiveInHour._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 113, 4)
+    __ActiveInHour._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 113, 4)
+    
+    ActiveInHour = property(__ActiveInHour.value, __ActiveInHour.set, None, None)
+
+    
+    # Attribute TubeWellType uses Python identifier TubeWellType
+    __TubeWellType = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'TubeWellType'), 'TubeWellType', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentTubeType_TubeWellType', TubeSize, required=True)
+    __TubeWellType._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 114, 4)
+    __TubeWellType._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 114, 4)
+    
+    TubeWellType = property(__TubeWellType.value, __TubeWellType.set, None, None)
+
+    
+    # Attribute ReagentTubeType uses Python identifier ReagentTubeType
+    __ReagentTubeType = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'ReagentTubeType'), 'ReagentTubeType', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentTubeType_ReagentTubeType', TubeLocation, required=True)
+    __ReagentTubeType._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 115, 4)
+    __ReagentTubeType._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 115, 4)
+    
+    ReagentTubeType = property(__ReagentTubeType.value, __ReagentTubeType.set, None, None)
+
+    
+    # Attribute InitialUse uses Python identifier InitialUse
+    __InitialUse = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'InitialUse'), 'InitialUse', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentTubeType_InitialUse', pyxb.binding.datatypes.dateTime)
+    __InitialUse._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 116, 4)
+    __InitialUse._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 116, 4)
+    
+    InitialUse = property(__InitialUse.value, __InitialUse.set, None, None)
+
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        __ProductCode.name() : __ProductCode,
+        __ReagentKey.name() : __ReagentKey,
+        __Volume.name() : __Volume,
+        __DeadVolume.name() : __DeadVolume,
+        __ActiveInHour.name() : __ActiveInHour,
+        __TubeWellType.name() : __TubeWellType,
+        __ReagentTubeType.name() : __ReagentTubeType,
+        __InitialUse.name() : __InitialUse
+    })
+Namespace.addCategoryObject('typeBinding', 'ReagentTubeType', ReagentTubeType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentPlateRowType with content type ELEMENT_ONLY
+class ReagentPlateRowType (BaseEntityType):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentPlateRowType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'ReagentPlateRowType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 120, 1)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute PlateRow uses Python identifier PlateRow
+    __PlateRow = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'PlateRow'), 'PlateRow', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentPlateRowType_PlateRow', pyxb.binding.datatypes.string, required=True)
+    __PlateRow._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 123, 4)
+    __PlateRow._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 123, 4)
+    
+    PlateRow = property(__PlateRow.value, __PlateRow.set, None, None)
+
+    
+    # Attribute InitialUse uses Python identifier InitialUse
+    __InitialUse = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'InitialUse'), 'InitialUse', '__httppacificbiosciences_comPacBioDataModel_xsd_ReagentPlateRowType_InitialUse', pyxb.binding.datatypes.dateTime)
+    __InitialUse._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 124, 4)
+    __InitialUse._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 124, 4)
+    
+    InitialUse = property(__InitialUse.value, __InitialUse.set, None, None)
+
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        __PlateRow.name() : __PlateRow,
+        __InitialUse.name() : __InitialUse
+    })
+Namespace.addCategoryObject('typeBinding', 'ReagentPlateRowType', ReagentPlateRowType)
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_72 (BaseEntityType):
+    """List of contigs in a ContigSet"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 118, 2)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Contig uses Python identifier Contig
+    __Contig = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Contig'), 'Contig', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_72_httppacificbiosciences_comPacBioDataModel_xsdContig', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 122, 6), )
+
+    
+    Contig = property(__Contig.value, __Contig.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        __Contig.name() : __Contig
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_73 (BaseEntityType):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 123, 7)
+    _ElementMap = BaseEntityType._ElementMap.copy()
+    _AttributeMap = BaseEntityType._AttributeMap.copy()
+    # Base type is BaseEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Length uses Python identifier Length
+    __Length = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Length'), 'Length', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_73_Length', pyxb.binding.datatypes.anySimpleType, required=True)
+    __Length._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 126, 10)
+    __Length._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 126, 10)
+    
+    Length = property(__Length.value, __Length.set, None, None)
+
+    
+    # Attribute Digest uses Python identifier Digest
+    __Digest = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Digest'), 'Digest', '__httppacificbiosciences_comPacBioDataModel_xsd_CTD_ANON_73_Digest', pyxb.binding.datatypes.anySimpleType, required=True)
+    __Digest._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 127, 10)
+    __Digest._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 127, 10)
+    
+    Digest = property(__Digest.value, __Digest.set, None, None)
+
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        __Length.name() : __Length,
+        __Digest.name() : __Digest
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_74 (AnalogType):
+    """An unlimited number of analogs listed for the purposes of hosting in a configuration file. e.g. a list of all possible analogs on the system"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 130, 2)
+    _ElementMap = AnalogType._ElementMap.copy()
+    _AttributeMap = AnalogType._AttributeMap.copy()
+    # Base type is AnalogType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Base inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType
+    
+    # Attribute SpectralAngle inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType
+    
+    # Attribute RelativeAmplitude inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType
+    
+    # Attribute Label inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType
+    
+    # Attribute Nucleotide inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType
+    
+    # Attribute Wavelength inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType
+    
+    # Attribute CompoundID inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType
+    
+    # Attribute LotID inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_75 (AnalogType):
+    """A set of four analogs, one for each of the nucleotides, grouped together for the purposes of a single experiment."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 196, 2)
+    _ElementMap = AnalogType._ElementMap.copy()
+    _AttributeMap = AnalogType._AttributeMap.copy()
+    # Base type is AnalogType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Base inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType
+    
+    # Attribute SpectralAngle inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType
+    
+    # Attribute RelativeAmplitude inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType
+    
+    # Attribute Label inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType
+    
+    # Attribute Nucleotide inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType
+    
+    # Attribute Wavelength inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType
+    
+    # Attribute CompoundID inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType
+    
+    # Attribute LotID inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AnalogType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}InputOutputDataType with content type ELEMENT_ONLY
+class InputOutputDataType (DataEntityType):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}InputOutputDataType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'InputOutputDataType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 212, 1)
+    _ElementMap = DataEntityType._ElementMap.copy()
+    _AttributeMap = DataEntityType._AttributeMap.copy()
+    # Base type is DataEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element EncodedValue ({http://pacificbiosciences.com/PacBioDataModel.xsd}EncodedValue) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element CheckSum ({http://pacificbiosciences.com/PacBioDataModel.xsd}CheckSum) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ValueDataType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute SimpleValue inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'InputOutputDataType', InputOutputDataType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType with content type ELEMENT_ONLY
+class PartNumberType (DataEntityType):
+    """Generic representation of a supply kit. 
+
+If the part number has an NFC associated with it, the contents of the NFC may be encoded here."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'PartNumberType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 258, 1)
+    _ElementMap = DataEntityType._ElementMap.copy()
+    _AttributeMap = DataEntityType._AttributeMap.copy()
+    # Base type is DataEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element EncodedValue ({http://pacificbiosciences.com/PacBioDataModel.xsd}EncodedValue) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element CheckSum ({http://pacificbiosciences.com/PacBioDataModel.xsd}CheckSum) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}IncompatiblePartNumbers uses Python identifier IncompatiblePartNumbers
+    __IncompatiblePartNumbers = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'IncompatiblePartNumbers'), 'IncompatiblePartNumbers', '__httppacificbiosciences_comPacBioDataModel_xsd_PartNumberType_httppacificbiosciences_comPacBioDataModel_xsdIncompatiblePartNumbers', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 267, 5), )
+
+    
+    IncompatiblePartNumbers = property(__IncompatiblePartNumbers.value, __IncompatiblePartNumbers.set, None, 'By default, a PN is compatible for use with other PNs in the system.  In order to exclude the usage of one or more PNs with this one, the incompatible PNs are listed here.')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}IncompatibleAutomations uses Python identifier IncompatibleAutomations
+    __IncompatibleAutomations = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'IncompatibleAutomations'), 'IncompatibleAutomations', '__httppacificbiosciences_comPacBioDataModel_xsd_PartNumberType_httppacificbiosciences_comPacBioDataModel_xsdIncompatibleAutomations', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 281, 5), )
+
+    
+    IncompatibleAutomations = property(__IncompatibleAutomations.value, __IncompatibleAutomations.set, None, 'By default, a PN is compatible for use with all automations in the system.  In order to exclude the usage of automations with this PN, the incompatible automation names are listed here.')
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ValueDataType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute SimpleValue inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute PartNumber uses Python identifier PartNumber
+    __PartNumber = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'PartNumber'), 'PartNumber', '__httppacificbiosciences_comPacBioDataModel_xsd_PartNumberType_PartNumber', pyxb.binding.datatypes.string)
+    __PartNumber._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 296, 4)
+    __PartNumber._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 296, 4)
+    
+    PartNumber = property(__PartNumber.value, __PartNumber.set, None, 'The kit part number')
+
+    
+    # Attribute LotNumber uses Python identifier LotNumber
+    __LotNumber = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'LotNumber'), 'LotNumber', '__httppacificbiosciences_comPacBioDataModel_xsd_PartNumberType_LotNumber', pyxb.binding.datatypes.string)
+    __LotNumber._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 301, 4)
+    __LotNumber._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 301, 4)
+    
+    LotNumber = property(__LotNumber.value, __LotNumber.set, None, 'The kit lot number')
+
+    
+    # Attribute Barcode uses Python identifier Barcode
+    __Barcode = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Barcode'), 'Barcode', '__httppacificbiosciences_comPacBioDataModel_xsd_PartNumberType_Barcode', pyxb.binding.datatypes.string)
+    __Barcode._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 306, 4)
+    __Barcode._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 306, 4)
+    
+    Barcode = property(__Barcode.value, __Barcode.set, None, 'The kit barcode; used for tracking purposes.')
+
+    
+    # Attribute ExpirationDate uses Python identifier ExpirationDate
+    __ExpirationDate = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'ExpirationDate'), 'ExpirationDate', '__httppacificbiosciences_comPacBioDataModel_xsd_PartNumberType_ExpirationDate', pyxb.binding.datatypes.date)
+    __ExpirationDate._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 311, 4)
+    __ExpirationDate._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 311, 4)
+    
+    ExpirationDate = property(__ExpirationDate.value, __ExpirationDate.set, None, "The kit's shelf life")
+
+    
+    # Attribute IsObsolete uses Python identifier IsObsolete
+    __IsObsolete = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'IsObsolete'), 'IsObsolete', '__httppacificbiosciences_comPacBioDataModel_xsd_PartNumberType_IsObsolete', pyxb.binding.datatypes.boolean, unicode_default='false')
+    __IsObsolete._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 316, 4)
+    __IsObsolete._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 316, 4)
+    
+    IsObsolete = property(__IsObsolete.value, __IsObsolete.set, None, None)
+
+    _ElementMap.update({
+        __IncompatiblePartNumbers.name() : __IncompatiblePartNumbers,
+        __IncompatibleAutomations.name() : __IncompatibleAutomations
+    })
+    _AttributeMap.update({
+        __PartNumber.name() : __PartNumber,
+        __LotNumber.name() : __LotNumber,
+        __Barcode.name() : __Barcode,
+        __ExpirationDate.name() : __ExpirationDate,
+        __IsObsolete.name() : __IsObsolete
+    })
+Namespace.addCategoryObject('typeBinding', 'PartNumberType', PartNumberType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}RecordedEventType with content type ELEMENT_ONLY
+class RecordedEventType (DataEntityType):
+    """Metrics, system events, alarms, and logs may utilize this type"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'RecordedEventType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 320, 1)
+    _ElementMap = DataEntityType._ElementMap.copy()
+    _AttributeMap = DataEntityType._AttributeMap.copy()
+    # Base type is DataEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element EncodedValue ({http://pacificbiosciences.com/PacBioDataModel.xsd}EncodedValue) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element CheckSum ({http://pacificbiosciences.com/PacBioDataModel.xsd}CheckSum) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ValueDataType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute SimpleValue inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute Context uses Python identifier Context
+    __Context = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Context'), 'Context', '__httppacificbiosciences_comPacBioDataModel_xsd_RecordedEventType_Context', pyxb.binding.datatypes.string)
+    __Context._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 326, 4)
+    __Context._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 326, 4)
+    
+    Context = property(__Context.value, __Context.set, None, 'The part of the system in effect when the event was recorded')
+
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        __Context.name() : __Context
+    })
+Namespace.addCategoryObject('typeBinding', 'RecordedEventType', RecordedEventType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}SequencingChemistry with content type ELEMENT_ONLY
+class SequencingChemistry (DataEntityType):
+    """A container for a set of analogs"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'SequencingChemistry')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 334, 1)
+    _ElementMap = DataEntityType._ElementMap.copy()
+    _AttributeMap = DataEntityType._AttributeMap.copy()
+    # Base type is DataEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element EncodedValue ({http://pacificbiosciences.com/PacBioDataModel.xsd}EncodedValue) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element CheckSum ({http://pacificbiosciences.com/PacBioDataModel.xsd}CheckSum) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}DyeSet uses Python identifier DyeSet
+    __DyeSet = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'DyeSet'), 'DyeSet', '__httppacificbiosciences_comPacBioDataModel_xsd_SequencingChemistry_httppacificbiosciences_comPacBioDataModel_xsdDyeSet', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 341, 5), )
+
+    
+    DyeSet = property(__DyeSet.value, __DyeSet.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ValueDataType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute SimpleValue inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    _ElementMap.update({
+        __DyeSet.name() : __DyeSet
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'SequencingChemistry', SequencingChemistry)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}ReadSetType with content type ELEMENT_ONLY
+class ReadSetType (DataSetType):
+    """Type for DataSets consisting of unaligned subreads and CCS reads DataSets"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'ReadSetType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 19, 1)
+    _ElementMap = DataSetType._ElementMap.copy()
+    _AttributeMap = DataSetType._AttributeMap.copy()
+    # Base type is DataSetType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element ExternalResources ({http://pacificbiosciences.com/PacBioDataModel.xsd}ExternalResources) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadata uses Python identifier DataSetMetadata
+    __DataSetMetadata = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata'), 'DataSetMetadata', '__httppacificbiosciences_comPacBioDataModel_xsd_ReadSetType_httppacificbiosciences_comPacBioDataModel_xsdDataSetMetadata', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 26, 5), )
+
+    
+    DataSetMetadata = property(__DataSetMetadata.value, __DataSetMetadata.set, None, None)
+
+    
+    # Element Filters ({http://pacificbiosciences.com/PacBioDataModel.xsd}Filters) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSets ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSets) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        __DataSetMetadata.name() : __DataSetMetadata
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'ReadSetType', ReadSetType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}BarcodedSampleType with content type ELEMENT_ONLY
+class BarcodedSampleType (BioSampleType):
+    """This is a data type to hold a barcoded biological sample, or a raw biological sample - so, barcode is optional."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'BarcodedSampleType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 340, 1)
+    _ElementMap = BioSampleType._ElementMap.copy()
+    _AttributeMap = BioSampleType._AttributeMap.copy()
+    # Base type is BioSampleType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Barcodes uses Python identifier Barcodes
+    __Barcodes = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Barcodes'), 'Barcodes', '__httppacificbiosciences_comPacBioDataModel_xsd_BarcodedSampleType_httppacificbiosciences_comPacBioDataModel_xsdBarcodes', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 347, 5), )
+
+    
+    Barcodes = property(__Barcodes.value, __Barcodes.set, None, 'A list of barcodes associated with the biological sample')
+
+    
+    # Element BioSamples ({http://pacificbiosciences.com/PacBioDataModel.xsd}BioSamples) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSampleType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute DateReceived inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSampleType
+    
+    # Attribute Organism inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSampleType
+    
+    # Attribute Reference inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSampleType
+    
+    # Attribute DNAType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSampleType
+    
+    # Attribute Concentration inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSampleType
+    
+    # Attribute QuantificationMethod inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSampleType
+    
+    # Attribute SMRTBellConcentration inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSampleType
+    
+    # Attribute SMRTBellQuantificationMethod inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSampleType
+    
+    # Attribute BufferName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSampleType
+    
+    # Attribute SamplePrepKit inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSampleType
+    
+    # Attribute TargetLibrarySize inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSampleType
+    _ElementMap.update({
+        __Barcodes.name() : __Barcodes
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'BarcodedSampleType', BarcodedSampleType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}AssayType with content type ELEMENT_ONLY
+class AssayType (DataEntityType):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}AssayType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'AssayType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 237, 1)
+    _ElementMap = DataEntityType._ElementMap.copy()
+    _AttributeMap = DataEntityType._AttributeMap.copy()
+    # Base type is DataEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element EncodedValue ({http://pacificbiosciences.com/PacBioDataModel.xsd}EncodedValue) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element CheckSum ({http://pacificbiosciences.com/PacBioDataModel.xsd}CheckSum) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SubreadSet uses Python identifier SubreadSet
+    __SubreadSet = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SubreadSet'), 'SubreadSet', '__httppacificbiosciences_comPacBioDataModel_xsd_AssayType_httppacificbiosciences_comPacBioDataModel_xsdSubreadSet', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 681, 1), )
+
+    
+    SubreadSet = property(__SubreadSet.value, __SubreadSet.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ValueDataType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute SimpleValue inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    _ElementMap.update({
+        __SubreadSet.name() : __SubreadSet
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'AssayType', AssayType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}ExperimentContainerType with content type ELEMENT_ONLY
+class ExperimentContainerType (DataEntityType):
+    """A composite object type that can encompass multiple runs, possibly across multiple instruments.  
+
+One use case may be that a user may have a large genome they'd like to sequence, and it may take multiple runs on multiple instruments, to get enough data.  Another use case may be that a user has multiple samples of the same phenotype which they would like to analyze in a similar fashion/automation, and as such these samples are run as part of one experiment.
+
+The experiment object is intended to be packagable, such that the metadata of all acquisitions within is contained."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'ExperimentContainerType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 246, 1)
+    _ElementMap = DataEntityType._ElementMap.copy()
+    _AttributeMap = DataEntityType._AttributeMap.copy()
+    # Base type is DataEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element EncodedValue ({http://pacificbiosciences.com/PacBioDataModel.xsd}EncodedValue) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element CheckSum ({http://pacificbiosciences.com/PacBioDataModel.xsd}CheckSum) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}InvestigatorName uses Python identifier InvestigatorName
+    __InvestigatorName = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'InvestigatorName'), 'InvestigatorName', '__httppacificbiosciences_comPacBioDataModel_xsd_ExperimentContainerType_httppacificbiosciences_comPacBioDataModel_xsdInvestigatorName', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 257, 5), )
+
+    
+    InvestigatorName = property(__InvestigatorName.value, __InvestigatorName.set, None, 'An optional PI name')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}CreatedDate uses Python identifier CreatedDate
+    __CreatedDate = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'CreatedDate'), 'CreatedDate', '__httppacificbiosciences_comPacBioDataModel_xsd_ExperimentContainerType_httppacificbiosciences_comPacBioDataModel_xsdCreatedDate', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 262, 5), )
+
+    
+    CreatedDate = property(__CreatedDate.value, __CreatedDate.set, None, 'Automatically generated creation date')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Runs uses Python identifier Runs
+    __Runs = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Runs'), 'Runs', '__httppacificbiosciences_comPacBioDataModel_xsd_ExperimentContainerType_httppacificbiosciences_comPacBioDataModel_xsdRuns', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 267, 5), )
+
+    
+    Runs = property(__Runs.value, __Runs.set, None, 'Multiple acquisitions from different instrument runs')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSets uses Python identifier DataSets
+    __DataSets = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'DataSets'), 'DataSets', '__httppacificbiosciences_comPacBioDataModel_xsd_ExperimentContainerType_httppacificbiosciences_comPacBioDataModel_xsdDataSets', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 277, 5), )
+
+    
+    DataSets = property(__DataSets.value, __DataSets.set, None, 'Pointers to various data elements associated with the acquisitions')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}RecordedEvents uses Python identifier RecordedEvents
+    __RecordedEvents = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'RecordedEvents'), 'RecordedEvents', '__httppacificbiosciences_comPacBioDataModel_xsd_ExperimentContainerType_httppacificbiosciences_comPacBioDataModel_xsdRecordedEvents', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 287, 5), )
+
+    
+    RecordedEvents = property(__RecordedEvents.value, __RecordedEvents.set, None, "Journal of metrics, system events, or alarms that were generated during this container's lifetime")
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}BioSamples uses Python identifier BioSamples
+    __BioSamples = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'BioSamples'), 'BioSamples', '__httppacificbiosciences_comPacBioDataModel_xsd_ExperimentContainerType_httppacificbiosciences_comPacBioDataModel_xsdBioSamples', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 301, 5), )
+
+    
+    BioSamples = property(__BioSamples.value, __BioSamples.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ValueDataType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute SimpleValue inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    _ElementMap.update({
+        __InvestigatorName.name() : __InvestigatorName,
+        __CreatedDate.name() : __CreatedDate,
+        __Runs.name() : __Runs,
+        __DataSets.name() : __DataSets,
+        __RecordedEvents.name() : __RecordedEvents,
+        __BioSamples.name() : __BioSamples
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'ExperimentContainerType', ExperimentContainerType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}RunType with content type ELEMENT_ONLY
+class RunType (DataEntityType):
+    """A run is defined as a set of one or more data collections acquired in sequence on an instrument.  A run specifies the wells and SMRT Cells to include in the sequencing run, along with the collection and analysis automation to use for the selected wells and cells.
+
+"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'RunType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 312, 1)
+    _ElementMap = DataEntityType._ElementMap.copy()
+    _AttributeMap = DataEntityType._AttributeMap.copy()
+    # Base type is DataEntityType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element EncodedValue ({http://pacificbiosciences.com/PacBioDataModel.xsd}EncodedValue) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element CheckSum ({http://pacificbiosciences.com/PacBioDataModel.xsd}CheckSum) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SubreadSet uses Python identifier SubreadSet
+    __SubreadSet = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SubreadSet'), 'SubreadSet', '__httppacificbiosciences_comPacBioDataModel_xsd_RunType_httppacificbiosciences_comPacBioDataModel_xsdSubreadSet', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 681, 1), )
+
+    
+    SubreadSet = property(__SubreadSet.value, __SubreadSet.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Assay uses Python identifier Assay
+    __Assay = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Assay'), 'Assay', '__httppacificbiosciences_comPacBioDataModel_xsd_RunType_httppacificbiosciences_comPacBioDataModel_xsdAssay', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 11, 1), )
+
+    
+    Assay = property(__Assay.value, __Assay.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}RunResources uses Python identifier RunResources
+    __RunResources = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'RunResources'), 'RunResources', '__httppacificbiosciences_comPacBioDataModel_xsd_RunType_httppacificbiosciences_comPacBioDataModel_xsdRunResources', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 129, 1), )
+
+    
+    RunResources = property(__RunResources.value, __RunResources.set, None, 'This is an output field specifying the requirements for the run, e.g. number of tips, estimated run time, etc.')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Inputs uses Python identifier Inputs
+    __Inputs = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Inputs'), 'Inputs', '__httppacificbiosciences_comPacBioDataModel_xsd_RunType_httppacificbiosciences_comPacBioDataModel_xsdInputs', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 321, 5), )
+
+    
+    Inputs = property(__Inputs.value, __Inputs.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Outputs uses Python identifier Outputs
+    __Outputs = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Outputs'), 'Outputs', '__httppacificbiosciences_comPacBioDataModel_xsd_RunType_httppacificbiosciences_comPacBioDataModel_xsdOutputs', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 328, 5), )
+
+    
+    Outputs = property(__Outputs.value, __Outputs.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}RecordedEvents uses Python identifier RecordedEvents
+    __RecordedEvents = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'RecordedEvents'), 'RecordedEvents', '__httppacificbiosciences_comPacBioDataModel_xsd_RunType_httppacificbiosciences_comPacBioDataModel_xsdRecordedEvents', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 341, 5), )
+
+    
+    RecordedEvents = property(__RecordedEvents.value, __RecordedEvents.set, None, "Journal of metrics, system events, or alarms that were generated during this run's lifetime")
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ValueDataType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute SimpleValue inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute Status uses Python identifier Status
+    __Status = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Status'), 'Status', '__httppacificbiosciences_comPacBioDataModel_xsd_RunType_Status', SupportedRunStates)
+    __Status._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 358, 4)
+    __Status._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 358, 4)
+    
+    Status = property(__Status.value, __Status.set, None, None)
+
+    
+    # Attribute InstrumentId uses Python identifier InstrumentId
+    __InstrumentId = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'InstrumentId'), 'InstrumentId', '__httppacificbiosciences_comPacBioDataModel_xsd_RunType_InstrumentId', pyxb.binding.datatypes.string)
+    __InstrumentId._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 359, 4)
+    __InstrumentId._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 359, 4)
+    
+    InstrumentId = property(__InstrumentId.value, __InstrumentId.set, None, 'World unique id assigned by PacBio. ')
+
+    
+    # Attribute InstrumentName uses Python identifier InstrumentName
+    __InstrumentName = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'InstrumentName'), 'InstrumentName', '__httppacificbiosciences_comPacBioDataModel_xsd_RunType_InstrumentName', pyxb.binding.datatypes.string)
+    __InstrumentName._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 364, 4)
+    __InstrumentName._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 364, 4)
+    
+    InstrumentName = property(__InstrumentName.value, __InstrumentName.set, None, 'Friendly name assigned by customer')
+
+    
+    # Attribute CreatedBy uses Python identifier CreatedBy
+    __CreatedBy = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'CreatedBy'), 'CreatedBy', '__httppacificbiosciences_comPacBioDataModel_xsd_RunType_CreatedBy', pyxb.binding.datatypes.string)
+    __CreatedBy._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 369, 4)
+    __CreatedBy._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 369, 4)
+    
+    CreatedBy = property(__CreatedBy.value, __CreatedBy.set, None, 'Who created the run. ')
+
+    
+    # Attribute StartedBy uses Python identifier StartedBy
+    __StartedBy = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'StartedBy'), 'StartedBy', '__httppacificbiosciences_comPacBioDataModel_xsd_RunType_StartedBy', pyxb.binding.datatypes.string)
+    __StartedBy._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 374, 4)
+    __StartedBy._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 374, 4)
+    
+    StartedBy = property(__StartedBy.value, __StartedBy.set, None, 'Who started the run. Could be different from who created it. ')
+
+    
+    # Attribute WhenStarted uses Python identifier WhenStarted
+    __WhenStarted = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'WhenStarted'), 'WhenStarted', '__httppacificbiosciences_comPacBioDataModel_xsd_RunType_WhenStarted', pyxb.binding.datatypes.dateTime)
+    __WhenStarted._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 379, 4)
+    __WhenStarted._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 379, 4)
+    
+    WhenStarted = property(__WhenStarted.value, __WhenStarted.set, None, 'Date and time of when the overall run was started. ')
+
+    _ElementMap.update({
+        __SubreadSet.name() : __SubreadSet,
+        __Assay.name() : __Assay,
+        __RunResources.name() : __RunResources,
+        __Inputs.name() : __Inputs,
+        __Outputs.name() : __Outputs,
+        __RecordedEvents.name() : __RecordedEvents
+    })
+    _AttributeMap.update({
+        __Status.name() : __Status,
+        __InstrumentId.name() : __InstrumentId,
+        __InstrumentName.name() : __InstrumentName,
+        __CreatedBy.name() : __CreatedBy,
+        __StartedBy.name() : __StartedBy,
+        __WhenStarted.name() : __WhenStarted
+    })
+Namespace.addCategoryObject('typeBinding', 'RunType', RunType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}BarcodeSetType with content type ELEMENT_ONLY
+class BarcodeSetType (DataSetType):
+    """Type for the Barcode DataSet."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'BarcodeSetType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 28, 1)
+    _ElementMap = DataSetType._ElementMap.copy()
+    _AttributeMap = DataSetType._AttributeMap.copy()
+    # Base type is DataSetType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element ExternalResources ({http://pacificbiosciences.com/PacBioDataModel.xsd}ExternalResources) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element Filters ({http://pacificbiosciences.com/PacBioDataModel.xsd}Filters) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSets ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSets) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadata uses Python identifier DataSetMetadata
+    __DataSetMetadata = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata'), 'DataSetMetadata', '__httppacificbiosciences_comPacBioDataModel_xsd_BarcodeSetType_httppacificbiosciences_comPacBioDataModel_xsdDataSetMetadata', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 35, 5), )
+
+    
+    DataSetMetadata = property(__DataSetMetadata.value, __DataSetMetadata.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        __DataSetMetadata.name() : __DataSetMetadata
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'BarcodeSetType', BarcodeSetType)
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_76 (DataSetType):
+    """DataSets of CCS reads (typically in unaligned BAM format)."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 54, 2)
+    _ElementMap = DataSetType._ElementMap.copy()
+    _AttributeMap = DataSetType._AttributeMap.copy()
+    # Base type is DataSetType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element ExternalResources ({http://pacificbiosciences.com/PacBioDataModel.xsd}ExternalResources) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element Filters ({http://pacificbiosciences.com/PacBioDataModel.xsd}Filters) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSets ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSets) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}AlignmentSetType with content type ELEMENT_ONLY
+class AlignmentSetType (DataSetType):
+    """Type for DataSets consisting of aligned subreads and CCS reads."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'AlignmentSetType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 60, 1)
+    _ElementMap = DataSetType._ElementMap.copy()
+    _AttributeMap = DataSetType._AttributeMap.copy()
+    # Base type is DataSetType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element ExternalResources ({http://pacificbiosciences.com/PacBioDataModel.xsd}ExternalResources) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element Filters ({http://pacificbiosciences.com/PacBioDataModel.xsd}Filters) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSets ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSets) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadata uses Python identifier DataSetMetadata
+    __DataSetMetadata = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata'), 'DataSetMetadata', '__httppacificbiosciences_comPacBioDataModel_xsd_AlignmentSetType_httppacificbiosciences_comPacBioDataModel_xsdDataSetMetadata', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 67, 5), )
+
+    
+    DataSetMetadata = property(__DataSetMetadata.value, __DataSetMetadata.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        __DataSetMetadata.name() : __DataSetMetadata
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'AlignmentSetType', AlignmentSetType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}ContigSetType with content type ELEMENT_ONLY
+class ContigSetType (DataSetType):
+    """Type for a Contig DataSet."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'ContigSetType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 92, 1)
+    _ElementMap = DataSetType._ElementMap.copy()
+    _AttributeMap = DataSetType._AttributeMap.copy()
+    # Base type is DataSetType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element ExternalResources ({http://pacificbiosciences.com/PacBioDataModel.xsd}ExternalResources) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element Filters ({http://pacificbiosciences.com/PacBioDataModel.xsd}Filters) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSets ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSets) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadata uses Python identifier DataSetMetadata
+    __DataSetMetadata = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata'), 'DataSetMetadata', '__httppacificbiosciences_comPacBioDataModel_xsd_ContigSetType_httppacificbiosciences_comPacBioDataModel_xsdDataSetMetadata', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 99, 5), )
+
+    
+    DataSetMetadata = property(__DataSetMetadata.value, __DataSetMetadata.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        __DataSetMetadata.name() : __DataSetMetadata
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'ContigSetType', ContigSetType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}IndexedDataType with content type ELEMENT_ONLY
+class IndexedDataType (InputOutputDataType):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}IndexedDataType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'IndexedDataType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 217, 1)
+    _ElementMap = InputOutputDataType._ElementMap.copy()
+    _AttributeMap = InputOutputDataType._AttributeMap.copy()
+    # Base type is InputOutputDataType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element EncodedValue ({http://pacificbiosciences.com/PacBioDataModel.xsd}EncodedValue) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element CheckSum ({http://pacificbiosciences.com/PacBioDataModel.xsd}CheckSum) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ExternalResources uses Python identifier ExternalResources
+    __ExternalResources = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources'), 'ExternalResources', '__httppacificbiosciences_comPacBioDataModel_xsd_IndexedDataType_httppacificbiosciences_comPacBioDataModel_xsdExternalResources', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 202, 1), )
+
+    
+    ExternalResources = property(__ExternalResources.value, __ExternalResources.set, None, 'Pointers to data that do not reside inside the parent structure')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}FileIndices uses Python identifier FileIndices
+    __FileIndices = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'FileIndices'), 'FileIndices', '__httppacificbiosciences_comPacBioDataModel_xsd_IndexedDataType_httppacificbiosciences_comPacBioDataModel_xsdFileIndices', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 221, 5), )
+
+    
+    FileIndices = property(__FileIndices.value, __FileIndices.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ValueDataType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute SimpleValue inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    _ElementMap.update({
+        __ExternalResources.name() : __ExternalResources,
+        __FileIndices.name() : __FileIndices
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'IndexedDataType', IndexedDataType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}SupplyKitBinding with content type ELEMENT_ONLY
+class SupplyKitBinding (PartNumberType):
+    """A more specific binding kit representation (includes SupplyKit fields). """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'SupplyKitBinding')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 470, 1)
+    _ElementMap = PartNumberType._ElementMap.copy()
+    _AttributeMap = PartNumberType._AttributeMap.copy()
+    # Base type is PartNumberType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element EncodedValue ({http://pacificbiosciences.com/PacBioDataModel.xsd}EncodedValue) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element CheckSum ({http://pacificbiosciences.com/PacBioDataModel.xsd}CheckSum) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element IncompatiblePartNumbers ({http://pacificbiosciences.com/PacBioDataModel.xsd}IncompatiblePartNumbers) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Element IncompatibleAutomations ({http://pacificbiosciences.com/PacBioDataModel.xsd}IncompatibleAutomations) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}Control uses Python identifier Control
+    __Control = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'Control'), 'Control', '__httppacificbiosciences_comPacBioDataModel_xsd_SupplyKitBinding_httppacificbiosciences_comPacBioDataModel_xsdControl', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 477, 5), )
+
+    
+    Control = property(__Control.value, __Control.set, None, 'Defines the binding kit internal control name.  Present when used, otherwise not used if not defined. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}IsControlUsed uses Python identifier IsControlUsed
+    __IsControlUsed = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'IsControlUsed'), 'IsControlUsed', '__httppacificbiosciences_comPacBioDataModel_xsd_SupplyKitBinding_httppacificbiosciences_comPacBioDataModel_xsdIsControlUsed', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 482, 5), )
+
+    
+    IsControlUsed = property(__IsControlUsed.value, __IsControlUsed.set, None, 'True if the control was used during run, otherwise false. ')
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ValueDataType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute SimpleValue inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute PartNumber inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute LotNumber inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute Barcode inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute ExpirationDate inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute IsObsolete inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    _ElementMap.update({
+        __Control.name() : __Control,
+        __IsControlUsed.name() : __IsControlUsed
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'SupplyKitBinding', SupplyKitBinding)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}SupplyKitCellPack with content type ELEMENT_ONLY
+class SupplyKitCellPack (PartNumberType):
+    """Represents the package of cells. """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'SupplyKitCellPack')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 491, 1)
+    _ElementMap = PartNumberType._ElementMap.copy()
+    _AttributeMap = PartNumberType._AttributeMap.copy()
+    # Base type is PartNumberType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element EncodedValue ({http://pacificbiosciences.com/PacBioDataModel.xsd}EncodedValue) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element CheckSum ({http://pacificbiosciences.com/PacBioDataModel.xsd}CheckSum) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element IncompatiblePartNumbers ({http://pacificbiosciences.com/PacBioDataModel.xsd}IncompatiblePartNumbers) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Element IncompatibleAutomations ({http://pacificbiosciences.com/PacBioDataModel.xsd}IncompatibleAutomations) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ChipLayout uses Python identifier ChipLayout
+    __ChipLayout = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ChipLayout'), 'ChipLayout', '__httppacificbiosciences_comPacBioDataModel_xsd_SupplyKitCellPack_httppacificbiosciences_comPacBioDataModel_xsdChipLayout', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 498, 5), )
+
+    
+    ChipLayout = property(__ChipLayout.value, __ChipLayout.set, None, 'Defines the internal chip layout name, if any. ')
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ValueDataType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute SimpleValue inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute PartNumber inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute LotNumber inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute Barcode inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute ExpirationDate inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute IsObsolete inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    _ElementMap.update({
+        __ChipLayout.name() : __ChipLayout
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'SupplyKitCellPack', SupplyKitCellPack)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}SupplyKitControl with content type ELEMENT_ONLY
+class SupplyKitControl (PartNumberType):
+    """Represents the DNA control complex. """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'SupplyKitControl')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 507, 1)
+    _ElementMap = PartNumberType._ElementMap.copy()
+    _AttributeMap = PartNumberType._AttributeMap.copy()
+    # Base type is PartNumberType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element EncodedValue ({http://pacificbiosciences.com/PacBioDataModel.xsd}EncodedValue) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element CheckSum ({http://pacificbiosciences.com/PacBioDataModel.xsd}CheckSum) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element IncompatiblePartNumbers ({http://pacificbiosciences.com/PacBioDataModel.xsd}IncompatiblePartNumbers) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Element IncompatibleAutomations ({http://pacificbiosciences.com/PacBioDataModel.xsd}IncompatibleAutomations) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}InternalControlName uses Python identifier InternalControlName
+    __InternalControlName = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'InternalControlName'), 'InternalControlName', '__httppacificbiosciences_comPacBioDataModel_xsd_SupplyKitControl_httppacificbiosciences_comPacBioDataModel_xsdInternalControlName', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 514, 5), )
+
+    
+    InternalControlName = property(__InternalControlName.value, __InternalControlName.set, None, 'Defines the internal control name, if any. ')
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ValueDataType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute SimpleValue inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute PartNumber inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute LotNumber inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute Barcode inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute ExpirationDate inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute IsObsolete inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    _ElementMap.update({
+        __InternalControlName.name() : __InternalControlName
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'SupplyKitControl', SupplyKitControl)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}SupplyKitTemplate with content type ELEMENT_ONLY
+class SupplyKitTemplate (PartNumberType):
+    """A more specific template kit representation (includes SupplyKit fields). """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'SupplyKitTemplate')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 523, 1)
+    _ElementMap = PartNumberType._ElementMap.copy()
+    _AttributeMap = PartNumberType._AttributeMap.copy()
+    # Base type is PartNumberType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element EncodedValue ({http://pacificbiosciences.com/PacBioDataModel.xsd}EncodedValue) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element CheckSum ({http://pacificbiosciences.com/PacBioDataModel.xsd}CheckSum) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element IncompatiblePartNumbers ({http://pacificbiosciences.com/PacBioDataModel.xsd}IncompatiblePartNumbers) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Element IncompatibleAutomations ({http://pacificbiosciences.com/PacBioDataModel.xsd}IncompatibleAutomations) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}LeftAdaptorSequence uses Python identifier LeftAdaptorSequence
+    __LeftAdaptorSequence = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'LeftAdaptorSequence'), 'LeftAdaptorSequence', '__httppacificbiosciences_comPacBioDataModel_xsd_SupplyKitTemplate_httppacificbiosciences_comPacBioDataModel_xsdLeftAdaptorSequence', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 530, 5), )
+
+    
+    LeftAdaptorSequence = property(__LeftAdaptorSequence.value, __LeftAdaptorSequence.set, None, 'Left adapter DNA sequence.')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}LeftPrimerSequence uses Python identifier LeftPrimerSequence
+    __LeftPrimerSequence = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'LeftPrimerSequence'), 'LeftPrimerSequence', '__httppacificbiosciences_comPacBioDataModel_xsd_SupplyKitTemplate_httppacificbiosciences_comPacBioDataModel_xsdLeftPrimerSequence', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 535, 5), )
+
+    
+    LeftPrimerSequence = property(__LeftPrimerSequence.value, __LeftPrimerSequence.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}RightAdaptorSequence uses Python identifier RightAdaptorSequence
+    __RightAdaptorSequence = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'RightAdaptorSequence'), 'RightAdaptorSequence', '__httppacificbiosciences_comPacBioDataModel_xsd_SupplyKitTemplate_httppacificbiosciences_comPacBioDataModel_xsdRightAdaptorSequence', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 536, 5), )
+
+    
+    RightAdaptorSequence = property(__RightAdaptorSequence.value, __RightAdaptorSequence.set, None, 'Right adapter DNA sequence.  If not specified, a symmetric adapter model is inferred, where the left adapter sequence is used wherever needed.')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}RightPrimerSequence uses Python identifier RightPrimerSequence
+    __RightPrimerSequence = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'RightPrimerSequence'), 'RightPrimerSequence', '__httppacificbiosciences_comPacBioDataModel_xsd_SupplyKitTemplate_httppacificbiosciences_comPacBioDataModel_xsdRightPrimerSequence', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 541, 5), )
+
+    
+    RightPrimerSequence = property(__RightPrimerSequence.value, __RightPrimerSequence.set, None, 'Right primaer sequence.  If not specified, a symmetric model is inferred, where the left primer sequence is used wherever needed.')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}InsertSize uses Python identifier InsertSize
+    __InsertSize = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'InsertSize'), 'InsertSize', '__httppacificbiosciences_comPacBioDataModel_xsd_SupplyKitTemplate_httppacificbiosciences_comPacBioDataModel_xsdInsertSize', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 546, 5), )
+
+    
+    InsertSize = property(__InsertSize.value, __InsertSize.set, None, 'Approximate size of insert. ')
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ValueDataType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute SimpleValue inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute PartNumber inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute LotNumber inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute Barcode inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute ExpirationDate inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute IsObsolete inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    _ElementMap.update({
+        __LeftAdaptorSequence.name() : __LeftAdaptorSequence,
+        __LeftPrimerSequence.name() : __LeftPrimerSequence,
+        __RightAdaptorSequence.name() : __RightAdaptorSequence,
+        __RightPrimerSequence.name() : __RightPrimerSequence,
+        __InsertSize.name() : __InsertSize
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'SupplyKitTemplate', SupplyKitTemplate)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}SubreadSetType with content type ELEMENT_ONLY
+class SubreadSetType (ReadSetType):
+    """Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}SubreadSetType with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'SubreadSetType')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 97, 1)
+    _ElementMap = ReadSetType._ElementMap.copy()
+    _AttributeMap = ReadSetType._AttributeMap.copy()
+    # Base type is ReadSetType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element ExternalResources ({http://pacificbiosciences.com/PacBioDataModel.xsd}ExternalResources) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSetMetadata ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadata) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}ReadSetType
+    
+    # Element Filters ({http://pacificbiosciences.com/PacBioDataModel.xsd}Filters) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSets ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSets) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        
+    })
+Namespace.addCategoryObject('typeBinding', 'SubreadSetType', SubreadSetType)
+
+
+# Complex type {http://pacificbiosciences.com/PacBioDataModel.xsd}SupplyKitSequencing with content type ELEMENT_ONLY
+class SupplyKitSequencing (PartNumberType):
+    """A more specific template kit representation (includes SupplyKit fields). """
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = pyxb.namespace.ExpandedName(Namespace, 'SupplyKitSequencing')
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 21, 1)
+    _ElementMap = PartNumberType._ElementMap.copy()
+    _AttributeMap = PartNumberType._AttributeMap.copy()
+    # Base type is PartNumberType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element EncodedValue ({http://pacificbiosciences.com/PacBioDataModel.xsd}EncodedValue) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element CheckSum ({http://pacificbiosciences.com/PacBioDataModel.xsd}CheckSum) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Element IncompatiblePartNumbers ({http://pacificbiosciences.com/PacBioDataModel.xsd}IncompatiblePartNumbers) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Element IncompatibleAutomations ({http://pacificbiosciences.com/PacBioDataModel.xsd}IncompatibleAutomations) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentAutomationName uses Python identifier ReagentAutomationName
+    __ReagentAutomationName = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ReagentAutomationName'), 'ReagentAutomationName', '__httppacificbiosciences_comPacBioDataModel_xsd_SupplyKitSequencing_httppacificbiosciences_comPacBioDataModel_xsdReagentAutomationName', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 28, 5), )
+
+    
+    ReagentAutomationName = property(__ReagentAutomationName.value, __ReagentAutomationName.set, None, 'The reagent-mixing protocol used. ')
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}ReagentTubes uses Python identifier ReagentTubes
+    __ReagentTubes = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'ReagentTubes'), 'ReagentTubes', '__httppacificbiosciences_comPacBioDataModel_xsd_SupplyKitSequencing_httppacificbiosciences_comPacBioDataModel_xsdReagentTubes', True, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 33, 5), )
+
+    
+    ReagentTubes = property(__ReagentTubes.value, __ReagentTubes.set, None, "Tubes associated with the reagent kit - can have up to two; don't forget to set the location, 0 or 1")
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SequencingChemistry uses Python identifier SequencingChemistry
+    __SequencingChemistry = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SequencingChemistry'), 'SequencingChemistry', '__httppacificbiosciences_comPacBioDataModel_xsd_SupplyKitSequencing_httppacificbiosciences_comPacBioDataModel_xsdSequencingChemistry', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 38, 5), )
+
+    
+    SequencingChemistry = property(__SequencingChemistry.value, __SequencingChemistry.set, None, None)
+
+    
+    # Element {http://pacificbiosciences.com/PacBioDataModel.xsd}SequencingKitDefinition uses Python identifier SequencingKitDefinition
+    __SequencingKitDefinition = pyxb.binding.content.ElementDeclaration(pyxb.namespace.ExpandedName(Namespace, 'SequencingKitDefinition'), 'SequencingKitDefinition', '__httppacificbiosciences_comPacBioDataModel_xsd_SupplyKitSequencing_httppacificbiosciences_comPacBioDataModel_xsdSequencingKitDefinition', False, pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 39, 5), )
+
+    
+    SequencingKitDefinition = property(__SequencingKitDefinition.value, __SequencingKitDefinition.set, None, None)
+
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ValueDataType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute SimpleValue inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataEntityType
+    
+    # Attribute PartNumber inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute LotNumber inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute Barcode inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute ExpirationDate inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute IsObsolete inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}PartNumberType
+    
+    # Attribute Location uses Python identifier Location
+    __Location = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'Location'), 'Location', '__httppacificbiosciences_comPacBioDataModel_xsd_SupplyKitSequencing_Location', pyxb.binding.datatypes.int, unicode_default='0')
+    __Location._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 41, 4)
+    __Location._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 41, 4)
+    
+    Location = property(__Location.value, __Location.set, None, 'The location of the supply kit - for a reagent plate, it could be 0 or 1, and for a tube it could be 0 or 1')
+
+    
+    # Attribute MaxCollections uses Python identifier MaxCollections
+    __MaxCollections = pyxb.binding.content.AttributeUse(pyxb.namespace.ExpandedName(None, 'MaxCollections'), 'MaxCollections', '__httppacificbiosciences_comPacBioDataModel_xsd_SupplyKitSequencing_MaxCollections', pyxb.binding.datatypes.int, unicode_default='8')
+    __MaxCollections._DeclarationLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 46, 4)
+    __MaxCollections._UseLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 46, 4)
+    
+    MaxCollections = property(__MaxCollections.value, __MaxCollections.set, None, 'The number of collections this supply kit is capable of')
+
+    _ElementMap.update({
+        __ReagentAutomationName.name() : __ReagentAutomationName,
+        __ReagentTubes.name() : __ReagentTubes,
+        __SequencingChemistry.name() : __SequencingChemistry,
+        __SequencingKitDefinition.name() : __SequencingKitDefinition
+    })
+    _AttributeMap.update({
+        __Location.name() : __Location,
+        __MaxCollections.name() : __MaxCollections
+    })
+Namespace.addCategoryObject('typeBinding', 'SupplyKitSequencing', SupplyKitSequencing)
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_77 (AlignmentSetType):
+    """DataSets for aligned subreads and CCS reads."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 12, 2)
+    _ElementMap = AlignmentSetType._ElementMap.copy()
+    _AttributeMap = AlignmentSetType._AttributeMap.copy()
+    # Base type is AlignmentSetType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element ExternalResources ({http://pacificbiosciences.com/PacBioDataModel.xsd}ExternalResources) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element Filters ({http://pacificbiosciences.com/PacBioDataModel.xsd}Filters) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSets ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSets) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSetMetadata ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadata) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AlignmentSetType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_78 (BarcodeSetType):
+    """DataSets of Barcodes. Basically a thin metadata layer on top of the barcode FASTA."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 22, 2)
+    _ElementMap = BarcodeSetType._ElementMap.copy()
+    _AttributeMap = BarcodeSetType._AttributeMap.copy()
+    # Base type is BarcodeSetType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element ExternalResources ({http://pacificbiosciences.com/PacBioDataModel.xsd}ExternalResources) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element Filters ({http://pacificbiosciences.com/PacBioDataModel.xsd}Filters) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSets ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSets) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSetMetadata ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadata) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BarcodeSetType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_79 (AlignmentSetType):
+    """DataSets of aligned CCS reads."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 44, 2)
+    _ElementMap = AlignmentSetType._ElementMap.copy()
+    _AttributeMap = AlignmentSetType._AttributeMap.copy()
+    # Base type is AlignmentSetType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element ExternalResources ({http://pacificbiosciences.com/PacBioDataModel.xsd}ExternalResources) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element Filters ({http://pacificbiosciences.com/PacBioDataModel.xsd}Filters) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSets ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSets) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSetMetadata ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadata) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}AlignmentSetType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_80 (ContigSetType):
+    """DataSets of reference sequences. Replaces the reference.info.xml"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 76, 2)
+    _ElementMap = ContigSetType._ElementMap.copy()
+    _AttributeMap = ContigSetType._AttributeMap.copy()
+    # Base type is ContigSetType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element ExternalResources ({http://pacificbiosciences.com/PacBioDataModel.xsd}ExternalResources) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element Filters ({http://pacificbiosciences.com/PacBioDataModel.xsd}Filters) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSets ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSets) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSetMetadata ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadata) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}ContigSetType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_81 (ContigSetType):
+    """DataSets of contigs sequences. Basically a thin metadata layer on top of a contigs FASTA (e.g. from HGAP)."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 86, 2)
+    _ElementMap = ContigSetType._ElementMap.copy()
+    _AttributeMap = ContigSetType._AttributeMap.copy()
+    # Base type is ContigSetType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element ExternalResources ({http://pacificbiosciences.com/PacBioDataModel.xsd}ExternalResources) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element Filters ({http://pacificbiosciences.com/PacBioDataModel.xsd}Filters) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSets ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSets) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSetMetadata ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadata) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}ContigSetType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_82 (ReadSetType):
+    """DataSets of subreads in bax.h5 or bas.h5 format."""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 108, 2)
+    _ElementMap = ReadSetType._ElementMap.copy()
+    _AttributeMap = ReadSetType._AttributeMap.copy()
+    # Base type is ReadSetType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element ExternalResources ({http://pacificbiosciences.com/PacBioDataModel.xsd}ExternalResources) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSetMetadata ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadata) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}ReadSetType
+    
+    # Element Filters ({http://pacificbiosciences.com/PacBioDataModel.xsd}Filters) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSets ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSets) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+# Complex type [anonymous] with content type ELEMENT_ONLY
+class CTD_ANON_83 (SubreadSetType):
+    """Complex type [anonymous] with content type ELEMENT_ONLY"""
+    _TypeDefinition = None
+    _ContentTypeTag = pyxb.binding.basis.complexTypeDefinition._CT_ELEMENT_ONLY
+    _Abstract = False
+    _ExpandedName = None
+    _XSDLocation = pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 682, 2)
+    _ElementMap = SubreadSetType._ElementMap.copy()
+    _AttributeMap = SubreadSetType._AttributeMap.copy()
+    # Base type is SubreadSetType
+    
+    # Element Extensions ({http://pacificbiosciences.com/PacBioDataModel.xsd}Extensions) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Element ExternalResources ({http://pacificbiosciences.com/PacBioDataModel.xsd}ExternalResources) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSetMetadata ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetMetadata) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}ReadSetType
+    
+    # Element Filters ({http://pacificbiosciences.com/PacBioDataModel.xsd}Filters) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Element DataSets ({http://pacificbiosciences.com/PacBioDataModel.xsd}DataSets) inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}DataSetType
+    
+    # Attribute UniqueId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Name inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute TimeStampedName inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Description inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute MetaType inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Tags inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ResourceId inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Format inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute Version inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute CreatedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    
+    # Attribute ModifiedAt inherited from {http://pacificbiosciences.com/PacBioDataModel.xsd}BaseEntityType
+    _ElementMap.update({
+        
+    })
+    _AttributeMap.update({
+        
+    })
+
+
+
+ExtensionElement = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ExtensionElement'), pyxb.binding.datatypes.anyType, documentation='A generic element whose contents are undefined at the schema level.  This is used to extend the data model.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 640, 1))
+Namespace.addCategoryObject('elementBinding', ExtensionElement.name().localName(), ExtensionElement)
+
+PacBioAutomationConstraints = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'PacBioAutomationConstraints'), CTD_ANON, documentation='The root element of the Automation Constraints ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 9, 1))
+Namespace.addCategoryObject('elementBinding', PacBioAutomationConstraints.name().localName(), PacBioAutomationConstraints)
+
+AutomationConstraints = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'AutomationConstraints'), CTD_ANON_, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 19, 1))
+Namespace.addCategoryObject('elementBinding', AutomationConstraints.name().localName(), AutomationConstraints)
+
+DataPointers = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DataPointers'), CTD_ANON_5, documentation='Pointer to Run/Outputs/Output/@UniqueId', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 168, 1))
+Namespace.addCategoryObject('elementBinding', DataPointers.name().localName(), DataPointers)
+
+ExternalResources = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources'), CTD_ANON_6, documentation='Pointers to data that do not reside inside the parent structure', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 202, 1))
+Namespace.addCategoryObject('elementBinding', ExternalResources.name().localName(), ExternalResources)
+
+PacBioSequencingChemistry = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'PacBioSequencingChemistry'), CTD_ANON_12, documentation='Root element for document containing the container of analog set, SequencingChemistryConfig', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 362, 1))
+Namespace.addCategoryObject('elementBinding', PacBioSequencingChemistry.name().localName(), PacBioSequencingChemistry)
+
+ValueDataType = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ValueDataType'), SupportedDataTypes, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 638, 1))
+Namespace.addCategoryObject('elementBinding', ValueDataType.name().localName(), ValueDataType)
+
+PacBioCollectionMetadata = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'PacBioCollectionMetadata'), CTD_ANON_20, documentation='Root element of a standalone CollectionMetadata file.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 9, 1))
+Namespace.addCategoryObject('elementBinding', PacBioCollectionMetadata.name().localName(), PacBioCollectionMetadata)
+
+Collections = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Collections'), CTD_ANON_24, documentation='A set of acquisition definitions', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 125, 1))
+Namespace.addCategoryObject('elementBinding', Collections.name().localName(), Collections)
+
+RunDetails = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'RunDetails'), CTD_ANON_25, documentation='Information related to an instrument run.  A run can contain multiple chips, wells, and movies. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 248, 1))
+Namespace.addCategoryObject('elementBinding', RunDetails.name().localName(), RunDetails)
+
+Movie = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Movie'), CTD_ANON_26, documentation='A movie corresponds to one acquisition for a chip, one set (look) and one strobe. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 287, 1))
+Namespace.addCategoryObject('elementBinding', Movie.name().localName(), Movie)
+
+ExpirationData = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ExpirationData'), CTD_ANON_27, documentation='Container for the expired consumable data. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 311, 1))
+Namespace.addCategoryObject('elementBinding', ExpirationData.name().localName(), ExpirationData)
+
+Primary = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Primary'), CTD_ANON_29, documentation='Container for the primary analysis related data. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 503, 1))
+Namespace.addCategoryObject('elementBinding', Primary.name().localName(), Primary)
+
+Secondary = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Secondary'), CTD_ANON_32, documentation='Container for the primary analysis related data. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 568, 1))
+Namespace.addCategoryObject('elementBinding', Secondary.name().localName(), Secondary)
+
+UserDefinedFields = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'UserDefinedFields'), UserDefinedFieldsType, documentation='A set of key-value pairs specified by a user via the run input mechanism. Note that uniqueness of keys is not enforced here and so may contain duplicate keys. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 602, 1))
+Namespace.addCategoryObject('elementBinding', UserDefinedFields.name().localName(), UserDefinedFields)
+
+KeyValue = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'KeyValue'), CTD_ANON_34, documentation='One custom, possibly non-unique, key-value pair. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 607, 1))
+Namespace.addCategoryObject('elementBinding', KeyValue.name().localName(), KeyValue)
+
+BioSamplePointers = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BioSamplePointers'), CTD_ANON_35, documentation='Back references to other BarcodedSampleType object UniqueIds which utilize this sample', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 639, 1))
+Namespace.addCategoryObject('elementBinding', BioSamplePointers.name().localName(), BioSamplePointers)
+
+BarcodedSamplePointers = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BarcodedSamplePointers'), CTD_ANON_36, documentation='Back references to other BarcodedSampleType object UniqueIds which utilize this sample', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 659, 1))
+Namespace.addCategoryObject('elementBinding', BarcodedSamplePointers.name().localName(), BarcodedSamplePointers)
+
+BioSamples = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BioSamples'), CTD_ANON_37, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 673, 1))
+Namespace.addCategoryObject('elementBinding', BioSamples.name().localName(), BioSamples)
+
+ChipLayout = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ChipLayout'), CTD_ANON_38, documentation='Part of the RunResources; specifies a ChipLayout which is compatible with the collection protocols defined on the plate', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 12, 1))
+Namespace.addCategoryObject('elementBinding', ChipLayout.name().localName(), ChipLayout)
+
+CompatibleChipLayouts = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CompatibleChipLayouts'), CTD_ANON_39, documentation='A set of Chip Layouts deemed compatible with the current plate', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 24, 1))
+Namespace.addCategoryObject('elementBinding', CompatibleChipLayouts.name().localName(), CompatibleChipLayouts)
+
+CompatibleSequencingKits = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CompatibleSequencingKits'), CTD_ANON_40, documentation='A set of reagent kits deemed compatible with the current plate', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 36, 1))
+Namespace.addCategoryObject('elementBinding', CompatibleSequencingKits.name().localName(), CompatibleSequencingKits)
+
+EstimatedTotalRunTime = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'EstimatedTotalRunTime'), CTD_ANON_41, documentation='The total amount of time the run is estimated to require.  A confidence value (defaulted to 90%) indicates the degree of certainty associated with the estimate', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 48, 1))
+Namespace.addCategoryObject('elementBinding', EstimatedTotalRunTime.name().localName(), EstimatedTotalRunTime)
+
+PacBioDataModel = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'PacBioDataModel'), CTD_ANON_42, documentation='PacBio Data Model root element', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 91, 1))
+Namespace.addCategoryObject('elementBinding', PacBioDataModel.name().localName(), PacBioDataModel)
+
+RequiredSMRTCells = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'RequiredSMRTCells'), CTD_ANON_43, documentation='Part of the RunResources; specifies the required number of SMRT cells', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 106, 1))
+Namespace.addCategoryObject('elementBinding', RequiredSMRTCells.name().localName(), RequiredSMRTCells)
+
+RequiredTips = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'RequiredTips'), CTD_ANON_44, documentation='Part of the RunResources; specifies the required number of tips via two attributes, Left and Right', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 117, 1))
+Namespace.addCategoryObject('elementBinding', RequiredTips.name().localName(), RequiredTips)
+
+RunResources = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'RunResources'), CTD_ANON_45, documentation='This is an output field specifying the requirements for the run, e.g. number of tips, estimated run time, etc.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 129, 1))
+Namespace.addCategoryObject('elementBinding', RunResources.name().localName(), RunResources)
+
+SampleComment = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SampleComment'), CTD_ANON_46, documentation='A general sample description', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 141, 1))
+Namespace.addCategoryObject('elementBinding', SampleComment.name().localName(), SampleComment)
+
+CollectionReferences = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CollectionReferences'), CTD_ANON_54, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 387, 1))
+Namespace.addCategoryObject('elementBinding', CollectionReferences.name().localName(), CollectionReferences)
+
+PacBioPartNumbers = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'PacBioPartNumbers'), CTD_ANON_55, documentation='The root element of the Part Numbers ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 8, 1))
+Namespace.addCategoryObject('elementBinding', PacBioPartNumbers.name().localName(), PacBioPartNumbers)
+
+PacBioReagentKit = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'PacBioReagentKit'), CTD_ANON_61, documentation='The root element of the reagent kit standalone file', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 7, 1))
+Namespace.addCategoryObject('elementBinding', PacBioReagentKit.name().localName(), PacBioReagentKit)
+
+Parameter = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Parameter'), CTD_ANON_67, documentation='A variable, as a name/value pair, associated with a protocol (one of Collection, Primary, and Secondary)', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 63, 1))
+Namespace.addCategoryObject('elementBinding', Parameter.name().localName(), Parameter)
+
+Validation = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Validation'), CTD_ANON_68, documentation='\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1))
+Namespace.addCategoryObject('elementBinding', Validation.name().localName(), Validation)
+
+AutomationConstraint = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'AutomationConstraint'), AutomationConstraintType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 26, 1))
+Namespace.addCategoryObject('elementBinding', AutomationConstraint.name().localName(), AutomationConstraint)
+
+DataEntity = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DataEntity'), DataEntityType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 136, 1))
+Namespace.addCategoryObject('elementBinding', DataEntity.name().localName(), DataEntity)
+
+AutomationParameter = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'AutomationParameter'), DataEntityType, documentation='One or more collection parameters, such as MovieLength, InsertSize, UseStageStart, IsControl, etc..', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 253, 1))
+Namespace.addCategoryObject('elementBinding', AutomationParameter.name().localName(), AutomationParameter)
+
+DataSet = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DataSet'), DataSetType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 135, 1))
+Namespace.addCategoryObject('elementBinding', DataSet.name().localName(), DataSet)
+
+CollectionMetadata = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CollectionMetadata'), CTD_ANON_70, documentation='Root-level element for the metadata.  The purpose of which is to contain pertinent instrument information related to the conditions present during a movie acquisition.  It also serves to provide key pieces of information for integration with primary and secondary analysis.  This file is associated with 1 movie. ', location=pyxb.utils.utility.Location(' [...]
+Namespace.addCategoryObject('elementBinding', CollectionMetadata.name().localName(), CollectionMetadata)
+
+WellSample = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'WellSample'), CTD_ANON_71, documentation='Container for the sample related data. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 432, 1))
+Namespace.addCategoryObject('elementBinding', WellSample.name().localName(), WellSample)
+
+BioSample = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BioSample'), BioSampleType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 680, 1))
+Namespace.addCategoryObject('elementBinding', BioSample.name().localName(), BioSample)
+
+Reagent = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Reagent'), ReagentType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 17, 1))
+Namespace.addCategoryObject('elementBinding', Reagent.name().localName(), Reagent)
+
+ReagentKit = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReagentKit'), ReagentKitType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 18, 1))
+Namespace.addCategoryObject('elementBinding', ReagentKit.name().localName(), ReagentKit)
+
+ReagentTube = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReagentTube'), ReagentTubeType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 19, 1))
+Namespace.addCategoryObject('elementBinding', ReagentTube.name().localName(), ReagentTube)
+
+ReagentPlateRow = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReagentPlateRow'), ReagentPlateRowType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 20, 1))
+Namespace.addCategoryObject('elementBinding', ReagentPlateRow.name().localName(), ReagentPlateRow)
+
+Contigs = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Contigs'), CTD_ANON_72, documentation='List of contigs in a ContigSet', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 114, 1))
+Namespace.addCategoryObject('elementBinding', Contigs.name().localName(), Contigs)
+
+ConfigSetAnalog = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ConfigSetAnalog'), CTD_ANON_74, documentation='An unlimited number of analogs listed for the purposes of hosting in a configuration file. e.g. a list of all possible analogs on the system', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 126, 1))
+Namespace.addCategoryObject('elementBinding', ConfigSetAnalog.name().localName(), ConfigSetAnalog)
+
+DyeSetAnalog = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DyeSetAnalog'), CTD_ANON_75, documentation='A set of four analogs, one for each of the nucleotides, grouped together for the purposes of a single experiment.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 192, 1))
+Namespace.addCategoryObject('elementBinding', DyeSetAnalog.name().localName(), DyeSetAnalog)
+
+Assay = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Assay'), AssayType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 11, 1))
+Namespace.addCategoryObject('elementBinding', Assay.name().localName(), Assay)
+
+Events = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Events'), RecordedEventType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 60, 1))
+Namespace.addCategoryObject('elementBinding', Events.name().localName(), Events)
+
+Input = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Input'), InputOutputDataType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 61, 1))
+Namespace.addCategoryObject('elementBinding', Input.name().localName(), Input)
+
+Output = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Output'), InputOutputDataType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 62, 1))
+Namespace.addCategoryObject('elementBinding', Output.name().localName(), Output)
+
+ConsensusReadSet = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ConsensusReadSet'), CTD_ANON_76, documentation='DataSets of CCS reads (typically in unaligned BAM format).', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 50, 1))
+Namespace.addCategoryObject('elementBinding', ConsensusReadSet.name().localName(), ConsensusReadSet)
+
+ExternalResource = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ExternalResource'), IndexedDataType, documentation='for example, an output file could be the BAM file, which could be associated with multiple indices into it.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 662, 1))
+Namespace.addCategoryObject('elementBinding', ExternalResource.name().localName(), ExternalResource)
+
+SequencingKit = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SequencingKit'), SupplyKitSequencing, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 67, 1))
+Namespace.addCategoryObject('elementBinding', SequencingKit.name().localName(), SequencingKit)
+
+BindingKit = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BindingKit'), SupplyKitBinding, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 68, 1))
+Namespace.addCategoryObject('elementBinding', BindingKit.name().localName(), BindingKit)
+
+TemplatePrepKit = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'TemplatePrepKit'), SupplyKitTemplate, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 69, 1))
+Namespace.addCategoryObject('elementBinding', TemplatePrepKit.name().localName(), TemplatePrepKit)
+
+ControlKit = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ControlKit'), SupplyKitControl, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 70, 1))
+Namespace.addCategoryObject('elementBinding', ControlKit.name().localName(), ControlKit)
+
+CellPackKit = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CellPackKit'), SupplyKitCellPack, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 71, 1))
+Namespace.addCategoryObject('elementBinding', CellPackKit.name().localName(), CellPackKit)
+
+AlignmentSet = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'AlignmentSet'), CTD_ANON_77, documentation='DataSets for aligned subreads and CCS reads.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 8, 1))
+Namespace.addCategoryObject('elementBinding', AlignmentSet.name().localName(), AlignmentSet)
+
+BarcodeSet = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BarcodeSet'), CTD_ANON_78, documentation='DataSets of Barcodes. Basically a thin metadata layer on top of the barcode FASTA.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 18, 1))
+Namespace.addCategoryObject('elementBinding', BarcodeSet.name().localName(), BarcodeSet)
+
+ConsensusAlignmentSet = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ConsensusAlignmentSet'), CTD_ANON_79, documentation='DataSets of aligned CCS reads.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 40, 1))
+Namespace.addCategoryObject('elementBinding', ConsensusAlignmentSet.name().localName(), ConsensusAlignmentSet)
+
+ReferenceSet = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReferenceSet'), CTD_ANON_80, documentation='DataSets of reference sequences. Replaces the reference.info.xml', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 72, 1))
+Namespace.addCategoryObject('elementBinding', ReferenceSet.name().localName(), ReferenceSet)
+
+ContigSet = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ContigSet'), CTD_ANON_81, documentation='DataSets of contigs sequences. Basically a thin metadata layer on top of a contigs FASTA (e.g. from HGAP).', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 82, 1))
+Namespace.addCategoryObject('elementBinding', ContigSet.name().localName(), ContigSet)
+
+HdfSubreadSet = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'HdfSubreadSet'), CTD_ANON_82, documentation='DataSets of subreads in bax.h5 or bas.h5 format.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 104, 1))
+Namespace.addCategoryObject('elementBinding', HdfSubreadSet.name().localName(), HdfSubreadSet)
+
+SubreadSet = pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SubreadSet'), CTD_ANON_83, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 681, 1))
+Namespace.addCategoryObject('elementBinding', SubreadSet.name().localName(), SubreadSet)
+
+
+
+CTD_ANON._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'AutomationConstraints'), CTD_ANON_, scope=CTD_ANON, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 19, 1)))
+
+def _BuildAutomaton ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton
+    del _BuildAutomaton
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'AutomationConstraints')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 15, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON._Automaton = _BuildAutomaton()
+
+
+
+
+CTD_ANON_._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'AutomationConstraint'), AutomationConstraintType, scope=CTD_ANON_, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 26, 1)))
+
+def _BuildAutomaton_ ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_
+    del _BuildAutomaton_
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'AutomationConstraint')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 22, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_._Automaton = _BuildAutomaton_()
+
+
+
+
+CTD_ANON_2._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Automation'), pyxb.binding.datatypes.IDREF, scope=CTD_ANON_2, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 40, 8)))
+
+def _BuildAutomaton_2 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_2
+    del _BuildAutomaton_2
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_2._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Automation')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 40, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_2._Automaton = _BuildAutomaton_2()
+
+
+
+
+CTD_ANON_3._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'InsertSize'), pyxb.binding.datatypes.int, scope=CTD_ANON_3, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 50, 8)))
+
+def _BuildAutomaton_3 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_3
+    del _BuildAutomaton_3
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_3._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'InsertSize')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 50, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_3._Automaton = _BuildAutomaton_3()
+
+
+
+
+CTD_ANON_4._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ExtensionElement'), pyxb.binding.datatypes.anyType, scope=CTD_ANON_4, documentation='A generic element whose contents are undefined at the schema level.  This is used to extend the data model.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 640, 1)))
+
+def _BuildAutomaton_4 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_4
+    del _BuildAutomaton_4
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=None, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 60, 6))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_4._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExtensionElement')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 60, 6))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_4._Automaton = _BuildAutomaton_4()
+
+
+
+
+CTD_ANON_5._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DataPointer'), pyxb.binding.datatypes.IDREF, scope=CTD_ANON_5, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 174, 4)))
+
+def _BuildAutomaton_5 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_5
+    del _BuildAutomaton_5
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=None, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 174, 4))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_5._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataPointer')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 174, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_5._Automaton = _BuildAutomaton_5()
+
+
+
+
+CTD_ANON_6._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ExternalResource'), IndexedDataType, scope=CTD_ANON_6, documentation='for example, an output file could be the BAM file, which could be associated with multiple indices into it.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 662, 1)))
+
+def _BuildAutomaton_6 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_6
+    del _BuildAutomaton_6
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_6._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExternalResource')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 208, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_6._Automaton = _BuildAutomaton_6()
+
+
+
+
+CTD_ANON_7._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'FileIndex'), InputOutputDataType, scope=CTD_ANON_7, documentation='e.g. index for output files, allowing one to find information in the output file', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 224, 8)))
+
+def _BuildAutomaton_7 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_7
+    del _BuildAutomaton_7
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_7._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'FileIndex')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 224, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_7._Automaton = _BuildAutomaton_7()
+
+
+
+
+CTD_ANON_8._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'AutomationParameter'), DataEntityType, scope=CTD_ANON_8, documentation='One or more collection parameters, such as MovieLength, InsertSize, UseStageStart, IsControl, etc..', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 253, 1)))
+
+def _BuildAutomaton_8 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_8
+    del _BuildAutomaton_8
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_8._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'AutomationParameter')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 244, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_8._Automaton = _BuildAutomaton_8()
+
+
+
+
+CTD_ANON_9._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'IncompatiblePartNumber'), pyxb.binding.datatypes.IDREF, scope=CTD_ANON_9, documentation='A reference to the incompatible part number UID', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 273, 8)))
+
+def _BuildAutomaton_9 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_9
+    del _BuildAutomaton_9
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_9._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'IncompatiblePartNumber')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 273, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_9._Automaton = _BuildAutomaton_9()
+
+
+
+
+CTD_ANON_10._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'IncompatibleAutomation'), pyxb.binding.datatypes.IDREF, scope=CTD_ANON_10, documentation='A reference to the incompatible automation type UID', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 287, 8)))
+
+def _BuildAutomaton_10 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_10
+    del _BuildAutomaton_10
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_10._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'IncompatibleAutomation')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 287, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_10._Automaton = _BuildAutomaton_10()
+
+
+
+
+CTD_ANON_11._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Analog'), AnalogType, scope=CTD_ANON_11, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 349, 13)))
+
+def _BuildAutomaton_11 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_11
+    del _BuildAutomaton_11
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=1, max=4, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 349, 13))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_11._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Analog')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 349, 13))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_11._Automaton = _BuildAutomaton_11()
+
+
+
+
+CTD_ANON_12._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ChemistryConfig'), SequencingChemistryConfig, scope=CTD_ANON_12, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 368, 4)))
+
+def _BuildAutomaton_12 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_12
+    del _BuildAutomaton_12
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_12._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ChemistryConfig')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 368, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_12._Automaton = _BuildAutomaton_12()
+
+
+
+
+CTD_ANON_13._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Analog'), AnalogType, scope=CTD_ANON_13, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 382, 8)))
+
+def _BuildAutomaton_13 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_13
+    del _BuildAutomaton_13
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=1, max=4, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 382, 8))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_13._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Analog')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 382, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_13._Automaton = _BuildAutomaton_13()
+
+
+
+
+CTD_ANON_14._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BinCount'), pyxb.binding.datatypes.int, scope=CTD_ANON_14, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 406, 8)))
+
+def _BuildAutomaton_14 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_14
+    del _BuildAutomaton_14
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_14._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BinCount')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 406, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_14._Automaton = _BuildAutomaton_14()
+
+
+
+
+CTD_ANON_15._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BinCount'), pyxb.binding.datatypes.int, scope=CTD_ANON_15, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 432, 8)))
+
+def _BuildAutomaton_15 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_15
+    del _BuildAutomaton_15
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_15._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BinCount')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 432, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_15._Automaton = _BuildAutomaton_15()
+
+
+
+
+CTD_ANON_16._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BinLabel'), pyxb.binding.datatypes.string, scope=CTD_ANON_16, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 440, 8)))
+
+def _BuildAutomaton_16 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_16
+    del _BuildAutomaton_16
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_16._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BinLabel')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 440, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_16._Automaton = _BuildAutomaton_16()
+
+
+
+
+CTD_ANON_17._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Val'), pyxb.binding.datatypes.float, scope=CTD_ANON_17, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 462, 8)))
+
+def _BuildAutomaton_17 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_17
+    del _BuildAutomaton_17
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=None, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 462, 8))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_17._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Val')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 462, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_17._Automaton = _BuildAutomaton_17()
+
+
+
+
+UserDefinedFieldsType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DataEntities'), DataEntityType, scope=UserDefinedFieldsType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 635, 3)))
+
+def _BuildAutomaton_18 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_18
+    del _BuildAutomaton_18
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(UserDefinedFieldsType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataEntities')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 635, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+UserDefinedFieldsType._Automaton = _BuildAutomaton_18()
+
+
+
+
+FilterType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Properties'), CTD_ANON_18, scope=FilterType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 647, 3)))
+
+def _BuildAutomaton_19 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_19
+    del _BuildAutomaton_19
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(FilterType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Properties')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 647, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+FilterType._Automaton = _BuildAutomaton_19()
+
+
+
+
+CTD_ANON_18._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Property'), CTD_ANON_19, scope=CTD_ANON_18, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 650, 6)))
+
+def _BuildAutomaton_20 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_20
+    del _BuildAutomaton_20
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_18._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Property')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 650, 6))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_18._Automaton = _BuildAutomaton_20()
+
+
+
+
+CTD_ANON_20._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CollectionMetadata'), CTD_ANON_70, scope=CTD_ANON_20, documentation='Root-level element for the metadata.  The purpose of which is to contain pertinent instrument information related to the conditions present during a movie acquisition.  It also serves to provide key pieces of information for integration with primary and secondary analysis.  This file is associated with 1 movie. ', location=pyxb.ut [...]
+
+def _BuildAutomaton_21 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_21
+    del _BuildAutomaton_21
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_20._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CollectionMetadata')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 15, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_20._Automaton = _BuildAutomaton_21()
+
+
+
+
+DataSetMetadataType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'TotalLength'), pyxb.binding.datatypes.int, scope=DataSetMetadataType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 36, 3)))
+
+DataSetMetadataType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'NumRecords'), pyxb.binding.datatypes.int, scope=DataSetMetadataType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 37, 3)))
+
+DataSetMetadataType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Provenance'), CTD_ANON_66, scope=DataSetMetadataType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 38, 3)))
+
+def _BuildAutomaton_22 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_22
+    del _BuildAutomaton_22
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 38, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(DataSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'TotalLength')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 36, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(DataSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'NumRecords')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 37, 3))
+    st_1 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(DataSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Provenance')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 38, 3))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_2._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+DataSetMetadataType._Automaton = _BuildAutomaton_22()
+
+
+
+
+CTD_ANON_21._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'AdapterDimerFraction'), pyxb.binding.datatypes.float, scope=CTD_ANON_21, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 68, 8)))
+
+CTD_ANON_21._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ShortInsertFraction'), pyxb.binding.datatypes.float, scope=CTD_ANON_21, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 69, 8)))
+
+CTD_ANON_21._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'NumSequencingZmws'), pyxb.binding.datatypes.int, scope=CTD_ANON_21, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 70, 8)))
+
+CTD_ANON_21._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ProdDist'), StatsDiscreteDistType, scope=CTD_ANON_21, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 71, 8)))
+
+CTD_ANON_21._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReadTypeDist'), StatsDiscreteDistType, scope=CTD_ANON_21, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 72, 8)))
+
+CTD_ANON_21._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReadLenDist'), StatsContinuousDistType, scope=CTD_ANON_21, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 73, 8)))
+
+CTD_ANON_21._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReadQualDist'), StatsContinuousDistType, scope=CTD_ANON_21, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 74, 8)))
+
+CTD_ANON_21._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ControlReadLenDist'), StatsContinuousDistType, scope=CTD_ANON_21, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 75, 8)))
+
+CTD_ANON_21._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ControlReadQualDist'), StatsContinuousDistType, scope=CTD_ANON_21, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 76, 8)))
+
+CTD_ANON_21._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'MedianInsertDist'), StatsContinuousDistType, scope=CTD_ANON_21, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 77, 8)))
+
+CTD_ANON_21._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'InsertReadLenDist'), StatsContinuousDistType, scope=CTD_ANON_21, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 78, 8)))
+
+CTD_ANON_21._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'InsertReadQualDist'), StatsContinuousDistType, scope=CTD_ANON_21, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 79, 8)))
+
+def _BuildAutomaton_23 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_23
+    del _BuildAutomaton_23
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_21._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'AdapterDimerFraction')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 68, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_21._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ShortInsertFraction')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 69, 8))
+    st_1 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_21._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'NumSequencingZmws')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 70, 8))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_21._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ProdDist')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 71, 8))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_21._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ReadTypeDist')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 72, 8))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_21._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ReadLenDist')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 73, 8))
+    st_5 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_5)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_21._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ReadQualDist')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 74, 8))
+    st_6 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_6)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_21._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ControlReadLenDist')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 75, 8))
+    st_7 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_7)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_21._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ControlReadQualDist')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 76, 8))
+    st_8 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_8)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_21._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'MedianInsertDist')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 77, 8))
+    st_9 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_9)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_21._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'InsertReadLenDist')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 78, 8))
+    st_10 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_10)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_21._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'InsertReadQualDist')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 79, 8))
+    st_11 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_11)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_5, [
+         ]))
+    st_4._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_6, [
+         ]))
+    st_5._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_7, [
+         ]))
+    st_6._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_8, [
+         ]))
+    st_7._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_9, [
+         ]))
+    st_8._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_10, [
+         ]))
+    st_9._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_11, [
+         ]))
+    st_10._set_transitionSet(transitions)
+    transitions = []
+    st_11._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_21._Automaton = _BuildAutomaton_23()
+
+
+
+
+CTD_ANON_22._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Filter'), FilterType, scope=CTD_ANON_22, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 110, 8)))
+
+def _BuildAutomaton_24 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_24
+    del _BuildAutomaton_24
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_22._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Filter')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 110, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_22._Automaton = _BuildAutomaton_24()
+
+
+
+
+CTD_ANON_23._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DataSet'), DataSetType, scope=CTD_ANON_23, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 135, 1)))
+
+def _BuildAutomaton_25 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_25
+    del _BuildAutomaton_25
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=None, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 117, 8))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_23._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSet')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 117, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_23._Automaton = _BuildAutomaton_25()
+
+
+
+
+CTD_ANON_24._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CollectionMetadata'), CTD_ANON_70, scope=CTD_ANON_24, documentation='Root-level element for the metadata.  The purpose of which is to contain pertinent instrument information related to the conditions present during a movie acquisition.  It also serves to provide key pieces of information for integration with primary and secondary analysis.  This file is associated with 1 movie. ', location=pyxb.ut [...]
+
+def _BuildAutomaton_26 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_26
+    del _BuildAutomaton_26
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_24._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CollectionMetadata')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 131, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_24._Automaton = _BuildAutomaton_26()
+
+
+
+
+CTD_ANON_25._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'RunId'), pyxb.binding.datatypes.string, scope=CTD_ANON_25, documentation='A unique identifier for this run.  Format is r[sid]_[iname]_[ts]. Where [id] is a system generated id and [iname] is the instrument name and [ts] is a timestamp YYMMDD Example:  r000123_00117_100713 ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 254, 4)))
+
+CTD_ANON_25._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Name'), pyxb.binding.datatypes.string, scope=CTD_ANON_25, documentation='Assigned name for a run, which consists of multiple wells. There is no constraint on the uniqueness of this data. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 259, 4)))
+
+CTD_ANON_25._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CreatedBy'), pyxb.binding.datatypes.string, scope=CTD_ANON_25, documentation='Who created the run. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 264, 4)))
+
+CTD_ANON_25._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'WhenCreated'), pyxb.binding.datatypes.dateTime, scope=CTD_ANON_25, documentation='Date and time of when the overall run was created in the system. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 269, 4)))
+
+CTD_ANON_25._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'StartedBy'), pyxb.binding.datatypes.string, scope=CTD_ANON_25, documentation='Who started the run. Could be different from who created it. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 274, 4)))
+
+CTD_ANON_25._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'WhenStarted'), pyxb.binding.datatypes.dateTime, scope=CTD_ANON_25, documentation='Date and time of when the overall run was started. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 279, 4)))
+
+def _BuildAutomaton_27 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_27
+    del _BuildAutomaton_27
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 259, 4))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 264, 4))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 269, 4))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 274, 4))
+    counters.add(cc_3)
+    cc_4 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 279, 4))
+    counters.add(cc_4)
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_25._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'RunId')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 254, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_25._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Name')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 259, 4))
+    st_1 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_25._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CreatedBy')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 264, 4))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_25._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'WhenCreated')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 269, 4))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_25._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'StartedBy')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 274, 4))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_4, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_25._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'WhenStarted')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 279, 4))
+    st_5 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_5)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+         ]))
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    transitions.append(fac.Transition(st_5, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    st_4._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_4, True) ]))
+    st_5._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_25._Automaton = _BuildAutomaton_27()
+
+
+
+
+CTD_ANON_26._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'WhenStarted'), pyxb.binding.datatypes.dateTime, scope=CTD_ANON_26, documentation='Date and time of when this movie acquisition started. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 293, 4)))
+
+CTD_ANON_26._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DurationInSec'), pyxb.binding.datatypes.int, scope=CTD_ANON_26, documentation='The actual length of the movie acquisition (in seconds), irrespective of the movie duration specified by an automation parameter. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 298, 4), unicode_default='0'))
+
+CTD_ANON_26._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Number'), pyxb.binding.datatypes.int, scope=CTD_ANON_26, documentation="The number of this movie within the set (i.e., look).  This is unique when combined with the 'SetNumber'. ", location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 303, 4), unicode_default='0'))
+
+def _BuildAutomaton_28 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_28
+    del _BuildAutomaton_28
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_26._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'WhenStarted')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 293, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_26._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DurationInSec')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 298, 4))
+    st_1 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_26._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Number')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 303, 4))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    st_2._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_26._Automaton = _BuildAutomaton_28()
+
+
+
+
+CTD_ANON_27._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'EightPacPastExpiration'), pyxb.binding.datatypes.int, scope=CTD_ANON_27, documentation='Number of days past expiration the eight pac was (if at all). ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 317, 4)))
+
+CTD_ANON_27._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReagentKitPastExpiration'), pyxb.binding.datatypes.int, scope=CTD_ANON_27, documentation='Number of days past expiration the reagent kit was (if at all). ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 322, 4)))
+
+CTD_ANON_27._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReagentTube0PastExpiration'), pyxb.binding.datatypes.int, scope=CTD_ANON_27, documentation='Number of days past expiration the reagent tube 0 was (if at all). ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 327, 4)))
+
+CTD_ANON_27._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReagentTube1PastExpiration'), pyxb.binding.datatypes.int, scope=CTD_ANON_27, documentation='Number of days past expiration the reagent tube 1 was (if at all). ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 332, 4)))
+
+def _BuildAutomaton_29 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_29
+    del _BuildAutomaton_29
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_27._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'EightPacPastExpiration')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 317, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_27._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ReagentKitPastExpiration')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 322, 4))
+    st_1 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_27._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ReagentTube0PastExpiration')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 327, 4))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_27._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ReagentTube1PastExpiration')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 332, 4))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    st_3._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_27._Automaton = _BuildAutomaton_29()
+
+
+
+
+CTD_ANON_28._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Barcode'), DNABarcode, scope=CTD_ANON_28, documentation='A sequence of barcodes associated with the biological sample', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 353, 8)))
+
+def _BuildAutomaton_30 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_30
+    del _BuildAutomaton_30
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=None, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 353, 8))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_28._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Barcode')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 353, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_28._Automaton = _BuildAutomaton_30()
+
+
+
+
+CTD_ANON_29._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SampleTrace'), CTD_ANON_30, scope=CTD_ANON_29, documentation='Tag to indicate that the trace file will be sampled. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 509, 4)))
+
+CTD_ANON_29._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'AutomationName'), pyxb.binding.datatypes.string, scope=CTD_ANON_29, documentation='Name of primary analysis protocol. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 528, 4)))
+
+CTD_ANON_29._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ConfigFileName'), pyxb.binding.datatypes.string, scope=CTD_ANON_29, documentation='Name of primary analysis config file. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 533, 4)))
+
+CTD_ANON_29._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SequencingCondition'), pyxb.binding.datatypes.string, scope=CTD_ANON_29, documentation='A sequencing condition tag to be used by primary analysis, e.g., to select basecaller calibration or training parameters. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 538, 4)))
+
+CTD_ANON_29._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ResultsFolder'), pyxb.binding.datatypes.string, scope=CTD_ANON_29, documentation="NOTE: not for customers. A sub-folder under the CollectionPath created by Primary Analysis. This is a field that will be updated by the primary analysis pipeline.  The default (as created by homer) should be set to 'Reports_Sms' for now.  Consumers of the data should be aware that they will find collection metadata (a [...]
+
+CTD_ANON_29._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CollectionPathUri'), pyxb.binding.datatypes.anyURI, scope=CTD_ANON_29, documentation='User-specified location of where the results should be copied after an analysis has been completed. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 548, 4)))
+
+CTD_ANON_29._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CopyFiles'), CTD_ANON_31, scope=CTD_ANON_29, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 553, 4)))
+
+def _BuildAutomaton_31 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_31
+    del _BuildAutomaton_31
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 509, 4))
+    counters.add(cc_0)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_29._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SampleTrace')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 509, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_29._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'AutomationName')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 528, 4))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_29._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ConfigFileName')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 533, 4))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_29._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SequencingCondition')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 538, 4))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_29._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ResultsFolder')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 543, 4))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_29._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CollectionPathUri')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 548, 4))
+    st_5 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_5)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_29._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CopyFiles')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 553, 4))
+    st_6 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_6)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_5, [
+         ]))
+    st_4._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_6, [
+         ]))
+    st_5._set_transitionSet(transitions)
+    transitions = []
+    st_6._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_29._Automaton = _BuildAutomaton_31()
+
+
+
+
+CTD_ANON_30._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'TraceSamplingFactor'), pyxb.binding.datatypes.float, scope=CTD_ANON_30, documentation='Percentage of traces to sample. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 515, 7)))
+
+CTD_ANON_30._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'FullPulseFile'), pyxb.binding.datatypes.boolean, scope=CTD_ANON_30, documentation='Whether full or sampled pulse file is transferred if requested. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 520, 7)))
+
+def _BuildAutomaton_32 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_32
+    del _BuildAutomaton_32
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_30._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'TraceSamplingFactor')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 515, 7))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_30._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'FullPulseFile')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 520, 7))
+    st_1 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    st_1._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_30._Automaton = _BuildAutomaton_32()
+
+
+
+
+CTD_ANON_31._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CollectionFileCopy'), PapOutputFile, scope=CTD_ANON_31, documentation='Defines the set of files to be copied to the CollectionPathUri. 1 or more. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 556, 7)))
+
+def _BuildAutomaton_33 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_33
+    del _BuildAutomaton_33
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_31._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CollectionFileCopy')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 556, 7))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_31._Automaton = _BuildAutomaton_33()
+
+
+
+
+CTD_ANON_32._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'AutomationName'), pyxb.binding.datatypes.string, scope=CTD_ANON_32, documentation='The secondary analysis protocol name specified in the sample sheet. Ignored by secondary. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 574, 4)))
+
+CTD_ANON_32._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'AutomationParameters'), CTD_ANON_33, scope=CTD_ANON_32, documentation='The parameters for secondary analysis specified in the sample sheet. Ignored by secondary. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 579, 4)))
+
+CTD_ANON_32._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CellCountInJob'), pyxb.binding.datatypes.int, scope=CTD_ANON_32, documentation="The number of cells in this secondary analysis job, identified by the secondary analysis parameter 'JobName'.  Supports automated secondary analysis. ", location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 593, 4)))
+
+def _BuildAutomaton_34 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_34
+    del _BuildAutomaton_34
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 579, 4))
+    counters.add(cc_0)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_32._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'AutomationName')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 574, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_32._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'AutomationParameters')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 579, 4))
+    st_1 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_32._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CellCountInJob')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 593, 4))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+         ]))
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    st_2._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_32._Automaton = _BuildAutomaton_34()
+
+
+
+
+CTD_ANON_33._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'AutomationParameter'), DataEntityType, scope=CTD_ANON_33, documentation='One or more secondary analysis parameters, such as JobName, Workflow, etc..', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 585, 7)))
+
+def _BuildAutomaton_35 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_35
+    del _BuildAutomaton_35
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=None, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 585, 7))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_33._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'AutomationParameter')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 585, 7))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_33._Automaton = _BuildAutomaton_35()
+
+
+
+
+CTD_ANON_35._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BioSamplePointer'), pyxb.binding.datatypes.IDREF, scope=CTD_ANON_35, documentation='Pointer to a single biological sample', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 650, 5)))
+
+CTD_ANON_35._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BarcodedSamplePointers'), CTD_ANON_36, scope=CTD_ANON_35, documentation='Back references to other BarcodedSampleType object UniqueIds which utilize this sample', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 659, 1)))
+
+def _BuildAutomaton_36 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_36
+    del _BuildAutomaton_36
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_35._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BarcodedSamplePointers')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 649, 5))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_35._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BioSamplePointer')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 650, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    transitions = []
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    st_1._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_35._Automaton = _BuildAutomaton_36()
+
+
+
+
+CTD_ANON_36._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BarcodedSamplePointer'), pyxb.binding.datatypes.IDREF, scope=CTD_ANON_36, documentation='Pointer to a group of barcoded samples', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 665, 4)))
+
+def _BuildAutomaton_37 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_37
+    del _BuildAutomaton_37
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_36._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BarcodedSamplePointer')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 665, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_36._Automaton = _BuildAutomaton_37()
+
+
+
+
+CTD_ANON_37._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BioSample'), BioSampleType, scope=CTD_ANON_37, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 680, 1)))
+
+def _BuildAutomaton_38 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_38
+    del _BuildAutomaton_38
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=None, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 676, 4))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_37._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BioSample')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 676, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_37._Automaton = _BuildAutomaton_38()
+
+
+
+
+CTD_ANON_38._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Validation'), CTD_ANON_68, scope=CTD_ANON_38, documentation='\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1)))
+
+def _BuildAutomaton_39 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_39
+    del _BuildAutomaton_39
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 18, 4))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_38._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Validation')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 18, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_38._Automaton = _BuildAutomaton_39()
+
+
+
+
+CTD_ANON_39._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ChipLayout'), CTD_ANON_38, scope=CTD_ANON_39, documentation='Part of the RunResources; specifies a ChipLayout which is compatible with the collection protocols defined on the plate', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 12, 1)))
+
+CTD_ANON_39._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'RequiredSMRTCells'), CTD_ANON_43, scope=CTD_ANON_39, documentation='Part of the RunResources; specifies the required number of SMRT cells', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 106, 1)))
+
+CTD_ANON_39._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Validation'), CTD_ANON_68, scope=CTD_ANON_39, documentation='\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1)))
+
+def _BuildAutomaton_40 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_40
+    del _BuildAutomaton_40
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 32, 4))
+    counters.add(cc_0)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_39._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ChipLayout')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 30, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_39._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'RequiredSMRTCells')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 31, 4))
+    st_1 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_39._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Validation')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 32, 4))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    transitions.append(fac.Transition(st_1, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_2._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_39._Automaton = _BuildAutomaton_40()
+
+
+
+
+CTD_ANON_40._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'EstimatedTotalRunTime'), CTD_ANON_41, scope=CTD_ANON_40, documentation='The total amount of time the run is estimated to require.  A confidence value (defaulted to 90%) indicates the degree of certainty associated with the estimate', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 48, 1)))
+
+CTD_ANON_40._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'RequiredTips'), CTD_ANON_44, scope=CTD_ANON_40, documentation='Part of the RunResources; specifies the required number of tips via two attributes, Left and Right', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 117, 1)))
+
+CTD_ANON_40._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SequencingKit'), SupplyKitSequencing, scope=CTD_ANON_40, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 67, 1)))
+
+def _BuildAutomaton_41 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_41
+    del _BuildAutomaton_41
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_40._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SequencingKit')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 42, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_40._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'RequiredTips')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 43, 4))
+    st_1 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_40._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'EstimatedTotalRunTime')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 44, 4))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    st_2._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_40._Automaton = _BuildAutomaton_41()
+
+
+
+
+CTD_ANON_41._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Validation'), CTD_ANON_68, scope=CTD_ANON_41, documentation='\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1)))
+
+def _BuildAutomaton_42 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_42
+    del _BuildAutomaton_42
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 54, 4))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_41._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Validation')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 54, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_41._Automaton = _BuildAutomaton_42()
+
+
+
+
+CTD_ANON_42._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ExperimentContainer'), ExperimentContainerType, scope=CTD_ANON_42, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 97, 4)))
+
+def _BuildAutomaton_43 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_43
+    del _BuildAutomaton_43
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 98, 4))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_42._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExperimentContainer')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 97, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.WildcardUse(pyxb.binding.content.Wildcard(process_contents=pyxb.binding.content.Wildcard.PC_strict, namespace_constraint=pyxb.binding.content.Wildcard.NC_any), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 98, 4))
+    st_1 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_1._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_42._Automaton = _BuildAutomaton_43()
+
+
+
+
+CTD_ANON_43._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Validation'), CTD_ANON_68, scope=CTD_ANON_43, documentation='\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1)))
+
+def _BuildAutomaton_44 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_44
+    del _BuildAutomaton_44
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 112, 4))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_43._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Validation')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 112, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_43._Automaton = _BuildAutomaton_44()
+
+
+
+
+CTD_ANON_44._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Validation'), CTD_ANON_68, scope=CTD_ANON_44, documentation='\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1)))
+
+def _BuildAutomaton_45 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_45
+    del _BuildAutomaton_45
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 123, 4))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_44._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Validation')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 123, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_44._Automaton = _BuildAutomaton_45()
+
+
+
+
+CTD_ANON_45._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CompatibleChipLayouts'), CTD_ANON_39, scope=CTD_ANON_45, documentation='A set of Chip Layouts deemed compatible with the current plate', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 24, 1)))
+
+CTD_ANON_45._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CompatibleSequencingKits'), CTD_ANON_40, scope=CTD_ANON_45, documentation='A set of reagent kits deemed compatible with the current plate', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 36, 1)))
+
+CTD_ANON_45._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Validation'), CTD_ANON_68, scope=CTD_ANON_45, documentation='\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1)))
+
+def _BuildAutomaton_46 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_46
+    del _BuildAutomaton_46
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 137, 4))
+    counters.add(cc_0)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_45._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CompatibleSequencingKits')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 135, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_45._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CompatibleChipLayouts')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 136, 4))
+    st_1 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_45._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Validation')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 137, 4))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    transitions.append(fac.Transition(st_1, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_2._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_45._Automaton = _BuildAutomaton_46()
+
+
+
+
+CTD_ANON_46._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Validation'), CTD_ANON_68, scope=CTD_ANON_46, documentation='\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1)))
+
+def _BuildAutomaton_47 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_47
+    del _BuildAutomaton_47
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 147, 4))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_46._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Validation')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 147, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_46._Automaton = _BuildAutomaton_47()
+
+
+
+
+CTD_ANON_47._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Run'), RunType, scope=CTD_ANON_47, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 273, 8)))
+
+def _BuildAutomaton_48 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_48
+    del _BuildAutomaton_48
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_47._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Run')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 273, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_47._Automaton = _BuildAutomaton_48()
+
+
+
+
+CTD_ANON_48._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DataSet'), DataSetType, scope=CTD_ANON_48, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 135, 1)))
+
+def _BuildAutomaton_49 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_49
+    del _BuildAutomaton_49
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=None, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 283, 8))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_48._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSet')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 283, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_48._Automaton = _BuildAutomaton_49()
+
+
+
+
+CTD_ANON_49._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'RecordedEvent'), RecordedEventType, scope=CTD_ANON_49, documentation="Journal of metrics, system events, or alarms that were generated during this container's lifetime", location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 293, 8)))
+
+def _BuildAutomaton_50 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_50
+    del _BuildAutomaton_50
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=None, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 293, 8))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_49._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'RecordedEvent')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 293, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_49._Automaton = _BuildAutomaton_50()
+
+
+
+
+CTD_ANON_50._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BioSample'), BioSampleType, scope=CTD_ANON_50, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 304, 8)))
+
+def _BuildAutomaton_51 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_51
+    del _BuildAutomaton_51
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=None, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 304, 8))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_50._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BioSample')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 304, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_50._Automaton = _BuildAutomaton_51()
+
+
+
+
+CTD_ANON_51._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Input'), InputOutputDataType, scope=CTD_ANON_51, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 61, 1)))
+
+def _BuildAutomaton_52 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_52
+    del _BuildAutomaton_52
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_51._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Input')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 324, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_51._Automaton = _BuildAutomaton_52()
+
+
+
+
+CTD_ANON_52._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Output'), InputOutputDataType, scope=CTD_ANON_52, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 62, 1)))
+
+def _BuildAutomaton_53 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_53
+    del _BuildAutomaton_53
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_52._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Output')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 331, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_52._Automaton = _BuildAutomaton_53()
+
+
+
+
+CTD_ANON_53._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'RecordedEvent'), RecordedEventType, scope=CTD_ANON_53, documentation="Journal of metrics, system events, or alarms that were generated during this run's lifetime.\nIn the case of Primary generating the DataSet containing the sts.xml, this RecordedEvent object should be a pointer to the DataSet object generated.", location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 347, 8)))
+
+def _BuildAutomaton_54 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_54
+    del _BuildAutomaton_54
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=None, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 347, 8))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_53._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'RecordedEvent')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 347, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_53._Automaton = _BuildAutomaton_54()
+
+
+
+
+CTD_ANON_54._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CollectionMetadataRef'), pyxb.binding.datatypes.IDREF, scope=CTD_ANON_54, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 390, 4)))
+
+def _BuildAutomaton_55 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_55
+    del _BuildAutomaton_55
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_54._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CollectionMetadataRef')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 390, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_54._Automaton = _BuildAutomaton_55()
+
+
+
+
+CTD_ANON_55._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SequencingKits'), CTD_ANON_56, scope=CTD_ANON_55, documentation='List the sequencing kit part numbers.  A list of incompatible part numbers and automations is available to specify in the PartNumber subtype.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 14, 4)))
+
+CTD_ANON_55._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BindingKits'), CTD_ANON_57, scope=CTD_ANON_55, documentation='List the binding kit part numbers.  A list of incompatible part numbers and automations is available to specify in the PartNumber subtype.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 24, 4)))
+
+CTD_ANON_55._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'TemplatePrepKits'), CTD_ANON_58, scope=CTD_ANON_55, documentation='List the sample prep kit part numbers.  A list of incompatible part numbers and automations is available to specify in the PartNumber subtype.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 34, 4)))
+
+CTD_ANON_55._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ControlKits'), CTD_ANON_59, scope=CTD_ANON_55, documentation='List the DNA control complex part numbers.  A list of incompatible part numbers and automations is available to specify in the PartNumber subtype.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 44, 4)))
+
+CTD_ANON_55._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CellPackKits'), CTD_ANON_60, scope=CTD_ANON_55, documentation='List the cell tray part numbers.  A list of incompatible part numbers and automations is available to specify in the PartNumber subtype.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 54, 4)))
+
+def _BuildAutomaton_56 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_56
+    del _BuildAutomaton_56
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 14, 4))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 24, 4))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 34, 4))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 44, 4))
+    counters.add(cc_3)
+    cc_4 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 54, 4))
+    counters.add(cc_4)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_55._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SequencingKits')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 14, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_55._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BindingKits')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 24, 4))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_55._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'TemplatePrepKits')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 34, 4))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_55._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ControlKits')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 44, 4))
+    st_3 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_4, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_55._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CellPackKits')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 54, 4))
+    st_4 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_4, True) ]))
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_55._Automaton = _BuildAutomaton_56()
+
+
+
+
+CTD_ANON_56._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SequencingKit'), SupplyKitSequencing, scope=CTD_ANON_56, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 67, 1)))
+
+def _BuildAutomaton_57 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_57
+    del _BuildAutomaton_57
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_56._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SequencingKit')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 20, 7))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_56._Automaton = _BuildAutomaton_57()
+
+
+
+
+CTD_ANON_57._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BindingKit'), SupplyKitBinding, scope=CTD_ANON_57, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 68, 1)))
+
+def _BuildAutomaton_58 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_58
+    del _BuildAutomaton_58
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_57._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BindingKit')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 30, 7))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_57._Automaton = _BuildAutomaton_58()
+
+
+
+
+CTD_ANON_58._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'TemplatePrepKit'), SupplyKitTemplate, scope=CTD_ANON_58, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 69, 1)))
+
+def _BuildAutomaton_59 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_59
+    del _BuildAutomaton_59
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_58._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'TemplatePrepKit')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 40, 7))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_58._Automaton = _BuildAutomaton_59()
+
+
+
+
+CTD_ANON_59._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ControlKit'), SupplyKitControl, scope=CTD_ANON_59, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 70, 1)))
+
+def _BuildAutomaton_60 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_60
+    del _BuildAutomaton_60
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_59._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ControlKit')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 50, 7))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_59._Automaton = _BuildAutomaton_60()
+
+
+
+
+CTD_ANON_60._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CellPackKit'), SupplyKitCellPack, scope=CTD_ANON_60, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 71, 1)))
+
+def _BuildAutomaton_61 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_61
+    del _BuildAutomaton_61
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_60._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CellPackKit')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioPartNumbers.xsd', 60, 7))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_60._Automaton = _BuildAutomaton_61()
+
+
+
+
+CTD_ANON_61._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReagentKit'), ReagentKitType, scope=CTD_ANON_61, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 18, 1)))
+
+def _BuildAutomaton_62 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_62
+    del _BuildAutomaton_62
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_61._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ReagentKit')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 13, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_61._Automaton = _BuildAutomaton_62()
+
+
+
+
+CTD_ANON_62._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Reagent'), ReagentType, scope=CTD_ANON_62, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 17, 1)))
+
+def _BuildAutomaton_63 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_63
+    del _BuildAutomaton_63
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_62._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Reagent')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 72, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_62._Automaton = _BuildAutomaton_63()
+
+
+
+
+CTD_ANON_63._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReagentTube'), ReagentTubeType, scope=CTD_ANON_63, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 19, 1)))
+
+def _BuildAutomaton_64 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_64
+    del _BuildAutomaton_64
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_63._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ReagentTube')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 79, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_63._Automaton = _BuildAutomaton_64()
+
+
+
+
+CTD_ANON_64._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReagentPlateRow'), ReagentPlateRowType, scope=CTD_ANON_64, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 20, 1)))
+
+def _BuildAutomaton_65 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_65
+    del _BuildAutomaton_65
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    states = []
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_64._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ReagentPlateRow')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 86, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_64._Automaton = _BuildAutomaton_65()
+
+
+
+
+CTD_ANON_65._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CompatibleAutomation'), pyxb.binding.datatypes.string, scope=CTD_ANON_65, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 93, 8)))
+
+def _BuildAutomaton_66 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_66
+    del _BuildAutomaton_66
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=None, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 93, 8))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_65._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CompatibleAutomation')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 93, 8))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_65._Automaton = _BuildAutomaton_66()
+
+
+
+
+BaseEntityType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Extensions'), CTD_ANON_4, scope=BaseEntityType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3)))
+
+def _BuildAutomaton_67 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_67
+    del _BuildAutomaton_67
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(BaseEntityType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+BaseEntityType._Automaton = _BuildAutomaton_67()
+
+
+
+
+CTD_ANON_66._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CommonServicesInstanceId'), pyxb.binding.datatypes.IDREF, scope=CTD_ANON_66, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 41, 6)))
+
+CTD_ANON_66._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CreatorUserId'), pyxb.binding.datatypes.IDREF, scope=CTD_ANON_66, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 42, 6)))
+
+CTD_ANON_66._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ParentJobId'), pyxb.binding.datatypes.IDREF, scope=CTD_ANON_66, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 43, 6)))
+
+CTD_ANON_66._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ParentTool'), BaseEntityType, scope=CTD_ANON_66, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 44, 6)))
+
+def _BuildAutomaton_68 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_68
+    del _BuildAutomaton_68
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 41, 6))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 42, 6))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 43, 6))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 44, 6))
+    counters.add(cc_3)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_66._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CommonServicesInstanceId')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 41, 6))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_66._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CreatorUserId')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 42, 6))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_66._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ParentJobId')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 43, 6))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_66._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ParentTool')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 44, 6))
+    st_3 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    st_3._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_66._Automaton = _BuildAutomaton_68()
+
+
+
+
+ReadSetMetadataType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SummaryStats'), CTD_ANON_21, scope=ReadSetMetadataType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 65, 5)))
+
+ReadSetMetadataType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Collections'), CTD_ANON_24, scope=ReadSetMetadataType, documentation='A set of acquisition definitions', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 125, 1)))
+
+ReadSetMetadataType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BioSamples'), CTD_ANON_37, scope=ReadSetMetadataType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 673, 1)))
+
+def _BuildAutomaton_69 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_69
+    del _BuildAutomaton_69
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 38, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 63, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 64, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 65, 5))
+    counters.add(cc_3)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ReadSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'TotalLength')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 36, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(ReadSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'NumRecords')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 37, 3))
+    st_1 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(ReadSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Provenance')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 38, 3))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(ReadSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Collections')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 63, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(ReadSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BioSamples')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 64, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(ReadSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SummaryStats')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 65, 5))
+    st_5 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_5)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    transitions.append(fac.Transition(st_5, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_4._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    st_5._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+ReadSetMetadataType._Automaton = _BuildAutomaton_69()
+
+
+
+
+SubreadSetMetadataType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'AverageSubreadLength'), pyxb.binding.datatypes.int, scope=SubreadSetMetadataType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 91, 5)))
+
+SubreadSetMetadataType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'AverageSubreadQuality'), pyxb.binding.datatypes.float, scope=SubreadSetMetadataType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 92, 5)))
+
+def _BuildAutomaton_70 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_70
+    del _BuildAutomaton_70
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 38, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(SubreadSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'TotalLength')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 36, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(SubreadSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'NumRecords')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 37, 3))
+    st_1 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(SubreadSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Provenance')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 38, 3))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(SubreadSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'AverageSubreadLength')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 91, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(SubreadSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'AverageSubreadQuality')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 92, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+SubreadSetMetadataType._Automaton = _BuildAutomaton_70()
+
+
+
+
+CTD_ANON_67._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Validation'), CTD_ANON_68, scope=CTD_ANON_67, documentation='\n        A validation type which is an element/part of every other element in the schema.  It is used to communicate validation issues as part of the output.\n      ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 152, 1)))
+
+def _BuildAutomaton_71 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_71
+    del _BuildAutomaton_71
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 69, 4))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_67._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Validation')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 69, 4))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_67._Automaton = _BuildAutomaton_71()
+
+
+
+
+AlignmentSetMetadataType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Aligner'), pyxb.binding.datatypes.anyType, scope=AlignmentSetMetadataType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 141, 5)))
+
+def _BuildAutomaton_72 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_72
+    del _BuildAutomaton_72
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 38, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 141, 5))
+    counters.add(cc_1)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(AlignmentSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'TotalLength')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 36, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(AlignmentSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'NumRecords')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 37, 3))
+    st_1 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(AlignmentSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Provenance')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 38, 3))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(AlignmentSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Aligner')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 141, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    st_3._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+AlignmentSetMetadataType._Automaton = _BuildAutomaton_72()
+
+
+
+
+ContigSetMetadataType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Contigs'), CTD_ANON_72, scope=ContigSetMetadataType, documentation='List of contigs in a ContigSet', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 114, 1)))
+
+ContigSetMetadataType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Organism'), pyxb.binding.datatypes.string, scope=ContigSetMetadataType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 150, 5)))
+
+ContigSetMetadataType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Ploidy'), pyxb.binding.datatypes.string, scope=ContigSetMetadataType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 151, 5)))
+
+def _BuildAutomaton_73 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_73
+    del _BuildAutomaton_73
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 38, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 150, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 151, 5))
+    counters.add(cc_2)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ContigSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'TotalLength')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 36, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ContigSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'NumRecords')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 37, 3))
+    st_1 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ContigSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Provenance')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 38, 3))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ContigSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Organism')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 150, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ContigSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Ploidy')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 151, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(ContigSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Contigs')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 152, 5))
+    st_5 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_5)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    transitions.append(fac.Transition(st_5, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_4._set_transitionSet(transitions)
+    transitions = []
+    st_5._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+ContigSetMetadataType._Automaton = _BuildAutomaton_73()
+
+
+
+
+BarcodeSetMetadataType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BarcodeConstruction'), pyxb.binding.datatypes.string, scope=BarcodeSetMetadataType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 161, 5)))
+
+def _BuildAutomaton_74 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_74
+    del _BuildAutomaton_74
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 38, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(BarcodeSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'TotalLength')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 36, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(BarcodeSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'NumRecords')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 37, 3))
+    st_1 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(BarcodeSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Provenance')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 38, 3))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(BarcodeSetMetadataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BarcodeConstruction')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 161, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+         ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    st_3._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+BarcodeSetMetadataType._Automaton = _BuildAutomaton_74()
+
+
+
+
+AutomationConstraintType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Automations'), CTD_ANON_2, scope=AutomationConstraintType, documentation='Names of automations that are all similarly constrained', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 34, 5)))
+
+AutomationConstraintType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'InsertSizes'), CTD_ANON_3, scope=AutomationConstraintType, documentation='A list of insert sizes (buckets) recommended for use', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 44, 5)))
+
+def _BuildAutomaton_75 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_75
+    del _BuildAutomaton_75
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 34, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 44, 5))
+    counters.add(cc_2)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(AutomationConstraintType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(AutomationConstraintType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Automations')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 34, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(AutomationConstraintType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'InsertSizes')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioAutomationConstraints.xsd', 44, 5))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    st_2._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+AutomationConstraintType._Automaton = _BuildAutomaton_75()
+
+
+
+
+def _BuildAutomaton_76 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_76
+    del _BuildAutomaton_76
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(AnalogType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+AnalogType._Automaton = _BuildAutomaton_76()
+
+
+
+
+DataEntityType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'EncodedValue'), pyxb.binding.datatypes.base64Binary, scope=DataEntityType, documentation='A complex data type element, such as an image, file, binary object, etc.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5)))
+
+DataEntityType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CheckSum'), pyxb.binding.datatypes.string, scope=DataEntityType, documentation='small-size datum of the attached value for the purpose of detecting errors or modification which may have been introduced during its transmission or storage', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5)))
+
+def _BuildAutomaton_77 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_77
+    del _BuildAutomaton_77
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    counters.add(cc_2)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(DataEntityType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(DataEntityType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'EncodedValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(DataEntityType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CheckSum')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    st_2._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+DataEntityType._Automaton = _BuildAutomaton_77()
+
+
+
+
+def _BuildAutomaton_78 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_78
+    del _BuildAutomaton_78
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(DNABarcode._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+DNABarcode._Automaton = _BuildAutomaton_78()
+
+
+
+
+AutomationType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'AutomationParameters'), CTD_ANON_8, scope=AutomationType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 241, 5)))
+
+def _BuildAutomaton_79 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_79
+    del _BuildAutomaton_79
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 241, 5))
+    counters.add(cc_1)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(AutomationType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(AutomationType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'AutomationParameters')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 241, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    st_1._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+AutomationType._Automaton = _BuildAutomaton_79()
+
+
+
+
+CTD_ANON_69._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Analogs'), CTD_ANON_11, scope=CTD_ANON_69, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 346, 10)))
+
+def _BuildAutomaton_80 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_80
+    del _BuildAutomaton_80
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_69._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_69._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Analogs')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 346, 10))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    st_1._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_69._Automaton = _BuildAutomaton_80()
+
+
+
+
+SequencingChemistryConfig._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Analogs'), CTD_ANON_13, scope=SequencingChemistryConfig, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 379, 5)))
+
+def _BuildAutomaton_81 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_81
+    del _BuildAutomaton_81
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(SequencingChemistryConfig._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(SequencingChemistryConfig._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Analogs')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 379, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    st_1._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+SequencingChemistryConfig._Automaton = _BuildAutomaton_81()
+
+
+
+
+StatsContinuousDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SampleSize'), pyxb.binding.datatypes.int, scope=StatsContinuousDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 397, 5)))
+
+StatsContinuousDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SampleMean'), pyxb.binding.datatypes.float, scope=StatsContinuousDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 398, 5)))
+
+StatsContinuousDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SampleMed'), pyxb.binding.datatypes.float, scope=StatsContinuousDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 399, 5)))
+
+StatsContinuousDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SampleStd'), pyxb.binding.datatypes.float, scope=StatsContinuousDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 400, 5)))
+
+StatsContinuousDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Sample95thPct'), pyxb.binding.datatypes.float, scope=StatsContinuousDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 401, 5)))
+
+StatsContinuousDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'NumBins'), pyxb.binding.datatypes.int, scope=StatsContinuousDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 402, 5)))
+
+StatsContinuousDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BinCounts'), CTD_ANON_14, scope=StatsContinuousDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 403, 5)))
+
+StatsContinuousDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BinWidth'), pyxb.binding.datatypes.float, scope=StatsContinuousDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 410, 5)))
+
+StatsContinuousDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'MinOutlierValue'), pyxb.binding.datatypes.float, scope=StatsContinuousDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 411, 5)))
+
+StatsContinuousDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'MinBinValue'), pyxb.binding.datatypes.float, scope=StatsContinuousDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 412, 5)))
+
+StatsContinuousDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'MaxBinValue'), pyxb.binding.datatypes.float, scope=StatsContinuousDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 413, 5)))
+
+StatsContinuousDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'MaxOutlierValue'), pyxb.binding.datatypes.float, scope=StatsContinuousDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 414, 5)))
+
+StatsContinuousDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'MetricDescription'), pyxb.binding.datatypes.string, scope=StatsContinuousDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 415, 5)))
+
+def _BuildAutomaton_82 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_82
+    del _BuildAutomaton_82
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsContinuousDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsContinuousDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SampleSize')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 397, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsContinuousDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SampleMean')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 398, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsContinuousDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SampleMed')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 399, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsContinuousDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SampleStd')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 400, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsContinuousDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Sample95thPct')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 401, 5))
+    st_5 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_5)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsContinuousDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'NumBins')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 402, 5))
+    st_6 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_6)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsContinuousDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BinCounts')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 403, 5))
+    st_7 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_7)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsContinuousDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BinWidth')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 410, 5))
+    st_8 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_8)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsContinuousDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'MinOutlierValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 411, 5))
+    st_9 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_9)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsContinuousDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'MinBinValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 412, 5))
+    st_10 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_10)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsContinuousDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'MaxBinValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 413, 5))
+    st_11 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_11)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsContinuousDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'MaxOutlierValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 414, 5))
+    st_12 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_12)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(StatsContinuousDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'MetricDescription')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 415, 5))
+    st_13 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_13)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_5, [
+         ]))
+    st_4._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_6, [
+         ]))
+    st_5._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_7, [
+         ]))
+    st_6._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_8, [
+         ]))
+    st_7._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_9, [
+         ]))
+    st_8._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_10, [
+         ]))
+    st_9._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_11, [
+         ]))
+    st_10._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_12, [
+         ]))
+    st_11._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_13, [
+         ]))
+    st_12._set_transitionSet(transitions)
+    transitions = []
+    st_13._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+StatsContinuousDistType._Automaton = _BuildAutomaton_82()
+
+
+
+
+StatsDiscreteDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'NumBins'), pyxb.binding.datatypes.int, scope=StatsDiscreteDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 428, 5)))
+
+StatsDiscreteDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BinCounts'), CTD_ANON_15, scope=StatsDiscreteDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 429, 5)))
+
+StatsDiscreteDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'MetricDescription'), pyxb.binding.datatypes.string, scope=StatsDiscreteDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 436, 5)))
+
+StatsDiscreteDistType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BinLabels'), CTD_ANON_16, scope=StatsDiscreteDistType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 437, 5)))
+
+def _BuildAutomaton_83 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_83
+    del _BuildAutomaton_83
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsDiscreteDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsDiscreteDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'NumBins')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 428, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsDiscreteDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BinCounts')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 429, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsDiscreteDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'MetricDescription')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 436, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(StatsDiscreteDistType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BinLabels')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 437, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+StatsDiscreteDistType._Automaton = _BuildAutomaton_83()
+
+
+
+
+StatsTimeSeriesType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'TimeUnits'), pyxb.binding.datatypes.string, scope=StatsTimeSeriesType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 455, 5)))
+
+StatsTimeSeriesType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ValueUnits'), pyxb.binding.datatypes.string, scope=StatsTimeSeriesType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 456, 5)))
+
+StatsTimeSeriesType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'StartTime'), pyxb.binding.datatypes.float, scope=StatsTimeSeriesType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 457, 5)))
+
+StatsTimeSeriesType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'MeasInterval'), pyxb.binding.datatypes.float, scope=StatsTimeSeriesType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 458, 5)))
+
+StatsTimeSeriesType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Values'), CTD_ANON_17, scope=StatsTimeSeriesType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 459, 5)))
+
+def _BuildAutomaton_84 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_84
+    del _BuildAutomaton_84
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 459, 5))
+    counters.add(cc_1)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsTimeSeriesType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsTimeSeriesType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'TimeUnits')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 455, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsTimeSeriesType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ValueUnits')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 456, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(StatsTimeSeriesType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'StartTime')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 457, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(StatsTimeSeriesType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'MeasInterval')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 458, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(StatsTimeSeriesType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Values')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 459, 5))
+    st_5 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_5)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_5, [
+         ]))
+    st_4._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    st_5._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+StatsTimeSeriesType._Automaton = _BuildAutomaton_84()
+
+
+
+
+DataSetType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources'), CTD_ANON_6, scope=DataSetType, documentation='Pointers to data that do not reside inside the parent structure', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 202, 1)))
+
+DataSetType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Filters'), CTD_ANON_22, scope=DataSetType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5)))
+
+DataSetType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DataSets'), CTD_ANON_23, scope=DataSetType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5)))
+
+def _BuildAutomaton_85 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_85
+    del _BuildAutomaton_85
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    counters.add(cc_2)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(DataSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(DataSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 106, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(DataSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Filters')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(DataSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSets')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    st_3._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+DataSetType._Automaton = _BuildAutomaton_85()
+
+
+
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'InstCtrlVer'), pyxb.binding.datatypes.string, scope=CTD_ANON_70, documentation='Instrument control software version. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 144, 6)))
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SigProcVer'), pyxb.binding.datatypes.string, scope=CTD_ANON_70, documentation='Signal processing software version. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 149, 6)))
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Automation'), AutomationType, scope=CTD_ANON_70, documentation='Defines the collection workflow (e.g., robotic movement, movie acquisition) for a particular cell. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 171, 6)))
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CollectionNumber'), pyxb.binding.datatypes.int, scope=CTD_ANON_70, documentation='Collection number for this plate well. Sample from one plate well or tube can be distributed to more than one cell. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 176, 6)))
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CellIndex'), pyxb.binding.datatypes.int, scope=CTD_ANON_70, documentation='The zero-based index of this particular cell within the cell tray.  Likely to be in the range of [0-3]', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 181, 6)))
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SetNumber'), pyxb.binding.datatypes.unsignedShort, scope=CTD_ANON_70, documentation='Formerly known as the look number.  1 - N.  Defaults to 1. 0 if the look is unknown. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 186, 6)))
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CellPac'), SupplyKitCellPack, scope=CTD_ANON_70, documentation='The SMRT cell packaging supply information. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 191, 6)))
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'TemplatePrepKit'), SupplyKitTemplate, scope=CTD_ANON_70, documentation='Defines the template (sample) prep kit used for this experiment. Can be used to get back to the primary and adapter used. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 196, 6)))
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BindingKit'), SupplyKitBinding, scope=CTD_ANON_70, documentation='The binding kit supply information. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 201, 6)))
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SequencingKitPlate'), SupplyKitSequencing, scope=CTD_ANON_70, documentation='The sequencing kit supply information. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 206, 6)))
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'RunDetails'), CTD_ANON_25, scope=CTD_ANON_70, documentation='Information related to an instrument run.  A run can contain multiple chips, wells, and movies. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 248, 1)))
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Movie'), CTD_ANON_26, scope=CTD_ANON_70, documentation='A movie corresponds to one acquisition for a chip, one set (look) and one strobe. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 287, 1)))
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ExpirationData'), CTD_ANON_27, scope=CTD_ANON_70, documentation='Container for the expired consumable data. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 311, 1)))
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'WellSample'), CTD_ANON_71, scope=CTD_ANON_70, documentation='Container for the sample related data. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 432, 1)))
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Primary'), CTD_ANON_29, scope=CTD_ANON_70, documentation='Container for the primary analysis related data. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 503, 1)))
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Secondary'), CTD_ANON_32, scope=CTD_ANON_70, documentation='Container for the primary analysis related data. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 568, 1)))
+
+CTD_ANON_70._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'UserDefinedFields'), UserDefinedFieldsType, scope=CTD_ANON_70, documentation='A set of key-value pairs specified by a user via the run input mechanism. Note that uniqueness of keys is not enforced here and so may contain duplicate keys. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 602, 1)))
+
+def _BuildAutomaton_86 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_86
+    del _BuildAutomaton_86
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 144, 6))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 149, 6))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 154, 6))
+    counters.add(cc_3)
+    cc_4 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 159, 6))
+    counters.add(cc_4)
+    cc_5 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 176, 6))
+    counters.add(cc_5)
+    cc_6 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 181, 6))
+    counters.add(cc_6)
+    cc_7 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 186, 6))
+    counters.add(cc_7)
+    cc_8 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 191, 6))
+    counters.add(cc_8)
+    cc_9 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 196, 6))
+    counters.add(cc_9)
+    cc_10 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 201, 6))
+    counters.add(cc_10)
+    cc_11 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 206, 6))
+    counters.add(cc_11)
+    cc_12 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 211, 6))
+    counters.add(cc_12)
+    cc_13 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 216, 6))
+    counters.add(cc_13)
+    cc_14 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 221, 6))
+    counters.add(cc_14)
+    cc_15 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 226, 6))
+    counters.add(cc_15)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'InstCtrlVer')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 144, 6))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SigProcVer')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 149, 6))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'RunDetails')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 154, 6))
+    st_3 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Movie')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 159, 6))
+    st_4 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'WellSample')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 164, 6))
+    st_5 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_5)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Automation')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 171, 6))
+    st_6 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_6)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_5, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CollectionNumber')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 176, 6))
+    st_7 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_7)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_6, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CellIndex')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 181, 6))
+    st_8 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_8)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_7, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SetNumber')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 186, 6))
+    st_9 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_9)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_8, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CellPac')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 191, 6))
+    st_10 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_10)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_9, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'TemplatePrepKit')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 196, 6))
+    st_11 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_11)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_10, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BindingKit')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 201, 6))
+    st_12 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_12)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_11, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SequencingKitPlate')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 206, 6))
+    st_13 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_13)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_12, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Primary')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 211, 6))
+    st_14 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_14)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_13, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Secondary')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 216, 6))
+    st_15 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_15)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_14, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'UserDefinedFields')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 221, 6))
+    st_16 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_16)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_15, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_70._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExpirationData')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 226, 6))
+    st_17 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_17)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_4, True) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    st_4._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_6, [
+         ]))
+    st_5._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_7, [
+         ]))
+    transitions.append(fac.Transition(st_8, [
+         ]))
+    transitions.append(fac.Transition(st_9, [
+         ]))
+    transitions.append(fac.Transition(st_10, [
+         ]))
+    transitions.append(fac.Transition(st_11, [
+         ]))
+    transitions.append(fac.Transition(st_12, [
+         ]))
+    transitions.append(fac.Transition(st_13, [
+         ]))
+    transitions.append(fac.Transition(st_14, [
+         ]))
+    transitions.append(fac.Transition(st_15, [
+         ]))
+    transitions.append(fac.Transition(st_16, [
+         ]))
+    transitions.append(fac.Transition(st_17, [
+         ]))
+    st_6._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_5, True) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_9, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_10, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_11, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_12, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_13, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_14, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_15, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_16, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_17, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    st_7._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_6, True) ]))
+    transitions.append(fac.Transition(st_9, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    transitions.append(fac.Transition(st_10, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    transitions.append(fac.Transition(st_11, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    transitions.append(fac.Transition(st_12, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    transitions.append(fac.Transition(st_13, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    transitions.append(fac.Transition(st_14, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    transitions.append(fac.Transition(st_15, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    transitions.append(fac.Transition(st_16, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    transitions.append(fac.Transition(st_17, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    st_8._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_9, [
+        fac.UpdateInstruction(cc_7, True) ]))
+    transitions.append(fac.Transition(st_10, [
+        fac.UpdateInstruction(cc_7, False) ]))
+    transitions.append(fac.Transition(st_11, [
+        fac.UpdateInstruction(cc_7, False) ]))
+    transitions.append(fac.Transition(st_12, [
+        fac.UpdateInstruction(cc_7, False) ]))
+    transitions.append(fac.Transition(st_13, [
+        fac.UpdateInstruction(cc_7, False) ]))
+    transitions.append(fac.Transition(st_14, [
+        fac.UpdateInstruction(cc_7, False) ]))
+    transitions.append(fac.Transition(st_15, [
+        fac.UpdateInstruction(cc_7, False) ]))
+    transitions.append(fac.Transition(st_16, [
+        fac.UpdateInstruction(cc_7, False) ]))
+    transitions.append(fac.Transition(st_17, [
+        fac.UpdateInstruction(cc_7, False) ]))
+    st_9._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_10, [
+        fac.UpdateInstruction(cc_8, True) ]))
+    transitions.append(fac.Transition(st_11, [
+        fac.UpdateInstruction(cc_8, False) ]))
+    transitions.append(fac.Transition(st_12, [
+        fac.UpdateInstruction(cc_8, False) ]))
+    transitions.append(fac.Transition(st_13, [
+        fac.UpdateInstruction(cc_8, False) ]))
+    transitions.append(fac.Transition(st_14, [
+        fac.UpdateInstruction(cc_8, False) ]))
+    transitions.append(fac.Transition(st_15, [
+        fac.UpdateInstruction(cc_8, False) ]))
+    transitions.append(fac.Transition(st_16, [
+        fac.UpdateInstruction(cc_8, False) ]))
+    transitions.append(fac.Transition(st_17, [
+        fac.UpdateInstruction(cc_8, False) ]))
+    st_10._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_11, [
+        fac.UpdateInstruction(cc_9, True) ]))
+    transitions.append(fac.Transition(st_12, [
+        fac.UpdateInstruction(cc_9, False) ]))
+    transitions.append(fac.Transition(st_13, [
+        fac.UpdateInstruction(cc_9, False) ]))
+    transitions.append(fac.Transition(st_14, [
+        fac.UpdateInstruction(cc_9, False) ]))
+    transitions.append(fac.Transition(st_15, [
+        fac.UpdateInstruction(cc_9, False) ]))
+    transitions.append(fac.Transition(st_16, [
+        fac.UpdateInstruction(cc_9, False) ]))
+    transitions.append(fac.Transition(st_17, [
+        fac.UpdateInstruction(cc_9, False) ]))
+    st_11._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_12, [
+        fac.UpdateInstruction(cc_10, True) ]))
+    transitions.append(fac.Transition(st_13, [
+        fac.UpdateInstruction(cc_10, False) ]))
+    transitions.append(fac.Transition(st_14, [
+        fac.UpdateInstruction(cc_10, False) ]))
+    transitions.append(fac.Transition(st_15, [
+        fac.UpdateInstruction(cc_10, False) ]))
+    transitions.append(fac.Transition(st_16, [
+        fac.UpdateInstruction(cc_10, False) ]))
+    transitions.append(fac.Transition(st_17, [
+        fac.UpdateInstruction(cc_10, False) ]))
+    st_12._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_13, [
+        fac.UpdateInstruction(cc_11, True) ]))
+    transitions.append(fac.Transition(st_14, [
+        fac.UpdateInstruction(cc_11, False) ]))
+    transitions.append(fac.Transition(st_15, [
+        fac.UpdateInstruction(cc_11, False) ]))
+    transitions.append(fac.Transition(st_16, [
+        fac.UpdateInstruction(cc_11, False) ]))
+    transitions.append(fac.Transition(st_17, [
+        fac.UpdateInstruction(cc_11, False) ]))
+    st_13._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_14, [
+        fac.UpdateInstruction(cc_12, True) ]))
+    transitions.append(fac.Transition(st_15, [
+        fac.UpdateInstruction(cc_12, False) ]))
+    transitions.append(fac.Transition(st_16, [
+        fac.UpdateInstruction(cc_12, False) ]))
+    transitions.append(fac.Transition(st_17, [
+        fac.UpdateInstruction(cc_12, False) ]))
+    st_14._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_15, [
+        fac.UpdateInstruction(cc_13, True) ]))
+    transitions.append(fac.Transition(st_16, [
+        fac.UpdateInstruction(cc_13, False) ]))
+    transitions.append(fac.Transition(st_17, [
+        fac.UpdateInstruction(cc_13, False) ]))
+    st_15._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_16, [
+        fac.UpdateInstruction(cc_14, True) ]))
+    transitions.append(fac.Transition(st_17, [
+        fac.UpdateInstruction(cc_14, False) ]))
+    st_16._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_17, [
+        fac.UpdateInstruction(cc_15, True) ]))
+    st_17._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_70._Automaton = _BuildAutomaton_86()
+
+
+
+
+BioSampleType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BioSamples'), CTD_ANON_37, scope=BioSampleType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 673, 1)))
+
+def _BuildAutomaton_87 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_87
+    del _BuildAutomaton_87
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 372, 5))
+    counters.add(cc_1)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(BioSampleType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(BioSampleType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BioSamples')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 372, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    st_1._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+BioSampleType._Automaton = _BuildAutomaton_87()
+
+
+
+
+CTD_ANON_71._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'PlateId'), pyxb.binding.datatypes.string, scope=CTD_ANON_71, documentation='The ID of the sample plate. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 440, 6)))
+
+CTD_ANON_71._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'WellName'), pyxb.binding.datatypes.string, scope=CTD_ANON_71, documentation='Identifies which well this sample came from (e.g., coordinate on a plate). ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 445, 6)))
+
+CTD_ANON_71._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Concentration'), pyxb.binding.datatypes.double, scope=CTD_ANON_71, documentation='Sample input concentration. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 450, 6)))
+
+CTD_ANON_71._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SampleReuseEnabled'), pyxb.binding.datatypes.boolean, scope=CTD_ANON_71, documentation='Whether or not complex reuse is enabled for this well. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 455, 6)))
+
+CTD_ANON_71._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'StageHotstartEnabled'), pyxb.binding.datatypes.boolean, scope=CTD_ANON_71, documentation='Whether or not hotstart at the stage is enabled for this well. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 460, 6)))
+
+CTD_ANON_71._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SizeSelectionEnabled'), pyxb.binding.datatypes.boolean, scope=CTD_ANON_71, documentation='Whether or not size selection is enabled for this well. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 465, 6)))
+
+CTD_ANON_71._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'UseCount'), pyxb.binding.datatypes.int, scope=CTD_ANON_71, documentation='Count of usages for this batch of complex. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 470, 6)))
+
+CTD_ANON_71._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Comments'), pyxb.binding.datatypes.string, scope=CTD_ANON_71, documentation='User-supplied comments about the sample. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 475, 6)))
+
+CTD_ANON_71._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DNAControlComplex'), pyxb.binding.datatypes.string, scope=CTD_ANON_71, documentation='Indicating what kind (if any) control was used. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 480, 6)))
+
+CTD_ANON_71._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SampleBarcodeInfo'), DataEntityType, scope=CTD_ANON_71, documentation='When utilizing DNA barcoding, store the list of smaple barcodes in this element.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 485, 6)))
+
+CTD_ANON_71._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BioSamplePointers'), CTD_ANON_35, scope=CTD_ANON_71, documentation='Back references to other BarcodedSampleType object UniqueIds which utilize this sample', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 639, 1)))
+
+def _BuildAutomaton_88 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_88
+    del _BuildAutomaton_88
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 480, 6))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 485, 6))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 490, 6))
+    counters.add(cc_3)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_71._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_71._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'PlateId')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 440, 6))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_71._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'WellName')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 445, 6))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_71._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Concentration')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 450, 6))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_71._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SampleReuseEnabled')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 455, 6))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_71._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'StageHotstartEnabled')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 460, 6))
+    st_5 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_5)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_71._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SizeSelectionEnabled')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 465, 6))
+    st_6 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_6)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_71._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'UseCount')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 470, 6))
+    st_7 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_7)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_71._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Comments')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 475, 6))
+    st_8 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_8)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_71._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DNAControlComplex')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 480, 6))
+    st_9 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_9)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_71._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SampleBarcodeInfo')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 485, 6))
+    st_10 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_10)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_71._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BioSamplePointers')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 490, 6))
+    st_11 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_11)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_5, [
+         ]))
+    st_4._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_6, [
+         ]))
+    st_5._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_7, [
+         ]))
+    st_6._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_8, [
+         ]))
+    st_7._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_9, [
+         ]))
+    transitions.append(fac.Transition(st_10, [
+         ]))
+    transitions.append(fac.Transition(st_11, [
+         ]))
+    st_8._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_9, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_10, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_11, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_9._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_10, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_11, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_10._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_11, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    st_11._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_71._Automaton = _BuildAutomaton_88()
+
+
+
+
+def _BuildAutomaton_89 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_89
+    del _BuildAutomaton_89
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(ReagentType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+ReagentType._Automaton = _BuildAutomaton_89()
+
+
+
+
+ReagentKitType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Reagents'), CTD_ANON_62, scope=ReagentKitType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 69, 5)))
+
+ReagentKitType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReagentTubes'), CTD_ANON_63, scope=ReagentKitType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 76, 5)))
+
+ReagentKitType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReagentPlateRows'), CTD_ANON_64, scope=ReagentKitType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 83, 5)))
+
+ReagentKitType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CompatibleAutomations'), CTD_ANON_65, scope=ReagentKitType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 90, 5)))
+
+def _BuildAutomaton_90 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_90
+    del _BuildAutomaton_90
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 90, 5))
+    counters.add(cc_1)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ReagentKitType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ReagentKitType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Reagents')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 69, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ReagentKitType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ReagentTubes')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 76, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(ReagentKitType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ReagentPlateRows')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 83, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(ReagentKitType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CompatibleAutomations')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 90, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+ReagentKitType._Automaton = _BuildAutomaton_90()
+
+
+
+
+def _BuildAutomaton_91 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_91
+    del _BuildAutomaton_91
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(ReagentTubeType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+ReagentTubeType._Automaton = _BuildAutomaton_91()
+
+
+
+
+def _BuildAutomaton_92 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_92
+    del _BuildAutomaton_92
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(ReagentPlateRowType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+ReagentPlateRowType._Automaton = _BuildAutomaton_92()
+
+
+
+
+CTD_ANON_72._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Contig'), CTD_ANON_73, scope=CTD_ANON_72, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 122, 6)))
+
+def _BuildAutomaton_93 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_93
+    del _BuildAutomaton_93
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_72._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_72._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Contig')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 122, 6))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    st_1._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_72._Automaton = _BuildAutomaton_93()
+
+
+
+
+def _BuildAutomaton_94 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_94
+    del _BuildAutomaton_94
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_73._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_73._Automaton = _BuildAutomaton_94()
+
+
+
+
+def _BuildAutomaton_95 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_95
+    del _BuildAutomaton_95
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_74._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_74._Automaton = _BuildAutomaton_95()
+
+
+
+
+def _BuildAutomaton_96 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_96
+    del _BuildAutomaton_96
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_75._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    st_0._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+CTD_ANON_75._Automaton = _BuildAutomaton_96()
+
+
+
+
+def _BuildAutomaton_97 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_97
+    del _BuildAutomaton_97
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    counters.add(cc_2)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(InputOutputDataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(InputOutputDataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'EncodedValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(InputOutputDataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CheckSum')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    st_2._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+InputOutputDataType._Automaton = _BuildAutomaton_97()
+
+
+
+
+PartNumberType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'IncompatiblePartNumbers'), CTD_ANON_9, scope=PartNumberType, documentation='By default, a PN is compatible for use with other PNs in the system.  In order to exclude the usage of one or more PNs with this one, the incompatible PNs are listed here.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 267, 5)))
+
+PartNumberType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'IncompatibleAutomations'), CTD_ANON_10, scope=PartNumberType, documentation='By default, a PN is compatible for use with all automations in the system.  In order to exclude the usage of automations with this PN, the incompatible automation names are listed here.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 281, 5)))
+
+def _BuildAutomaton_98 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_98
+    del _BuildAutomaton_98
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 267, 5))
+    counters.add(cc_3)
+    cc_4 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 281, 5))
+    counters.add(cc_4)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(PartNumberType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(PartNumberType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'EncodedValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(PartNumberType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CheckSum')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(PartNumberType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'IncompatiblePartNumbers')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 267, 5))
+    st_3 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_4, False))
+    symbol = pyxb.binding.content.ElementUse(PartNumberType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'IncompatibleAutomations')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 281, 5))
+    st_4 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_4, True) ]))
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+PartNumberType._Automaton = _BuildAutomaton_98()
+
+
+
+
+def _BuildAutomaton_99 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_99
+    del _BuildAutomaton_99
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    counters.add(cc_2)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(RecordedEventType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(RecordedEventType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'EncodedValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(RecordedEventType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CheckSum')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    st_2._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+RecordedEventType._Automaton = _BuildAutomaton_99()
+
+
+
+
+SequencingChemistry._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DyeSet'), CTD_ANON_69, scope=SequencingChemistry, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 341, 5)))
+
+def _BuildAutomaton_100 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_100
+    del _BuildAutomaton_100
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    counters.add(cc_2)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(SequencingChemistry._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(SequencingChemistry._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'EncodedValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(SequencingChemistry._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CheckSum')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(SequencingChemistry._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DyeSet')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 341, 5))
+    st_3 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    st_3._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+SequencingChemistry._Automaton = _BuildAutomaton_100()
+
+
+
+
+ReadSetType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata'), ReadSetMetadataType, scope=ReadSetType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 26, 5)))
+
+def _BuildAutomaton_101 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_101
+    del _BuildAutomaton_101
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 26, 5))
+    counters.add(cc_3)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ReadSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(ReadSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 106, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(ReadSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Filters')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(ReadSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSets')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(ReadSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 26, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+ReadSetType._Automaton = _BuildAutomaton_101()
+
+
+
+
+BarcodedSampleType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Barcodes'), CTD_ANON_28, scope=BarcodedSampleType, documentation='A list of barcodes associated with the biological sample', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 347, 5)))
+
+def _BuildAutomaton_102 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_102
+    del _BuildAutomaton_102
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 372, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 347, 5))
+    counters.add(cc_2)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(BarcodedSampleType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(BarcodedSampleType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BioSamples')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 372, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(BarcodedSampleType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Barcodes')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 347, 5))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    st_2._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+BarcodedSampleType._Automaton = _BuildAutomaton_102()
+
+
+
+
+AssayType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SubreadSet'), CTD_ANON_83, scope=AssayType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 681, 1)))
+
+def _BuildAutomaton_103 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_103
+    del _BuildAutomaton_103
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    counters.add(cc_2)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(AssayType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(AssayType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'EncodedValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(AssayType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CheckSum')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(AssayType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SubreadSet')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 241, 5))
+    st_3 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    st_3._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+AssayType._Automaton = _BuildAutomaton_103()
+
+
+
+
+ExperimentContainerType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'InvestigatorName'), pyxb.binding.datatypes.string, scope=ExperimentContainerType, documentation='An optional PI name', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 257, 5)))
+
+ExperimentContainerType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'CreatedDate'), pyxb.binding.datatypes.date, scope=ExperimentContainerType, documentation='Automatically generated creation date', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 262, 5)))
+
+ExperimentContainerType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Runs'), CTD_ANON_47, scope=ExperimentContainerType, documentation='Multiple acquisitions from different instrument runs', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 267, 5)))
+
+ExperimentContainerType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DataSets'), CTD_ANON_48, scope=ExperimentContainerType, documentation='Pointers to various data elements associated with the acquisitions', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 277, 5)))
+
+ExperimentContainerType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'RecordedEvents'), CTD_ANON_49, scope=ExperimentContainerType, documentation="Journal of metrics, system events, or alarms that were generated during this container's lifetime", location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 287, 5)))
+
+ExperimentContainerType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'BioSamples'), CTD_ANON_50, scope=ExperimentContainerType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 301, 5)))
+
+def _BuildAutomaton_104 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_104
+    del _BuildAutomaton_104
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 257, 5))
+    counters.add(cc_3)
+    cc_4 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 267, 5))
+    counters.add(cc_4)
+    cc_5 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 277, 5))
+    counters.add(cc_5)
+    cc_6 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 287, 5))
+    counters.add(cc_6)
+    cc_7 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 301, 5))
+    counters.add(cc_7)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ExperimentContainerType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ExperimentContainerType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'EncodedValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ExperimentContainerType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CheckSum')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ExperimentContainerType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'InvestigatorName')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 257, 5))
+    st_3 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(ExperimentContainerType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CreatedDate')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 262, 5))
+    st_4 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_4, False))
+    symbol = pyxb.binding.content.ElementUse(ExperimentContainerType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Runs')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 267, 5))
+    st_5 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_5)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_5, False))
+    symbol = pyxb.binding.content.ElementUse(ExperimentContainerType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSets')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 277, 5))
+    st_6 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_6)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_6, False))
+    symbol = pyxb.binding.content.ElementUse(ExperimentContainerType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'RecordedEvents')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 287, 5))
+    st_7 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_7)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_7, False))
+    symbol = pyxb.binding.content.ElementUse(ExperimentContainerType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'BioSamples')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 301, 5))
+    st_8 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_8)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_5, [
+         ]))
+    transitions.append(fac.Transition(st_6, [
+         ]))
+    transitions.append(fac.Transition(st_7, [
+         ]))
+    transitions.append(fac.Transition(st_8, [
+         ]))
+    st_4._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_4, True) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    st_5._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_5, True) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    st_6._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_6, True) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    st_7._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_7, True) ]))
+    st_8._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+ExperimentContainerType._Automaton = _BuildAutomaton_104()
+
+
+
+
+RunType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SubreadSet'), CTD_ANON_83, scope=RunType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 681, 1)))
+
+RunType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Assay'), AssayType, scope=RunType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 11, 1)))
+
+RunType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'RunResources'), CTD_ANON_45, scope=RunType, documentation='This is an output field specifying the requirements for the run, e.g. number of tips, estimated run time, etc.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 129, 1)))
+
+RunType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Inputs'), CTD_ANON_51, scope=RunType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 321, 5)))
+
+RunType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Outputs'), CTD_ANON_52, scope=RunType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 328, 5)))
+
+RunType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'RecordedEvents'), CTD_ANON_53, scope=RunType, documentation="Journal of metrics, system events, or alarms that were generated during this run's lifetime", location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 341, 5)))
+
+def _BuildAutomaton_105 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_105
+    del _BuildAutomaton_105
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 321, 5))
+    counters.add(cc_3)
+    cc_4 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 328, 5))
+    counters.add(cc_4)
+    cc_5 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 335, 5))
+    counters.add(cc_5)
+    cc_6 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 340, 5))
+    counters.add(cc_6)
+    cc_7 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 341, 5))
+    counters.add(cc_7)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(RunType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(RunType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'EncodedValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(RunType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CheckSum')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(RunType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Inputs')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 321, 5))
+    st_3 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(RunType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Outputs')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 328, 5))
+    st_4 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(RunType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Assay')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 335, 5))
+    st_5 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_5)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(RunType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'RunResources')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 340, 5))
+    st_6 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_6)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(RunType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'RecordedEvents')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 341, 5))
+    st_7 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_7)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(RunType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SubreadSet')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioDataModel.xsd', 356, 5))
+    st_8 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_8)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_4, True) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    st_4._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_5, True) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    st_5._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_6, True) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    st_6._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_7, True) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_7, False) ]))
+    st_7._set_transitionSet(transitions)
+    transitions = []
+    st_8._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+RunType._Automaton = _BuildAutomaton_105()
+
+
+
+
+BarcodeSetType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata'), BarcodeSetMetadataType, scope=BarcodeSetType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 35, 5)))
+
+def _BuildAutomaton_106 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_106
+    del _BuildAutomaton_106
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    counters.add(cc_2)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(BarcodeSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(BarcodeSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 106, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(BarcodeSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Filters')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(BarcodeSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSets')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(BarcodeSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 35, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+BarcodeSetType._Automaton = _BuildAutomaton_106()
+
+
+
+
+def _BuildAutomaton_107 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_107
+    del _BuildAutomaton_107
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    counters.add(cc_2)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_76._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_76._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 106, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_76._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Filters')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_76._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSets')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    st_3._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_76._Automaton = _BuildAutomaton_107()
+
+
+
+
+AlignmentSetType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata'), AlignmentSetMetadataType, scope=AlignmentSetType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 67, 5)))
+
+def _BuildAutomaton_108 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_108
+    del _BuildAutomaton_108
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 67, 5))
+    counters.add(cc_3)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(AlignmentSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(AlignmentSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 106, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(AlignmentSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Filters')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(AlignmentSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSets')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(AlignmentSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 67, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+AlignmentSetType._Automaton = _BuildAutomaton_108()
+
+
+
+
+ContigSetType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata'), ContigSetMetadataType, scope=ContigSetType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 99, 5)))
+
+def _BuildAutomaton_109 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_109
+    del _BuildAutomaton_109
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    counters.add(cc_2)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ContigSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ContigSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 106, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ContigSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Filters')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(ContigSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSets')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(ContigSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 99, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+ContigSetType._Automaton = _BuildAutomaton_109()
+
+
+
+
+IndexedDataType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources'), CTD_ANON_6, scope=IndexedDataType, documentation='Pointers to data that do not reside inside the parent structure', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 202, 1)))
+
+IndexedDataType._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'FileIndices'), CTD_ANON_7, scope=IndexedDataType, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 221, 5)))
+
+def _BuildAutomaton_110 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_110
+    del _BuildAutomaton_110
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 221, 5))
+    counters.add(cc_3)
+    cc_4 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 232, 5))
+    counters.add(cc_4)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(IndexedDataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(IndexedDataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'EncodedValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(IndexedDataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CheckSum')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(IndexedDataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'FileIndices')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 221, 5))
+    st_3 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_4, False))
+    symbol = pyxb.binding.content.ElementUse(IndexedDataType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 232, 5))
+    st_4 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_4, True) ]))
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+IndexedDataType._Automaton = _BuildAutomaton_110()
+
+
+
+
+SupplyKitBinding._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'Control'), SupplyKitControl, scope=SupplyKitBinding, documentation='Defines the binding kit internal control name.  Present when used, otherwise not used if not defined. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 477, 5)))
+
+SupplyKitBinding._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'IsControlUsed'), pyxb.binding.datatypes.boolean, scope=SupplyKitBinding, documentation='True if the control was used during run, otherwise false. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 482, 5)))
+
+def _BuildAutomaton_111 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_111
+    del _BuildAutomaton_111
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 267, 5))
+    counters.add(cc_3)
+    cc_4 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 281, 5))
+    counters.add(cc_4)
+    cc_5 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 477, 5))
+    counters.add(cc_5)
+    cc_6 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 482, 5))
+    counters.add(cc_6)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitBinding._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitBinding._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'EncodedValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitBinding._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CheckSum')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitBinding._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'IncompatiblePartNumbers')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 267, 5))
+    st_3 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_4, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitBinding._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'IncompatibleAutomations')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 281, 5))
+    st_4 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_5, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitBinding._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Control')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 477, 5))
+    st_5 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_5)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_6, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitBinding._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'IsControlUsed')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 482, 5))
+    st_6 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_6)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_4, True) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    st_4._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_5, True) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    st_5._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_6, True) ]))
+    st_6._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+SupplyKitBinding._Automaton = _BuildAutomaton_111()
+
+
+
+
+SupplyKitCellPack._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ChipLayout'), pyxb.binding.datatypes.string, scope=SupplyKitCellPack, documentation='Defines the internal chip layout name, if any. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 498, 5)))
+
+def _BuildAutomaton_112 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_112
+    del _BuildAutomaton_112
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 267, 5))
+    counters.add(cc_3)
+    cc_4 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 281, 5))
+    counters.add(cc_4)
+    cc_5 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 498, 5))
+    counters.add(cc_5)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitCellPack._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitCellPack._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'EncodedValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitCellPack._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CheckSum')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitCellPack._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'IncompatiblePartNumbers')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 267, 5))
+    st_3 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_4, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitCellPack._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'IncompatibleAutomations')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 281, 5))
+    st_4 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_5, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitCellPack._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ChipLayout')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 498, 5))
+    st_5 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_5)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_4, True) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    st_4._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_5, True) ]))
+    st_5._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+SupplyKitCellPack._Automaton = _BuildAutomaton_112()
+
+
+
+
+SupplyKitControl._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'InternalControlName'), pyxb.binding.datatypes.string, scope=SupplyKitControl, documentation='Defines the internal control name, if any. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 514, 5)))
+
+def _BuildAutomaton_113 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_113
+    del _BuildAutomaton_113
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 267, 5))
+    counters.add(cc_3)
+    cc_4 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 281, 5))
+    counters.add(cc_4)
+    cc_5 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 514, 5))
+    counters.add(cc_5)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitControl._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitControl._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'EncodedValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitControl._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CheckSum')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitControl._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'IncompatiblePartNumbers')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 267, 5))
+    st_3 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_4, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitControl._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'IncompatibleAutomations')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 281, 5))
+    st_4 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_5, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitControl._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'InternalControlName')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 514, 5))
+    st_5 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_5)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_4, True) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    st_4._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_5, True) ]))
+    st_5._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+SupplyKitControl._Automaton = _BuildAutomaton_113()
+
+
+
+
+SupplyKitTemplate._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'LeftAdaptorSequence'), pyxb.binding.datatypes.string, scope=SupplyKitTemplate, documentation='Left adapter DNA sequence.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 530, 5)))
+
+SupplyKitTemplate._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'LeftPrimerSequence'), pyxb.binding.datatypes.string, scope=SupplyKitTemplate, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 535, 5)))
+
+SupplyKitTemplate._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'RightAdaptorSequence'), pyxb.binding.datatypes.string, scope=SupplyKitTemplate, documentation='Right adapter DNA sequence.  If not specified, a symmetric adapter model is inferred, where the left adapter sequence is used wherever needed.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 536, 5)))
+
+SupplyKitTemplate._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'RightPrimerSequence'), pyxb.binding.datatypes.string, scope=SupplyKitTemplate, documentation='Right primaer sequence.  If not specified, a symmetric model is inferred, where the left primer sequence is used wherever needed.', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 541, 5)))
+
+SupplyKitTemplate._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'InsertSize'), pyxb.binding.datatypes.int, scope=SupplyKitTemplate, documentation='Approximate size of insert. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 546, 5)))
+
+def _BuildAutomaton_114 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_114
+    del _BuildAutomaton_114
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 267, 5))
+    counters.add(cc_3)
+    cc_4 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 281, 5))
+    counters.add(cc_4)
+    cc_5 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 530, 5))
+    counters.add(cc_5)
+    cc_6 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 535, 5))
+    counters.add(cc_6)
+    cc_7 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 536, 5))
+    counters.add(cc_7)
+    cc_8 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 541, 5))
+    counters.add(cc_8)
+    cc_9 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 546, 5))
+    counters.add(cc_9)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitTemplate._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitTemplate._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'EncodedValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitTemplate._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CheckSum')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitTemplate._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'IncompatiblePartNumbers')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 267, 5))
+    st_3 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_4, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitTemplate._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'IncompatibleAutomations')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 281, 5))
+    st_4 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_5, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitTemplate._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'LeftAdaptorSequence')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 530, 5))
+    st_5 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_5)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_6, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitTemplate._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'LeftPrimerSequence')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 535, 5))
+    st_6 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_6)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_7, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitTemplate._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'RightAdaptorSequence')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 536, 5))
+    st_7 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_7)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_8, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitTemplate._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'RightPrimerSequence')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 541, 5))
+    st_8 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_8)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_9, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitTemplate._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'InsertSize')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 546, 5))
+    st_9 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_9)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_9, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_9, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_9, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_9, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_4, True) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    transitions.append(fac.Transition(st_9, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    st_4._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_5, True) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_9, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    st_5._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_6, True) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    transitions.append(fac.Transition(st_9, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    st_6._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_7, True) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_7, False) ]))
+    transitions.append(fac.Transition(st_9, [
+        fac.UpdateInstruction(cc_7, False) ]))
+    st_7._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_8, True) ]))
+    transitions.append(fac.Transition(st_9, [
+        fac.UpdateInstruction(cc_8, False) ]))
+    st_8._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_9, [
+        fac.UpdateInstruction(cc_9, True) ]))
+    st_9._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+SupplyKitTemplate._Automaton = _BuildAutomaton_114()
+
+
+
+
+def _BuildAutomaton_115 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_115
+    del _BuildAutomaton_115
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 26, 5))
+    counters.add(cc_3)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(SubreadSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(SubreadSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 106, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(SubreadSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Filters')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(SubreadSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSets')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(SubreadSetType._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 26, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+SubreadSetType._Automaton = _BuildAutomaton_115()
+
+
+
+
+SupplyKitSequencing._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReagentAutomationName'), pyxb.binding.datatypes.string, scope=SupplyKitSequencing, documentation='The reagent-mixing protocol used. ', location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 28, 5)))
+
+SupplyKitSequencing._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'ReagentTubes'), SupplyKitSequencing, scope=SupplyKitSequencing, documentation="Tubes associated with the reagent kit - can have up to two; don't forget to set the location, 0 or 1", location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 33, 5)))
+
+SupplyKitSequencing._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SequencingChemistry'), SequencingChemistry, scope=SupplyKitSequencing, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 38, 5)))
+
+SupplyKitSequencing._AddElement(pyxb.binding.basis.element(pyxb.namespace.ExpandedName(Namespace, 'SequencingKitDefinition'), ReagentKitType, scope=SupplyKitSequencing, location=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 39, 5)))
+
+def _BuildAutomaton_116 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_116
+    del _BuildAutomaton_116
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 267, 5))
+    counters.add(cc_3)
+    cc_4 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 281, 5))
+    counters.add(cc_4)
+    cc_5 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 28, 5))
+    counters.add(cc_5)
+    cc_6 = fac.CounterCondition(min=0, max=2, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 33, 5))
+    counters.add(cc_6)
+    cc_7 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 38, 5))
+    counters.add(cc_7)
+    cc_8 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 39, 5))
+    counters.add(cc_8)
+    states = []
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_0, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitSequencing._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitSequencing._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'EncodedValue')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 144, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitSequencing._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'CheckSum')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 149, 5))
+    st_2 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitSequencing._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'IncompatiblePartNumbers')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 267, 5))
+    st_3 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_4, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitSequencing._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'IncompatibleAutomations')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 281, 5))
+    st_4 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_5, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitSequencing._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ReagentAutomationName')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 28, 5))
+    st_5 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_5)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_6, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitSequencing._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ReagentTubes')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 33, 5))
+    st_6 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_6)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_7, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitSequencing._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SequencingChemistry')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 38, 5))
+    st_7 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_7)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_8, False))
+    symbol = pyxb.binding.content.ElementUse(SupplyKitSequencing._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'SequencingKitDefinition')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioReagentKit.xsd', 39, 5))
+    st_8 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_8)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_3, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_4, True) ]))
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_4, False) ]))
+    st_4._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_5, [
+        fac.UpdateInstruction(cc_5, True) ]))
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_5, False) ]))
+    st_5._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_6, [
+        fac.UpdateInstruction(cc_6, True) ]))
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_6, False) ]))
+    st_6._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_7, [
+        fac.UpdateInstruction(cc_7, True) ]))
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_7, False) ]))
+    st_7._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_8, [
+        fac.UpdateInstruction(cc_8, True) ]))
+    st_8._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, True, containing_state=None)
+SupplyKitSequencing._Automaton = _BuildAutomaton_116()
+
+
+
+
+def _BuildAutomaton_117 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_117
+    del _BuildAutomaton_117
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 67, 5))
+    counters.add(cc_3)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_77._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_77._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 106, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_77._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Filters')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_77._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSets')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_77._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 67, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_77._Automaton = _BuildAutomaton_117()
+
+
+
+
+def _BuildAutomaton_118 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_118
+    del _BuildAutomaton_118
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    counters.add(cc_2)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_78._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_78._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 106, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_78._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Filters')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_78._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSets')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_78._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 35, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_78._Automaton = _BuildAutomaton_118()
+
+
+
+
+def _BuildAutomaton_119 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_119
+    del _BuildAutomaton_119
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 67, 5))
+    counters.add(cc_3)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_79._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_79._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 106, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_79._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Filters')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_79._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSets')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_79._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 67, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_79._Automaton = _BuildAutomaton_119()
+
+
+
+
+def _BuildAutomaton_120 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_120
+    del _BuildAutomaton_120
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    counters.add(cc_2)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_80._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_80._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 106, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_80._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Filters')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_80._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSets')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_80._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 99, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_80._Automaton = _BuildAutomaton_120()
+
+
+
+
+def _BuildAutomaton_121 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_121
+    del _BuildAutomaton_121
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    counters.add(cc_2)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_81._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_81._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 106, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_81._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Filters')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_81._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSets')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_81._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioSecondaryDataModel.xsd', 99, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_81._Automaton = _BuildAutomaton_121()
+
+
+
+
+def _BuildAutomaton_122 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_122
+    del _BuildAutomaton_122
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 26, 5))
+    counters.add(cc_3)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_82._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_82._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 106, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_82._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Filters')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_82._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSets')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_82._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 26, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_82._Automaton = _BuildAutomaton_122()
+
+
+
+
+def _BuildAutomaton_123 ():
+    # Remove this helper function from the namespace after it is invoked
+    global _BuildAutomaton_123
+    del _BuildAutomaton_123
+    import pyxb.utils.fac as fac
+
+    counters = set()
+    cc_0 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    counters.add(cc_0)
+    cc_1 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    counters.add(cc_1)
+    cc_2 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    counters.add(cc_2)
+    cc_3 = fac.CounterCondition(min=0, max=1, metadata=pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 26, 5))
+    counters.add(cc_3)
+    states = []
+    final_update = None
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_83._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Extensions')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioBaseDataModel.xsd', 57, 3))
+    st_0 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_0)
+    final_update = set()
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_83._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'ExternalResources')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 106, 5))
+    st_1 = fac.State(symbol, is_initial=True, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_1)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_1, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_83._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'Filters')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 107, 5))
+    st_2 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_2)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_2, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_83._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSets')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 114, 5))
+    st_3 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_3)
+    final_update = set()
+    final_update.add(fac.UpdateInstruction(cc_3, False))
+    symbol = pyxb.binding.content.ElementUse(CTD_ANON_83._UseForTag(pyxb.namespace.ExpandedName(Namespace, 'DataSetMetadata')), pyxb.utils.utility.Location('/tmp/tmpl4vgfXxsds/PacBioCollectionMetadata.xsd', 26, 5))
+    st_4 = fac.State(symbol, is_initial=False, final_update=final_update, is_unordered_catenation=False)
+    states.append(st_4)
+    transitions = []
+    transitions.append(fac.Transition(st_0, [
+        fac.UpdateInstruction(cc_0, True) ]))
+    transitions.append(fac.Transition(st_1, [
+        fac.UpdateInstruction(cc_0, False) ]))
+    st_0._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+         ]))
+    transitions.append(fac.Transition(st_3, [
+         ]))
+    transitions.append(fac.Transition(st_4, [
+         ]))
+    st_1._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_2, [
+        fac.UpdateInstruction(cc_1, True) ]))
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_1, False) ]))
+    st_2._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_3, [
+        fac.UpdateInstruction(cc_2, True) ]))
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_2, False) ]))
+    st_3._set_transitionSet(transitions)
+    transitions = []
+    transitions.append(fac.Transition(st_4, [
+        fac.UpdateInstruction(cc_3, True) ]))
+    st_4._set_transitionSet(transitions)
+    return fac.Automaton(states, counters, False, containing_state=None)
+CTD_ANON_83._Automaton = _BuildAutomaton_123()
+
diff --git a/pbcore/io/dataset/EntryPoints.py b/pbcore/io/dataset/EntryPoints.py
new file mode 100755
index 0000000..d212288
--- /dev/null
+++ b/pbcore/io/dataset/EntryPoints.py
@@ -0,0 +1,170 @@
+#/usr/bin/env python
+
+import os
+import argparse
+from pbcore.io import DataSet
+from pbcore.io.dataset.DataSetValidator import validateFile
+import logging
+
+log = logging.getLogger(__name__)
+
+def createXml(args):
+    dset = DataSet(*args.infile)
+    log.debug("Dataset created")
+    dset = dset.copy(asType=args.dsType)
+    log.debug("Dataset cast")
+    dset.write(args.outfile, validate=args.novalidate, relPaths=args.relative)
+    log.debug("Dataset written")
+
+
+def create_options(parser):
+    parser.description = 'Create an XML file from a fofn or bam'
+    parser.add_argument("outfile", type=str, help="The XML to create")
+    #parser.add_argument("infile", type=validate_file, nargs='+',
+    parser.add_argument("infile", type=str, nargs='+',
+                        help="The fofn or BAM file(s) to make into an XML")
+    parser.add_argument("--type", type=str, default='DataSet',
+                        dest='dsType', help="The type of XML to create")
+    parser.add_argument("--novalidate", action='store_false', default=True,
+                        help=("Don't validate the resulting XML, don't touch "
+                              "paths"))
+    parser.add_argument("--relative", action='store_true', default=False,
+                        help=("Make the included paths relative instead of "
+                              "absolute (not compatible with --novalidate)"))
+    parser.set_defaults(func=createXml)
+
+def filterXml(args):
+    log.error("Filtering is temporarily out of order")
+    exit(1)
+    if args.infile.endswith('xml'):
+        dataSet = DataSet(args.infile)
+        filters = []
+        separators = ['<=', '>=', '!=', '==', '>', '<', '=']
+        for filt in args.filters:
+            for sep in separators:
+                if sep in filt:
+                    param, condition = filt.split(sep)
+                    condition = sep + condition
+                    filters[param] = condition
+                    break
+        dataSet.addFilters([filters])
+        log.info("{i} filters added".format(i=len(filters)))
+        dataSet.write(args.outfile)
+    else:
+        raise IOError("No files found/found to be compatible")
+
+def filter_options(parser):
+    parser.description = 'Add filters to an XML file'
+    #parser.add_argument("infile", type=validate_file,
+    parser.add_argument("infile", type=str,
+                        help="The xml file to filter")
+    parser.add_argument("outfile", type=str, help="The resulting xml file")
+    parser.add_argument("filters", type=str, nargs='+',
+                        help="The values and thresholds to filter (e.g. "
+                        "rq>0.85)")
+    parser.set_defaults(func=filterXml)
+
+def splitXml(args):
+    log.debug("Starting split")
+    dataSet = DataSet(args.infile)
+    chunks = len(args.outfiles)
+    if args.chunks:
+        chunks = args.chunks
+    dss = dataSet.split(chunks=chunks,
+                        ignoreSubDatasets=(not args.subdatasets),
+                        contigs=args.contigs)
+    infix = 'chunk{i}'
+    if args.contigs:
+        infix += 'contigs'
+    if not args.outfiles:
+        if not args.outdir:
+            args.outfiles = ['.'.join(args.infile.split('.')[:-1] +
+                                      [infix.format(i=chNum), 'xml'])
+                             for chNum in range(len(dss))]
+        else:
+            args.outfiles = ['.'.join(args.infile.split('.')[:-1] +
+                                      [infix.format(i=chNum), 'xml'])
+                             for chNum in range(len(dss))]
+            args.outfiles = [os.path.join(args.outdir,
+                                          os.path.basename(outfn))
+                             for outfn in args.outfiles]
+    log.debug("Finished splitting")
+    for out_fn, dset in zip(args.outfiles, dss):
+        dset.write(out_fn)
+
+def split_options(parser):
+    parser.description = "Split the dataset"
+    parser.add_argument("infile", type=str,
+                        help="The xml file to split")
+    parser.add_argument("--contigs", default=False, action='store_true',
+                        help="Split on contigs")
+    parser.add_argument("--chunks", default=False, type=int,
+                        help="Split contigs into <chunks> total windows")
+    parser.add_argument("--subdatasets", default=False, action='store_true',
+                        help="Split on subdatasets")
+    parser.add_argument("--outdir", default=False, type=str,
+                        help="Specify an output directory")
+    parser.add_argument("outfiles", nargs=argparse.REMAINDER,
+                        type=str, help="The resulting xml files")
+    parser.set_defaults(func=splitXml)
+
+def mergeXml(args):
+    dss = []
+    for infn in args.infiles:
+        dss.append(DataSet(infn))
+    reduce(lambda ds1, ds2: ds1 + ds2, dss).write(args.outfile)
+
+def merge_options(parser):
+    parser.description = 'Combine XML (and BAM) files'
+    parser.add_argument("outfile", type=str,
+                        help="The resulting XML file")
+    #parser.add_argument("infiles", type=validate_file, nargs='+',
+    parser.add_argument("infiles", type=str, nargs='+',
+                        help="The XML files to merge")
+    parser.set_defaults(func=mergeXml)
+
+def loadStatsXml(args):
+    dset = DataSet(args.infile)
+    dset.loadStats(args.statsfile)
+    if args.outfile:
+        dset.write(args.outfile, validate=False)
+    else:
+        dset.write(args.infile, validate=False)
+
+def loadStatsXml_options(parser):
+    parser.description = 'Load an sts.xml file into a DataSet XML file'
+    parser.add_argument("infile", type=str,
+                        help="The XML file to modify")
+    parser.add_argument("statsfile", type=str,
+                        help="The .sts.xml file to load")
+    parser.add_argument("--outfile", type=str, default=None,
+                        help="The XML file to output")
+    parser.set_defaults(func=loadStatsXml)
+
+def validateXml(args):
+    validateFile(args.infile)
+    print("{f} is valid DataSet XML with valid ResourceId "
+          "references".format(f=args.infile))
+
+def validate_options(parser):
+    parser.description = 'Validate XML and ResourceId files'
+    #parser.add_argument("infile", type=validate_file,
+    parser.add_argument("infile", type=str,
+                        help="The XML file to validate")
+    parser.set_defaults(func=validateXml)
+
+def consolidateXml(args):
+    """Combine BAMs and apply the filters described in the XML file, producing
+    one consolidated XML"""
+    raise NotImplementedError(
+        "Consolidation requires sequence file manipulation, which may never "
+        "be in the scope of this API")
+
+def consolidate_options(parser):
+    parser.description = 'Consolidate the XML files'
+    #parser.add_argument("infile", type=validate_file,
+    parser.add_argument("infile", type=str,
+                        help="The XML file to consolidate")
+    parser.add_argument("outfile", type=str,
+                        help="The resulting XML file")
+    parser.set_defaults(func=consolidateXml)
diff --git a/pbcore/io/dataset/__init__.py b/pbcore/io/dataset/__init__.py
new file mode 100755
index 0000000..cf9a7b5
--- /dev/null
+++ b/pbcore/io/dataset/__init__.py
@@ -0,0 +1,23 @@
+
+VERSION = (0, 1)
+
+from DataSetIO import *
+
+import logging
+
+log = logging.getLogger(__name__)
+if not log.handlers:
+    log.addHandler(logging.NullHandler())
+
+#def get_version():
+#    """Return the version as a string. e.g. "0.7"
+#
+#    This uses a major.minor format
+#
+#    Each python module of the system (e.g, butler, detective, siv_butler.py)
+#    will use this version +  individual changelist. This allows top level
+#    versioning, and sub-component to be versioned based on a p4 changelist.
+#
+#    .. note:: This should be improved to be compliant with PEP 440.
+#    """
+#    return ".".join([str(i) for i in VERSION])
diff --git a/pbcore/io/opener.py b/pbcore/io/opener.py
index 094b173..96031cd 100644
--- a/pbcore/io/opener.py
+++ b/pbcore/io/opener.py
@@ -31,16 +31,15 @@
 
 __all__ = [ "openAlignmentFile",
             "openIndexedAlignmentFile",
-            "openFasta",
-            "openIndexedFasta",
             "entryPoint" ]
 
-from pbcore.io import (FastaTable, FastaReader,
+from pbcore.io import (IndexedFastaReader, FastaReader,
                        BaxH5Reader, BasH5Reader, BasH5Collection,
                        CmpH5Reader, BamReader, IndexedBamReader,
-                       GffReader, FastqReader)
+                       GffReader, FastqReader,
+                       PacBioBamIndex)
 
-def openIndexedAlignmentFile(fname, referenceFasta=None):
+def openIndexedAlignmentFile(fname, referenceFastaFname=None, sharedIndex=None):
     """
     Factory function to get a handle to a reader for an alignment file
     (cmp.h5 or BAM), requiring index capability (built-in for cmp.h5;
@@ -50,52 +49,35 @@ def openIndexedAlignmentFile(fname, referenceFasta=None):
     (fasta.fai).
     """
     if fname.endswith("cmp.h5"):
-        return CmpH5Reader(fname)
+        return CmpH5Reader(fname, sharedIndex=sharedIndex)
     elif fname.endswith("bam"):
-        return IndexedBamReader(fname, referenceFasta)
+        return IndexedBamReader(fname, referenceFastaFname=referenceFastaFname, sharedIndex=sharedIndex)
     else:
         raise ValueError, "Invalid alignment file suffix"
 
-def openAlignmentFile(fname, referenceFasta=None):
+def openAlignmentFile(fname, referenceFastaFname=None, sharedIndex=None):
     """
     Factory function to get a handle to a reader for an alignment file
     (cmp.h5 or BAM), not requiring index capability
+
+    (A `sharedIndex` can still be passed for opening a cmp.h5, for which
+    the index is compulsory.)
     """
     if fname.endswith("cmp.h5"):
-        return CmpH5Reader(fname)
+        return CmpH5Reader(fname, sharedIndex=sharedIndex)
     elif fname.endswith("bam"):
-        try:
-            return IndexedBamReader(fname, referenceFasta)
-        except IOError:
-            return BamReader(fname, referenceFasta)
-
-def openIndexedFasta(fname):
-    """
-    Factory function to get a handle to a FASTA reader, requiring
-    random access capability via the fasta.fai index.
-    """
-    return FastaTable(fname)
+        return BamReader(fname, referenceFastaFname)
 
-def openFasta(fname):
-    """
-    Factory function to get a handle to a FASTA reader, requiring only
-    iteration over the contigs.
-    """
-    try:
-        return FastaTable(fname)
-    except IOError:
-        # TODO: would be better to have a more specific error type
-        return FastaReader(fname)
-
-def _openerFor(ext):
-    if   ext == "gff":           return GffReader
-    elif ext in ("fq", "fastq"): return FastqReader
-    elif ext in ("fa", "fasta"): return openFasta
-    elif ext == "cmp.h5":        return CmpH5Reader
-    elif ext == "bas.h5":        return BasH5Reader
-    elif ext == "bax.h5":        return BaxH5Reader
-    elif ext == "fofn":          return BasH5Collection
-    elif ext == "bam":           return openAlignmentFile
+def _openersFor(ext):
+    if   ext == "gff":           return (GffReader,)
+    elif ext in ("fq", "fastq"): return (FastqReader,)
+    elif ext in ("fa", "fasta"): return (IndexedFastaReader, FastaReader)
+    elif ext == "cmp.h5":        return (CmpH5Reader,)
+    elif ext == "bas.h5":        return (BasH5Reader,)
+    elif ext == "bax.h5":        return (BaxH5Reader,)
+    elif ext == "fofn":          return (BasH5Collection,)
+    elif ext == "bam":           return (IndexedBamReader, BamReader)
+    elif ext == "pbi":           return (PacBioBamIndex,)
     else:
         raise ValueError, ("No known opener class for extension %s" % ext)
 
@@ -108,15 +90,24 @@ def _extension(fname):
 
 def _openAny(fname, *extraArgs):
     ext = _extension(fname)
-    opener = _openerFor(ext)
-    return opener(fname, *extraArgs)
+    openers = _openersFor(ext)
+    lastException = None
+    for opener in openers:
+        try:
+            f = opener(fname, *extraArgs)
+            return f
+        except IOError as e:
+            lastException = e
+    else:
+        assert lastException is not None
+        raise lastException
 
 def entryPoint():
     """
     This entry point (callable from the command line as ".open")
     provides a convenient way to load up a data file for inspection.
     """
-    import sys, code
+    import sys, code, numpy as np
 
     if len(sys.argv) < 2:
         print "Requires at least one argument!"
diff --git a/pbcore/sequence.py b/pbcore/sequence.py
index b3aa1b1..68a1e38 100644
--- a/pbcore/sequence.py
+++ b/pbcore/sequence.py
@@ -37,7 +37,8 @@ __all__ = [ "complement",
 from string import maketrans
 import re
 
-DNA_COMPLEMENT = maketrans('agctAGCT-N', 'tcgaTCGA-N')
+DNA_COMPLEMENT = maketrans('agcturyswkmbdhvnAGCTURYSWKMBDHV-N',
+                           'tcgannnnnnnnnnnnTCGANNNNNNNNNNN-N')
 
 def reverse( sequence ):
     """Return the reverse of any sequence
@@ -47,11 +48,10 @@ def reverse( sequence ):
 def complement( sequence ):
     """
     Return the complement of a sequence
-    NOTE: This only currently supports DNA
     """
-    if re.search('[^AGCTNagctn-]', sequence):
+    if re.search('[^agcturyswkmbdhvnAGCTURYSWKMBDHVN-]', sequence):
         raise ValueError("Sequence contains invalid DNA characters - "
-                         "only [AGCTN-] allowed")
+                         "only standard IUPAC nucleotide codes allowed")
     return sequence.translate( DNA_COMPLEMENT )
 
 def reverseComplement( sequence ):
diff --git a/requirements-dev.txt b/requirements-dev.txt
new file mode 100644
index 0000000..80e9144
--- /dev/null
+++ b/requirements-dev.txt
@@ -0,0 +1,3 @@
+-r requirements.txt
+sphinx
+nose
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..442bf70
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,4 @@
+cython
+numpy >= 1.7.1
+h5py >= 2.0.1
+pysam >= 0.8.1
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..b88034e
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,2 @@
+[metadata]
+description-file = README.md
diff --git a/setup.py b/setup.py
index 4f5c568..084ece4 100755
--- a/setup.py
+++ b/setup.py
@@ -1,3 +1,6 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
 from setuptools import setup, Extension, find_packages
 import sys
 
@@ -14,6 +17,7 @@ setup(
     version=__VERSION__,
     author='Pacific Biosciences',
     author_email='devnet at pacificbiosciences.com',
+    description="A Python library for reading and writing PacBio® data files",
     license=open('LICENSES.txt').read(),
     packages = find_packages('.'),
     package_dir = {'':'.'},
@@ -21,12 +25,15 @@ setup(
                                'data/*.fasta.fai', 'data/*.fofn', 'data/*.m4',
                                'data/*.fa', 'data/*.fa.fai',
                                'data/*.m5', 'data/*.bam', 'data/*.bam.bai', "data/*.bam.pbi",
-                               'chemistry/resources/*.xml']
+                               'chemistry/resources/*.xml',
+                               'data/datasets/*.*',
+                               'data/datasets/yieldtest/*.*']
                                },
     zip_safe = False,
     entry_points = { "console_scripts" : [ ".open = pbcore.io.opener:entryPoint" ] },
+    scripts=['bin/dataset.py'],
     install_requires=[
         'h5py >= 2.0.1',
-        'numpy >= 1.6.0',
-        'pysam == 0.8.1'
+        'numpy >= 1.7.1',
+        'pysam >= 0.8.1'
     ])
diff --git a/tests/test_pbcore_extract_bam_sequence.py b/tests/test_pbcore_extract_bam_sequence.py
new file mode 100644
index 0000000..cc516fd
--- /dev/null
+++ b/tests/test_pbcore_extract_bam_sequence.py
@@ -0,0 +1,63 @@
+
+"""
+A corner case: reference sequence contains IUPAC ambiguous nucleotide
+characters, which we allow.  This test ensures that we can extract the
+transcript from a BAM alignment file, specifically when the reverse complement
+is needed.
+"""
+
+import pbcore.io
+import pysam
+import tempfile
+import unittest
+import shutil
+import os
+
+sam_str_ = """\
+ at HD	VN:1.5\tSO:coordinate\tpb:3.0b7
+ at SQ\tSN:genome\tLN:28\tM5:734d5f3b2859595f4bd87a2fe6b7389b
+ at RG\tID:1\tPL:PACBIO\tDS:READTYPE=SUBREAD;DeletionQV=dq;DeletionTag=dt;InsertionQV=iq;MergeQV=mq;SubstitutionQV=sq;Ipd=ip;BASECALLERVERSION=2.0.1.0.123678;FRAMERATEHZ=75.000000;BINDINGKIT=foo;SEQUENCINGKIT=bar\tPU:movie1
+ at PG\tID:bax2bam-0.0.2\tPN:bax2bam\tVN:0.0.2\tDS:bax2bam
+movie1/54130/0_10\t16\tgenome\t12\t30\t10=\t*\t0\t-28\tTCTCAGGAGA\t*\tRG:Z:1\tdq:Z:2222'$22'2\tdt:Z:NNNNAGNNGN\tip:B:C,255,2,0,10,22,34,0,2,3,0,16\tiq:Z:(+#1'$#*1&\tmq:Z:&1~51*5&~2\tnp:i:1\tqe:i:10\tqs:i:0\trq:i:854\tsn:B:f,-1,-1,-1,-1\tsq:Z:<32<4<<<<3\tzm:i:54130\tAS:i:-3020\tNM:i:134\tcx:i:2"""
+
+fasta_str = """\
+>genome
+AAAATGASGAGATCARAATGASGAGATC"""
+fai_str = """genome  28      8       28      29"""
+
+class TestCase (unittest.TestCase):
+    def setUp (self):
+        f = open("tst_pbcore.sam", "w")
+        f.write(sam_str_)
+        f.close()
+        # convert to bam using pysam
+        sam_in = pysam.AlignmentFile("tst_pbcore.sam", "r")
+        bam_out = pysam.AlignmentFile("tst_pbcore.bam", "wb",
+            template=sam_in)
+        for s in sam_in:
+            bam_out.write(s)
+        bam_out.close()
+        open("tst_pbcore.fa", "w").write(fasta_str)
+        open("tst_pbcore.fa.fai", "w").write(fai_str)
+
+    def tearDown (self):
+        os.remove("tst_pbcore.sam")
+        os.remove("tst_pbcore.bam")
+        os.remove("tst_pbcore.fa")
+        os.remove("tst_pbcore.fa.fai")
+
+    def test_reverse_complement (self):
+        bam_file = pbcore.io.BamReader("tst_pbcore.bam",
+            referenceFastaFname="tst_pbcore.fa")
+        for aln in bam_file:
+            seq = aln.transcript()
+
+if __name__ == "__main__":
+    tmp_dir = tempfile.mkdtemp()
+    cwd = os.getcwd()
+    os.chdir(tmp_dir)
+    try:
+        unittest.main()
+    finally:
+        os.chdir(cwd)
+        shutil.rmtree(tmp_dir)
diff --git a/tests/test_pbcore_io_AlnFileReaders.py b/tests/test_pbcore_io_AlnFileReaders.py
index 2ac62c5..df5980f 100644
--- a/tests/test_pbcore_io_AlnFileReaders.py
+++ b/tests/test_pbcore_io_AlnFileReaders.py
@@ -12,6 +12,7 @@ from collections import Counter
 
 from pbcore import data
 from pbcore.io import CmpH5Reader, BamReader, IndexedBamReader
+from pbcore.io.align._BamSupport import UnavailableFeature
 from pbcore.sequence import reverseComplement as RC
 from pbcore.chemistry import ChemistryLookupError
 
@@ -31,13 +32,13 @@ class _BasicAlnFileReaderTests(object):
     def __init__(self):
         self.f = self.READER_CONSTRUCTOR(*self.CONSTRUCTOR_ARGS)
         self.alns = list(self.f)
-        self.fwdAln = self.alns[70]
-        self.revAln = self.alns[71]
+        self.fwdAln = self.alns[1]
+        self.revAln = self.alns[105]
 
     def testBasicOperations(self):
         EQ(False, self.f.isEmpty)
         EQ(True,  self.f.isSorted)
-        EQ(115,   len(self.f))
+        EQ(112,   len(self.f))
 
     def testStrandOrientation(self):
         EQ(True,  self.fwdAln.isForwardStrand)
@@ -46,96 +47,135 @@ class _BasicAlnFileReaderTests(object):
         EQ(True,  self.revAln.isReverseStrand)
 
     def testReadName(self):
-        EQ("m140905_042212_sidney_c100564852550000001823085912221377_s1_X0/7957/9681_9727",
+        EQ("m140905_042212_sidney_c100564852550000001823085912221377_s1_X0/32328/1_344",
            self.fwdAln.readName)
-        EQ("m140905_042212_sidney_c100564852550000001823085912221377_s1_X0/7957/9561_9619",
+        EQ("m140905_042212_sidney_c100564852550000001823085912221377_s1_X0/51534/1_200",
            self.revAln.readName)
 
     def testAlignedRead(self):
-        expectedFwdNative = "TACGGTCATCATCTGACACTACAGACTCTGGCATCGCTGTGAAGAC"
+        expectedFwdNative = "GCCGCGAT-GATGAAAACTGATACCGGGGTTGCTGAGTGAATATATCGAACAGTCAGGTT-ACAGGCTGCGGCATTTTGTCCGCGCC-GGCTTCGCTCACTGTTCAGGCCGGAG-CACAGACCGCCGTTGAAATGGGCGGATGCTAATTACTATCTCCCGAAAGAAT-CGC-TACCAGGAAGGGCGATGGGAAACACTGCCCTTTCAGCGGG-CATCATGAATGCGATGGGCAGCGACTACATCCGTGAGGT-AATGTGGTGAAGTCTG-CCGTGTCGGTTATTCCAAAATGCTGCTGGGTG-TTATGCCT-CGTTTATAGAGCATAAGCAGCGCAACA-CCTTATCTGGTTGCC"
         EQ(expectedFwdNative, self.fwdAln.read(aligned=True))
         EQ(expectedFwdNative, self.fwdAln.read())
         EQ(expectedFwdNative, self.fwdAln.read(orientation="genomic"))
-        expectedRevNative = "CTTGTGAAAATGCTGAATTCT-GCGTCG-CTTCACCAGCGATGCCA-AGTCTGTAGTGTCA"
+        expectedRevNative = "TAGCCACCGGATATCACCACAGGTGAGGCCGTGTAAGTTG-AGGTTTTTCTACGTCAGATTCTTTTGGGATTGGGCTTGGGTTTATTTCCTGGTGCGTTTCGTT-GAAGGTATTTGCAGTTTTCGCAGATTATGCCTCCGGTGATACTTCGTCGCTGTCTCGCCACACGTCCTCCTTTTCCTGCGGTAGTGGTAACACCCC"
         EQ(expectedRevNative, self.revAln.read(aligned=True))
         EQ(expectedRevNative, self.revAln.read())
         EQ(RC(expectedRevNative), self.revAln.read(orientation="genomic"))
 
     def testUnalignedRead(self):
-        expectedFwdNative = "TACGGTCATCATCTGACACTACAGACTCTGGCATCGCTGTGAAGAC"
+        expectedFwdNative = 'GCCGCGATGATGAAAACTGATACCGGGGTTGCTGAGTGAATATATCGAACAGTCAGGTTACAGGCTGCGGCATTTTGTCCGCGCCGGCTTCGCTCACTGTTCAGGCCGGAGCACAGACCGCCGTTGAAATGGGCGGATGCTAATTACTATCTCCCGAAAGAATCGCTACCAGGAAGGGCGATGGGAAACACTGCCCTTTCAGCGGGCATCATGAATGCGATGGGCAGCGACTACATCCGTGAGGTAATGTGGTGAAGTCTGCCGTGTCGGTTATTCCAAAATGCTGCTGGGTGTTATGCCTCGTTTATAGAGCATAAGCAGCGCAACACCTTATCTGGTTGCC'
         EQ(expectedFwdNative, self.fwdAln.read(aligned=False))
         EQ(expectedFwdNative, self.fwdAln.read(aligned=False, orientation="genomic"))
-        expectedRevNative = "CTTGTGAAAATGCTGAATTCTGCGTCGCTTCACCAGCGATGCCAAGTCTGTAGTGTCA"
+        expectedRevNative = "TAGCCACCGGATATCACCACAGGTGAGGCCGTGTAAGTTGAGGTTTTTCTACGTCAGATTCTTTTGGGATTGGGCTTGGGTTTATTTCCTGGTGCGTTTCGTTGAAGGTATTTGCAGTTTTCGCAGATTATGCCTCCGGTGATACTTCGTCGCTGTCTCGCCACACGTCCTCCTTTTCCTGCGGTAGTGGTAACACCCC"
         EQ(expectedRevNative, self.revAln.read(aligned=False))
         EQ(RC(expectedRevNative), self.revAln.read(aligned=False, orientation="genomic"))
 
     def testAlignedReference(self):
-        expectedFwdNative = "TACGGTCATCATCTGACACTACAGACTCTGGCATCGCTGTGAAGAC"
+        expectedFwdNative = 'GCCGCGCTGGATG--AACTGATACCGGGGTTGCTGAGTGAATATATCGAACAGTCAGGTTAACAGGCTGCGGCATTTTGTCCGCGCCGGGCTTCGCTCACTGTTCAGGCCGGAGCCACAGACCGCCGTTG-AATGGGCGGATGCTAATTACTATCTCCCGAAAGAATCCGCATACCAGGAAGGGCGCTGGGAAACACTGCCCTTTCAGCGGGCCATCATGAATGCGATGGGCAGCGACTACATCCGTGAGGTGAATGTGGTGAAGTCTGCCCGTGTCGGTTATTCCAAAATGCTGCTGGGTGTTTATGCCTAC-TTTATAGAGCATAAGCAGCGCAACACCCTTATCTGGTTGCC'
         EQ(expectedFwdNative, self.fwdAln.reference(aligned=True))
         EQ(expectedFwdNative, self.fwdAln.reference())
         EQ(expectedFwdNative, self.fwdAln.reference(orientation="genomic"))
-        expectedRevNative = "CTTGTGAAAATGCTGAATT-TCGCGTCGTCTTCA-CAGCGATGCCAGAGTCTGTAGTGTCA"
+        expectedRevNative = 'TAGCCACCGGATATC-CCACAGGTGA-GCCGTGT-AGTTGAAGG-TTTT-TACGTCAGATTCTTTTGGGATT-GGCTTGGGTTTATTT-CTGGTGCGTTTCGTTGGAAGGTATTTGCAGTTTTCGCAGATTATG--T-CGGTGATACTTCGTCGCTGTCTCGCCACACGTCCTCCTTTTCCTGCGGTAGTGGTAACACCCC'
         EQ(expectedRevNative, self.revAln.reference(aligned=True))
         EQ(expectedRevNative, self.revAln.reference())
         EQ(RC(expectedRevNative), self.revAln.reference(orientation="genomic"))
 
     def testUnalignedReference(self):
-        expectedFwdNative = "TACGGTCATCATCTGACACTACAGACTCTGGCATCGCTGTGAAGAC"
+        expectedFwdNative = "GCCGCGCTGGATGAACTGATACCGGGGTTGCTGAGTGAATATATCGAACAGTCAGGTTAACAGGCTGCGGCATTTTGTCCGCGCCGGGCTTCGCTCACTGTTCAGGCCGGAGCCACAGACCGCCGTTGAATGGGCGGATGCTAATTACTATCTCCCGAAAGAATCCGCATACCAGGAAGGGCGCTGGGAAACACTGCCCTTTCAGCGGGCCATCATGAATGCGATGGGCAGCGACTACATCCGTGAGGTGAATGTGGTGAAGTCTGCCCGTGTCGGTTATTCCAAAATGCTGCTGGGTGTTTATGCCTACTTTATAGAGCATAAGCAGCGCAACACCCTTATCTGGTTGCC"
         EQ(expectedFwdNative, self.fwdAln.reference(aligned=False))
         EQ(expectedFwdNative, self.fwdAln.reference(aligned=False, orientation="genomic"))
-        expectedRevNative = "CTTGTGAAAATGCTGAATTTCGCGTCGTCTTCACAGCGATGCCAGAGTCTGTAGTGTCA"
+        expectedRevNative = "TAGCCACCGGATATCCCACAGGTGAGCCGTGTAGTTGAAGGTTTTTACGTCAGATTCTTTTGGGATTGGCTTGGGTTTATTTCTGGTGCGTTTCGTTGGAAGGTATTTGCAGTTTTCGCAGATTATGTCGGTGATACTTCGTCGCTGTCTCGCCACACGTCCTCCTTTTCCTGCGGTAGTGGTAACACCCC"
         EQ(expectedRevNative, self.revAln.reference(aligned=False))
         EQ(RC(expectedRevNative), self.revAln.reference(aligned=False, orientation="genomic"))
 
     def testDeletionQV(self):
-        expectedFwdNative = [ 17,  17,   7,  17,  17,   6,  17,  17,  17,  17,  17,  17,  17,
-                              17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,
-                              17,  17,  17,  17,  17,  17,   7,  17,  17,  17,  17,  17,  17,
-                              17,  17,  17,  17,  17,  17,  17 ]
+        expectedFwdNative = (
+            [ 17, 17, 17, 17, 17, 17, 17, 17,255,  4, 17, 17, 17,  8, 17, 17, 17, 17,
+              17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+              17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 10,  8, 17,
+              17, 17, 17, 17, 17, 17,255, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+              17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,255, 17, 17,
+              17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+              17, 17, 17, 17, 17, 17,255, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+              17, 17, 17, 17, 17,  6, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+              17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 11, 17, 17, 17, 17,
+              17, 17, 17, 17, 17,255, 17, 17, 17,255, 17, 17, 17, 17, 17, 17, 17, 17,
+              17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+              17, 11, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,255, 17, 17, 17,
+              17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+              17, 17, 17, 17,  7, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+              255,  8, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,255,
+              17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+              17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,255, 17, 17, 17,
+              17, 17, 17, 17, 17,255, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+              17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,255, 17, 17,
+              17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17] )
+
         AEQ(expectedFwdNative, self.fwdAln.DeletionQV(aligned=True))
         AEQ(expectedFwdNative, self.fwdAln.DeletionQV())
         AEQ(expectedFwdNative, self.fwdAln.DeletionQV(orientation="genomic"))
 
-        expectedRevNative = [ 17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,
-                              17,  17,  17,  17,  17,  17,  17,  17, 255,   7,  17,  17,  17,
-                              17,  17, 255,   6,  17,  17,  17,  17,  17,  17,  17,  17,  17,
-                              17,  17,  17,  17,  17,  17,  17, 255,  17,  17,  17,  17,  17,
-                              17,  17,  17,  17,  17,  17,  17,  17,  17 ]
+        expectedRevNative = (
+            [ 17, 17, 17, 17, 6, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+            17, 17, 17, 17, 17, 6, 17, 17, 17, 17, 17, 17, 6, 17, 17,
+            17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 255, 10, 17,
+            17, 17, 17, 17, 8, 9, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+            17, 17, 17, 17, 17, 10, 17, 17, 17, 17, 17, 17, 17, 17,
+            17, 17, 17, 17, 17, 17, 17, 17, 8, 17, 17, 17, 17, 17, 17,
+            17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+            17, 7, 17, 255, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+            17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+            17, 17, 9, 17, 17, 5, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+            17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+            17, 17, 17, 7, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+            17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+            17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17 ] )
+
+        print self.revAln.DeletionQV(aligned=True)
         AEQ(expectedRevNative, self.revAln.DeletionQV(aligned=True))
         AEQ(expectedRevNative, self.revAln.DeletionQV())
         AEQ(expectedRevNative[::-1], self.revAln.DeletionQV(orientation="genomic"))
 
 
-    # def testInsertionQV(self):
-    #     pass
+        #     # def testInsertionQV(self):
+        #     #     pass
+
+        #     # def testSubstitutionQV(self):
+        #     #     pass
+
+        #     # def testIPD(self):
+        #     #     pass
+
 
-    # def testSubstitutionQV(self):
-    #     pass
 
-    # def testIPD(self):
-    #     pass
+        #     def testDeletionTag(self):
+        #         expectedFwdNative = [78, 78, 84, 78, 78, 67, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+        #                              78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 65, 78,
+        #                              78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78]
+        #         AEQ(expectedFwdNative, self.fwdAln.DeletionTag(aligned=True))
+        #         AEQ(expectedFwdNative, self.fwdAln.DeletionTag())
+        #         AEQ(expectedFwdNative, self.fwdAln.DeletionTag(orientation="genomic"))
 
-    def testDeletionTag(self):
-        expectedFwdNative = [78, 78, 84, 78, 78, 67, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
-                             78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 65, 78,
-                             78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78]
-        AEQ(expectedFwdNative, self.fwdAln.DeletionTag(aligned=True))
-        AEQ(expectedFwdNative, self.fwdAln.DeletionTag())
-        AEQ(expectedFwdNative, self.fwdAln.DeletionTag(orientation="genomic"))
+        #         expectedRevNative = [78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+        #                              78, 78, 78, 78, 45, 67, 78, 78, 78, 78, 78, 45, 84, 78, 78, 78, 78,
+        #                              78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 45, 78, 78, 78, 78,
+        #                              78, 78, 78, 78, 78, 78, 78, 78, 78, 78]
+        #         AEQ(expectedRevNative, self.revAln.DeletionTag(aligned=True))
+        #         AEQ(expectedRevNative, self.revAln.DeletionTag())
 
-        expectedRevNative = [78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
-                             78, 78, 78, 78, 45, 67, 78, 78, 78, 78, 78, 45, 84, 78, 78, 78, 78,
-                             78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 45, 78, 78, 78, 78,
-                             78, 78, 78, 78, 78, 78, 78, 78, 78, 78]
-        AEQ(expectedRevNative, self.revAln.DeletionTag(aligned=True))
-        AEQ(expectedRevNative, self.revAln.DeletionTag())
+        #         # TODO: what is the correct behavior here?
+        #         #AEQ(expectedRevNative[::-1], self.revAln.DeletionTag(orientation="genomic"))
 
-        # TODO: what is the correct behavior here?
-        #AEQ(expectedRevNative[::-1], self.revAln.DeletionTag(orientation="genomic"))
+    def testTranscript(self):
+        EQ('MMMMMMRMDMMMMIIMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMDMMMMMMMMMMMMMMMMMMMMMMMMMMDMMMMMMMMMMMMMMMMMMMMMMMMMMDMMMMMMMMMMMMMMMIMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMDMMMDMMMMMMMMMMMMMMRMMMMMMMMMMMMMMMMMMMMMMMMMDMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMDMMMMMMMMMMMMMMMMDMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMDMMMMMMMMDMIMMMMMMMMMMMMMMMMMMMMMMMMMDMMMMMMMMMMMMMMM',
+           self.fwdAln.transcript())
+
+        EQ("MMMMMMMMMMMMMMMIMMMMMMMMMMIMMMMMMMIMMMMMDMMMIMMMMIMMMMMMMMMMMMMMMMMMMMMMIMMMMMMMMMMMMMMMIMMMMMMMMMMMMMMMDMMMMMMMMMMMMMMMMMMMMMMMMMMMMMIIMIMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",
+           self.revAln.transcript())
 
     def testClippedAlignments(self):
         # Get a more interesting (more gappy) fwd strand aln
-        a = self.alns[2]
+        a = self.fwdAln
         EQ([(980, 'C', 'C'),
             (981, 'C', 'C'),
             (982, 'T', 'T'),
@@ -169,68 +209,68 @@ class _BasicAlnFileReaderTests(object):
         EQ([(984, 'C', 'C')],
            zip(ac3.referencePositions(), ac3.reference(), ac3.read()))
 
-        # Get a more interesting (more gappy) rev strand aln
-        b = self.alns[3]
-        EQ([(2216, 'G', 'G'),
-            (2215, 'G', 'G'),
-            (2214, '-', 'C'),
-            (2214, 'C', 'C'),
-            (2213, 'A', 'A'),
-            (2212, 'T', 'T'),
-            (2211, 'G', 'G'),
-            (2210, 'C', 'C'),
-            (2209, 'T', 'T'),
-            (2208, 'G', '-'),
-            (2207, 'G', 'G'),
-            (2206, 'C', 'C')],
-           zip(b.referencePositions(), b.reference(), b.read())[188:200])
-
-        bc1 = b.clippedTo(2208, 2214)
-        EQ([(2213, 'A', 'A'),
-            (2212, 'T', 'T'),
-            (2211, 'G', 'G'),
-            (2210, 'C', 'C'),
-            (2209, 'T', 'T'),
-            (2208, 'G', '-')],
-           zip(bc1.referencePositions(), bc1.reference(), bc1.read()))
-
-        bc2 = b.clippedTo(2207, 2215)
-        EQ([(2214, 'C', 'C'),
-            (2213, 'A', 'A'),
-            (2212, 'T', 'T'),
-            (2211, 'G', 'G'),
-            (2210, 'C', 'C'),
-            (2209, 'T', 'T'),
-            (2208, 'G', '-'),
-            (2207, 'G', 'G')],
-           zip(bc2.referencePositions(), bc2.reference(), bc2.read()))
-
-        bc3 = b.clippedTo(2209, 2214)
-        EQ([(2213, 'A', 'A'),
-            (2212, 'T', 'T'),
-            (2211, 'G', 'G'),
-            (2210, 'C', 'C'),
-            (2209, 'T', 'T')],
-           zip(bc3.referencePositions(), bc3.reference(), bc3.read()))
-
-
-        # Test clipping in a large deletion
-        d = self.alns[52]
-        EQ([(16191, 'C', 'C'),
-            (16192, 'A', 'A'),
-            (16193, 'G', 'G'),
-            (16194, 'C', 'C'),
-            (16195, 'A', 'A'),
-            (16196, 'G', '-'),
-            (16197, 'G', '-'),
-            (16198, 'T', '-'),
-            (16199, 'G', 'G'),
-            (16200, 'A', 'A'),
-            (16201, 'G', 'G')],
-           zip(d.referencePositions(), d.reference(), d.read())[129:140])
-        dc1 = d.clippedTo(16196, 16198)
-
-        # where's the test code?
+        #         # Get a more interesting (more gappy) rev strand aln
+        #         b = self.alns[3]
+        #         EQ([(2216, 'G', 'G'),
+        #             (2215, 'G', 'G'),
+        #             (2214, '-', 'C'),
+        #             (2214, 'C', 'C'),
+        #             (2213, 'A', 'A'),
+        #             (2212, 'T', 'T'),
+        #             (2211, 'G', 'G'),
+        #             (2210, 'C', 'C'),
+        #             (2209, 'T', 'T'),
+        #             (2208, 'G', '-'),
+        #             (2207, 'G', 'G'),
+        #             (2206, 'C', 'C')],
+        #            zip(b.referencePositions(), b.reference(), b.read())[188:200])
+
+        #         bc1 = b.clippedTo(2208, 2214)
+        #         EQ([(2213, 'A', 'A'),
+        #             (2212, 'T', 'T'),
+        #             (2211, 'G', 'G'),
+        #             (2210, 'C', 'C'),
+        #             (2209, 'T', 'T'),
+        #             (2208, 'G', '-')],
+        #            zip(bc1.referencePositions(), bc1.reference(), bc1.read()))
+
+        #         bc2 = b.clippedTo(2207, 2215)
+        #         EQ([(2214, 'C', 'C'),
+        #             (2213, 'A', 'A'),
+        #             (2212, 'T', 'T'),
+        #             (2211, 'G', 'G'),
+        #             (2210, 'C', 'C'),
+        #             (2209, 'T', 'T'),
+        #             (2208, 'G', '-'),
+        #             (2207, 'G', 'G')],
+        #            zip(bc2.referencePositions(), bc2.reference(), bc2.read()))
+
+        #         bc3 = b.clippedTo(2209, 2214)
+        #         EQ([(2213, 'A', 'A'),
+        #             (2212, 'T', 'T'),
+        #             (2211, 'G', 'G'),
+        #             (2210, 'C', 'C'),
+        #             (2209, 'T', 'T')],
+        #            zip(bc3.referencePositions(), bc3.reference(), bc3.read()))
+
+
+        #         # Test clipping in a large deletion
+        #         d = self.alns[52]
+        #         EQ([(16191, 'C', 'C'),
+        #             (16192, 'A', 'A'),
+        #             (16193, 'G', 'G'),
+        #             (16194, 'C', 'C'),
+        #             (16195, 'A', 'A'),
+        #             (16196, 'G', '-'),
+        #             (16197, 'G', '-'),
+        #             (16198, 'T', '-'),
+        #             (16199, 'G', 'G'),
+        #             (16200, 'A', 'A'),
+        #             (16201, 'G', 'G')],
+        #            zip(d.referencePositions(), d.reference(), d.read())[129:140])
+        #         dc1 = d.clippedTo(16196, 16198)
+
+        #         # where's the test code?
 
     def testBaxAttaching(self):
         # Before attaching, should get sane exceptions
@@ -242,23 +282,22 @@ class _BasicAlnFileReaderTests(object):
 
         # Now attach
         self.f.attach(self.BAX_FILE)
-        EQ('m140905_042212_sidney_c100564852550000001823085912221377_s1_X0/7957/9681_9727',
+        EQ("m140905_042212_sidney_c100564852550000001823085912221377_s1_X0/32328/1_344",
            self.fwdAln.readName)
-        EQ('m140905_042212_sidney_c100564852550000001823085912221377_s1_X0/7957'
-           , self.fwdAln.zmwName)
-        EQ('<Zmw: m140905_042212_sidney_c100564852550000001823085912221377_s1_X0/7957>',
+        EQ("m140905_042212_sidney_c100564852550000001823085912221377_s1_X0/32328",
+           self.fwdAln.zmwName)
+        EQ("<Zmw: m140905_042212_sidney_c100564852550000001823085912221377_s1_X0/32328>",
            repr(self.fwdAln.zmw))
-        EQ('<ZmwRead: m140905_042212_sidney_c100564852550000001823085912221377_s1_X0/7957/9681_9727>',
+        EQ("<ZmwRead: m140905_042212_sidney_c100564852550000001823085912221377_s1_X0/32328/1_344>",
            repr(self.fwdAln.zmwRead))
 
         # Check read contents, for every aln.
         for aln in self.alns:
             EQ(aln.read(aligned=False, orientation="native"), aln.zmwRead.basecalls())
 
-
     def testClippingsVsBaxData(self):
         self.f.attach(self.BAX_FILE)
-        for aln in [self.alns[52], self.alns[8]]:
+        for aln in [self.fwdAln, self.revAln]:
             for cS in xrange(aln.tStart, aln.tEnd + 1):
                 for cE in xrange(cS + 1, min(aln.tEnd, cS + 10)):
                     ca = aln.clippedTo(cS, cE)
@@ -277,7 +316,7 @@ class _BasicAlnFileReaderTests(object):
 
     def testReadGroupTable(self):
         rgFwd = self.fwdAln.readGroupInfo
-        EQ([('ID', '<i4'), ('MovieName', 'O'), ('ReadType', 'O'), ('SequencingChemistry', 'O')], rgFwd.dtype)
+        EQ([('ID', '<i4'), ('MovieName', 'O'), ('ReadType', 'O'), ('SequencingChemistry', 'O'), ('FrameRate', '<f8')], rgFwd.dtype)
         EQ("P6-C4", rgFwd.SequencingChemistry)
         EQ("m140905_042212_sidney_c100564852550000001823085912221377_s1_X0", rgFwd.MovieName)
         #EQ("bar", rgFwd.ReadType)
@@ -297,25 +336,34 @@ class _IndexedAlnFileReaderTests(_BasicAlnFileReaderTests):
 
     def testMapQV(self):
         c = Counter(self.f.mapQV)
-        EQ(Counter({254: 115}), c)
+        EQ(Counter({254: 112}), c)
 
     def testHoleNumbers(self):
         c  = Counter([a.holeNumber for a in self.f])   # from records
         c2 = Counter(self.f.holeNumber)                # from index
-        expected = Counter({37134: 14, 6251: 10, 32861: 8, 14743: 4, 35858: 3,
-                            39571: 3, 13473: 3, 32560: 3, 46835: 3, 47698: 3, 16996: 3,
-                            30983: 2, 38025: 2, 36363: 2, 7957: 2, 49050: 2, 23454: 2,
-                            49194: 2, 24494: 2, 20211: 2, 50621: 2, 12736: 2, 19915: 2,
-                            6469: 2, 31174: 2, 32328: 2, 42827: 2, 7247: 2, 50257: 2,
-                            2771: 2, 1650: 2, 45203: 2, 24962: 1, 32901: 1, 36628: 1,
-                            26262: 1, 15641: 1, 19360: 1, 42165: 1, 44356: 1, 51534: 1,
-                            29843: 1, 38754: 1, 52206: 1, 49521: 1, 7670: 1, 54396: 1,
-                            19837: 1})
+        expected = Counter({37134: 14, 6251: 10, 32861: 8, 14743: 4,
+                            35858: 3, 39571: 3, 13473: 3, 32560: 3, 46835: 3, 47698: 3,
+                            16996: 3, 30983: 2, 38025: 2, 36363: 2, 23454: 2, 49194: 2,
+                            24494: 2, 20211: 2, 50621: 2, 12736: 2, 19915: 2, 6469: 2,
+                            31174: 2, 32328: 2, 42827: 2, 7247: 2, 50257: 2, 2771: 2,
+                            1650: 2, 24962: 1, 32901: 1, 36628: 1, 7957: 1, 26262: 1,
+                            15641: 1, 49050: 1, 19360: 1, 42165: 1, 44356: 1, 51534: 1,
+                            29843: 1, 38754: 1, 52206: 1, 49521: 1, 45203: 1, 7670: 1,
+                            54396: 1, 19837: 1})
         EQ(expected, c)
         EQ(expected, c2)
 
-    def testAlignedIdentity(self):
-        pass
+    def testErrorCounts(self):
+        for aln in [self.fwdAln, self.revAln]:
+            counts = Counter(aln.transcript())
+            EQ(counts["M"], aln.nM)
+            EQ(counts["R"], aln.nMM)
+            EQ(counts["I"], aln.nIns)
+            EQ(counts["D"], aln.nDel)
+
+
+    #     def testAlignedIdentity(self):
+    #         pass
 
     def testReadsByName(self):
         reads2771_1 = self.f.readsByName("m140905_042212_sidney_c100564852550000001823085912221377_s1_X0/2771/*")
@@ -359,17 +407,26 @@ class TestBasicBam(_BasicAlnFileReaderTests):
     CONSTRUCTOR_ARGS   = (data.getBamAndCmpH5()[0], data.getLambdaFasta())
 
     def testSpecVersion(self):
-        EQ("3.0b3",     self.f.version)
-
-    # def testNoLegacyBamTags(self):
-    #     # junk from older PacBio BAM spec versions doesn't belong
-    #     tagNames = [x[0] for x in self.fwdAln.peer.tags]
-    #     EQ(set(["RG",
-    #             "qs", "qe", "zm", "np", "rq",
-    #             "dq", "dt", "iq", "mq", "sq"]),
-    #        set(tagNames))
-
+        EQ("3.0b7",     self.f.version)
 
 class TestIndexedBam(_IndexedAlnFileReaderTests):
     READER_CONSTRUCTOR = IndexedBamReader
     CONSTRUCTOR_ARGS   = (data.getBamAndCmpH5()[0], data.getLambdaFasta())
+
+
+class TestCCSBam(object):
+    def __init__(self):
+        self.f = BamReader(data.getCCSBAM())
+
+    @SkipTest
+    def testBasicOperations(self):
+        EQ(False, self.f.isEmpty)
+        EQ(False, self.f.isSorted)
+        EQ(18,    len(self.f))
+
+    def testQStartEndUnavailable(self):
+        for aln in self.f:
+            with assert_raises(UnavailableFeature):
+                aln.qStart
+            with assert_raises(UnavailableFeature):
+                aln.qEnd
diff --git a/tests/test_pbcore_io_FastaIO.py b/tests/test_pbcore_io_FastaIO.py
index ae14241..e237562 100644
--- a/tests/test_pbcore_io_FastaIO.py
+++ b/tests/test_pbcore_io_FastaIO.py
@@ -46,10 +46,6 @@ class TestFastaRecord:
         assert_equal(self.header, recordFromString.header)
         assert_equal(self.sequence, recordFromString.sequence)
 
-    def test_md5(self):
-        assert_equal("67fc75ce599ed0ca1fc8ed2dcbccc95d",
-                     self.record.md5)
-
     def test_reverse_complement1(self):
         assert_equal(self.rc1_record.header, self.rc_header)
         assert_equal(self.rc1_record.sequence, self.rc_sequence)
@@ -92,8 +88,6 @@ class TestFastaReader:
                      "TTGGGAATTTGGAAATTACCTATGTGCAGAGGAATTATGATCTTTCCTTCTTA"
                      "AAGGTTGGTGACTTTGATTTTCCT",
                      entries[0].sequence)
-        assert_equal("e3912e9ceacd6538ede8c1b2adda7423",
-                     entries[0].md5)
 
     def test_dosLineEndingsFasta(self):
         f = FastaReader(data.getDosFormattedFasta())
diff --git a/tests/test_pbcore_io_lossless_bam.py b/tests/test_pbcore_io_lossless_bam.py
new file mode 100755
index 0000000..5e105fe
--- /dev/null
+++ b/tests/test_pbcore_io_lossless_bam.py
@@ -0,0 +1,59 @@
+
+# FIXME This is not compatible with running nosetests on everything at once!
+
+# Test for hack to support lossless pulse feature encoding (e.g. Ipd).
+# XXX this should be kept in some form, but the hope is that changes in pysam
+# will make the environment variable hack unnecessary in the future.
+
+import subprocess
+import unittest
+from unittest.case import SkipTest
+import os
+os.environ["PBCORE_BAM_LOSSLESS_KINETICS"] = "1"
+
+import pysam
+
+import pbcore.io.align.BamAlignment
+pbcore.io.align.BamAlignment.PBCORE_BAM_LOSSLESS_KINETICS = "1"
+
+class TestCase (unittest.TestCase):
+    sam_str_ = """\
+ at HD\tVN:1.5\tSO:coordinate\tpb:3.0b5
+ at SQ\tSN:ecoliK12_pbi_March2013_2955000_to_2980000\tLN:25000\tM5:734d5f3b2859595f4bd87a2fe6b7389b
+ at RG\tID:3f58e5b8\tPL:PACBIO\tDS:READTYPE=SUBREAD;DeletionQV=dq;DeletionTag=dt;InsertionQV=iq;MergeQV=mq;SubstitutionQV=sq;Ipd=ip;BASECALLERVERSION=2.0.1.0.123678;FRAMERATEHZ=75.000000;BINDINGKIT=foo;SEQUENCINGKIT=bar\tPU:movie1
+ at PG\tID:bax2bam-0.0.2\tPN:bax2bam\tVN:0.0.2\tDS:bax2bam\tCL:bax2bam in.bax.h5 out.bam
+movie1/54130/0_10\t2\tecoliK12_pbi_March2013_2955000_to_2980000\t2\t10\t10M\t*\t0\t0\tAATGAGGAGA\t*\tRG:Z:3f58e5b8\tdq:Z:2222'$22'2\tdt:Z:NNNNAGNNGN\tip:B:S,275,2,0,10,22,349,0,2,3,16\tiq:Z:(+#1'$#*1&\tmq:Z:&1~51*5&~2\tnp:i:1\tqe:i:10\tqs:i:0\trq:i:854\tsn:B:f,2.0,2.0,2.0,2.0\tsq:Z:<32<4<<<<3\tzm:i:54130\tAS:i:-3020\tNM:i:134\tcx:i:2
+movie1/54130/10_20\t2\tecoliK12_pbi_March2013_2955000_to_2980000\t12\t10\t10M\t*\t0\t0\tAATGAGGAGA\t*\tRG:Z:3f58e5b8\tdq:Z:2222'$22'2\tdt:Z:NNNNAGNNGN\tip:B:S,285,2,0,10,22,340,0,2,3,16\tiq:Z:(+#1'$#*1&\tmq:Z:&1~51*5&~2\tnp:i:1\tqe:i:20\tqs:i:10\trq:i:854\tsn:B:f,2.0,2.0,2.0,2.0\tsq:Z:<32<4<<<<3\tzm:i:54130\tAS:i:-3020\tNM:i:134\tcx:i:2"""
+
+    def setUp (self):
+        sam_file = "tmp_pbcore_io_subreads.sam"
+        with open(sam_file, "w") as f:
+            f.write(self.sam_str_)
+        sam_in = pysam.AlignmentFile(sam_file, "r")
+        bam_out = pysam.AlignmentFile(sam_file[:-3]+"bam", "wb",
+            template=sam_in)
+        for s in sam_in:
+            bam_out.write(s)
+        bam_out.close()
+
+    def tearDown (self):
+        os.remove("tmp_pbcore_io_subreads.sam")
+        os.remove("tmp_pbcore_io_subreads.bam")
+
+    @SkipTest
+    def test_1 (self):
+        file_name = "tmp_pbcore_io_subreads.bam"
+        os.environ
+        with pbcore.io.BamReader(file_name) as f:
+            expected = [
+                [275,2,0,10,22,349,0,2,3,16],
+                [285,2,0,10,22,340,0,2,3,16],
+            ]
+            k = 0
+            for a in f:
+                ipd = list(a.IPD()) # we don't want the numpy array
+                self.assertEqual(ipd, expected[k])
+                k += 1
+
+if __name__ == "__main__":
+    unittest.main()
diff --git a/tests/test_pbcore_io_unaligned_bam.py b/tests/test_pbcore_io_unaligned_bam.py
index d9857a3..5e2f8ae 100644
--- a/tests/test_pbcore_io_unaligned_bam.py
+++ b/tests/test_pbcore_io_unaligned_bam.py
@@ -66,3 +66,10 @@ class TestUnalignedBam(object):
 
     def testNames(self):
         EQ(self.bamRead0.queryName, self.baxRead0.readName)
+
+    def testIpd(self):
+        """Check that 'Ipd' feature is recognized correctly."""
+        pfa = self.bam.pulseFeaturesAvailable()
+        EQ(pfa, frozenset(['Ipd', 'DeletionTag', 'MergeQV', 'SubstitutionQV',
+                           'InsertionQV', 'DeletionQV']))
+        ipd = self.bamRead0.IPD(aligned=False, orientation="native")
diff --git a/tests/test_pbcore_util_sequences.py b/tests/test_pbcore_util_sequences.py
index 7c475f2..49a34f6 100644
--- a/tests/test_pbcore_util_sequences.py
+++ b/tests/test_pbcore_util_sequences.py
@@ -9,7 +9,11 @@ class TestReverseComplement:
         self.reverse = "ACATTAG" * 20
         self.complement = "CTAATGT" * 20
         self.reverse_complement = "TGTAATC" * 20
-        self.bad_sequence = "AGCTR" * 20
+        self.iupac_sequence = "ACTURY" * 20
+        self.iupac_complement = "TGANNN" * 20
+        self.iupac_reverse_complement = "NNNAGT" * 20
+        self.bad_sequence = "AGCTQ" * 20  # contains non-IUPAC char
+
 
     def test_reverse(self):
         assert_equal(self.sequence,
@@ -33,6 +37,12 @@ class TestReverseComplement:
         assert_equal(self.sequence,
                      sequence.reverseComplement(self.reverse_complement))
 
+    def test_iupac(self):
+        assert_equal(self.iupac_complement,
+                     sequence.complement(self.iupac_sequence))
+        assert_equal(self.iupac_reverse_complement,
+                     sequence.reverseComplement(self.iupac_sequence))
+
     @nose.tools.raises(ValueError)
     def test_complement_error(self):
         sequence.complement(self.bad_sequence)
diff --git a/tests/test_pbdataset.py b/tests/test_pbdataset.py
new file mode 100644
index 0000000..4803e9a
--- /dev/null
+++ b/tests/test_pbdataset.py
@@ -0,0 +1,844 @@
+
+import os
+import re
+import logging
+import tempfile
+
+import numpy as np
+import unittest
+from unittest.case import SkipTest
+
+from pbcore.io import openIndexedAlignmentFile
+from pbcore.io import DataSet, SubreadSet, ReferenceSet, AlignmentSet
+from pbcore.io.dataset.DataSetMembers import ExternalResource, Filters
+from pbcore.io.dataset.DataSetValidator import validateFile
+import pbcore.data.datasets as data
+
+log = logging.getLogger(__name__)
+
+class TestDataSet(unittest.TestCase):
+    """Unit and integrationt tests for the DataSet class and \
+    associated module functions"""
+
+    def test_build(self):
+        # Progs like pbalign provide a .bam file:
+        # e.g. d = DataSet("aligned.bam")
+        # Something like the test files we have:
+        inBam = data.getBam()
+        self.assertTrue(inBam.endswith('.bam'))
+        d = DataSet(inBam)
+        # A UniqueId is generated, despite being a BAM input
+        self.assertTrue(d.uuid != '')
+        dOldUuid = d.uuid
+        # They can write this BAM to an XML:
+        # e.g. d.write("alignmentset.xml")
+        outdir = tempfile.mkdtemp(suffix="dataset-unittest")
+        outXml = os.path.join(outdir, 'tempfile.xml')
+        d.write(outXml)
+        # And then recover the same XML (or a different one):
+        # e.g. d = DataSet("alignmentset.xml")
+        d = DataSet(outXml)
+        # The UniqueId will be the same
+        self.assertTrue(d.uuid == dOldUuid)
+        # Inputs can be many and varied
+        ds1 = DataSet(data.getXml(11), data.getBam())
+        self.assertEquals(ds1.numExternalResources, 2)
+        ds1 = DataSet(data.getFofn())
+        self.assertEquals(ds1.numExternalResources, 2)
+        # DataSet types are autodetected:
+        self.assertEquals(type(DataSet(data.getSubreadSet())).__name__,
+                          'SubreadSet')
+        # But can also be used directly
+        self.assertEquals(type(SubreadSet(data.getSubreadSet())).__name__,
+                          'SubreadSet')
+        # Even with untyped inputs
+        self.assertTrue(str(SubreadSet(data.getBam())).startswith(
+            '<SubreadSet'))
+        self.assertEquals(type(SubreadSet(data.getBam())).__name__,
+                          'SubreadSet')
+        self.assertEquals(type(DataSet(data.getBam())).__name__,
+                          'DataSet')
+        # You can also cast up and down, but casting between siblings
+        # is limited (abuse at your own risk)
+        self.assertEquals(
+            type(DataSet(data.getBam()).copy(asType='SubreadSet')).__name__,
+            'SubreadSet')
+        self.assertEquals(
+            type(SubreadSet(data.getBam()).copy(asType='DataSet')).__name__,
+            'DataSet')
+        # Add external Resources:
+        ds = DataSet()
+        ds.externalResources.addResources(["IdontExist.bam"])
+        self.assertTrue(
+            ds.externalResources[-1].resourceId == "IdontExist.bam")
+        # Add an index file
+        ds.externalResources[-1].addIndices(["IdontExist.bam.pbi"])
+        self.assertTrue(
+            ds.externalResources[-1].indices[0].resourceId ==
+            "IdontExist.bam.pbi")
+
+
+    def test_empty_metatype(self):
+        inBam = data.getBam()
+        d = DataSet(inBam)
+        for extRes in d.externalResources:
+            self.assertEqual(extRes.metaType, "")
+
+    def test_updateCounts(self):
+        log.info("Testing updateCounts without filters")
+        aln = AlignmentSet(data.getBam(0))
+        readers = aln.resourceReaders()
+
+        expLen = 0
+        for reader in readers:
+            for record in reader:
+                expLen += record.readLength
+                self.assertEqual(
+                    record.aStart, record.bam.pbi[record.rowNumber]['aStart'])
+                self.assertEqual(
+                    record.aEnd, record.bam.pbi[record.rowNumber]['aEnd'])
+
+        expNum = 0
+        for reader in readers:
+            expNum += len(reader)
+
+        accLen = aln.metadata.totalLength
+        accNum = aln.metadata.numRecords
+
+        self.assertEqual(expLen, accLen)
+        self.assertEqual(expNum, accNum)
+
+        log.info("Testing whether filters are respected")
+        aln.filters.addRequirement(rname=[('=', 'E.faecalis.1')])
+        accLen = aln.metadata.totalLength
+        accNum = aln.metadata.numRecords
+
+        def count(gen):
+            count = 0
+            for _ in gen:
+                count += 1
+            return count
+
+        expLen = 0
+        for reader in readers:
+            for record in reader:
+                expLen += record.readLength
+
+        bfile = openIndexedAlignmentFile(data.getBam(0))
+        rWin = (bfile.referenceInfo('E.faecalis.1').ID,
+                0,
+                bfile.referenceInfo('E.faecalis.1').Length)
+        reads = bfile.readsInRange(*rWin)
+        expNum = count(reads)
+        expLen = 0
+        reads = bfile.readsInRange(*rWin)
+        for read in reads:
+            expLen += read.readLength
+
+        self.assertEqual(expLen, accLen)
+        self.assertEqual(expNum, accNum)
+
+    # TODO: turn this back on once a bam is found with a different
+    # referenceInfoTable
+    @SkipTest
+    def test_referenceInfoTableMerging(self):
+        log.info("Testing refIds, etc. after merging")
+        ds = DataSet(data.getXml(17))
+        also_lambda = ds.toExternalFiles()[0]
+        aln = AlignmentSet(data.getBam(0), data.getBam(0), also_lambda)
+        readers = aln.resourceReaders()
+
+        ids = sorted([i for _, i in aln.refInfo('ID')])
+        self.assertEqual(range(len(ids)), ids)
+
+        accNames = aln.refNames
+        expNames = reduce(np.append,
+                          [reader.referenceInfoTable['Name']
+                           for reader in readers])
+        expNames = np.unique(expNames)
+        self.assertEqual(sorted(expNames), sorted(accNames))
+
+        accNames = aln.fullRefNames
+        expNames = reduce(np.append,
+                          [reader.referenceInfoTable['FullName']
+                           for reader in readers])
+        expNames = np.unique(expNames)
+        self.assertEqual(sorted(expNames), sorted(accNames))
+
+
+    def test_merge(self):
+        # xmls with different resourceIds: success
+        ds1 = DataSet(data.getXml(no=8))
+        ds2 = DataSet(data.getXml(no=11))
+        ds3 = ds1 + ds2
+        expected = ds1.numExternalResources + ds2.numExternalResources
+        self.assertTrue(ds3.numExternalResources == expected)
+        # xmls with different resourceIds but conflicting filters:
+        # failure to merge
+        ds2 = DataSet(data.getXml(no=11))
+        ds2.filters.addRequirement(rname=[('=', 'E.faecalis.1')])
+        ds3 = ds1 + ds2
+        self.assertEqual(ds3, None)
+        # xmls with same resourceIds: ignores new inputs
+        ds1 = DataSet(data.getXml(no=8))
+        ds2 = DataSet(data.getXml(no=8))
+        ds3 = ds1 + ds2
+        expected = ds1.numExternalResources
+        self.assertTrue(ds3.numExternalResources == expected)
+
+    def test_newUuid(self):
+        ds = DataSet()
+        old = ds.uuid
+        _ = ds.newUuid()
+        self.assertTrue(old != ds.uuid)
+
+    def test_split(self):
+        ds1 = DataSet(data.getXml())
+        self.assertTrue(ds1.numExternalResources > 1)
+        dss = ds1.split()
+        self.assertTrue(len(dss) == ds1.numExternalResources)
+        dss = ds1.split(chunks=1)
+        self.assertTrue(len(dss) == 1)
+        dss = ds1.split(chunks=2, ignoreSubDatasets=True)
+        self.assertTrue(len(dss) == 2)
+        self.assertFalse(dss[0].uuid == dss[1].uuid)
+        self.assertTrue(dss[0].name == dss[1].name)
+        # Lets try merging and splitting on subdatasets
+        ds1 = DataSet(data.getXml(8))
+        self.assertEquals(ds1.totalLength, 123588)
+        ds1tl = ds1.totalLength
+        ds2 = DataSet(data.getXml(11))
+        self.assertEquals(ds2.totalLength, 117086)
+        ds2tl = ds2.totalLength
+        dss = ds1 + ds2
+        self.assertTrue(dss.totalLength == (ds1tl + ds2tl))
+        ds1, ds2 = sorted(dss.split(2), key=lambda x: x.totalLength,
+                          reverse=True)
+        self.assertTrue(ds1.totalLength == ds1tl)
+        self.assertTrue(ds2.totalLength == ds2tl)
+
+    def test_copy(self):
+        ds1 = DataSet(data.getXml())
+        ds2 = ds1.copy()
+        self.assertFalse(ds1 == ds2)
+        self.assertFalse(ds1.uuid == ds2.uuid)
+        self.assertFalse(ds1 is ds2)
+        self.assertTrue(ds1.name == ds2.name)
+        self.assertTrue(ds1.externalResources == ds2.externalResources)
+        # The name and UniqueId are different:
+        self.assertFalse(ds1.objMetadata == ds2.objMetadata)
+        self.assertTrue(ds1.filters == ds2.filters)
+        self.assertTrue(ds1.subdatasets == ds2.subdatasets)
+        self.assertTrue(len(ds1.subdatasets) == 2)
+        self.assertTrue(len(ds2.subdatasets) == 2)
+        assert not reduce(lambda x, y: x or y,
+                          [ds1d is ds2d for ds1d in
+                           ds1.subdatasets for ds2d in
+                           ds2.subdatasets])
+        ds1 = DataSet(data.getXml(no=10))
+        self.assertEquals(type(ds1.metadata).__name__,
+                          'SubreadSetMetadata')
+        ds2 = ds1.copy()
+        self.assertEquals(type(ds2.metadata).__name__,
+                          'SubreadSetMetadata')
+        # Lets try casting
+        ds1 = DataSet(data.getBam())
+        self.assertEquals(type(ds1).__name__,
+                          'DataSet')
+        ds1 = ds1.copy(asType='SubreadSet')
+        self.assertEquals(type(ds1).__name__,
+                          'SubreadSet')
+        # Lets do some illicit casting
+        with self.assertRaises(TypeError):
+            ds1 = ds1.copy(asType='ReferenceSet')
+        # Lets try not having to cast
+        ds1 = SubreadSet(data.getBam())
+        self.assertEquals(type(ds1).__name__, 'SubreadSet')
+
+    def test_write(self):
+        outdir = tempfile.mkdtemp(suffix="dataset-unittest")
+        outfile = os.path.join(outdir, 'tempfile.xml')
+        ds1 = DataSet(data.getBam())
+        ds1.write(outfile)
+        # TODO: turn back on when pyxb present:
+        #validateFile(outfile)
+        ds2 = DataSet(outfile)
+        self.assertTrue(ds1 == ds2)
+
+    def test_addFilters(self):
+        ds1 = DataSet()
+        filt = Filters()
+        filt.addRequirement(rq=[('>', '0.85')])
+        ds1.addFilters(filt)
+        self.assertEquals(str(ds1.filters), '( rq > 0.85 )')
+        # Or added from a source XML
+        ds2 = DataSet(data.getXml(16))
+        self.assertTrue(str(ds2.filters).startswith(
+            '( rname = E.faecalis'))
+
+    def test_addMetadata(self):
+        ds = DataSet()
+        ds.addMetadata(None, Name='LongReadsRock')
+        self.assertEquals(ds._metadata.getV(container='attrib', tag='Name'),
+                          'LongReadsRock')
+        ds2 = DataSet(data.getXml(no=8))
+        self.assertEquals(ds2._metadata.totalLength, 123588)
+        ds2._metadata.totalLength = 100000
+        self.assertEquals(ds2._metadata.totalLength, 100000)
+        ds2._metadata.totalLength += 100000
+        self.assertEquals(ds2._metadata.totalLength, 200000)
+
+    def test_addExternalResources(self):
+        ds = DataSet()
+        er1 = ExternalResource()
+        er1.resourceId = "test1.bam"
+        er2 = ExternalResource()
+        er2.resourceId = "test2.bam"
+        er3 = ExternalResource()
+        er3.resourceId = "test1.bam"
+        ds.addExternalResources([er1])
+        self.assertEquals(ds.numExternalResources, 1)
+        # different resourceId: succeeds
+        ds.addExternalResources([er2])
+        self.assertEquals(ds.numExternalResources, 2)
+        # same resourceId: fails
+        ds.addExternalResources([er3])
+        self.assertEquals(ds.numExternalResources, 2)
+        for extRef in ds.externalResources:
+            self.assertEqual(type(extRef).__name__, "ExternalResource")
+
+        extRef = ds.externalResources[0]
+        self.assertEqual(type(extRef).__name__, "ExternalResource")
+        self.assertEqual(extRef.resourceId, 'test1.bam')
+
+        extRef = ds.externalResources[1]
+        self.assertEqual(type(extRef).__name__, "ExternalResource")
+        self.assertEqual(extRef.resourceId, 'test2.bam')
+
+    def test_resourceReaders(self):
+        ds = DataSet(data.getBam())
+        for seqFile in ds.resourceReaders():
+            self.assertEqual(len([row for row in seqFile]), 92)
+
+    def test_records(self):
+        ds = DataSet(data.getXml(8))
+        self.assertTrue(len(list(ds.records)), 112)
+
+    def test_toFofn(self):
+        self.assertEquals(DataSet("bam1.bam", "bam2.bam").toFofn(),
+                          ['bam1.bam', 'bam2.bam'])
+        realDS = DataSet(data.getXml(8))
+        files = realDS.toFofn()
+        self.assertEqual(len(files), 1)
+        self.assertTrue(os.path.exists(files[0]))
+        self.assertTrue(os.path.isabs(files[0]))
+        files = realDS.toFofn(relative=True)
+        self.assertEqual(len(files), 1)
+        self.assertTrue(os.path.exists(files[0]))
+        self.assertFalse(os.path.isabs(files[0]))
+
+    def test_toExternalFiles(self):
+        bogusDS = DataSet("bam1.bam", "bam2.bam")
+        self.assertEqual(['bam1.bam', 'bam2.bam'],
+                         bogusDS.externalResources.resourceIds)
+        self.assertEquals(DataSet("bam1.bam", "bam2.bam").toExternalFiles(),
+                          ['bam1.bam', 'bam2.bam'])
+        realDS = DataSet(data.getXml(8))
+        files = realDS.toExternalFiles()
+        self.assertEqual(len(files), 1)
+        self.assertTrue(os.path.exists(files[0]))
+        self.assertTrue(os.path.isabs(files[0]))
+
+    @SkipTest
+    def test_checkFilterMatch(self):
+        # different resourceIds, compatible filters:
+        ds1 = DataSet(data.getXml(no=8))
+        ds2 = DataSet(data.getXml(no=11))
+        #self.assertTrue(ds1._checkFilterMatch(ds2.filters))
+        self.assertTrue(ds1.filters.testCompatibility(ds2.filters))
+        # different resourceIds, incompatible filters:
+        ds3 = DataSet(data.getXml(no=11))
+        ds3.filters.addRequirement(rname=[('=', 'E.faecalis.1')])
+        #self.assertFalse(ds1._checkFilterMatch(ds3.filters))
+        self.assertFalse(ds1.filters.testCompatibility(ds3.filters))
+
+    #def test_filterOk(self):
+        ## compatible filters
+        #filt1 = {'rq':'>0.85'}
+        #filt2 = {'rq':'>0.85'}
+        #self.assertTrue(_filterOk(filt1, filt2))
+        ## incompatible filters
+        #filt1 = {'rq':'>0.85'}
+        #filt2 = {'rq':'>0.75'}
+        #self.assertFalse(_filterOk(filt1, filt2))
+
+    def test_chunk_list(self):
+        test = [1, 2, 3, 4, 5]
+        chunks = DataSet()._chunkList(test, 3, balanceKey=lambda x: x)
+        self.assertEqual(chunks, [[5], [4, 1], [3, 2]])
+
+    def test_ref_names(self):
+        ds = DataSet(data.getBam())
+        refNames = ds.refNames
+        self.assertEqual(sorted(refNames)[0], 'A.baumannii.1')
+        self.assertEqual(len(refNames), 59)
+
+    def test_reads_in_range(self):
+        ds = DataSet(data.getBam())
+        refNames = ds.refNames
+
+        rn = refNames[15]
+        reads = ds.readsInRange(rn, 10, 100)
+        self.assertEqual(len(list(reads)), 10)
+
+        ds2 = DataSet(data.getBam(0))
+        reads = ds2.readsInRange("E.faecalis.1", 0, 1400)
+        self.assertEqual(len(list(reads)), 20)
+
+    def test_filter(self):
+        ds2 = DataSet(data.getXml(8))
+        ds2.filters.addRequirement(rname=[('=', 'E.faecalis.1')])
+        self.assertEqual(len(list(ds2.records)), 20)
+        ds2.disableFilters()
+        self.assertEqual(len(list(ds2.records)), 92)
+        ds2.enableFilters()
+        self.assertEqual(len(list(ds2.records)), 20)
+
+    @SkipTest
+    def test_split_by_contigs_presplit(self):
+        # Consumes too much memory for Jenkins
+
+        # Test to make sure the result of a split by contigs has an appropriate
+        # number of records (make sure filters are appropriately aggressive)
+        ds2 = DataSet(data.getXml(15))
+        bams = ds2.externalResources.resourceIds
+        self.assertEqual(len(bams), 2)
+        refwindows = ds2.refWindows
+        self.assertEqual(refwindows, [(0, 0, 224992)])
+        res1 = openIndexedAlignmentFile(bams[0][7:])
+        res2 = openIndexedAlignmentFile(bams[1][7:])
+        def count(iterable):
+            count = 0
+            for _ in iterable:
+                count += 1
+            return count
+        self.assertEqual(count(res1.readsInRange(*refwindows[0])), 1409)
+        self.assertEqual(count(res2.readsInRange(*refwindows[0])), 1375)
+        self.assertEqual(count(ds2.readsInRange(*refwindows[0])), 2784)
+        self.assertEqual(count(ds2.records), 2784)
+        ds2.disableFilters()
+        self.assertEqual(count(ds2.records), 53552)
+        self.assertEqual(ds2.countRecords(), 53552)
+
+    def test_split_by_contigs_with_split(self):
+        # test to make sure the refWindows work when chunks == # refs
+        ds3 = DataSet(data.getBam())
+        dss = ds3.split(contigs=True)
+        self.assertEqual(len(dss), 12)
+        refWindows = sorted(reduce(lambda x, y: x + y,
+                                   [ds.refWindows for ds in dss]))
+        # not all references have something mapped to them, refWindows doesn't
+        # care...
+        self.assertNotEqual(refWindows, sorted(ds3.refWindows))
+        random_few = [('C.beijerinckii.13', 0, 1433),
+                      ('B.vulgatus.4', 0, 1449),
+                      ('E.faecalis.1', 0, 1482)]
+        for reference in random_few:
+            found = False
+            for ref in refWindows:
+                if ref == reference:
+                    found = True
+            self.assertTrue(found)
+        old_refWindows = refWindows
+
+        dss = ds3.split(contigs=True, chunks=1)
+        self.assertEqual(len(dss), 1)
+        refWindows = sorted(reduce(lambda x, y: x + y,
+                                   [ds.refWindows for ds in dss]))
+        self.assertEqual(refWindows, old_refWindows)
+
+        dss = ds3.split(contigs=True, chunks=24)
+        refWindows = sorted(reduce(lambda x, y: x + y,
+                                   [ds.refWindows for ds in dss]))
+
+        random_few = [('E.faecalis.2', 0, 741),
+                      ('E.faecalis.2', 741, 1482)]
+        for ref in random_few:
+            found = False
+            for window in refWindows:
+                if ref == window:
+                    found = True
+            if not found:
+                log.debug(ref)
+            self.assertTrue(found)
+
+        dss = ds3.split(contigs=True, chunks=36)
+        refWindows = sorted(reduce(lambda x, y: x + y,
+                                   [ds.refWindows for ds in dss]))
+        random_few = [('E.faecalis.2', 0, 494),
+                      ('E.faecalis.2', 494, 988),
+                      ('E.faecalis.2', 988, 1482)]
+        for ref in random_few:
+            found = False
+            for window in refWindows:
+                if ref == window:
+                    found = True
+            self.assertTrue(found)
+
+    def test_filter_reference_contigs(self):
+        ds2 = ReferenceSet(data.getRef())
+        self.assertEqual(len(list(ds2.refNames)), 59)
+        filt = Filters()
+        filt.addRequirement(id=[('==', 'E.faecalis.1')])
+        ds2.addFilters(filt)
+        self.assertEqual(str(ds2.filters),
+                         "( id == E.faecalis.1 )")
+        self.assertEqual(len(ds2.refNames), 1)
+        self.assertEqual(len(list(ds2.records)), 1)
+        ds2.disableFilters()
+        self.assertEqual(len(list(ds2.refNames)), 59)
+        self.assertEqual(len(list(ds2.records)), 59)
+        ds2.enableFilters()
+        self.assertEqual(len(list(ds2.refNames)), 1)
+        self.assertEqual(len(list(ds2.records)), 1)
+
+    # TODO: get this working again when adding manual subdatasets is good to go
+    @SkipTest
+    def test_reads_in_subdataset(self):
+        ds = DataSet(data.getXml(8))
+        #refs = ['E.faecalis.1', 'E.faecalis.2']
+        #readRefs = ['E.faecalis.1'] * 2 + ['E.faecalis.2'] * 9
+        #ds.filters.removeRequirement('rname')
+        dss = ds.split(contigs=True)
+        self.assertEqual(len(dss), 12)
+        self.assertEqual(['B.vulgatus.4', 'B.vulgatus.5',
+                          'C.beijerinckii.13', 'C.beijerinckii.14',
+                          'C.beijerinckii.9', 'E.coli.6', 'E.faecalis.1',
+                          'E.faecalis.2', 'R.sphaeroides.1',
+                          'S.epidermidis.2', 'S.epidermidis.3',
+                          'S.epidermidis.4'],
+                         sorted([ds.filters[0][0].value for ds in dss]))
+        self.assertEqual(len(list(dss[0].readsInSubDatasets())), 3)
+        self.assertEqual(len(list(dss[1].readsInSubDatasets())), 20)
+
+        #ds2 = DataSet(data.getXml(13))
+        #ds2._makePerContigSubDatasets()
+        #self.assertEqual(
+            #sorted([read.referenceName for read in ds2.readsInSubDatasets()]),
+            #sorted(readRefs))
+        #ds3 = DataSet(data.getXml(13))
+        #self.assertEqual(len(list(ds3.readsInSubDatasets())), 2)
+
+    def test_refWindows(self):
+        ds = DataSet(data.getBam())
+        dss = ds.split(chunks=2, contigs=True)
+        self.assertEqual(len(dss), 2)
+        log.debug(dss[0].filters)
+        log.debug(dss[1].filters)
+        self.assertTrue(
+            '( rname = E.faecalis.2 AND tstart > 0 AND tend < 1482 ) '
+            in str(dss[0].filters)
+            or
+            '( rname = E.faecalis.2 AND tstart > 0 AND tend < 1482 ) '
+            in str(dss[1].filters))
+        ds = DataSet(data.getBam())
+        ds.filters.addRequirement(rname=[('=', 'lambda_NEB3011'),
+                                         ('=', 'lambda_NEB3011')],
+                                  tStart=[('<', '0'),
+                                          ('<', '100')],
+                                  tEnd=[('>', '99'),
+                                        ('>', '299')])
+        self.assertEqual(str(ds.filters),
+                         '( rname = lambda_NEB3011 AND tstart '
+                         '< 0 AND tend > 99 ) OR ( rname = lambd'
+                         'a_NEB3011 AND tstart < 100 AND tend > 299 )')
+        # TODO: look into swapping around refWindows to make this work:
+        #self.assertEqual(ds.refWindows, [('lambda_NEB3011', 0, 99),
+                                         #('lambda_NEB3011', 100, 299)])
+
+
+    def test_refLengths(self):
+        ds = DataSet(data.getBam(0))
+        random_few = {'B.cereus.6': 1472, 'S.agalactiae.1': 1470,
+                      'B.cereus.4': 1472}
+        for key, value in random_few.items():
+            self.assertEqual(ds.refLengths[key], value)
+
+        # this is a hack to only emit refNames that actually have records
+        # associated with them:
+        dss = ds.split(contigs=True, chunks=1)[0]
+        self.assertEqual(dss.refLengths, {'B.vulgatus.4': 1449,
+                                          'B.vulgatus.5': 1449,
+                                          'C.beijerinckii.13': 1433,
+                                          'C.beijerinckii.14': 1433,
+                                          'C.beijerinckii.9': 1433,
+                                          'E.coli.6': 1463,
+                                          'E.faecalis.1': 1482,
+                                          'E.faecalis.2': 1482,
+                                          'R.sphaeroides.1': 1386,
+                                          'S.epidermidis.2': 1472,
+                                          'S.epidermidis.3': 1472,
+                                          'S.epidermidis.4': 1472
+                                         })
+
+    def test_reads_in_contig(self):
+        log.info("Testing reads in contigs")
+        ds = DataSet(data.getXml(8))
+        dss = ds.split(contigs=True)
+        self.assertEqual(len(dss), 12)
+        efaec1TimesFound = 0
+        efaec1TotFound = 0
+        efaec2TimesFound = 0
+        efaec2TotFound = 0
+        for ds in dss:
+            ef1 = len(list(ds.readsInReference('E.faecalis.1')))
+            ef2 = len(list(ds.readsInReference('E.faecalis.2')))
+            if ef1:
+                efaec1TimesFound += 1
+                efaec1TotFound += ef1
+            if ef2:
+                efaec2TimesFound += 1
+                efaec2TotFound += ef2
+        self.assertEqual(efaec1TimesFound, 1)
+        self.assertEqual(efaec1TotFound, 20)
+        self.assertEqual(efaec2TimesFound, 1)
+        self.assertEqual(efaec2TotFound, 3)
+
+        ds = DataSet(data.getXml(8))
+        filt = Filters()
+        filt.addRequirement(length=[('>', '100')])
+        ds.addFilters(filt)
+        dss = ds.split(contigs=True)
+        self.assertEqual(len(dss), 12)
+        efaec1TimesFound = 0
+        efaec1TotFound = 0
+        efaec2TimesFound = 0
+        efaec2TotFound = 0
+        for ds in dss:
+            ef1 = len(list(ds.readsInReference('E.faecalis.1')))
+            ef2 = len(list(ds.readsInReference('E.faecalis.2')))
+            if ef1:
+                efaec1TimesFound += 1
+                efaec1TotFound += ef1
+            if ef2:
+                efaec2TimesFound += 1
+                efaec2TotFound += ef2
+        self.assertEqual(efaec1TimesFound, 1)
+        self.assertEqual(efaec1TotFound, 20)
+        self.assertEqual(efaec2TimesFound, 1)
+        self.assertEqual(efaec2TotFound, 3)
+
+        ds = DataSet(data.getXml(8))
+        filt = Filters()
+        filt.addRequirement(length=[('>', '1000')])
+        ds.addFilters(filt)
+        dss = ds.split(contigs=True)
+        self.assertEqual(len(dss), 9)
+        efaec1TimesFound = 0
+        efaec1TotFound = 0
+        efaec2TimesFound = 0
+        efaec2TotFound = 0
+        for ds in dss:
+            ef1 = len(list(ds.readsInReference('E.faecalis.1')))
+            ef2 = len(list(ds.readsInReference('E.faecalis.2')))
+            if ef1:
+                efaec1TimesFound += 1
+                efaec1TotFound += ef1
+            if ef2:
+                efaec2TimesFound += 1
+                efaec2TotFound += ef2
+        self.assertEqual(efaec1TimesFound, 1)
+        self.assertEqual(efaec1TotFound, 20)
+        self.assertEqual(efaec2TimesFound, 1)
+        self.assertEqual(efaec2TotFound, 1)
+
+    def test_reads_in_reference(self):
+        ds = DataSet(data.getBam())
+        refNames = ds.refNames
+
+        # See test_ref_names for why this is expected:
+        rn = refNames[15]
+        reads = ds.readsInReference(rn)
+        self.assertEqual(len(list(reads)), 11)
+
+        ds2 = DataSet(data.getBam(0))
+        reads = ds2.readsInReference("E.faecalis.1")
+        self.assertEqual(len(list(reads)), 20)
+
+        reads = ds2.readsInReference("E.faecalis.2")
+        self.assertEqual(len(list(reads)), 3)
+
+        ds2 = DataSet(data.getXml(8))
+        reads = ds2.readsInReference("E.faecalis.1")
+        self.assertEqual(len(list(reads)), 20)
+
+        ds2.filters.addRequirement(rname=[('=', 'E.faecalis.1')])
+
+        # Because of the filter!
+        reads = ds2.readsInReference("E.faecalis.2")
+        self.assertEqual(len(list(reads)), 0)
+
+    def test_staggered_reads_in_range(self):
+        ds = DataSet(data.getXml(8))
+        refNames = ds.refNames
+
+        rn = 'B.vulgatus.5'
+        reads = list(ds.readsInRange(rn, 0, 10000))
+        ds2 = DataSet(data.getXml(11))
+        reads2 = list(ds2.readsInRange(rn, 0, 10000))
+        dsBoth = DataSet(data.getXml(8), data.getXml(11))
+        readsBoth = list(dsBoth.readsInRange(rn, 0, 10000))
+        self.assertEqual(len(reads), 2)
+        self.assertEqual(len(reads2), 5)
+        self.assertEqual(len(readsBoth), 7)
+        read_starts = (0, 1053)
+        for read, start in zip(reads, read_starts):
+            self.assertEqual(read.tStart, start)
+        read2_starts = (0, 0, 3, 3, 4)
+        for read, start in zip(reads2, read2_starts):
+            self.assertEqual(read.tStart, start)
+        readboth_starts = (0, 0, 0, 3, 3, 4, 1053)
+        for read, start in zip(readsBoth, readboth_starts):
+            self.assertEqual(read.tStart, start)
+
+    def test_referenceInfo(self):
+        aln = AlignmentSet(data.getBam(0))
+        readers = aln.resourceReaders()
+        self.assertEqual(len(readers[0].referenceInfoTable), 59)
+        self.assertEqual(
+            str(readers[0].referenceInfo('E.faecalis.1')),
+            "(27, 27, 'E.faecalis.1', 'E.faecalis.1', 1482, "
+            "'a1a59c267ac1341e5a12bce7a7d37bcb', 0L, 0L)")
+        # TODO: add a bam with a different referenceInfoTable to check merging
+        # and id remapping:
+        #self.assertEqual(
+            #str(aln.referenceInfo('E.faecalis.1')),
+            #"(27, 27, 'E.faecalis.1', 'E.faecalis.1', 1482, "
+            #"'a1a59c267ac1341e5a12bce7a7d37bcb', 0L, 0L)")
+
+    # TODO: turn this back on when a bam with a different referenceInfoTable is
+    # found
+    @SkipTest
+    def test_referenceInfoTable(self):
+        aln = AlignmentSet(data.getBam(0), data.getBam(1), data.getBam(2))
+        readers = aln.resourceReaders()
+
+        self.assertEqual(len(readers[0].referenceInfoTable), 1)
+        self.assertEqual(len(readers[1].referenceInfoTable), 59)
+        self.assertEqual(len(readers[2].referenceInfoTable), 1)
+        self.assertEqual(readers[0].referenceInfoTable.Name,
+                         readers[2].referenceInfoTable.Name)
+        self.assertEqual(len(aln.referenceInfoTable), 60)
+
+    # TODO: turn this back on when a bam with a different referenceInfoTable is
+    # found
+    @SkipTest
+    def test_readGroupTable(self):
+        aln = AlignmentSet(data.getBam(0), data.getBam(1), data.getBam(2))
+        readers = aln.resourceReaders()
+
+        self.assertEqual(len(readers[0].readGroupTable), 1)
+        self.assertEqual(len(readers[1].readGroupTable), 1)
+        self.assertEqual(len(readers[2].readGroupTable), 1)
+        self.assertEqual(len(aln.readGroupTable), 3)
+
+    def test_repr(self):
+        ds = DataSet(data.getBam())
+        rep = str(ds)
+        self.assertTrue(re.search('DataSet', rep))
+        self.assertTrue(re.search('uuid:',
+                                  rep))
+        self.assertTrue(re.search('pbalchemysim0.pbalign.bam', rep))
+
+    # TODO Turn back on when up to date stats metadata is available
+    @SkipTest
+    def test_stats_metadata(self):
+        ds = DataSet(data.getBam())
+        ds.loadStats(data.getStats())
+        self.assertEqual(ds.metadata.summaryStats.prodDist.numBins, 4)
+        self.assertEqual(ds.metadata.summaryStats.prodDist.bins,
+                         [1576, 901, 399, 0])
+        ds1 = DataSet(data.getXml(8))
+        ds1.loadStats(data.getStats())
+        ds2 = DataSet(data.getXml(11))
+        ds2.loadStats(data.getStats())
+        ds3 = ds1 + ds2
+        self.assertEqual(ds1.metadata.summaryStats.prodDist.bins,
+                         [1576, 901, 399, 0])
+        self.assertEqual(ds2.metadata.summaryStats.prodDist.bins,
+                         [1576, 901, 399, 0])
+        self.assertEqual(ds3.metadata.summaryStats.prodDist.bins,
+                         [3152, 1802, 798, 0])
+        self.assertEqual(ds1.metadata.summaryStats.readLenDist.bins,
+                         [0, 62, 39, 36, 29, 37, 19, 29, 37, 32, 32, 40, 45,
+                          54, 73, 77, 97, 95, 49, 17, 2, 0, 0, 0, 0, 0, 0,
+                          0, 0, 0, 0, 0])
+        self.assertEqual(ds2.metadata.summaryStats.readLenDist.bins,
+                         [0, 62, 39, 36, 29, 37, 19, 29, 37, 32, 32, 40, 45,
+                          54, 73, 77, 97, 95, 49, 17, 2, 0, 0, 0, 0, 0, 0,
+                          0, 0, 0, 0, 0])
+        self.assertEqual(ds3.metadata.summaryStats.readLenDist.bins,
+                         [0, 124, 78, 72, 58, 74, 38, 58, 74, 64, 64, 80, 90,
+                          108, 146, 154, 194, 190, 98, 34, 4, 0, 0, 0, 0, 0,
+                          0, 0, 0, 0, 0, 0])
+        # Lets check some manual values
+        ds1 = DataSet(data.getXml(8))
+        ds1.loadStats(data.getStats())
+        ds2 = DataSet(data.getXml(11))
+        ds2.loadStats(data.getStats())
+        ds1.metadata.summaryStats.readLenDist.bins = (
+            [0, 10, 9, 8, 7, 6, 4, 2, 1, 0, 0, 1])
+        self.assertEqual(ds1.metadata.summaryStats.readLenDist.bins,
+                         [0, 10, 9, 8, 7, 6, 4, 2, 1, 0, 0, 1])
+        ds1.metadata.summaryStats.readLenDist.minBinValue = 10
+        ds1.metadata.summaryStats.readLenDist.binWidth = 10
+        ds2.metadata.summaryStats.readLenDist.bins = (
+            [0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1])
+        self.assertEqual(ds2.metadata.summaryStats.readLenDist.bins,
+                         [0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1])
+        ds2.metadata.summaryStats.readLenDist.minBinValue = 20
+        ds2.metadata.summaryStats.readLenDist.binWidth = 10
+        ds3 = ds1 + ds2
+        self.assertEqual(ds3.metadata.summaryStats.readLenDist.bins,
+                         [0, 10, 10, 9, 8, 7, 5, 3, 2, 1, 0, 1, 1])
+        # now lets swap
+        ds1 = DataSet(data.getXml(8))
+        ds1.loadStats(data.getStats())
+        ds2 = DataSet(data.getXml(11))
+        ds2.loadStats(data.getStats())
+        ds1.metadata.summaryStats.readLenDist.bins = (
+            [0, 10, 9, 8, 7, 6, 4, 2, 1, 0, 0, 1])
+        self.assertEqual(ds1.metadata.summaryStats.readLenDist.bins,
+                         [0, 10, 9, 8, 7, 6, 4, 2, 1, 0, 0, 1])
+        ds1.metadata.summaryStats.readLenDist.minBinValue = 20
+        ds1.metadata.summaryStats.readLenDist.binWidth = 10
+        ds2.metadata.summaryStats.readLenDist.bins = (
+            [0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1])
+        self.assertEqual(ds2.metadata.summaryStats.readLenDist.bins,
+                         [0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1])
+        ds2.metadata.summaryStats.readLenDist.minBinValue = 10
+        ds2.metadata.summaryStats.readLenDist.binWidth = 10
+        ds3 = ds1 + ds2
+        self.assertEqual(ds3.metadata.summaryStats.readLenDist.bins,
+                         [0, 1, 11, 10, 9, 8, 7, 5, 3, 1, 0, 1, 1])
+
+        # now lets do some non-overlapping
+        ds1 = DataSet(data.getXml(8))
+        ds1.loadStats(data.getStats())
+        ds2 = DataSet(data.getXml(11))
+        ds2.loadStats(data.getStats())
+        ds1.metadata.summaryStats.readLenDist.bins = (
+            [1, 1, 1])
+        self.assertEqual(ds1.metadata.summaryStats.readLenDist.bins,
+                         [1, 1, 1])
+        ds1.metadata.summaryStats.readLenDist.minBinValue = 10
+        ds1.metadata.summaryStats.readLenDist.binWidth = 10
+        ds2.metadata.summaryStats.readLenDist.bins = (
+            [2, 2, 2])
+        self.assertEqual(ds2.metadata.summaryStats.readLenDist.bins,
+                         [2, 2, 2])
+        ds2.metadata.summaryStats.readLenDist.minBinValue = 50
+        ds2.metadata.summaryStats.readLenDist.binWidth = 10
+        ds3 = ds1 + ds2
+        self.assertEqual(ds3.metadata.summaryStats.readLenDist.bins,
+                         [1, 1, 1, 0, 2, 2, 2])
diff --git a/tests/test_pbdataset_subtypes.py b/tests/test_pbdataset_subtypes.py
new file mode 100644
index 0000000..fb7b383
--- /dev/null
+++ b/tests/test_pbdataset_subtypes.py
@@ -0,0 +1,108 @@
+
+import logging
+import unittest
+
+#from pbcore.util.Process import backticks
+from pbcore.io import (DataSet, SubreadSet, ConsensusReadSet,
+                       ReferenceSet, ContigSet, AlignmentSet)
+import pbcore.data.datasets as data
+
+log = logging.getLogger(__name__)
+
+class TestDataSet(unittest.TestCase):
+    """Unit and integrationt tests for the DataSet class and \
+    associated module functions"""
+
+
+    def test_subread_build(self):
+        ds1 = DataSet(data.getXml(no=5))
+        ds2 = DataSet(data.getXml(no=5))
+        self.assertEquals(type(ds1).__name__, 'SubreadSet')
+        self.assertEquals(ds1._metadata.__class__.__name__,
+                          'SubreadSetMetadata')
+        self.assertEquals(type(ds1._metadata).__name__, 'SubreadSetMetadata')
+        self.assertEquals(type(ds1.metadata).__name__, 'SubreadSetMetadata')
+        self.assertEquals(len(ds1.metadata.collections), 1)
+        self.assertEquals(len(ds2.metadata.collections), 1)
+        ds3 = ds1 + ds2
+        self.assertEquals(len(ds3.metadata.collections), 2)
+        ds4 = SubreadSet(data.getSubreadSet())
+        self.assertEquals(type(ds4).__name__, 'SubreadSet')
+        self.assertEquals(type(ds4._metadata).__name__, 'SubreadSetMetadata')
+        self.assertEquals(len(ds4.metadata.collections), 1)
+
+    def test_autofilled_metatypes(self):
+        ds = ReferenceSet(data.getXml(9))
+        for extRes in ds.externalResources:
+            self.assertEqual(extRes.metaType,
+                             'PacBio.ReferenceFile.ReferenceFastaFile')
+            self.assertEqual(len(extRes.indices), 1)
+            for index in extRes.indices:
+                self.assertEqual(index.metaType, "PacBio.Index.SamIndex")
+        ds = AlignmentSet(data.getXml(8))
+        for extRes in ds.externalResources:
+            self.assertEqual(extRes.metaType,
+                             'PacBio.SubreadFile.SubreadBamFile')
+            self.assertEqual(len(extRes.indices), 2)
+            for index in extRes.indices:
+                if index.resourceId.endswith('pbi'):
+                    self.assertEqual(index.metaType,
+                                     "PacBio.Index.PacBioIndex")
+                if index.resourceId.endswith('bai'):
+                    self.assertEqual(index.metaType,
+                                     "PacBio.Index.BamIndex")
+
+
+    def test_referenceset_contigs(self):
+        names = [
+            'A.baumannii.1', 'A.odontolyticus.1', 'B.cereus.1', 'B.cereus.2',
+            'B.cereus.4', 'B.cereus.6', 'B.vulgatus.1', 'B.vulgatus.2',
+            'B.vulgatus.3', 'B.vulgatus.4', 'B.vulgatus.5', 'C.beijerinckii.1',
+            'C.beijerinckii.2', 'C.beijerinckii.3', 'C.beijerinckii.4',
+            'C.beijerinckii.5', 'C.beijerinckii.6', 'C.beijerinckii.7',
+            'C.beijerinckii.8', 'C.beijerinckii.9', 'C.beijerinckii.10',
+            'C.beijerinckii.11', 'C.beijerinckii.12', 'C.beijerinckii.13',
+            'C.beijerinckii.14', 'D.radiodurans.1', 'D.radiodurans.2',
+            'E.faecalis.1', 'E.faecalis.2', 'E.coli.1', 'E.coli.2', 'E.coli.4',
+            'E.coli.5', 'E.coli.6', 'E.coli.7', 'H.pylori.1', 'L.gasseri.1',
+            'L.monocytogenes.1', 'L.monocytogenes.2', 'L.monocytogenes.3',
+            'L.monocytogenes.5', 'N.meningitidis.1', 'P.acnes.1',
+            'P.aeruginosa.1', 'P.aeruginosa.2', 'R.sphaeroides.1',
+            'R.sphaeroides.3', 'S.aureus.1', 'S.aureus.4', 'S.aureus.5',
+            'S.epidermidis.1', 'S.epidermidis.2', 'S.epidermidis.3',
+            'S.epidermidis.4', 'S.epidermidis.5', 'S.agalactiae.1',
+            'S.mutans.1', 'S.mutans.2', 'S.pneumoniae.1']
+        seqlens = [1458, 1462, 1472, 1473, 1472, 1472, 1449, 1449, 1449, 1449,
+                   1449, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433,
+                   1433, 1433, 1433, 1433, 1433, 1423, 1423, 1482, 1482, 1463,
+                   1463, 1463, 1463, 1463, 1463, 1424, 1494, 1471, 1471, 1471,
+                   1471, 1462, 1446, 1457, 1457, 1386, 1388, 1473, 1473, 1473,
+                   1472, 1472, 1472, 1472, 1472, 1470, 1478, 1478, 1467]
+        ds = ReferenceSet(data.getXml(9))
+        log.debug([contig.id for contig in ds])
+        for contig, name, seqlen in zip(ds.contigs, names, seqlens):
+            self.assertEqual(contig.id, name)
+            self.assertEqual(len(contig.sequence), seqlen)
+
+        for name in names:
+            self.assertTrue(ds.get_contig(name))
+
+    def test_ccsread_build(self):
+        ds1 = DataSet(data.getXml(2))
+        self.assertEquals(type(ds1).__name__, 'ConsensusReadSet')
+        self.assertEquals(type(ds1._metadata).__name__, 'SubreadSetMetadata')
+        ds2 = ConsensusReadSet(data.getXml(2))
+        self.assertEquals(type(ds2).__name__, 'ConsensusReadSet')
+        self.assertEquals(type(ds2._metadata).__name__, 'SubreadSetMetadata')
+
+    def test_contigset_build(self):
+        ds1 = DataSet(data.getXml(3))
+        self.assertEquals(type(ds1).__name__, 'ContigSet')
+        self.assertEquals(type(ds1._metadata).__name__, 'ContigSetMetadata')
+        ds2 = ContigSet(data.getXml(3))
+        self.assertEquals(type(ds2).__name__, 'ContigSet')
+        self.assertEquals(type(ds2._metadata).__name__, 'ContigSetMetadata')
+        for contigmd in ds2.metadata.contigs:
+            self.assertEquals(type(contigmd).__name__, 'ContigMetadata')
+
+

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/python-pbcore.git



More information about the debian-med-commit mailing list