diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
new file mode 100644
index 000000000..6b82413d1
--- /dev/null
+++ b/.github/workflows/publish.yml
@@ -0,0 +1,33 @@
+name: Upload Python Package
+
+on:
+ push:
+ tags:
+ - v*
+
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: '3.x'
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install .
+ pip install -e .[tests]
+ pip install -e .[ci]
+
+ - name: Test with nosetests
+ run: |
+ nosetests -s -w tests -a ci --ignore-files="local_*"
+ - name: Build and publish
+ env:
+ TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
+ TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
+ run: |
+ python setup.py sdist bdist_wheel
+ twine upload dist/*
\ No newline at end of file
diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml
new file mode 100644
index 000000000..9962bf073
--- /dev/null
+++ b/.github/workflows/unit_tests.yml
@@ -0,0 +1,26 @@
+name: Unit Tests
+
+on: [push]
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: [3.6, 3.7, 3.8]
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install .
+ pip install -e .[tests]
+ - name: Test with nosetests
+ run: |
+ nosetests -s -w tests -a ci --ignore-files="local_*"
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 772912cb5..964254e32 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,5 @@ janis_pipelines.bioinformatics.egg-info/
pip-wheel-metadata/
cromwell-executions/
cromwell-workflow-logs/
+venv/
+.python-version
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index dca474145..bb42e283b 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -3,7 +3,6 @@ repos:
rev: stable
hooks:
- id: black
- language_version: python3.7
- repo: local
hooks:
- id: nosetests
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 8ece835dc..000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-language: python
-python:
-- '3.6'
-install:
-- pip install keyring==21.4.0
-script: echo "Deploying Janis-Bioinformatics"
-deploy:
- provider: pypi
- user: illusional
- distributions: sdist bdist_wheel
- on:
- tags: true
- repo: PMCC-BioinformaticsCore/janis-bioinformatics
- password:
- secure: rXdE41JYzNGWyQjtt4aQSE8kJowwNrRtlPKqDnRpHmdYSdRyNjQf7bD3LZTYqphec4vUGblsAy7kKmAUv9GINLCSZdDUqXHQGKp+V75WxJB6j+MyJ8LjLAuSarVT1mu4S5uOUJr4ONN7WjRc9TaNSfk17PDGIy1lzEucfCtUvn9RVZr6SNFZnS6FA8KI7AnF624BB0g4cTeepqEY5ZZz9QPDqOQtydF4bvOzJs4XJKnk5IJNf4Ow+Y8swg+iRNl4SECFyZ2x7e9LrCfX1Sr7JchfSV3egq101NZMAqt1K5yNT78lC1af1ITJVIaxCcoM6q+9pNyX7f6EKgy7OPLg52VaYLrtRIv8ZfXQvy94+Oooe33JAxLTm/5TjCbgoq7XJMbFUvQrLrTDYqsX1FxF4q3Wffzfir1l/fOzi7exgZkAy1cCp5KpQV4l0MX+qFbsIdF0bwmpP0lpE+BLBYTam0SUPfPbgE7pWBaLdojLynvmtVp/hOfEpRp7TKB3/OLn0UHl2OnDhCQVzn2yz1EJP8wqsKfWfC+cIp2xy6O0JLXhUa1LfxR7P+AJjObR6HrYi59TrO0kR3QhNhskqG80MkZod8HpWP77kEPmhJDB5Hx3qedQ+rcjHVstIbD8tf+zDJ4eilZlge9qHHL5ycGLDwS3/44kDLESpMT50QT4X/w=
diff --git a/janis_bioinformatics/__meta__.py b/janis_bioinformatics/__meta__.py
index bb85d9c6f..b1bcf5b81 100644
--- a/janis_bioinformatics/__meta__.py
+++ b/janis_bioinformatics/__meta__.py
@@ -1,2 +1,2 @@
-__version__ = "v0.10.12"
+__version__ = "v0.11.0"
description = "Bioinformatics tools for Janis; the Pipeline creation helper"
diff --git a/janis_bioinformatics/data_types/bam.py b/janis_bioinformatics/data_types/bam.py
index e77f69ebd..c14695613 100644
--- a/janis_bioinformatics/data_types/bam.py
+++ b/janis_bioinformatics/data_types/bam.py
@@ -1,3 +1,4 @@
+import subprocess
from janis_core import File
@@ -12,6 +13,28 @@ def name():
def doc(self):
return "A binary version of a SAM file, http://software.broadinstitute.org/software/igv/bam"
+ @classmethod
+ def flagstat(cls, file_path: str):
+ command = ["samtools", "flagstat", file_path]
+ result = subprocess.run(
+ command,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ universal_newlines=True,
+ )
+
+ if result.stderr:
+ raise Exception(result.stderr)
+
+ return result.stdout
+
+ @classmethod
+ def equal(cls, file_path_1: str, file_path_2: str):
+ flagstat1 = cls.flagstat(file_path_1)
+ flagstat2 = cls.flagstat(file_path_2)
+
+ return flagstat1 == flagstat2
+
class BamBai(Bam):
@staticmethod
diff --git a/janis_bioinformatics/data_types/bed.py b/janis_bioinformatics/data_types/bed.py
index eb6167850..9fa31a34e 100644
--- a/janis_bioinformatics/data_types/bed.py
+++ b/janis_bioinformatics/data_types/bed.py
@@ -1,4 +1,7 @@
from janis_core import File
+from janis_unix.data_types import Gunzipped
+
+from janis_bioinformatics.data_types.tabix import FileTabix
class Bed(File):
@@ -10,14 +13,16 @@ def name():
return "bed"
-class BedTabix(File):
+class BedGz(Gunzipped):
def __init__(self, optional=False):
- super().__init__(optional=optional, extension=".bed.gz")
+ super().__init__(inner_type=Bed, optional=optional, extension=".bed.gz")
@staticmethod
def name():
- return "BedTABIX"
+ return "BedGz"
+
+class BedTabix(FileTabix, BedGz):
@staticmethod
- def secondary_files():
- return [".tbi"]
+ def name():
+ return "BedTABIX"
diff --git a/janis_bioinformatics/data_types/fasta.py b/janis_bioinformatics/data_types/fasta.py
index c7b0e984c..d88a66ab1 100644
--- a/janis_bioinformatics/data_types/fasta.py
+++ b/janis_bioinformatics/data_types/fasta.py
@@ -4,7 +4,9 @@
class Fasta(File):
def __init__(self, optional=False):
- super().__init__(optional, extension=".fasta")
+ super().__init__(
+ optional, extension=".fasta", alternate_extensions={".fa", ".fna"}
+ )
@staticmethod
def name():
diff --git a/janis_bioinformatics/data_types/fastq.py b/janis_bioinformatics/data_types/fastq.py
index 1354238ef..aa24044fb 100644
--- a/janis_bioinformatics/data_types/fastq.py
+++ b/janis_bioinformatics/data_types/fastq.py
@@ -5,7 +5,9 @@
class Fastq(File):
def __init__(self, optional=False):
- super().__init__(optional=optional, extension=".fastq")
+ super().__init__(
+ optional=optional, extension=".fastq", alternate_extensions={".fq"}
+ )
@staticmethod
def name():
@@ -20,7 +22,9 @@ def doc(self):
class FastqGz(File):
def __init__(self, optional=False):
- super().__init__(optional=optional, extension=".fastq.gz")
+ super().__init__(
+ optional=optional, extension=".fastq.gz", alternate_extensions={".fq.gz"}
+ )
@staticmethod
def name():
@@ -69,7 +73,7 @@ def invalid_value_hint(self, meta):
class FastqPairedEnd(Array):
def __init__(self, optional=False):
- super().__init__(File(optional=False, extension=".fastq"), optional=optional)
+ super().__init__(Fastq(optional=False), optional=optional)
def id(self):
if self.optional:
diff --git a/janis_bioinformatics/data_types/tabix.py b/janis_bioinformatics/data_types/tabix.py
new file mode 100644
index 000000000..a9e812477
--- /dev/null
+++ b/janis_bioinformatics/data_types/tabix.py
@@ -0,0 +1,7 @@
+from janis_unix.data_types.gunzipped import Gunzipped
+
+
+class FileTabix(Gunzipped):
+ @staticmethod
+ def secondary_files():
+ return [".tbi"]
diff --git a/janis_bioinformatics/data_types/vcf.py b/janis_bioinformatics/data_types/vcf.py
index 93ca8fc4f..fba35dbcf 100644
--- a/janis_bioinformatics/data_types/vcf.py
+++ b/janis_bioinformatics/data_types/vcf.py
@@ -1,6 +1,9 @@
from abc import ABC
from janis_core import File
+from janis_unix import Gunzipped
+
+from janis_bioinformatics.data_types.tabix import FileTabix
class Vcf(File):
@@ -32,9 +35,9 @@ def secondary_files():
return [".idx"]
-class CompressedVcf(File):
+class CompressedVcf(Gunzipped):
def __init__(self, optional=False):
- super().__init__(optional=optional, extension=".vcf.gz")
+ super().__init__(inner_type=Vcf, optional=optional, extension=".vcf.gz")
@staticmethod
def name():
@@ -44,15 +47,11 @@ def doc(self):
return ".vcf.gz"
-class VcfTabix(CompressedVcf):
+class VcfTabix(CompressedVcf, FileTabix):
@staticmethod
def name():
return "CompressedIndexedVCF"
- @staticmethod
- def secondary_files():
- return [".tbi"]
-
def doc(self):
return ".vcf.gz with .vcf.gz.tbi file"
diff --git a/janis_bioinformatics/tools/babrahambioinformatics/fastqc/versions.py b/janis_bioinformatics/tools/babrahambioinformatics/fastqc/versions.py
index eb252e0b7..52d9e6614 100644
--- a/janis_bioinformatics/tools/babrahambioinformatics/fastqc/versions.py
+++ b/janis_bioinformatics/tools/babrahambioinformatics/fastqc/versions.py
@@ -63,7 +63,7 @@ class FastqcSingleScattered(BioinformaticsWorkflow):
f"""
FastQC doesn't return a Directory unless it's the single variant, but Janis will make
you double scatter if you're processing an array of array of fastqs.
-
+
Note, this is bound to the LATEST version of FastQC: '{fastqc_single_instantiated.version()}'
"""
diff --git a/janis_bioinformatics/tools/bcftools/annotate/base.py b/janis_bioinformatics/tools/bcftools/annotate/base.py
index 6606d6318..b0227bde0 100644
--- a/janis_bioinformatics/tools/bcftools/annotate/base.py
+++ b/janis_bioinformatics/tools/bcftools/annotate/base.py
@@ -50,6 +50,8 @@
class BcfToolsAnnotateBase(BcfToolsToolBase, ABC):
def bind_metadata(self):
+ self.metadata.contributors = ["Michael Franklin"]
+ self.metadata.dateCreated = date(2019, 1, 24)
self.metadata.dateUpdated = date(2019, 1, 24)
self.metadata.doi = "http://www.ncbi.nlm.nih.gov/pubmed/19505943"
self.metadata.citation = (
diff --git a/janis_bioinformatics/tools/bcftools/concat/base.py b/janis_bioinformatics/tools/bcftools/concat/base.py
index 424130a47..dfaf7e20b 100644
--- a/janis_bioinformatics/tools/bcftools/concat/base.py
+++ b/janis_bioinformatics/tools/bcftools/concat/base.py
@@ -48,6 +48,8 @@ def outputs(self):
def bind_metadata(self):
from datetime import date
+ self.metadata.contributors = ["Michael Franklin"]
+ self.metadata.dateCreated = date(2019, 9, 9)
self.metadata.dateUpdated = date(2019, 9, 9)
self.metadata.doi = "http://www.ncbi.nlm.nih.gov/pubmed/19505943"
self.metadata.citation = (
diff --git a/janis_bioinformatics/tools/bcftools/index/base.py b/janis_bioinformatics/tools/bcftools/index/base.py
index 74e60c74e..607ba0dd2 100644
--- a/janis_bioinformatics/tools/bcftools/index/base.py
+++ b/janis_bioinformatics/tools/bcftools/index/base.py
@@ -85,7 +85,9 @@ def outputs(self):
def bind_metadata(self):
from datetime import date
+ self.metadata.contributors = ["Michael Franklin"]
self.metadata.dateCreated = date(2019, 1, 24)
+ self.metadata.dateUpdated = date(2019, 1, 24)
self.metadata.doi = "http://www.ncbi.nlm.nih.gov/pubmed/19505943"
self.metadata.citation = (
"Li H, Handsaker B, Wysoker A, Fennell T, Ruan J, Homer N, Marth G, Abecasis G, Durbin R, "
diff --git a/janis_bioinformatics/tools/bcftools/norm/base.py b/janis_bioinformatics/tools/bcftools/norm/base.py
index 0341c4fb3..a4ebcd5c1 100644
--- a/janis_bioinformatics/tools/bcftools/norm/base.py
+++ b/janis_bioinformatics/tools/bcftools/norm/base.py
@@ -46,6 +46,8 @@ def outputs(self):
def bind_metadata(self):
from datetime import date
+ self.metadata.contributors = ["Michael Franklin"]
+ self.metadata.dateCreated = date(2019, 1, 24)
self.metadata.dateUpdated = date(2019, 1, 24)
self.metadata.doi = "http://www.ncbi.nlm.nih.gov/pubmed/19505943"
self.metadata.citation = (
diff --git a/janis_bioinformatics/tools/bcftools/sort/base.py b/janis_bioinformatics/tools/bcftools/sort/base.py
index 2686eaf4f..e56693d95 100644
--- a/janis_bioinformatics/tools/bcftools/sort/base.py
+++ b/janis_bioinformatics/tools/bcftools/sort/base.py
@@ -100,7 +100,7 @@ def outputs(self):
def bind_metadata(self):
return ToolMetadata(
- contributors=None,
+ contributors=["Michael Franklin"],
dateCreated=datetime(2019, 5, 9),
dateUpdated=datetime(2019, 7, 11),
institution=None,
diff --git a/janis_bioinformatics/tools/bcftools/view/base.py b/janis_bioinformatics/tools/bcftools/view/base.py
index 6b690467a..a78468eef 100644
--- a/janis_bioinformatics/tools/bcftools/view/base.py
+++ b/janis_bioinformatics/tools/bcftools/view/base.py
@@ -50,6 +50,8 @@ class BcfToolsViewBase(BcfToolsToolBase, ABC):
def bind_metadata(self):
from datetime import date
+ self.metadata.contributors = ["Michael Franklin"]
+ self.metadata.dateCreated = date(2019, 1, 24)
self.metadata.dateUpdated = date(2019, 1, 24)
self.metadata.doi = "http://www.ncbi.nlm.nih.gov/pubmed/19505943"
self.metadata.citation = (
diff --git a/janis_bioinformatics/tools/bedtools/coveragebed/base.py b/janis_bioinformatics/tools/bedtools/coveragebed/base.py
index e90bbb5c7..e8f6b1f73 100644
--- a/janis_bioinformatics/tools/bedtools/coveragebed/base.py
+++ b/janis_bioinformatics/tools/bedtools/coveragebed/base.py
@@ -25,12 +25,12 @@
class BedToolsCoverageBedBase(BedToolsToolBase, ABC):
def bind_metadata(self):
- self.contributors = ["Jiaan Yu"]
+ self.metadata.contributors = ["Jiaan Yu"]
self.metadata.dateUpdated = date(2020, 2, 26)
self.metadata.dateCreated = date(2020, 2, 20)
self.metadata.doi = None
self.metadata.citation = None
- self.keywords = ["bedtools", "coverageBed", "coverage"]
+ self.metadata.keywords = ["bedtools", "coverageBed", "coverage"]
self.metadata.documentationUrl = (
"https://bedtools.readthedocs.io/en/latest/content/tools/coverage.html"
)
diff --git a/janis_bioinformatics/tools/bedtools/genomecoveragebed/base.py b/janis_bioinformatics/tools/bedtools/genomecoveragebed/base.py
index 62829ebf8..898e5a0a5 100644
--- a/janis_bioinformatics/tools/bedtools/genomecoveragebed/base.py
+++ b/janis_bioinformatics/tools/bedtools/genomecoveragebed/base.py
@@ -24,12 +24,12 @@
class BedToolsGenomeCoverageBedBase(BedToolsToolBase, ABC):
def bind_metadata(self):
- self.contributors = ["Jiaan Yu"]
+ self.metadata.contributors = ["Jiaan Yu"]
self.metadata.dateUpdated = date(2020, 4, 1)
self.metadata.dateCreated = date(2020, 4, 1)
self.metadata.doi = None
self.metadata.citation = None
- self.keywords = ["bedtools", "genomecov", "genomeCoverageBed"]
+ self.metadata.keywords = ["bedtools", "genomecov", "genomeCoverageBed"]
self.metadata.documentationUrl = (
"https://bedtools.readthedocs.io/en/latest/content/tools/genomecov.html"
)
diff --git a/janis_bioinformatics/tools/bedtools/intersectbed/base.py b/janis_bioinformatics/tools/bedtools/intersectbed/base.py
index 4690cab0d..74e9b78bb 100644
--- a/janis_bioinformatics/tools/bedtools/intersectbed/base.py
+++ b/janis_bioinformatics/tools/bedtools/intersectbed/base.py
@@ -23,12 +23,12 @@
class BedToolsIntersectBedBase(BedToolsToolBase, ABC):
def bind_metadata(self):
- self.contributors = ["Jiaan Yu"]
+ self.metadata.contributors = ["Jiaan Yu"]
self.metadata.dateUpdated = date(2020, 2, 26)
self.metadata.dateCreated = date(2020, 2, 20)
self.metadata.doi = None
self.metadata.citation = None
- self.keywords = ["bedtools", "intersect"]
+ self.metadata.keywords = ["bedtools", "intersect"]
self.metadata.documentationUrl = (
"https://bedtools.readthedocs.io/en/latest/content/tools/intersect.html"
)
diff --git a/janis_bioinformatics/tools/bioinformaticstoolbase.py b/janis_bioinformatics/tools/bioinformaticstoolbase.py
index d41a8fa14..b7c729a1f 100644
--- a/janis_bioinformatics/tools/bioinformaticstoolbase.py
+++ b/janis_bioinformatics/tools/bioinformaticstoolbase.py
@@ -1,3 +1,5 @@
+import os
+import sys
from abc import ABC
from janis_core import (
diff --git a/janis_bioinformatics/tools/bwa/index/base.py b/janis_bioinformatics/tools/bwa/index/base.py
index c46a4716a..4319b6ed4 100644
--- a/janis_bioinformatics/tools/bwa/index/base.py
+++ b/janis_bioinformatics/tools/bwa/index/base.py
@@ -39,7 +39,11 @@ def inputs(self):
"algorithm",
String(optional=True),
prefix="-a",
- doc="BWT construction algorithm: bwtsw, is or rb2 [auto]",
+ doc="""\
+BWT construction algorithm: bwtsw, is or rb2 [auto]
+ - is IS linear-time algorithm for constructing suffix array. It requires 5.37N memory where N is the size of the database. IS is moderately fast, but does not work with database larger than 2GB. IS is the default algorithm due to its simplicity. The current codes for IS algorithm are reimplemented by Yuta Mori.
+ - bwtsw Algorithm implemented in BWT-SW. This method works with the whole human genome.
+""",
),
]
@@ -47,7 +51,7 @@ def outputs(self):
return [ToolOutput("out", FastaBwa, glob=InputSelector("reference"))]
def memory(self, hints: Dict[str, Any]):
- return 2
+ return 8
def cpus(self, hints: Dict[str, Any]):
return 1
diff --git a/janis_bioinformatics/tools/common/bwaaligner.py b/janis_bioinformatics/tools/common/bwaaligner.py
index 03f6bbb66..e51b2b892 100644
--- a/janis_bioinformatics/tools/common/bwaaligner.py
+++ b/janis_bioinformatics/tools/common/bwaaligner.py
@@ -1,9 +1,18 @@
+import os
+import operator
from janis_core import Array
from janis_bioinformatics.data_types import FastqGzPair, FastaWithDict
from janis_bioinformatics.tools import BioinformaticsWorkflow
from janis_bioinformatics.tools.common.bwamem_samtoolsview import BwaMem_SamToolsView
from janis_bioinformatics.tools.cutadapt import CutAdapt_2_1
from janis_bioinformatics.tools.gatk4 import Gatk4SortSam_4_1_2
+from janis_bioinformatics.data_types.bam import Bam
+
+from janis_core.tool.test_classes import (
+ TTestPreprocessor,
+ TTestExpectedOutput,
+ TTestCase,
+)
class BwaAligner(BioinformaticsWorkflow):
@@ -72,10 +81,52 @@ def constructor(self):
def bind_metadata(self):
self.metadata.documentation = "Align sorted bam with this subworkflow consisting of BWA Mem + SamTools + Gatk4SortSam"
- self.metadata.creator = "Michael Franklin"
+ self.metadata.contributors = ["Michael Franklin"]
self.metadata.dateCreated = "2018-12-24"
self.metadata.version = "1.1"
+ def tests(self):
+ return [
+ TTestCase(
+ name="basic",
+ input={
+ "sample_name": "NA12878",
+ "fastq": [
+ "https://swift.rc.nectar.org.au/v1/AUTH_4df6e734a509497692be237549bbe9af/janis-test-data/bioinformatics/BRCA1_R1.fastq.gz",
+ "https://swift.rc.nectar.org.au/v1/AUTH_4df6e734a509497692be237549bbe9af/janis-test-data/bioinformatics/BRCA1_R2.fastq.gz",
+ ],
+ "reference": "https://swift.rc.nectar.org.au/v1/AUTH_4df6e734a509497692be237549bbe9af/janis-test-data/bioinformatics/hg38-brca1.fasta",
+ },
+ output=[
+ TTestExpectedOutput(
+ tag="out",
+ preprocessor=TTestPreprocessor.FileSize,
+ operator=operator.gt,
+ expected_value=2767780,
+ ),
+ TTestExpectedOutput(
+ tag="out",
+ suffix_secondary_file=".bai",
+ preprocessor=TTestPreprocessor.FileSize,
+ operator=operator.gt,
+ expected_value=290,
+ ),
+ TTestExpectedOutput(
+ tag="out",
+ preprocessor=Bam.flagstat,
+ operator=operator.eq,
+ expected_file="https://swift.rc.nectar.org.au/v1/AUTH_4df6e734a509497692be237549bbe9af/janis-test-data/bioinformatics/bwaaligner/bwaaligner.flagstat.txt",
+ ),
+ TTestExpectedOutput(
+ tag="out",
+ preprocessor=TTestPreprocessor.Value,
+ operator=Bam.equal,
+ expected_value="https://swift.rc.nectar.org.au/v1/AUTH_4df6e734a509497692be237549bbe9af/janis-test-data/bioinformatics/small.bam",
+ ),
+ ],
+ )
+ ]
+
if __name__ == "__main__":
w = BwaAligner()
diff --git a/janis_bioinformatics/tools/common/bwamem_samtoolsview.py b/janis_bioinformatics/tools/common/bwamem_samtoolsview.py
index b07c71997..1f8194ddc 100644
--- a/janis_bioinformatics/tools/common/bwamem_samtoolsview.py
+++ b/janis_bioinformatics/tools/common/bwamem_samtoolsview.py
@@ -1,5 +1,5 @@
from typing import List, Dict, Any
-
+from datetime import datetime
from janis_core import (
ToolInput,
Int,
@@ -15,6 +15,7 @@
CpuSelector,
Array,
StringFormatter,
+ ToolMetadata,
)
from janis_core import get_value_for_hints_and_ordered_resource_tuple
@@ -178,6 +179,13 @@ def cpus(self, hints: Dict[str, Any]):
def friendly_name(self) -> str:
return "Bwa mem + Samtools View"
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Michael Franklin"],
+ dateCreated=datetime(2019, 5, 10),
+ dateUpdated=datetime(2020, 7, 14),
+ )
+
bwa_additional_inputs = [
ToolInput(
"minimumSeedLength",
diff --git a/janis_bioinformatics/tools/common/concat_strelkasomaticvcf.py b/janis_bioinformatics/tools/common/concat_strelkasomaticvcf.py
index 437aa7804..187bf4329 100644
--- a/janis_bioinformatics/tools/common/concat_strelkasomaticvcf.py
+++ b/janis_bioinformatics/tools/common/concat_strelkasomaticvcf.py
@@ -1,3 +1,4 @@
+from datetime import datetime
from typing import List
from janis_core import (
@@ -9,6 +10,7 @@
Filename,
InputSelector,
String,
+ ToolMetadata,
)
from janis_bioinformatics.data_types import CompressedVcf, VcfTabix, Vcf
from janis_bioinformatics.tools.bioinformaticstoolbase import BioinformaticsTool
@@ -67,3 +69,11 @@ def doc(self):
vcf-concat $vcf1.gz $vcf2.gz > header.vcf;
vcf-merge $vcf1.gz $vcf2.gz > content.vcf;
cat header.vcf content.vcf > ${output}.vcf;"""
+
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Jiaan Yu"],
+ dateCreated=datetime(2020, 6, 4),
+ dateUpdated=datetime(2020, 7, 29),
+ documentation="",
+ )
diff --git a/janis_bioinformatics/tools/common/filtervardictsomaticvcf.py b/janis_bioinformatics/tools/common/filtervardictsomaticvcf.py
index 1e3538664..ffbb92cad 100644
--- a/janis_bioinformatics/tools/common/filtervardictsomaticvcf.py
+++ b/janis_bioinformatics/tools/common/filtervardictsomaticvcf.py
@@ -1,3 +1,4 @@
+from datetime import datetime
from typing import List
from janis_core import (
@@ -9,6 +10,7 @@
Filename,
InputSelector,
String,
+ ToolMetadata,
)
from janis_bioinformatics.data_types import Vcf, CompressedVcf, VcfTabix
from janis_bioinformatics.tools.bioinformaticstoolbase import BioinformaticsTool
@@ -50,13 +52,7 @@ def inputs(self) -> List[ToolInput]:
]
def outputs(self) -> List[ToolOutput]:
- return [
- ToolOutput(
- "out",
- Vcf,
- glob=InputSelector("outputFilename"),
- )
- ]
+ return [ToolOutput("out", Vcf, glob=InputSelector("outputFilename"),)]
def arguments(self):
return [
@@ -76,3 +72,11 @@ def doc(self):
return """Filter somatic vardict vcf by removing the variants marks with "Germline", and variants without a "PASS" quality.
Bash command:
bcftools filter -e STATUS=GERMLINE -o - $vcf | bcftools filter -i FILTER==PASS -o $out_vcf"""
+
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Jiaan Yu", "Michael Franklin"],
+ dateCreated=datetime(2020, 6, 4),
+ dateUpdated=datetime(2020, 11, 9),
+ documentation="",
+ )
diff --git a/janis_bioinformatics/tools/common/gatkbasecalbam.py b/janis_bioinformatics/tools/common/gatkbasecalbam.py
index c74782640..fb78f8367 100644
--- a/janis_bioinformatics/tools/common/gatkbasecalbam.py
+++ b/janis_bioinformatics/tools/common/gatkbasecalbam.py
@@ -1,9 +1,11 @@
+from datetime import datetime
from janis_bioinformatics.data_types import BamBai, FastaWithDict, VcfTabix, Bed
from janis_bioinformatics.tools.gatk4 import (
Gatk4BaseRecalibrator_4_1_3,
Gatk4ApplyBqsr_4_1_3,
)
from janis_bioinformatics.tools.bioinformaticstoolbase import BioinformaticsWorkflow
+from janis_core import ToolMetadata
class GATKBaseRecalBQSRWorkflow_4_1_3(BioinformaticsWorkflow):
@@ -58,3 +60,11 @@ def constructor(self):
),
)
self.output("out", source=self.apply_bqsr.out)
+
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Jiaan Yu"],
+ dateCreated=datetime(2020, 6, 12),
+ dateUpdated=datetime(2020, 6, 12),
+ documentation="",
+ )
diff --git a/janis_bioinformatics/tools/common/gatkbasecalbam_4_1_2.py b/janis_bioinformatics/tools/common/gatkbasecalbam_4_1_2.py
index 23360769f..004c94756 100644
--- a/janis_bioinformatics/tools/common/gatkbasecalbam_4_1_2.py
+++ b/janis_bioinformatics/tools/common/gatkbasecalbam_4_1_2.py
@@ -1,9 +1,11 @@
+from datetime import datetime
from janis_bioinformatics.data_types import BamBai, FastaWithDict, VcfTabix, Bed
from janis_bioinformatics.tools.gatk4 import (
Gatk4BaseRecalibrator_4_1_2,
Gatk4ApplyBqsr_4_1_2,
)
from janis_bioinformatics.tools.bioinformaticstoolbase import BioinformaticsWorkflow
+from janis_core import ToolMetadata
class GATKBaseRecalBQSRWorkflow_4_1_2(BioinformaticsWorkflow):
@@ -58,3 +60,11 @@ def constructor(self):
),
)
self.output("out", source=self.apply_bqsr.out)
+
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Jiaan Yu"],
+ dateCreated=datetime(2020, 6, 26),
+ dateUpdated=datetime(2020, 6, 26),
+ documentation="",
+ )
diff --git a/janis_bioinformatics/tools/common/indexfasta.py b/janis_bioinformatics/tools/common/indexfasta.py
index ffa88ab86..0fdc4d721 100644
--- a/janis_bioinformatics/tools/common/indexfasta.py
+++ b/janis_bioinformatics/tools/common/indexfasta.py
@@ -1,10 +1,69 @@
-from janis_bioinformatics.data_types import Fasta
-from janis_bioinformatics.tools import BioinformaticsWorkflow
+from datetime import datetime
+from typing import List, Optional, Union
+
+from janis_core import ToolOutput, ToolInput, InputSelector, Int, String, ToolMetadata
+
+from janis_bioinformatics.data_types import (
+ Fasta,
+ FastaBwa,
+ FastaFai,
+ FastaDict,
+ FastaWithIndexes,
+)
+from janis_bioinformatics.tools import BioinformaticsWorkflow, BioinformaticsTool
from janis_bioinformatics.tools.bwa import BwaIndexLatest
from janis_bioinformatics.tools.gatk4 import Gatk4CreateSequenceDictionaryLatest
from janis_bioinformatics.tools.samtools.faidx.versions import SamToolsFaidxLatest
+class _JoinIndexedFasta(BioinformaticsTool):
+ def tool(self) -> str:
+ return "join_indexed_fastas"
+
+ def base_command(self) -> Optional[Union[str, List[str]]]:
+ return ["echo", "Joining fastas"]
+
+ def inputs(self) -> List[ToolInput]:
+ return [
+ ToolInput(
+ "ref_bwa", FastaBwa, localise_file=True, presents_as="reference.fasta"
+ ),
+ ToolInput(
+ "ref_samtools",
+ FastaFai,
+ localise_file=True,
+ presents_as="reference.fasta",
+ ),
+ ToolInput(
+ "ref_dict", FastaDict, localise_file=True, presents_as="reference.fasta"
+ ),
+ ]
+
+ def outputs(self) -> List[ToolOutput]:
+ return [
+ ToolOutput(
+ "out_reference", FastaWithIndexes, selector=InputSelector("ref_bwa")
+ )
+ ]
+
+ def container(self) -> str:
+ return "ubuntu:latest"
+
+ def version(self) -> str:
+ return "v0.1.0"
+
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Michael Franklin"],
+ dateCreated=datetime(2020, 2, 14),
+ dateUpdated=datetime(2020, 11, 10),
+ documentation="",
+ )
+
+ def skip_test(cls) -> bool:
+ return True
+
+
class IndexFasta(BioinformaticsWorkflow):
def id(self):
return "IndexFasta"
@@ -22,16 +81,52 @@ def constructor(self):
self.input("reference", Fasta)
- self.step("create_bwa", BwaIndexLatest(reference=self.reference))
+ # Change the default BWA index algorithm to bwtsw (for human genome), and up blockSize to 50M
+ self.input("bwa_algorithm", String(optional=True), default="bwtsw")
+ self.input("bwa_block_size", Int(optional=True), default=int(5e7))
+
+ self.step(
+ "create_bwa",
+ BwaIndexLatest(
+ reference=self.reference,
+ algorithm=self.bwa_algorithm,
+ blockSize=self.bwa_block_size,
+ ),
+ )
self.step("create_samtools", SamToolsFaidxLatest(reference=self.reference))
self.step(
"create_dict", Gatk4CreateSequenceDictionaryLatest(reference=self.reference)
)
- self.output("bwa", source=self.create_bwa, output_name="reference")
- self.output("samtools", source=self.create_samtools, output_name="reference")
- self.output("dict", source=self.create_dict, output_name="reference")
+ self.step(
+ "merge",
+ _JoinIndexedFasta(
+ ref_bwa=self.create_bwa,
+ ref_samtools=self.create_samtools,
+ ref_dict=self.create_dict,
+ ),
+ )
+
+ self.output("out_reference", source=self.merge.out_reference)
+ self.output("out_bwa", source=self.create_bwa, output_name="reference")
+ self.output(
+ "out_samtools", source=self.create_samtools, output_name="reference"
+ )
+ self.output("out_dict", source=self.create_dict, output_name="reference")
+
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Michael Franklin"],
+ dateCreated=datetime(2020, 2, 14),
+ dateUpdated=datetime(2020, 11, 10),
+ documentation="",
+ )
if __name__ == "__main__":
- IndexFasta().translate("wdl")
+ IndexFasta().translate(
+ "wdl",
+ export_path="~/Desktop/tmp/wdltests/indexfasta",
+ to_disk=True,
+ validate=True,
+ )
diff --git a/janis_bioinformatics/tools/common/mergeandmark/mergeandmark_4_0.py b/janis_bioinformatics/tools/common/mergeandmark/mergeandmark_4_0.py
index 5d66d0c98..869569ed6 100644
--- a/janis_bioinformatics/tools/common/mergeandmark/mergeandmark_4_0.py
+++ b/janis_bioinformatics/tools/common/mergeandmark/mergeandmark_4_0.py
@@ -1,4 +1,5 @@
-from janis_core import Array, Boolean, Int
+from datetime import datetime
+from janis_core import Array, Boolean, Int, ToolMetadata
from janis_bioinformatics.data_types import BamBai
from janis_bioinformatics.tools.bioinformaticstoolbase import BioinformaticsWorkflow
@@ -48,6 +49,14 @@ def constructor(self):
)
self.output("out", source=self.markDuplicates.out)
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Michael Franklin"],
+ dateCreated=datetime(2019, 2, 19),
+ dateUpdated=datetime(2019, 12, 8),
+ documentation="",
+ )
+
if __name__ == "__main__":
MergeAndMarkBams_4_0().translate("wdl")
diff --git a/janis_bioinformatics/tools/common/mergeandmark/mergeandmark_4_1_2.py b/janis_bioinformatics/tools/common/mergeandmark/mergeandmark_4_1_2.py
index 78043f292..cc1d23729 100644
--- a/janis_bioinformatics/tools/common/mergeandmark/mergeandmark_4_1_2.py
+++ b/janis_bioinformatics/tools/common/mergeandmark/mergeandmark_4_1_2.py
@@ -1,4 +1,5 @@
-from janis_core import Array, Boolean, Int, String
+from datetime import datetime
+from janis_core import Array, Boolean, Int, String, ToolMetadata
from janis_bioinformatics.data_types import BamBai
from janis_bioinformatics.tools.gatk4 import (
@@ -51,6 +52,14 @@ def constructor(self):
)
self.output("out", source=self.markDuplicates.out)
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Jiaan Yu"],
+ dateCreated=datetime(2020, 6, 26),
+ dateUpdated=datetime(2020, 11, 6),
+ documentation="",
+ )
+
if __name__ == "__main__":
MergeAndMarkBams_4_1_2().translate("wdl")
diff --git a/janis_bioinformatics/tools/common/mergeandmark/mergeandmark_4_1_3.py b/janis_bioinformatics/tools/common/mergeandmark/mergeandmark_4_1_3.py
index 8dd85f327..ca83ac8e0 100644
--- a/janis_bioinformatics/tools/common/mergeandmark/mergeandmark_4_1_3.py
+++ b/janis_bioinformatics/tools/common/mergeandmark/mergeandmark_4_1_3.py
@@ -1,4 +1,5 @@
-from janis_core import Array, Boolean, Int, String
+from datetime import datetime
+from janis_core import Array, Boolean, Int, String, ToolMetadata
from janis_bioinformatics.data_types import BamBai
from janis_bioinformatics.tools.gatk4 import (
@@ -51,6 +52,14 @@ def constructor(self):
)
self.output("out", source=self.markDuplicates.out)
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Michael Franklin"],
+ dateCreated=datetime(2019, 2, 19),
+ dateUpdated=datetime(2020, 11, 6),
+ documentation="",
+ )
+
if __name__ == "__main__":
MergeAndMarkBams_4_1_3().translate("wdl")
diff --git a/janis_bioinformatics/tools/common/splitmultiallele.py b/janis_bioinformatics/tools/common/splitmultiallele.py
index d26ec8281..0eb4eed52 100644
--- a/janis_bioinformatics/tools/common/splitmultiallele.py
+++ b/janis_bioinformatics/tools/common/splitmultiallele.py
@@ -1,5 +1,6 @@
+from datetime import datetime
from typing import List, Dict, Any
-from janis_core import get_value_for_hints_and_ordered_resource_tuple
+from janis_core import get_value_for_hints_and_ordered_resource_tuple, ToolMetadata
from janis_bioinformatics.data_types import FastaWithDict, CompressedVcf
from janis_bioinformatics.data_types import Vcf
from janis_bioinformatics.tools import BioinformaticsTool
@@ -99,6 +100,14 @@ def arguments(self):
def outputs(self) -> List[ToolOutput]:
return [ToolOutput("out", Vcf(), glob=InputSelector("outputFilename"))]
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Michael Franklin", "Jiaan Yu"],
+ dateCreated=datetime(2019, 1, 18),
+ dateUpdated=datetime(2020, 11, 6),
+ documentation="",
+ )
+
def doc(self):
return """
Use vt to split multiallelic variants, and left-most align normalisation.
diff --git a/janis_bioinformatics/tools/common/splitmultiallele_normalistvcf.py b/janis_bioinformatics/tools/common/splitmultiallele_normalistvcf.py
index d3570c2bd..16aed5980 100644
--- a/janis_bioinformatics/tools/common/splitmultiallele_normalistvcf.py
+++ b/janis_bioinformatics/tools/common/splitmultiallele_normalistvcf.py
@@ -1,5 +1,6 @@
+from datetime import datetime
from typing import List, Dict, Any
-from janis_core import get_value_for_hints_and_ordered_resource_tuple
+from janis_core import get_value_for_hints_and_ordered_resource_tuple, ToolMetadata
from janis_bioinformatics.data_types import FastaWithDict, CompressedVcf, Vcf, VcfTabix
from janis_bioinformatics.tools import BioinformaticsTool
from janis_core import (
@@ -139,6 +140,14 @@ def doc(self):
-? displays help
""".strip()
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Jiaan Yu"],
+ dateCreated=datetime(2020, 6, 4),
+ dateUpdated=datetime(2020, 6, 4),
+ documentation="",
+ )
+
if __name__ == "__main__":
print(SplitMultiAlleleNormaliseVcf().help())
diff --git a/janis_bioinformatics/tools/dawson/createcallregions/base.py b/janis_bioinformatics/tools/dawson/createcallregions/base.py
index fbee950c6..48c82ae4b 100644
--- a/janis_bioinformatics/tools/dawson/createcallregions/base.py
+++ b/janis_bioinformatics/tools/dawson/createcallregions/base.py
@@ -1,6 +1,7 @@
+from datetime import datetime
from typing import Dict, List, Any
-from janis_core import TOutput, Array
+from janis_core import TOutput, Array, ToolMetadata
from janis_bioinformatics.data_types import FastaFai
from janis_bioinformatics.tools.bioinformaticstoolbase import BioinformaticsPythonTool
@@ -62,3 +63,11 @@ def version(self):
def friendly_name(self):
return "Create genomic call regions"
+
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Sebastian Hollizeck"],
+ dateCreated=datetime(2020, 6, 17),
+ dateUpdated=datetime(2020, 7, 16),
+ documentation="",
+ )
diff --git a/janis_bioinformatics/tools/dawson/workflows/variantcalling/multisample/freebayes/freebayessomaticworkflow.py b/janis_bioinformatics/tools/dawson/workflows/variantcalling/multisample/freebayes/freebayessomaticworkflow.py
index 200fc0274..8d4e74ddf 100644
--- a/janis_bioinformatics/tools/dawson/workflows/variantcalling/multisample/freebayes/freebayessomaticworkflow.py
+++ b/janis_bioinformatics/tools/dawson/workflows/variantcalling/multisample/freebayes/freebayessomaticworkflow.py
@@ -38,7 +38,7 @@ def bind_metadata(self):
self.metadata.dateCreated = date(2019, 10, 18)
self.metadata.dateUpdated = date(2020, 12, 10)
- self.contributors = ["Sebastian Hollizeck"]
+ self.metadata.contributors = ["Sebastian Hollizeck"]
self.metadata.keywords = [
"variants",
"freebayes",
diff --git a/janis_bioinformatics/tools/dawson/workflows/variantcalling/multisample/mutect2/mutect2jointsomaticworkflow.py b/janis_bioinformatics/tools/dawson/workflows/variantcalling/multisample/mutect2/mutect2jointsomaticworkflow.py
index e03377351..c764d9c62 100644
--- a/janis_bioinformatics/tools/dawson/workflows/variantcalling/multisample/mutect2/mutect2jointsomaticworkflow.py
+++ b/janis_bioinformatics/tools/dawson/workflows/variantcalling/multisample/mutect2/mutect2jointsomaticworkflow.py
@@ -38,7 +38,7 @@ def bind_metadata(self):
self.metadata.dateCreated = date(2019, 10, 30)
self.metadata.dateUpdated = date(2020, 12, 10)
- self.contributors = ["Sebastian Hollizeck"]
+ self.metadata.contributors = ["Sebastian Hollizeck"]
self.metadata.keywords = [
"variants",
"mutect2",
diff --git a/janis_bioinformatics/tools/ensembl/filtervep/base.py b/janis_bioinformatics/tools/ensembl/filtervep/base.py
index e50108b4c..327bf8572 100644
--- a/janis_bioinformatics/tools/ensembl/filtervep/base.py
+++ b/janis_bioinformatics/tools/ensembl/filtervep/base.py
@@ -148,9 +148,9 @@ def inputs(self):
def outputs(self):
return [ToolOutput("out", TextFile, glob=InputSelector("outputFilename"))]
- def metadata(self):
+ def bind_metadata(self):
return ToolMetadata(
- contributors=[],
+ contributors=["Michael Franklin"],
dateCreated=datetime(2020, 5, 26),
dateUpdated=datetime(2020, 5, 26),
documentation="#------------#\n# filter_vep #\n#------------#\nhttp://www.ensembl.org/info/docs/tools/vep/script/vep_filter.html\n",
diff --git a/janis_bioinformatics/tools/ensembl/vep/v98_3/cache.py b/janis_bioinformatics/tools/ensembl/vep/v98_3/cache.py
index c8a5618d4..beef083f2 100644
--- a/janis_bioinformatics/tools/ensembl/vep/v98_3/cache.py
+++ b/janis_bioinformatics/tools/ensembl/vep/v98_3/cache.py
@@ -1,6 +1,7 @@
+from datetime import datetime
from abc import ABC
-from janis_core import ToolInput, Boolean, Directory, Int
+from janis_core import ToolInput, Boolean, Directory, Int, ToolMetadata
from janis_bioinformatics.data_types import FastaWithDict
from .base import VepBase_98_3
@@ -98,3 +99,11 @@ def inputs(self):
"to use more memory with a faster run time. Default = 5000",
),
]
+
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Michael Franklin"],
+ dateCreated=datetime(2020, 2, 25),
+ dateUpdated=datetime(2020, 5, 7),
+ documentation="",
+ )
diff --git a/janis_bioinformatics/tools/ensembl/vep/v98_3/database.py b/janis_bioinformatics/tools/ensembl/vep/v98_3/database.py
index 7919ed485..89d6782ff 100644
--- a/janis_bioinformatics/tools/ensembl/vep/v98_3/database.py
+++ b/janis_bioinformatics/tools/ensembl/vep/v98_3/database.py
@@ -1,6 +1,7 @@
+from datetime import datetime
from abc import ABC
-from janis_core import ToolInput, Boolean, Filename, String, Int
+from janis_core import ToolInput, Boolean, Filename, String, Int, ToolMetadata
from .base import VepBase_98_3
@@ -82,3 +83,11 @@ def inputs(self):
"specified registry file to connect. Not used by default",
),
]
+
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Michael Franklin"],
+ dateCreated=datetime(2020, 2, 25),
+ dateUpdated=datetime(2020, 5, 7),
+ documentation="",
+ )
diff --git a/janis_bioinformatics/tools/gatk4/gatherbamfiles/base.py b/janis_bioinformatics/tools/gatk4/gatherbamfiles/base.py
index fb26b8062..12f96d3d1 100644
--- a/janis_bioinformatics/tools/gatk4/gatherbamfiles/base.py
+++ b/janis_bioinformatics/tools/gatk4/gatherbamfiles/base.py
@@ -209,9 +209,9 @@ def outputs(self):
)
]
- def metadata(self):
+ def bind_metadata(self):
return ToolMetadata(
- contributors=[],
+ contributors=["Michael Franklin"],
dateCreated=datetime(2020, 5, 18),
dateUpdated=datetime(2020, 5, 18),
documentation="b'USAGE: GatherBamFiles [arguments]\n
Concatenate efficiently BAM files that resulted from a scattered parallel analysis.
This tool performs a rapid\n'gather' or concatenation on BAM files. This is often needed in operations that have been run in parallel across\ngenomics regions by scattering their execution across computing nodes and cores thus resulting in smaller BAM\nfiles.
This tool does not support SAM files
Inputs
A list of BAM files to combine using the INPUT\nargument. These files must be provided in the order that they should be concatenated.
Output
A single BAM\nfile. The header is copied from the first input file.
Usage example:
java -jar picard.jar GatherBamFiles\n\\\nI=input1.bam \\\nI=input2.bam \\\nO=gathered_files.bam
Notes
Operates via copying of the gzip blocks directly for speed but also supports\ngeneration of an MD5 on the output and indexing of the output BAM file.
\nVersion:4.1.3.0\n",
diff --git a/janis_bioinformatics/tools/gatk4/gatherbqsrreports/base.py b/janis_bioinformatics/tools/gatk4/gatherbqsrreports/base.py
index 0fc3e88cd..e7bfdaf97 100644
--- a/janis_bioinformatics/tools/gatk4/gatherbqsrreports/base.py
+++ b/janis_bioinformatics/tools/gatk4/gatherbqsrreports/base.py
@@ -170,9 +170,9 @@ def inputs(self):
def outputs(self):
return [ToolOutput("out", Tsv, glob=InputSelector("outputFilename"))]
- def metadata(self):
+ def bind_metadata(self):
return ToolMetadata(
- contributors=[],
+ contributors=["Michael Franklin"],
dateCreated=datetime(2020, 5, 18),
dateUpdated=datetime(2020, 5, 18),
documentation="USAGE: GatherBQSRReports [arguments]\nGathers scattered BQSR recalibration reports into a single file\nVersion:4.1.3.0\n",
diff --git a/janis_bioinformatics/tools/gatk4/gatk4toolbase.py b/janis_bioinformatics/tools/gatk4/gatk4toolbase.py
index 2dffb29e8..67d841f1a 100644
--- a/janis_bioinformatics/tools/gatk4/gatk4toolbase.py
+++ b/janis_bioinformatics/tools/gatk4/gatk4toolbase.py
@@ -1,4 +1,5 @@
from abc import ABC, abstractmethod
+from datetime import datetime
from janis_core.operators.logical import If, IsDefined
from janis_core.operators.standard import JoinOperator, FirstOperator
@@ -16,6 +17,7 @@
Array,
InputSelector,
Int,
+ ToolMetadata,
)
diff --git a/janis_bioinformatics/tools/gatk4/getpileupsummaries/base.py b/janis_bioinformatics/tools/gatk4/getpileupsummaries/base.py
index cf0312e3f..805f4dc23 100644
--- a/janis_bioinformatics/tools/gatk4/getpileupsummaries/base.py
+++ b/janis_bioinformatics/tools/gatk4/getpileupsummaries/base.py
@@ -11,9 +11,7 @@
ToolMetadata,
String,
get_value_for_hints_and_ordered_resource_tuple,
- StringFormatter,
)
-from janis_core.operators.logical import If, IsDefined
from janis_core.operators.standard import (
JoinOperator,
FilterNullOperator,
@@ -21,7 +19,7 @@
)
from janis_unix import TextFile
-from janis_bioinformatics.data_types import BamBai, VcfIdx, Bed, VcfTabix, FastaWithDict
+from janis_bioinformatics.data_types import BamBai, Bed, VcfTabix, FastaWithDict
from ..gatk4toolbase import Gatk4ToolBase
CORES_TUPLE = [
diff --git a/janis_bioinformatics/tools/gatk4/markduplicates/base.py b/janis_bioinformatics/tools/gatk4/markduplicates/base.py
index c5f2dae95..8970250e5 100644
--- a/janis_bioinformatics/tools/gatk4/markduplicates/base.py
+++ b/janis_bioinformatics/tools/gatk4/markduplicates/base.py
@@ -90,11 +90,7 @@ def inputs(self):
ToolInput("outputPrefix", String(optional=True)),
ToolInput(
"outputFilename",
- Filename(
- prefix=prefix,
- suffix=".markduped",
- extension=".bam",
- ),
+ Filename(prefix=prefix, suffix=".markduped", extension=".bam",),
position=10,
prefix="-O",
doc="File to write duplication metrics to",
diff --git a/janis_bioinformatics/tools/gatk4/selectvariants/base.py b/janis_bioinformatics/tools/gatk4/selectvariants/base.py
index e8b3194da..4ea841cb9 100644
--- a/janis_bioinformatics/tools/gatk4/selectvariants/base.py
+++ b/janis_bioinformatics/tools/gatk4/selectvariants/base.py
@@ -720,9 +720,9 @@ def inputs(self):
def outputs(self):
return [ToolOutput("out", VcfTabix(), glob=InputSelector("outputFilename"))]
- def metadata(self):
+ def bind_metadata(self):
return ToolMetadata(
- contributors=[],
+ contributors=["Sebastian Hollizeck"],
dateCreated=datetime(2019, 12, 2),
dateUpdated=datetime(2019, 12, 2),
documentation="USAGE: Selectvariants [arguments]\nThis tool makes it possible to select a subset of variants based on various criteria in order to facilitate certain\nanalyses. Examples include comparing and contrasting cases vs. controls, extracting variant or non-variant loci that\nmeet certain requirements, or troubleshooting some unexpected results, to name a few.\nVersion:4.1.3.0\n",
diff --git a/janis_bioinformatics/tools/gatk4/setnmmdanduqtags/base.py b/janis_bioinformatics/tools/gatk4/setnmmdanduqtags/base.py
index 1ac8ceff3..6c4462b88 100644
--- a/janis_bioinformatics/tools/gatk4/setnmmdanduqtags/base.py
+++ b/janis_bioinformatics/tools/gatk4/setnmmdanduqtags/base.py
@@ -231,7 +231,7 @@ def outputs(self):
)
]
- def metadata(self):
+ def bind_metadata(self):
return ToolMetadata(
contributors=["Michael Franklin"],
dateCreated=datetime(2020, 5, 18),
diff --git a/janis_bioinformatics/tools/gatk4/splitncigarreads/base.py b/janis_bioinformatics/tools/gatk4/splitncigarreads/base.py
index 3736dea8e..908d1575c 100644
--- a/janis_bioinformatics/tools/gatk4/splitncigarreads/base.py
+++ b/janis_bioinformatics/tools/gatk4/splitncigarreads/base.py
@@ -667,7 +667,7 @@ def outputs(self):
def bind_metadata(self):
return ToolMetadata(
- contributors=[],
+ contributors=["Michael Franklin"],
dateCreated=datetime(2020, 5, 15),
dateUpdated=datetime(2020, 5, 15),
documentation="USAGE: SplitNCigarReads [arguments]\nSplits reads that contain Ns in their cigar string (e.g. spanning splicing events).\nVersion:4.1.3.0\n",
diff --git a/janis_bioinformatics/tools/gatk4/splitreads/base.py b/janis_bioinformatics/tools/gatk4/splitreads/base.py
index 35807e7ec..5a65fea62 100644
--- a/janis_bioinformatics/tools/gatk4/splitreads/base.py
+++ b/janis_bioinformatics/tools/gatk4/splitreads/base.py
@@ -90,6 +90,7 @@ def outputs(self):
def bind_metadata(self):
return ToolMetadata(
+ contributors=["Michael Franklin"],
dateCreated=datetime(2019, 9, 16),
dateUpdated=datetime(2019, 9, 16),
documentation="USAGE: SplitReads [arguments]\nOutputs reads from a SAM/BAM/CRAM by read group, sample and library name\nVersion:4.1.3.0",
diff --git a/janis_bioinformatics/tools/gatk4/variantfiltration/base.py b/janis_bioinformatics/tools/gatk4/variantfiltration/base.py
index 7ccc3adf0..e5f75c3a2 100644
--- a/janis_bioinformatics/tools/gatk4/variantfiltration/base.py
+++ b/janis_bioinformatics/tools/gatk4/variantfiltration/base.py
@@ -738,17 +738,11 @@ def inputs(self):
]
def outputs(self):
- return [
- ToolOutput(
- "out",
- VcfTabix(),
- glob=InputSelector("outputFilename"),
- )
- ]
+ return [ToolOutput("out", VcfTabix(), glob=InputSelector("outputFilename"),)]
def bind_metadata(self):
return ToolMetadata(
- contributors=[],
+ contributors=["Michael Franklin"],
dateCreated=datetime(2020, 5, 18),
dateUpdated=datetime(2020, 5, 18),
documentation="USAGE: VariantFiltration [arguments]\nFilter variant calls based on INFO and/or FORMAT annotations.\nVersion:4.1.3.0\n",
diff --git a/janis_bioinformatics/tools/htslib/bgzip/base.py b/janis_bioinformatics/tools/htslib/bgzip/base.py
index 4d90a44aa..e8d1edfde 100644
--- a/janis_bioinformatics/tools/htslib/bgzip/base.py
+++ b/janis_bioinformatics/tools/htslib/bgzip/base.py
@@ -13,6 +13,7 @@
Filename,
ToolArgument,
)
+from janis_unix import Gunzipped
from janis_bioinformatics.data_types import Vcf, CompressedVcf
from janis_bioinformatics.tools.htslib.htslibbase import HtsLibBase
@@ -30,12 +31,11 @@ def base_command(self):
def inputs(self) -> List[ToolInput]:
return [
- ToolInput("file", Vcf(), position=100, doc="File to bgzip compress"),
+ ToolInput("file", File(), position=100, doc="File to bgzip compress"),
ToolInput(
"outputFilename",
- Filename(extension=".vcf.gz"),
+ Filename(prefix=InputSelector("file").basename(), extension=".gz",),
position=102,
- shell_quote=False,
),
*self.additional_args,
]
@@ -44,9 +44,7 @@ def arguments(self):
return [ToolArgument(">", position=101, shell_quote=False)]
def outputs(self) -> List[ToolOutput]:
- return [
- ToolOutput("out", CompressedVcf(), glob=InputSelector("outputFilename"))
- ]
+ return [ToolOutput("out", Gunzipped(), glob=InputSelector("outputFilename"),)]
def friendly_name(self):
return "BGZip"
diff --git a/janis_bioinformatics/tools/htslib/tabix/base.py b/janis_bioinformatics/tools/htslib/tabix/base.py
index eb9c95143..7a863797c 100644
--- a/janis_bioinformatics/tools/htslib/tabix/base.py
+++ b/janis_bioinformatics/tools/htslib/tabix/base.py
@@ -11,8 +11,9 @@
File,
InputSelector,
)
+from janis_unix import Gunzipped
-from janis_bioinformatics.data_types import VcfTabix, CompressedVcf
+from janis_bioinformatics.data_types import VcfTabix, CompressedVcf, FileTabix
from ..htslibbase import HtsLibBase
@@ -30,7 +31,7 @@ def inputs(self) -> List[ToolInput]:
return [
ToolInput(
"inp",
- CompressedVcf(),
+ Gunzipped(),
position=8,
localise_file=True,
doc="File from which to create the index. The input data file must be position sorted and "
@@ -52,7 +53,7 @@ def inputs(self) -> List[ToolInput]:
def outputs(self) -> List[ToolOutput]:
return [
ToolOutput(
- "out", VcfTabix(), glob=InputSelector("inp")
+ "out", FileTabix(), glob=InputSelector("inp")
) # "$(inputs.file.basename)"
]
diff --git a/janis_bioinformatics/tools/igvtools/index/base.py b/janis_bioinformatics/tools/igvtools/index/base.py
index 1473c3fda..4f1873c55 100644
--- a/janis_bioinformatics/tools/igvtools/index/base.py
+++ b/janis_bioinformatics/tools/igvtools/index/base.py
@@ -1,7 +1,8 @@
+from datetime import datetime
from abc import ABC
from typing import List, Optional, Union
-from janis_core import ToolOutput, ToolInput, InputSelector
+from janis_core import ToolOutput, ToolInput, InputSelector, ToolMetadata
from janis_bioinformatics.data_types import Vcf, VcfIdx
from janis_bioinformatics.tools.igvtools.igvtoolsbase import IgvToolsBase
@@ -14,6 +15,14 @@ class IgvIndexBase(IgvToolsBase, ABC):
def base_command(self) -> Optional[Union[str, List[str]]]:
return ["igvtools", "index"]
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Michael Franklin"],
+ dateCreated=datetime(2020, 6, 4),
+ dateUpdated=datetime(2020, 6, 15),
+ documentation="",
+ )
+
class IgvIndexFeatureBase(IgvIndexBase, ABC):
def tool(self) -> str:
diff --git a/janis_bioinformatics/tools/illumina/bcl2fastq/base.py b/janis_bioinformatics/tools/illumina/bcl2fastq/base.py
index 76f667e9e..16c931a22 100644
--- a/janis_bioinformatics/tools/illumina/bcl2fastq/base.py
+++ b/janis_bioinformatics/tools/illumina/bcl2fastq/base.py
@@ -72,6 +72,9 @@ def arguments(self):
ToolArgument(".", prefix="--output-dir", doc="path to demultiplexed output")
]
+ def skip_test(cls) -> bool:
+ return True
+
def inputs(self):
return [
ToolInput(
diff --git a/janis_bioinformatics/tools/illumina/strelkasomatic/base.py b/janis_bioinformatics/tools/illumina/strelkasomatic/base.py
index 00d9304c3..9f4232604 100644
--- a/janis_bioinformatics/tools/illumina/strelkasomatic/base.py
+++ b/janis_bioinformatics/tools/illumina/strelkasomatic/base.py
@@ -364,6 +364,7 @@ def outputs(self):
def bind_metadata(self):
return ToolMetadata(
+ contributors=["Michael Franklin"],
dateCreated=datetime(2019, 5, 27),
dateUpdated=datetime(2019, 10, 14),
documentation="""Usage: configureStrelkaSomaticWorkflow.py [options]
diff --git a/janis_bioinformatics/tools/oshlack/allsorts/base.py b/janis_bioinformatics/tools/oshlack/allsorts/base.py
index 8b8ba95a0..4cadd2414 100644
--- a/janis_bioinformatics/tools/oshlack/allsorts/base.py
+++ b/janis_bioinformatics/tools/oshlack/allsorts/base.py
@@ -178,7 +178,7 @@ def outputs(self):
),
]
- def metadata(self):
+ def bind_metadata(self):
return ToolMetadata(
contributors=["Michael Franklin", "Jiaan Yu"],
dateCreated=datetime(2020, 9, 2),
diff --git a/janis_bioinformatics/tools/oshlack/oncopipe/oncopipe.py b/janis_bioinformatics/tools/oshlack/oncopipe/oncopipe.py
index 6218bbf83..3a8511375 100644
--- a/janis_bioinformatics/tools/oshlack/oncopipe/oncopipe.py
+++ b/janis_bioinformatics/tools/oshlack/oncopipe/oncopipe.py
@@ -232,14 +232,15 @@ def add_all_sorts(self):
self.step(
"prepareAllsortsInput",
PrepareALLSortsInput_0_1_0(
- inputs=[self.featureCounts.out],
+ inps=[self.featureCounts.out],
labels=[self.name],
fusion_caller="featureCounts",
),
)
self.step(
- "allsorts", AllSorts_0_1_0(samples=self.prepareAllsortsInput.out),
+ "allsorts",
+ AllSorts_0_1_0(samples=self.prepareAllsortsInput.out),
)
self.output(
@@ -286,6 +287,14 @@ def add_all_sorts(self):
),
)
+ def bind_metadata(self):
+ return WorkflowMetadata(
+ contributors=["Michael Franklin"],
+ dateCreated=datetime(2020, 9, 24),
+ dateUpdated=datetime(2020, 10, 7),
+ documentation="",
+ )
+
__JANIS_ENTRYPOINT = OncopipeSamplePreparation
diff --git a/janis_bioinformatics/tools/oshlack/prepareallsortsinput/__init__.py b/janis_bioinformatics/tools/oshlack/prepareallsortsinput/__init__.py
index 04eeacdf1..9ccc0bf99 100644
--- a/janis_bioinformatics/tools/oshlack/prepareallsortsinput/__init__.py
+++ b/janis_bioinformatics/tools/oshlack/prepareallsortsinput/__init__.py
@@ -1,7 +1,8 @@
+from datetime import datetime
from typing import List, Dict, Any, Optional
from janis_bioinformatics.tools.bioinformaticstoolbase import BioinformaticsPythonTool
-from janis_core import TOutput, File
+from janis_core import TOutput, File, ToolMetadata
from janis_unix import Csv
@@ -9,14 +10,14 @@
class PrepareALLSortsInput_0_1_0(BioinformaticsPythonTool):
@staticmethod
def code_block(
- inputs: List[File],
+ inps: List[File],
labels: List[str] = None,
output_filename: str = "output.csv",
fusion_caller: str = "featureCounts",
) -> Dict[str, Any]:
combined_count_list = []
if fusion_caller == "featureCounts":
- for i, file in enumerate(inputs):
+ for i, file in enumerate(inps):
gene_list = [""]
count_list = [labels[i]]
with open(file, "r") as f:
@@ -55,6 +56,14 @@ def friendly_name(self) -> Optional[str]:
def tool_provider(self):
return "Peter MacCallum Cancer Centre"
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Jiaan Yu"],
+ dateCreated=datetime(2020, 9, 21),
+ dateUpdated=datetime(2020, 9, 21),
+ documentation="",
+ )
+
if __name__ == "__main__":
PrepareALLSortsInput_0_1_0().translate("wdl")
diff --git a/janis_bioinformatics/tools/papenfuss/gridss/base_2_4.py b/janis_bioinformatics/tools/papenfuss/gridss/base_2_4.py
index 902ff2090..c3127e2d4 100644
--- a/janis_bioinformatics/tools/papenfuss/gridss/base_2_4.py
+++ b/janis_bioinformatics/tools/papenfuss/gridss/base_2_4.py
@@ -62,7 +62,7 @@ def friendly_name(self) -> str:
return "Gridss"
def base_command(self):
- return "gridss.sh"
+ return "/opt/gridss/gridss.sh"
def inputs(self):
return [
diff --git a/janis_bioinformatics/tools/papenfuss/gridss/gridss.py b/janis_bioinformatics/tools/papenfuss/gridss/gridss.py
index 22b05e7fc..8a7d28169 100644
--- a/janis_bioinformatics/tools/papenfuss/gridss/gridss.py
+++ b/janis_bioinformatics/tools/papenfuss/gridss/gridss.py
@@ -44,9 +44,6 @@ def version(self):
class Gridss_2_6_2(GridssBase_2_4):
- def base_command(self):
- return "/opt/gridss/gridss.sh"
-
def container(self):
# https://hub.docker.com/r/gridss/gridss
return "gridss/gridss:2.6.2"
@@ -55,4 +52,12 @@ def version(self):
return "v2.6.2"
+class Gridss_2_9_4(GridssBase_2_4):
+ def container(self):
+ return "gridss/gridss:2.9.4"
+
+ def version(self) -> str:
+ return "v2.9.4"
+
+
GridssLatest = Gridss_2_6_2
diff --git a/janis_bioinformatics/tools/pmac/__init__.py b/janis_bioinformatics/tools/pmac/__init__.py
index 408653f99..9642dd3ea 100644
--- a/janis_bioinformatics/tools/pmac/__init__.py
+++ b/janis_bioinformatics/tools/pmac/__init__.py
@@ -15,3 +15,6 @@
from .molpathTumorOnlyWorkflow import MolpathTumorOnly_1_0_0
from .generatevardictheaderlines import GenerateVardictHeaderLines
from .generatebedtoolscoveragegenomefile import GenerateGenomeFileForBedtoolsCoverage
+from .generatintervalsbychromosome.generateintervalsbychromosome import (
+ GenerateIntervalsByChromosome,
+)
diff --git a/janis_bioinformatics/tools/pmac/addBamStatsGermlineWorkflow.py b/janis_bioinformatics/tools/pmac/addBamStatsGermlineWorkflow.py
index fec24c4c7..761926aab 100644
--- a/janis_bioinformatics/tools/pmac/addBamStatsGermlineWorkflow.py
+++ b/janis_bioinformatics/tools/pmac/addBamStatsGermlineWorkflow.py
@@ -1,3 +1,4 @@
+from datetime import datetime
from janis_core import WorkflowBuilder, WorkflowMetadata
# data types
@@ -26,7 +27,12 @@ def tool_provider(self):
return "Peter MacCallum Cancer Centre"
def bind_metadata(self):
- return WorkflowMetadata(version="v0.1.0", contributors=["Jiaan Yu"])
+ return WorkflowMetadata(
+ version="v0.1.0",
+ contributors=["Jiaan Yu"],
+ dateCreated=datetime(2020, 6, 4),
+ dateUpdated=datetime(2020, 8, 10),
+ )
def constructor(self):
diff --git a/janis_bioinformatics/tools/pmac/addBamStatsSomaticWorkflow.py b/janis_bioinformatics/tools/pmac/addBamStatsSomaticWorkflow.py
index 30f771d5c..b51fd5858 100644
--- a/janis_bioinformatics/tools/pmac/addBamStatsSomaticWorkflow.py
+++ b/janis_bioinformatics/tools/pmac/addBamStatsSomaticWorkflow.py
@@ -1,3 +1,4 @@
+from datetime import datetime
from janis_core import WorkflowBuilder, WorkflowMetadata
# data types
@@ -26,7 +27,12 @@ def tool_provider(self):
return "Peter MacCallum Cancer Centre"
def bind_metadata(self):
- return WorkflowMetadata(version="v0.1.0", contributors=["Jiaan Yu"])
+ return WorkflowMetadata(
+ version="v0.1.0",
+ contributors=["Jiaan Yu"],
+ dateCreated=datetime(2020, 6, 4),
+ dateUpdated=datetime(2020, 8, 10),
+ )
def constructor(self):
diff --git a/janis_bioinformatics/tools/pmac/addbamstats/base.py b/janis_bioinformatics/tools/pmac/addbamstats/base.py
index 5de226949..13bcae27c 100644
--- a/janis_bioinformatics/tools/pmac/addbamstats/base.py
+++ b/janis_bioinformatics/tools/pmac/addbamstats/base.py
@@ -38,7 +38,7 @@ def outputs(self):
return [ToolOutput("out", Vcf(), glob=InputSelector("outputFilename"))]
def bind_metadata(self):
- self.metadata.creator = "Jiaan Yu"
+ self.metadata.dateCreated = datetime.datetime(2020, 5, 20)
self.metadata.dateUpdated = datetime.datetime(2020, 5, 20)
self.metadata.contributors = ["Jiaan Yu"]
self.metadata.documentationUrl = (
diff --git a/janis_bioinformatics/tools/pmac/addbamstats/versions.py b/janis_bioinformatics/tools/pmac/addbamstats/versions.py
index f6b02329e..d0bf41d31 100644
--- a/janis_bioinformatics/tools/pmac/addbamstats/versions.py
+++ b/janis_bioinformatics/tools/pmac/addbamstats/versions.py
@@ -4,9 +4,9 @@
PeterMacUtils_dev,
)
-
-class AddBamStats_dev(AddBamStatsBase, PeterMacUtils_dev):
- pass
+# NOTE: disabled as this is for dev work only
+# class AddBamStats_dev(AddBamStatsBase, PeterMacUtils_dev):
+# pass
class AddBamStats_0_0_7(AddBamStatsBase, PeterMacUtils_0_0_7):
diff --git a/janis_bioinformatics/tools/pmac/addsymtodepthofcoverage/base.py b/janis_bioinformatics/tools/pmac/addsymtodepthofcoverage/base.py
index c01a3c26d..12aded57b 100644
--- a/janis_bioinformatics/tools/pmac/addsymtodepthofcoverage/base.py
+++ b/janis_bioinformatics/tools/pmac/addsymtodepthofcoverage/base.py
@@ -38,7 +38,7 @@ def outputs(self):
return [ToolOutput("out", TextFile(), glob=InputSelector("outputFilename"))]
def bind_metadata(self):
- self.metadata.creator = "Jiaan Yu"
+ self.metadata.dateCreated = datetime.datetime(2020, 4, 9)
self.metadata.dateUpdated = datetime.datetime(2020, 4, 9)
self.metadata.contributors = ["Jiaan Yu"]
self.metadata.documentationUrl = (
diff --git a/janis_bioinformatics/tools/pmac/addsymtodepthofcoverage/versions.py b/janis_bioinformatics/tools/pmac/addsymtodepthofcoverage/versions.py
index 126f372f8..1f5f16596 100644
--- a/janis_bioinformatics/tools/pmac/addsymtodepthofcoverage/versions.py
+++ b/janis_bioinformatics/tools/pmac/addsymtodepthofcoverage/versions.py
@@ -6,9 +6,9 @@
PeterMacUtils_dev,
)
-
-class AddSymToDepthOfCoverage_dev(AddSymToDepthOfCoverageBase, PeterMacUtils_dev):
- pass
+# NOTE: disabled as this is for dev work only
+# class AddSymToDepthOfCoverage_dev(AddSymToDepthOfCoverageBase, PeterMacUtils_dev):
+# pass
class AddSymToDepthOfCoverage_0_0_7(AddSymToDepthOfCoverageBase, PeterMacUtils_0_0_7):
diff --git a/janis_bioinformatics/tools/pmac/allsortsWorkflow.py b/janis_bioinformatics/tools/pmac/allsortsWorkflow.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/janis_bioinformatics/tools/pmac/annotateDepthOfCoverageWorkflow.py b/janis_bioinformatics/tools/pmac/annotateDepthOfCoverageWorkflow.py
index e1c3a6fb7..e3d32592b 100644
--- a/janis_bioinformatics/tools/pmac/annotateDepthOfCoverageWorkflow.py
+++ b/janis_bioinformatics/tools/pmac/annotateDepthOfCoverageWorkflow.py
@@ -1,3 +1,4 @@
+from datetime import datetime
from janis_core import WorkflowBuilder, WorkflowMetadata
# data types
@@ -23,7 +24,12 @@ def tool_provider(self):
return "Peter MacCallum Cancer Centre"
def bind_metadata(self):
- return WorkflowMetadata(version="v0.1.0", contributors=["Jiaan Yu"])
+ return WorkflowMetadata(
+ version="v0.1.0",
+ contributors=["Jiaan Yu"],
+ dateCreated=datetime(2020, 4, 28),
+ dateUpdated=datetime(2020, 10, 7),
+ )
def constructor(self):
diff --git a/janis_bioinformatics/tools/pmac/combinevariants/base.py b/janis_bioinformatics/tools/pmac/combinevariants/base.py
index 2664553b0..cee9c3daa 100644
--- a/janis_bioinformatics/tools/pmac/combinevariants/base.py
+++ b/janis_bioinformatics/tools/pmac/combinevariants/base.py
@@ -122,9 +122,9 @@ def outputs(self) -> List[ToolOutput]:
]
def bind_metadata(self):
- self.metadata.creator = "Jiaan Yu"
+ self.metadata.dateCreated = datetime.datetime(2019, 3, 25)
self.metadata.dateUpdated = datetime.datetime(2019, 7, 4)
- self.metadata.contributors = ["Michael Franklin"]
+ self.metadata.contributors = ["Jiaan Yu", "Michael Franklin"]
self.metadata.documentation = """
usage: combine_vcf.py [-h] -i I --columns COLUMNS -o O --type
{germline,somatic} [--regions REGIONS] [--normal NORMAL]
diff --git a/janis_bioinformatics/tools/pmac/extractstrelkasomaticaddp/base.py b/janis_bioinformatics/tools/pmac/extractstrelkasomaticaddp/base.py
index fcc897a68..c96cad16b 100644
--- a/janis_bioinformatics/tools/pmac/extractstrelkasomaticaddp/base.py
+++ b/janis_bioinformatics/tools/pmac/extractstrelkasomaticaddp/base.py
@@ -81,6 +81,7 @@ def outputs(self) -> List[ToolOutput]:
def bind_metadata(self):
self.metadata.creator = "Jiaan Yu"
+ self.metadata.dateCreated = datetime.datetime(2020, 7, 27)
self.metadata.dateUpdated = datetime.datetime(2020, 7, 27)
self.metadata.contributors = ["Jiaan Yu"]
self.metadata.documentation = """
diff --git a/janis_bioinformatics/tools/pmac/extractstrelkasomaticaddp/versions.py b/janis_bioinformatics/tools/pmac/extractstrelkasomaticaddp/versions.py
index 3f869ff45..0ec368382 100644
--- a/janis_bioinformatics/tools/pmac/extractstrelkasomaticaddp/versions.py
+++ b/janis_bioinformatics/tools/pmac/extractstrelkasomaticaddp/versions.py
@@ -21,8 +21,9 @@ class ExtractStrelkaSomaticADDP_0_1_1(
pass
-class ExtractStrelkaSomaticADDP_dev(ExtractStrelkaSomaticADDPBase, PeterMacUtils_dev):
- pass
+# NOTE: disabled as this is for dev work only
+# class ExtractStrelkaSomaticADDP_dev(ExtractStrelkaSomaticADDPBase, PeterMacUtils_dev):
+# pass
ExtractStrelkaSomaticADDPLatest = ExtractStrelkaSomaticADDP_0_1_1
diff --git a/janis_bioinformatics/tools/pmac/genecovpersample/base.py b/janis_bioinformatics/tools/pmac/genecovpersample/base.py
index 748eafc37..64ea27767 100644
--- a/janis_bioinformatics/tools/pmac/genecovpersample/base.py
+++ b/janis_bioinformatics/tools/pmac/genecovpersample/base.py
@@ -71,7 +71,7 @@ def outputs(self):
]
def bind_metadata(self):
- self.metadata.creator = "Jiaan Yu"
+ self.metadata.dateCreated = datetime.datetime(2020, 4, 3)
self.metadata.dateUpdated = datetime.datetime(2020, 4, 3)
self.metadata.contributors = ["Jiaan Yu"]
self.metadata.documentation = """usage: gene_coverage_per_sample.py [-h] [-l LIST] [-n NAME] [-p PATH] [-b BED]
diff --git a/janis_bioinformatics/tools/pmac/genecovpersample/versions.py b/janis_bioinformatics/tools/pmac/genecovpersample/versions.py
index 88bcb0810..e09961932 100644
--- a/janis_bioinformatics/tools/pmac/genecovpersample/versions.py
+++ b/janis_bioinformatics/tools/pmac/genecovpersample/versions.py
@@ -16,8 +16,9 @@ class GeneCoveragePerSample_0_0_8(GeneCoveragePerSampleBase, PeterMacUtils_0_0_8
pass
-class GeneCoveragePerSample_dev(GeneCoveragePerSampleBase, PeterMacUtils_dev):
- pass
+# NOTE: disabled as this is for dev work only
+# class GeneCoveragePerSample_dev(GeneCoveragePerSampleBase, PeterMacUtils_dev):
+# pass
GeneCoveragePerSampleLatest = GeneCoveragePerSample_0_0_8
diff --git a/janis_bioinformatics/tools/pmac/generatebedtoolscoveragegenomefile.py b/janis_bioinformatics/tools/pmac/generatebedtoolscoveragegenomefile.py
index 72039d172..dea0bec6e 100644
--- a/janis_bioinformatics/tools/pmac/generatebedtoolscoveragegenomefile.py
+++ b/janis_bioinformatics/tools/pmac/generatebedtoolscoveragegenomefile.py
@@ -57,6 +57,7 @@ def version(self):
return "v0.1.0"
def bind_metadata(self):
+ self.metadata.dateCreated = datetime(2020, 7, 21)
self.metadata.dateUpdated = datetime(2020, 6, 2)
self.metadata.contributors = ["Michael Franklin", "Jiaan Yu"]
self.metadata.documentation = """\
diff --git a/janis_bioinformatics/tools/pmac/generatevardictheaderlines/__init__.py b/janis_bioinformatics/tools/pmac/generatevardictheaderlines/__init__.py
index d5c65f392..38a9a799b 100644
--- a/janis_bioinformatics/tools/pmac/generatevardictheaderlines/__init__.py
+++ b/janis_bioinformatics/tools/pmac/generatevardictheaderlines/__init__.py
@@ -57,6 +57,7 @@ def version(self):
return "v0.1.0"
def bind_metadata(self):
+ self.metadata.dateCreated = datetime(2020, 6, 2)
self.metadata.dateUpdated = datetime(2020, 6, 2)
self.metadata.contributors = ["Michael Franklin", "Jiaan Yu"]
self.metadata.documentation = """\
diff --git a/janis_bioinformatics/tools/pmac/generatintervalsbychromosome/generateintervalsbychromosome.py b/janis_bioinformatics/tools/pmac/generatintervalsbychromosome/generateintervalsbychromosome.py
index 8f6104daf..4b4405870 100644
--- a/janis_bioinformatics/tools/pmac/generatintervalsbychromosome/generateintervalsbychromosome.py
+++ b/janis_bioinformatics/tools/pmac/generatintervalsbychromosome/generateintervalsbychromosome.py
@@ -2,11 +2,11 @@
from typing import Dict, Any, List, Optional
import janis_core as j
-
+from janis_bioinformatics.tools.bioinformaticstoolbase import BioinformaticsPythonTool
from janis_bioinformatics.data_types import FastaDict, Bed
-class GenerateIntervalsByChromosome(j.PythonTool):
+class GenerateIntervalsByChromosome(BioinformaticsPythonTool):
@staticmethod
def code_block(
reference: FastaDict,
@@ -38,9 +38,9 @@ def code_block(
# Allowed contigs: use the standard human genome if none are provided
# include M / MT for hg19 / hg39
if allowed_contigs is None:
- allowed_contigs = map(
- lambda el: f"{prefix}{el}", [*range(23), "X", "Y", "M", "MT"]
- )
+ allowed_contigs = list(
+ map(lambda el: f"{prefix}{el}", [*range(23), "X", "Y", "M", "MT"])
+ ) + [*range(23), "X", "Y", "M", "MT"]
allowed_contigs = set(allowed_contigs)
def contig_label(contig: str) -> str:
@@ -155,3 +155,7 @@ def bind_metadata(self):
def tool_provider(self):
return "Peter MacCallum Cancer Centre"
+
+
+if __name__ == "__main__":
+ GenerateIntervalsByChromosome().translate("wdl")
diff --git a/janis_bioinformatics/tools/pmac/molpathGermlineWorkflow.py b/janis_bioinformatics/tools/pmac/molpathGermlineWorkflow.py
index 795622233..d887f36b7 100644
--- a/janis_bioinformatics/tools/pmac/molpathGermlineWorkflow.py
+++ b/janis_bioinformatics/tools/pmac/molpathGermlineWorkflow.py
@@ -1,4 +1,4 @@
-from datetime import date
+from datetime import datetime
from janis_core import (
File,
@@ -50,7 +50,12 @@ def tool_provider(self):
return "Peter MacCallum Cancer Centre"
def bind_metadata(self):
- return WorkflowMetadata(version="v1.0.0", contributors=["Jiaan Yu"])
+ return WorkflowMetadata(
+ version="v1.0.0",
+ contributors=["Jiaan Yu"],
+ dateCreated=datetime(2020, 6, 4),
+ dateUpdated=datetime(2020, 8, 10),
+ )
def constructor(self):
diff --git a/janis_bioinformatics/tools/pmac/molpathTumorOnlyWorkflow.py b/janis_bioinformatics/tools/pmac/molpathTumorOnlyWorkflow.py
index 01ee1ac19..4db36c2f8 100644
--- a/janis_bioinformatics/tools/pmac/molpathTumorOnlyWorkflow.py
+++ b/janis_bioinformatics/tools/pmac/molpathTumorOnlyWorkflow.py
@@ -1,4 +1,4 @@
-from datetime import date
+from datetime import datetime
from janis_core import (
File,
@@ -62,7 +62,12 @@ def tool_provider(self):
return "Peter MacCallum Cancer Centre"
def bind_metadata(self):
- return WorkflowMetadata(version="v1.0.0", contributors=["Jiaan Yu"])
+ return WorkflowMetadata(
+ version="v1.0.0",
+ contributors=["Jiaan Yu"],
+ dateCreated=datetime(2020, 6, 12),
+ dateUpdated=datetime(2020, 8, 10),
+ )
def constructor(self):
diff --git a/janis_bioinformatics/tools/pmac/parsefastqc/v0_1_0.py b/janis_bioinformatics/tools/pmac/parsefastqc/v0_1_0.py
index 6154f18ac..e5ae97207 100644
--- a/janis_bioinformatics/tools/pmac/parsefastqc/v0_1_0.py
+++ b/janis_bioinformatics/tools/pmac/parsefastqc/v0_1_0.py
@@ -1,7 +1,7 @@
"""
Each modification of this tool should duplicate this code
"""
-
+from datetime import datetime
from typing import List, Dict, Any, Optional
from janis_core import PythonTool, File, Array, ToolMetadata
@@ -136,6 +136,7 @@ def bind_metadata(self):
self.metadata.documentation = (
"Parse overrepresented region and lookup in Cutadapt table"
)
- self.metadata.creator = "Michael Franklin"
- self.metadata.dateCreated = "2020-01-07"
+ self.metadata.contributors = ["Michael Franklin"]
+ self.metadata.dateCreated = datetime(2020, 1, 7)
+ self.metadata.dateUpdated = datetime(2020, 2, 14)
self.metadata.version = "0.1.0"
diff --git a/janis_bioinformatics/tools/pmac/performanceSummaryGenomeWorkflow.py b/janis_bioinformatics/tools/pmac/performanceSummaryGenomeWorkflow.py
index 47bfbed09..a950db021 100644
--- a/janis_bioinformatics/tools/pmac/performanceSummaryGenomeWorkflow.py
+++ b/janis_bioinformatics/tools/pmac/performanceSummaryGenomeWorkflow.py
@@ -1,3 +1,4 @@
+from datetime import datetime
from janis_core import String
from janis_core import WorkflowMetadata
@@ -31,7 +32,12 @@ def tool_provider(self):
return "Peter MacCallum Cancer Centre"
def bind_metadata(self):
- return WorkflowMetadata(version="v0.1.0", contributors=["Jiaan Yu"])
+ return WorkflowMetadata(
+ version="v0.1.0",
+ contributors=["Jiaan Yu"],
+ dateCreated=datetime(2020, 4, 28),
+ dateUpdated=datetime(2020, 6, 12),
+ )
def constructor(self):
diff --git a/janis_bioinformatics/tools/pmac/performanceSummaryTargetedWorkflow.py b/janis_bioinformatics/tools/pmac/performanceSummaryTargetedWorkflow.py
index 494970644..72649869d 100644
--- a/janis_bioinformatics/tools/pmac/performanceSummaryTargetedWorkflow.py
+++ b/janis_bioinformatics/tools/pmac/performanceSummaryTargetedWorkflow.py
@@ -1,3 +1,4 @@
+from datetime import datetime
from janis_core import String
from janis_core import WorkflowMetadata
@@ -32,7 +33,12 @@ def tool_provider(self):
return "Peter MacCallum Cancer Centre"
def bind_metadata(self):
- return WorkflowMetadata(version="v0.1.0", contributors=["Jiaan Yu"])
+ return WorkflowMetadata(
+ version="v0.1.0",
+ contributors=["Jiaan Yu"],
+ dateCreated=datetime(2020, 4, 28),
+ dateUpdated=datetime(2020, 10, 5),
+ )
def constructor(self):
diff --git a/janis_bioinformatics/tools/pmac/performancesummary/base.py b/janis_bioinformatics/tools/pmac/performancesummary/base.py
index d921e5bec..4a9a55b94 100644
--- a/janis_bioinformatics/tools/pmac/performancesummary/base.py
+++ b/janis_bioinformatics/tools/pmac/performancesummary/base.py
@@ -70,7 +70,7 @@ def outputs(self):
]
def bind_metadata(self):
- self.metadata.creator = "Jiaan Yu"
+ self.metadata.dateCreated = datetime.datetime(2020, 4, 3)
self.metadata.dateUpdated = datetime.datetime(2020, 4, 3)
self.metadata.contributors = ["Jiaan Yu"]
self.metadata.documentation = """usage: performance_summary.py [-h] --flagstat FLAGSTAT
diff --git a/janis_bioinformatics/tools/pmac/performancesummary/versions.py b/janis_bioinformatics/tools/pmac/performancesummary/versions.py
index 690ff6772..320405653 100644
--- a/janis_bioinformatics/tools/pmac/performancesummary/versions.py
+++ b/janis_bioinformatics/tools/pmac/performancesummary/versions.py
@@ -11,8 +11,9 @@ class PerformanceSummary_0_0_7(PerformanceSummaryBase, PeterMacUtils_0_0_7):
pass
-class PerformanceSummary_dev(PerformanceSummaryBase, PeterMacUtils_dev):
- pass
+# NOTE: disabled as this is for dev work only
+# class PerformanceSummary_dev(PerformanceSummaryBase, PeterMacUtils_dev):
+# pass
PerformanceSummaryLatest = PerformanceSummary_0_0_7
diff --git a/janis_bioinformatics/tools/pmac/trimiupac/base.py b/janis_bioinformatics/tools/pmac/trimiupac/base.py
index 07f8e9888..04ba43010 100644
--- a/janis_bioinformatics/tools/pmac/trimiupac/base.py
+++ b/janis_bioinformatics/tools/pmac/trimiupac/base.py
@@ -1,10 +1,18 @@
+from datetime import datetime
from abc import ABC
from typing import Dict, Any, List
from janis_bioinformatics.data_types import Vcf
from janis_bioinformatics.tools import BioinformaticsTool
-from janis_core import CaptureType, ToolInput, Filename, ToolOutput, InputSelector
+from janis_core import (
+ CaptureType,
+ ToolInput,
+ Filename,
+ ToolOutput,
+ InputSelector,
+ ToolMetadata,
+)
from janis_core import get_value_for_hints_and_ordered_resource_tuple
@@ -71,3 +79,11 @@ def inputs(self) -> List[ToolInput]:
def outputs(self) -> List[ToolOutput]:
return [ToolOutput("out", Vcf(), InputSelector("outputFilename"))]
+
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Michael Franklin"],
+ dateCreated=datetime(2019, 5, 30),
+ dateUpdated=datetime(2019, 12, 8),
+ documentation="",
+ )
diff --git a/janis_bioinformatics/tools/samtools/faidx/base.py b/janis_bioinformatics/tools/samtools/faidx/base.py
index 0a15ea4ea..bb236a7c1 100644
--- a/janis_bioinformatics/tools/samtools/faidx/base.py
+++ b/janis_bioinformatics/tools/samtools/faidx/base.py
@@ -1,3 +1,5 @@
+import os
+import operator
from abc import ABC
from datetime import date
@@ -6,6 +8,13 @@
from janis_bioinformatics.data_types import Fasta, FastaFai
from ..samtoolstoolbase import SamToolsToolBase
+from janis_bioinformatics.tools.bioinformaticstoolbase import BioinformaticsTool
+
+from janis_core.tool.test_classes import (
+ TTestPreprocessor,
+ TTestExpectedOutput,
+ TTestCase,
+)
class SamToolsFaidxBase(SamToolsToolBase, ABC):
@@ -38,3 +47,23 @@ def bind_metadata(self):
documentation="""""",
)
return self.metadata
+
+ def tests(self):
+ return [
+ TTestCase(
+ name="basic",
+ input={
+ "reference": os.path.join(
+ BioinformaticsTool.test_data_path(), "hg38-brca1.fasta"
+ ),
+ },
+ output=[
+ TTestExpectedOutput(
+ tag="out",
+ preprocessor=TTestPreprocessor.FileMd5,
+ operator=operator.eq,
+ expected_value="768915f0ceff3bae0bac0ace5f7ccad0",
+ ),
+ ],
+ )
+ ]
diff --git a/janis_bioinformatics/tools/samtools/flagstat/base.py b/janis_bioinformatics/tools/samtools/flagstat/base.py
index ac013208c..8671a9089 100644
--- a/janis_bioinformatics/tools/samtools/flagstat/base.py
+++ b/janis_bioinformatics/tools/samtools/flagstat/base.py
@@ -1,3 +1,5 @@
+import os
+import operator
from abc import ABC
from janis_core import (
@@ -15,8 +17,15 @@
from janis_unix import TextFile
from janis_bioinformatics.data_types.bam import Bam
from janis_bioinformatics.tools.samtools.samtoolstoolbase import SamToolsToolBase
+from janis_bioinformatics.tools.bioinformaticstoolbase import BioinformaticsTool
from janis_core import ToolMetadata
+from janis_core.tool.test_classes import (
+ TTestPreprocessor,
+ TTestExpectedOutput,
+ TTestCase,
+)
+
class SamToolsFlagstatBase(SamToolsToolBase, ABC):
def tool(self):
@@ -94,3 +103,35 @@ def bind_metadata(self):
with mate mapped to a different chr (mapQ>=5) 0x1 bit set and neither 0x4 nor 0x8 bits set and MRNM not equal to RNAME and MAPQ >= 5)""".strip(),
)
+
+ def tests(self):
+ return [
+ TTestCase(
+ name="basic",
+ input={
+ "bam": os.path.join(
+ BioinformaticsTool.test_data_path(), "small.bam"
+ ),
+ },
+ output=[
+ TTestExpectedOutput(
+ tag="out",
+ preprocessor=TTestPreprocessor.FileMd5,
+ operator=operator.eq,
+ expected_value="dc58fe92a9bb0c897c85804758dfadbf",
+ ),
+ TTestExpectedOutput(
+ tag="out",
+ preprocessor=TTestPreprocessor.FileContent,
+ operator=operator.contains,
+ expected_value="19384 + 0 in total (QC-passed reads + QC-failed reads)",
+ ),
+ TTestExpectedOutput(
+ tag="out",
+ preprocessor=TTestPreprocessor.LineCount,
+ operator=operator.eq,
+ expected_value=13,
+ ),
+ ],
+ )
+ ]
diff --git a/janis_bioinformatics/tools/samtools/index/base.py b/janis_bioinformatics/tools/samtools/index/base.py
index 4f946a888..f26d2aab4 100644
--- a/janis_bioinformatics/tools/samtools/index/base.py
+++ b/janis_bioinformatics/tools/samtools/index/base.py
@@ -1,6 +1,9 @@
+import os
+import operator
from abc import ABC
from datetime import date
+from janis_bioinformatics.data_types import Sam, Cram
from janis_core import (
ToolInput,
ToolOutput,
@@ -10,9 +13,17 @@
CpuSelector,
)
from janis_core import ToolMetadata
+from janis_core.types import UnionType
from janis_bioinformatics.data_types.bam import Bam, BamBai
from ..samtoolstoolbase import SamToolsToolBase
+from janis_bioinformatics.tools.bioinformaticstoolbase import BioinformaticsTool
+
+from janis_core.tool.test_classes import (
+ TTestPreprocessor,
+ TTestExpectedOutput,
+ TTestCase,
+)
class SamToolsIndexBase(SamToolsToolBase, ABC):
@@ -27,7 +38,9 @@ def inputs(self):
return [
*super(SamToolsIndexBase, self).inputs(),
*SamToolsIndexBase.additional_inputs,
- ToolInput("bam", Bam, position=10, localise_file=True),
+ ToolInput(
+ "bam", UnionType(Bam, Sam, Cram), position=10, localise_file=True
+ ),
ToolInput(
"threads",
Int(optional=True),
@@ -60,4 +73,24 @@ def bind_metadata(self):
def arguments(self):
return [ToolArgument("-b", position=4, doc="Output in the BAM format.")]
+ def tests(self):
+ return [
+ TTestCase(
+ name="basic",
+ input={
+ "bam": os.path.join(
+ BioinformaticsTool.test_data_path(), "small.bam"
+ ),
+ },
+ output=[
+ TTestExpectedOutput(
+ tag="out",
+ preprocessor=TTestPreprocessor.FileMd5,
+ operator=operator.eq,
+ expected_value="c9c318de134643665ff1fed6cfaec49c",
+ ),
+ ],
+ )
+ ]
+
additional_inputs = []
diff --git a/janis_bioinformatics/tools/samtools/mpileup/base.py b/janis_bioinformatics/tools/samtools/mpileup/base.py
index ef36286ff..1e4b73146 100644
--- a/janis_bioinformatics/tools/samtools/mpileup/base.py
+++ b/janis_bioinformatics/tools/samtools/mpileup/base.py
@@ -1,3 +1,5 @@
+import os
+import operator
from abc import ABC
from janis_core import (
@@ -16,7 +18,13 @@
from janis_unix import TextFile
from janis_bioinformatics.data_types.bam import BamBai
from janis_bioinformatics.tools.samtools.samtoolstoolbase import SamToolsToolBase
+from janis_bioinformatics.tools.bioinformaticstoolbase import BioinformaticsTool
from janis_core import ToolMetadata
+from janis_core.tool.test_classes import (
+ TTestPreprocessor,
+ TTestExpectedOutput,
+ TTestCase,
+)
class SamToolsMpileupBase(SamToolsToolBase, ABC):
@@ -193,3 +201,35 @@ def bind_metadata(self):
doc="Reference sequence FASTA FILE [null]",
),
]
+
+ def tests(self):
+ return [
+ TTestCase(
+ name="basic",
+ input={
+ "bam": os.path.join(
+ BioinformaticsTool.test_data_path(), "small.bam"
+ ),
+ },
+ output=[
+ TTestExpectedOutput(
+ tag="out",
+ preprocessor=TTestPreprocessor.FileMd5,
+ operator=operator.eq,
+ expected_value="6b6f2401df9965b5250f4752dde03f2a",
+ ),
+ TTestExpectedOutput(
+ tag="out",
+ preprocessor=TTestPreprocessor.FileContent,
+ operator=operator.contains,
+ expected_value="17:43044045-43125733\t5\tN\t15\tCCCCCCCCCCCCCCC\tJDDAJDEDCDJD>gB\n",
+ ),
+ TTestExpectedOutput(
+ tag="out",
+ preprocessor=TTestPreprocessor.LineCount,
+ operator=operator.eq,
+ expected_value=81689,
+ ),
+ ],
+ )
+ ]
diff --git a/janis_bioinformatics/tools/samtools/view/base.py b/janis_bioinformatics/tools/samtools/view/base.py
index 83216e6a0..8c87b481d 100644
--- a/janis_bioinformatics/tools/samtools/view/base.py
+++ b/janis_bioinformatics/tools/samtools/view/base.py
@@ -1,6 +1,15 @@
+import os
+import operator
from abc import ABC
from datetime import date
+from janis_core.tool.test_classes import (
+ TTestPreprocessor,
+ TTestExpectedOutput,
+ TTestCase,
+)
+
+
from janis_core import (
ToolInput,
ToolOutput,
@@ -21,6 +30,7 @@
from janis_bioinformatics.data_types import FastaWithDict, Sam, Bam, Cram
from ..samtoolstoolbase import SamToolsToolBase
+from janis_bioinformatics.tools.bioinformaticstoolbase import BioinformaticsTool
class SamToolsViewBase(SamToolsToolBase, ABC):
@@ -281,3 +291,23 @@ def arguments(self):
doc="Number of BAM compression threads to use in addition to main thread [0].",
),
]
+
+ def tests(self):
+ return [
+ TTestCase(
+ name="basic",
+ input={
+ "sam": os.path.join(
+ BioinformaticsTool.test_data_path(), "small.bam"
+ ),
+ },
+ output=[
+ TTestExpectedOutput(
+ tag="out",
+ preprocessor=TTestPreprocessor.FileMd5,
+ operator=operator.eq,
+ expected_value="54be668168b91eb1c04929b9305c1ac7",
+ ),
+ ],
+ )
+ ]
diff --git a/janis_bioinformatics/tools/samtools/view/view.py b/janis_bioinformatics/tools/samtools/view/view.py
index 51ab30564..3b6458aa3 100644
--- a/janis_bioinformatics/tools/samtools/view/view.py
+++ b/janis_bioinformatics/tools/samtools/view/view.py
@@ -1,10 +1,35 @@
+import os
+import operator
from .base import SamToolsViewBase
+from ..samtoolstoolbase import SamToolsToolBase
from ..samtools_1_7 import SamTools_1_7
from ..samtools_1_9 import SamTools_1_9
+from janis_core.tool.test_classes import (
+ TTestPreprocessor,
+ TTestExpectedOutput,
+ TTestCase,
+)
+
class SamToolsView_1_7(SamTools_1_7, SamToolsViewBase):
- pass
+ def tests(self):
+ return [
+ TTestCase(
+ name="basic",
+ input={
+ "sam": os.path.join(SamToolsToolBase.test_data_path(), "small.bam"),
+ },
+ output=[
+ TTestExpectedOutput(
+ tag="out",
+ preprocessor=TTestPreprocessor.FileMd5,
+ operator=operator.eq,
+ expected_value="4dd0783b97f4dde4745df4557096a095",
+ ),
+ ],
+ )
+ ]
class SamToolsView_1_9(SamTools_1_9, SamToolsViewBase):
diff --git a/janis_bioinformatics/tools/star/inputalignmentsfrombam.py b/janis_bioinformatics/tools/star/inputalignmentsfrombam.py
index 9783f00dc..afa19788e 100644
--- a/janis_bioinformatics/tools/star/inputalignmentsfrombam.py
+++ b/janis_bioinformatics/tools/star/inputalignmentsfrombam.py
@@ -12,3 +12,6 @@ def run_mode(self):
def outputs(self) -> List[ToolOutput]:
pass
+
+ def skip_test(cls) -> bool:
+ return True
diff --git a/janis_bioinformatics/tools/star/liftover.py b/janis_bioinformatics/tools/star/liftover.py
index cf87593ef..e578643d1 100644
--- a/janis_bioinformatics/tools/star/liftover.py
+++ b/janis_bioinformatics/tools/star/liftover.py
@@ -12,3 +12,6 @@ def run_mode(self):
def outputs(self) -> List[ToolOutput]:
pass
+
+ def skip_test(cls) -> bool:
+ return True
diff --git a/janis_bioinformatics/tools/suhrig/arriba/base.py b/janis_bioinformatics/tools/suhrig/arriba/base.py
index 36b1ac73b..21924eb3f 100644
--- a/janis_bioinformatics/tools/suhrig/arriba/base.py
+++ b/janis_bioinformatics/tools/suhrig/arriba/base.py
@@ -396,7 +396,7 @@ def outputs(self):
),
]
- def metadata(self):
+ def bind_metadata(self):
return ToolMetadata(
contributors=["Michael Franklin"],
dateCreated=datetime(2020, 9, 2),
diff --git a/janis_bioinformatics/tools/test_data/BRCA1_R1.fastq.gz b/janis_bioinformatics/tools/test_data/BRCA1_R1.fastq.gz
new file mode 100755
index 000000000..6b38287a7
Binary files /dev/null and b/janis_bioinformatics/tools/test_data/BRCA1_R1.fastq.gz differ
diff --git a/janis_bioinformatics/tools/test_data/BRCA1_R2.fastq.gz b/janis_bioinformatics/tools/test_data/BRCA1_R2.fastq.gz
new file mode 100755
index 000000000..b63dcf8d6
Binary files /dev/null and b/janis_bioinformatics/tools/test_data/BRCA1_R2.fastq.gz differ
diff --git a/janis_bioinformatics/tools/test_data/hg38-brca1.dict b/janis_bioinformatics/tools/test_data/hg38-brca1.dict
new file mode 100644
index 000000000..c010c678e
--- /dev/null
+++ b/janis_bioinformatics/tools/test_data/hg38-brca1.dict
@@ -0,0 +1,2 @@
+@HD VN:1.6
+@SQ SN:17:43044045-43125733 LN:81689 M5:ef8d7ccb3e33d9c7af1b3c0cb32c9231 UR:file:/cromwell-executions/IndexFasta/006560c8-06c4-4f02-ac1b-64b233fd84ee/call-create_dict/execution/hg38-brca1.fasta
diff --git a/janis_bioinformatics/tools/test_data/hg38-brca1.fasta b/janis_bioinformatics/tools/test_data/hg38-brca1.fasta
new file mode 100644
index 000000000..23e47c910
--- /dev/null
+++ b/janis_bioinformatics/tools/test_data/hg38-brca1.fasta
@@ -0,0 +1,1363 @@
+>17:43044045-43125733
+CCTGCGAACACCTTTATTTTGGCCTCATGAAACCTGAAACAAAGAAACAGTTGAGCCACC
+TCAGACTTCTGACCTTGCAACAATTTGTTTTGGCAGCAACAGGAAATACAAAAGGTATTT
+AAGCTGCCTCAATAAATCCTAGGAGGTAGATACTATCATTACCCCCATTTTACAGAGTGG
+GAGACTGAAGCACAGTGAAAAGGCTCTGAGAAAGTCGGCTGGCCTAAGTCTCAAGAACAG
+TCATTCATGGTGGAAGTGTTTGCTACCAAGTTTATTTGCAGTGTTAACAGCACAACATTT
+ACAAAACGTATTTTGTACAATCAAGTCTTCACTGCCCTTGCACACTGGGGGGGCTAGGGA
+AGACCTAGTCCTTCCAACAGCTATAAACAGTCCTGGATAATGGGTTTATGAAAAACACTT
+TTTCTTCCTTCAGCAAGCAAAATTATTTATGAAGCTGTATGGTTTCAGCAACAGGGAGCA
+AAGGAAAAAAATCACCTCAAAGAAAGCAACAGCTTCCTTCCTGGTGGGATCTGTCATTTT
+ATAGATATGAAATATTCATGCCAGAGGTCTTATATTTTAAGAGGAATGGATTATATACCA
+GAGCTACAACAATAAACATTTTACTTATTACTAATGAGGAATTAGAAGACTGTCTTTGGA
+AACCGGTTCTTGAAAATCTTCTGCTGTTTTAGAACACATTCTTTAGAAATCTAGCAAATA
+TATCTCAGACTTTTAGAAATCTCTTCTAGTTTCATTTTCCTTTTTTTTTTTTTTTTTTTG
+AGCCACAGTCTCACTGTCACCCAGGCTGGAGTGCCGTGGTATGATCTTGGCTCACTGCAA
+CCTCCACCTCCCGGGCTGAAGTGATTCTCCTGCCTTAGCCACCTGAGTAGCTGGGATTAC
+AGGTGTCCACCACCATGACCGGCTAATTTCTGTATTTTTAGTAGAGATGGGGTTTCACCA
+TGTTGGCCAGGCTGGTTTCGAACTCCTGACCTCCAGTGATCTGCCCACCTTGGCCTCCCA
+AAGTGCTGGGATTACAGGCGTGAGCCACCATGCCCAGGTTTCAAGTTTCCTTTTCATTTC
+TAATACCTGCCTCAGAATTTCCTCCCCAATGTTCCACTCCAACATTTGAGAACTGCCCAA
+GGACTATTCTGACTTTAAGTCACATAATCGATCCCAAGCACTCTCCTTCCATTGAAGGGT
+CTGACTCTCTGCCTTTGTGAACACAGGGTTTTAGAGAAGTAAACTTAGGGAAACCAGCTA
+TTCTCTTGAGGCCAAGCCACTCTGTGCTTCCAGCCCTAAGCCAACAACAGCCTGAATAGA
+AAGAATAGGGCTGATAAATAATGAATCAGCATCTTGCTCAATTGGTGGCGTTTAAATGGT
+TTTAAAATCTTCTCAGGTGAAAAATTACCATAATTTTGTGCTCATGGCAGATTTCCAAGG
+GAGACTTCAAGCAGAAAATCTTTAAGGGACCCTTGCATAGCCAGAAGTCCTTTTCAGGCT
+GATGTACATAAAATATTTAGTAGCCAGGACAGTAGAAGGACTGAAGAGTGAGAGGAGCTC
+CCAGGGCCTGGAAAGGCCACTTTGTAAGCTCATTCTTGGGGTCCTGTGGCTCTGTACCTG
+TGGCTGGCTGCAGTCAGTAGTGGCTGTGGGGGATCTGGGGTATCAGGTAGGTGTCCAGCT
+CCTGGCACTGGTAGAGTGCTACACTGTCCAACACCCACTCTCGGGTCACCACAGGTGCCT
+CACACATCTGCCCAATTGCTGGAGACAGAGAACACAAGCAGAGATTAGTGTCAATTCATT
+CTCCTGGACTAGGCTCTAATCAATCGACTCCAGGGTCCTGGTTGTATGAGTTCTTAGGAT
+TAATGAGGTAGAAGCTAATTTTTTTTTTTTTTTTTTGAGACGGAGTCTTGCTCTGTCGCC
+GAGGCTAGAGTGTGATGGCGCAATCTCGGCTCATTCAACCTCCGCCTCCTGGGTTCAAGC
+AATTCTCCTGTCTCTGCCTCCTGAGTAGCTGGAATTACAGGCACATGCCATCACACCCAG
+CTAATTTTTGTATTTTTAGTAGAGACGGGGGTTTCACAATGTTGGCCAGGCTGCTCTGGA
+ACTCCTGACCTCAGGTGATCCACCCACCTTGGCCTCCCAAAGTGCTGGGATTACAGGCGT
+GAGCCACTGCACCTGGCCTTTTTTTTTTTTTTTTTTTTTTTTTGAGACGGAGTCTTGCTC
+TTGTTGCTCAGCCTGGAATGCAATGGCACGATCTCAGCTCACTGCAACCTCCACCTCCCG
+GGTTCAAGCAATTCTCCTGCCTCAGCCTCCCAAGTAGCAGGGATTACAGGTGCCTGCCAC
+CATGCCAGGCTAATTGTTTTTTCTTTTTTTTCAGATGGAGTCTCACTCTGTCACTCAGGC
+TGGATTGTGATGGTGTGATCTCAGCTCACTGCAACCTCAACATCCTGGGTTCAAGCGATT
+CTCCTGCCTCAGTCTCCCAAGTAGCTGGGACTACAAGTGCGTGCCACCATGCCTGGCTAA
+TTTTTTTTAGTATTTTTAGTAGAGATGGGGTTTCGCCATATTGGCCAGGCTGGTCTCAAA
+CTCCTGATGTCAGGTGATCCGCCCTGAGGCTGAGGCAGGAGAATCATTTAAACCCAGGAG
+GCGGAGGTTGCAGTGAGCCAAGACTGGGCCACTGCACTCCAGCCTGCTAAGTGACAGAGT
+GAGACTCCACCTCAAAAAAAAAAAAAAAAGGCAATGCTTCAGGACATAAGGCCTTGCTCT
+GAAGAGGCCCTAGGAGTGACTCCTGGTGACAGTGAAAGCCCACAGCCTCTGGCAACTGTA
+TTAACATGAACTTCAATCTGTTAAAGGAAAGCCACCAGGAAAACAGCACTGTAATTTAAC
+GATGTGGAAAAATGTATGTAATATCTTAAGGAAAAAAGCAAAACAGTGTAATTATGATCA
+CATTTTATAAAATACACGTGTATATATACGCACATATGCCTGGTGGAGTTTTATGGTGAT
+CATCTCCAAGTGGTGGAATTACTGGGATTATTTTATTGTTTTTGTGTAAATTTATACTTT
+CTTTTTTCTTTTTGAGACACGGTCTCGCTCTGTCGCCCAGGCTGGAGTACAGTGGTGTGA
+TCGTGGCTCACTGAAGCATCAACCTCCTGAGCTCAAGTGATCCTCCCACCTCAGCTTCCC
+AAGTAGCTGCGACTACAGGCATCTGCCACCACACCCAGCTACTTTTTAAATTTGTTGTAC
+AGATGAAGTCTCCTTATGTTGCCCAGGCTGGTCTCGAACTTCTAGGCTCCCACCTTGACC
+TCCATCTTGACCTCCCAAAGTGCTGGAATTATAGGCATGAGCCACCATGCCCGGCCTTGA
+TTTATGTTTTTGTGATGAACATTCATATCTTACTCCCACCCCATGGAAACAGTTCATGTA
+TTACTTTTACAATATAAAACAAATAACAATAAAAACATCAAAAAGACATTTTAGCCATTC
+ATTCAACAAATATTTAAAATGTGCCAAGAACTGTGCTACTCAAGCACCAGGTAATGAGTG
+ATAAACCAAACCCATGCAAAAGGACCCCATATAGCACAGGTACATGCAGGCACCTTACCA
+TGGAAGCCATTGTCCTCTGTCCAGGCATCTGGCTGCACAACCACAATTGGGTGGACACCC
+TGGATCCCCAGGAAGGAAAGAGCATTCAAAGTGTCAAAGTAGGACTACTGGAACTGTCAC
+TTCATCATTTTTTTTGTTTGTTTTTGAGACAGGGTCTTGCTCTGTCACCCAGGCTGGAGT
+GCAGTGGTGTGATCTCAGCTCACTGCCACCTCTGCCTCCTGGGCTCAAGCAATCCTTCCA
+TCTCAGCCTCCTAAGTAGCTGGAACTACAGACACGTACCACCACCCCTGGCTAATTTTTT
+TGTATTTTTGGTAGAGACAGGGTTTTGCCATGTTGCCCAGGCTGGTCTCAAACTCCTGGG
+CTCAACTTCACCCCCGGGATTATAGGCATGAGCCACCGCACCCAGCCTTGGCTAATTTTT
+AATAATTTTTTTGTAGACATGAGGTCCTACTGTATTGCCCAGGCTGGTCTTCAGCTCCCA
+GGCTCAAGCGATTCTCCCACCTTGGCCTCCCAGTGTTGTGATTACAGGGGTGGGGCACTG
+GCCCAGCCCATCATTTCTCTCTCTCTCTTTTTTTTTGAGACGGAGTCTCGCTCTGTCGCC
+CGGGCTGGAGTGCAGTGGCGCGATCTTGGCTCACTGCAACCTCCGCCTCCGGGGTTCAAG
+CGATTCTCCTGCCCCAGCCCCTCAAGTAGCTGGGACTACAGGCGTGCGCCCCTACGCCCA
+GCTAATTTTTGTATTTTTAGTAGAGACGGGGTTTCGCCATGTTGGTTGGCCAGGATGGTC
+TCGATCTCTTGACCTCGTGATCTGCCCACCTCAGCCTCCCAAAGTGCTGGGATTACAGGC
+GTGAGCCACCGCACCTAGCTTTTCTCTCTCTCTCTTTTTTTTTTTTTTTAGACAAAGTCT
+CACTCTGTCACCCAGTCTGGAGTGCAGTGGTGCAATCTTGGCTCACTGCAACCTCTGCCT
+CCCACGTTCAAGCGATGCTCACACCTCAACTTCCCAAATAGCTGGCATTACAGGCATGCT
+CCACCAGGCCTGGCTACTTTTTGTTTTTTTTTTTTTAGTACAGATGGGGTTTCACCATGT
+TGGCCAGGCTGGTCTCAAACTCCTGACAAGTGATCCACCTGCCTCGGCCTCCCAAAGTGC
+TGGGATTACAGACATGAGCCACCATGCCCAGCCTCCAGCCCATCATTTCTTGATGATTTG
+TTGAAACACAGTATGCTGGGGCAGTCACAGAGAGGAGGGGGAGGGACATATGGGAAAAAG
+AGTTAGAGGGAAAAAGTCTTCCCTCAGTATATTTAATATGTGCAGTTCTCAAATCCTTAC
+CCATCCCTTACAGATGGAGTCTTTTGGCACAGGTATGTGGGCAGAGAAGACTTCTGAGGC
+TACAGTAGGGGCATCCATAGGGACTGACAGGTGCCAGTCTTGCTCACAGGAGAGAATATT
+GTGTCCTCCCTCTCTGACAGGGCACCCAATACTTACTGTGCCAAGGGTGAATGATGAAAG
+CTCCTTCACCACAGAAGCACCACACAGCTGTACCATCCATTCCAGTTGATCTAAAATGGA
+CATTTAGATGTAAAATCACTGCAGTAATCTGCATACTTAACCCAGGCCCTCTACCCTACA
+CTCTCCGGATGAAGGCTTATAGCAAGACCTCTCAATGGGAGAGTCTGTCTCTCTGCTCCA
+AAGGACAATGGTCTTAAAATAGTAGGGGTATGGATTTTAAGTCAATTTGCCACTGATATG
+CCATGTACTCTGGTTATCAGTCTCCATAAGGCCACTTGGTATAAGGTTTGATAGTCTCTC
+AAATAAAATGCTTGAAAGAAAAAAAAATCAAAGATCTAATTTCCATTAATTTGCTAAATT
+GCTGGCTAAGACACTGTGTGAAAAAACACCCACCTTCCTTCCCTCCCTTCCTCCCTTCAT
+CCTAATTCTGTGTTGGTAACTGATAATCACGGCCACTGAAAATACCATACTTGGTGGTAA
+TTACTGTAAATGTCAAGAGATGGGAAGATAATTCATCCAGTCAAAAAAATACATGTTATC
+CTGGTTAGAGACTCAGCAGGGAAAGGCTACATGCTGAGCTGGAATCCATATACTCAGGGG
+AATAAAAATCAGAAGAGACTGTGGAGATGCTGTGTACCTGGAAAATCAGAACTGCCCAAT
+GGGCTCTGTTGGCTGTGTTCTTCAAGACATTCATGTATGTTGCTCTTTCCCATCAGCCCG
+TTTCTGGGAATTGCTGAGGTGCTCCTGTCTGTCTGACTGAACGAAGGTTGACTAACTCAC
+CCCCAAAATAATACTTTCTGGCAACCCTGGTTTCCACTATACCAAAGTAAAAAAACACTG
+AGAAATCCTTGAGTGGAACTTGGAAATTTCATAAAAATCCAATTGATAACTAATAAAGAG
+GATGGAAACAAAATTACATTGCAGCCAGGTTTTCTTGCTGTCACTCATCTGCCTGTGACC
+AGATGCTAAGGCCTTTCTCTAAGGTGTAAGAGGACCTAAGTCCCTGGGCAGAAGCAGGCA
+CAGGAGGCAAAGGTGGGTAGCTTTTGCTGTGAAAAGAACAAACCAAATTTATACACACAC
+CAAGGCCTTTGTGCTGCGCAACTCCAGAGGTAAGCTTTATAGCAGTCCTAAGCATAACAT
+TGTATTAAGTGTCAAGTTTAATTAGAAAATGTTCATGGAGAGGGCTGGGCACAGTGGCTC
+ATGCCTGTAATCCTAGCACTTTGGGAGGCTGAGGCGGGTGGATCACGAGGTCAGGAGATC
+GGGACCATATTGGCTAACACGGTGAAACCCCGTCTCTACTAAAAAAAAAATACAAAAAAT
+TAGTCGGGCGTGGTGGCACACGCCTGTAGTCTCAGCTATTTGGGAGGCTGAGGCAGGAGA
+ATCACTTGAACCCGGGAGGTGGAGGTTGCAGTGAGCCGAGATCGCGCCATTGCACTCTGG
+CCTGGGCAACAGAGACTCGACCTCAAAAAAAAAGAAAAAAAAAAAGAAATGTTCACCGAG
+AATCTTCCCCTGCTCTGGGCCCGTCCGTGGTGGGCCAGCTGCTGTGCTTTCTTCTATGTA
+AGTAAATTAAGATGGTTTAGGAAGAGGAGAACTCCTCCTTGATTTTTACCTATCCAAAGA
+TATTTTCTCACTAACATGTTGGCACTAACAGCAGCTCAACGCCATCTGAACACATAACAT
+ACTGAATCCTAACTATTAACCACCTTCATGCTCTTGAGAAGGGGGACAAGGTATAGTTTT
+TTTTTGCCATAGGATAACATTTAGGTGCTGTTTTGTTTGGAGAGTGGTAGAGAAATAGAA
+TAGCCTCTAGAACATTTCAGCAATCTGAGGAACCCCCATCGTGGGATCTTGCTTATAATA
+CTCCACTATGTAAGACAAAGGCTGGTGCTGGAACTCTGGGGTTCTCCCAGGCTCTTACCT
+GTGGGCATGTTGGTGAAGGGCCCATAGCAACAGATTTCTAGCCCCCTGAAGATCTGGAAG
+AAGAGAGGAAGAGAGAGGGACAGGGGAATGGAGAGAAGGAAAATCTAGTTATAAAAGAAT
+ATTGGCTTTTATTCAAAAAACAGACTTTCAAAAAGGAAGAGCTTTTCTTTTTCTTCTGTT
+CACCACCTGATGATTTCTGCTGCTACTTCCCAGGGACAAGCAGTCCAATGTCCAGAACAC
+TACTGGATTTCAGAAGATCTTCTTGAAGTGCATATGTAGTTGACCTGCACTCTACAGGCA
+TTCTTTGTCATTCAAGGACTGAGCATCTCACTTTTGTCACCAATCAGGCCAAGGCTCCTC
+CCTAATGATCTCTGCAGGTGCTTTAACTTGTTAGATGCAAGGGAAAAAAGGTCCTTCTGT
+ATGTTTAATAAGAGGCTTGGATGGCTAGAAACTCAAAGTTATTGGCTGAAGTTTGATGTT
+TATCCAGACTTGGTACCTCAAGTACTCACTATGACCCCATCAACAGAGGGGTCTATGTTG
+ATTTTAGGTGTACATGCTCCTTGTCTCCTCTGACTTTTTTTTTTTTTTTTGAGACGGAGT
+CTCTCTCTGTCACCTAGGCTGGAGCGTAGTGGTGCGATCTGGGCTCACTGCAACCTCTGC
+CTCCAGGGTTCAAGCGATTCTCCTGCCTTAGCCTCCTGAGTAGCTGGGATTACAGGCGCG
+CACCACCACGCCCGGCTAATTTTTGTATTTTTAGTAGAGACAGGGTTTCACCATGTTGGT
+CAGGCTGGTCTCGAACTCCTGACCTCGTGATCTGCCTGTCTTGGCCTTCCAAAGTGCTGG
+GATTACAGGCATAAGCCACTGCGCCCGGCCCTCTCTGACTTTCTTCTAGCCCCCTAAACA
+TCTGTTCCTTCCTTCTCACTACTCTGAGAATGGCCATTGTATCTTTAGGCCACCTAAGCA
+GTTTTTAATCTAGAAGTGAAGCCAGGTTCTGCCTCTCCTCATTGAACTAGTCTGACTACC
+TGGTTTCCTGAAGACACAGATCACACTGCACTGCCTCTTCCACTTACAGGGCTTGGCAAC
+ACTGTTCAAAACAACTTTCTGTGATAGTCACAATGTTCTATATCTATGCTAATAAGGTAG
+CCATGAGTCACATATAGTTATTGAGCACTGGAGATGTGGTTAGGGTGAATGAAGAACTAA
+ACTTCATATTTTAATTTTTTTCTTTTTTTTTGAAGAGATGAGGTCTCATTCTGTCACTCA
+GGCTGGAGTACAGTGGCACGATCATAGCTTGCTGCAGTATTGAACTTCTGGGCTCAAGCA
+ATCCTCTTGCCTCAGCCTCCTAAGTAGCTGGGACTACAAGTGCACACCACCATGACTGGC
+TAATTTGTAAAATTTAAATTTAAACAGTCCCATGTGGCTGGTGGCAACAGTGTGGGACAG
+TGCAAATTCTCATAAACACACTGGCATAGGTTCTTAGCAAATAACTTGGGTATCACTTAA
+AAATAAACCCTAAAATTGTATCATTTTGGATGGATATGTTTTGGGTGACTCTCAGTGTCT
+TGACCTTCCCATTGCAATAAAAAGAAAATTGCCAAGGCCTAAAATTCACCTGGCTTCAAA
+GAGACTGCGATAGAGAAAAAAATCAGGAAGCTAAAAATACACGGATGGCCTTTTAGAAAG
+TGGTCACCCTCCCCCTTGACAGACAGACGGACAGAAACACACACACACACACACACACAC
+ACACACACACACACACACACTCTCTTACTTTACCGCCAGAGTGAAAAGAAATGGCAGTAG
+GACAAGTCTGTGTGTTTTTTTTTTTTTTTTGAGACGCAGTCTTGCACTGTCGCCTGGGCT
+GGAGTGCAATGGTGCCATCTCGGCTCACTGCAACCTCCACCTCCTGGGTTCAAGTGATTC
+TCCTGCCTCAGCCTCCCTAGTAGCTGGGATTACAGGTGCACACCACCACACCCGGCTAAT
+TTTTTGTATTTTTAGTAGAAACGGGGTTTCACTATGTTGGCCAGGCTGGTCTTGAACTCC
+TGACCTCATGATCCACCCGCCTCAGGCTCCCAAAGACAAGTCTGTTTGTTTTAAGGGACA
+GCATCCATCTGTGCCACTCTCACTACCTGTATGAATAAACCGCACCCCCAACCTGTTGAT
+AGGACCTGCATGCTCATAATGCTAGAAGTTCTCCCCAGGCAGCCAAGTGGAGCCAAATGC
+TGACATGAAAAGTACAAAAGATTAGGAATGTTTATATCCAGGCTAACACTCAGTGATGAG
+GATGCCTAGTTATGAGATAAGAAATTTGAAGTTTCGGGCTTGGCGTAGTGGCTCACGCCT
+GTAATCCCAGCACTTTGGGAGGCTGAGGCAGGCGGATCACGAGGTCAAGAGATGGAGACC
+ATCCCGTCTAACACAGTGAAAACCCGTCTCTACTAAAAATACAAAAAATTAGCTGGGCAT
+GGTGGCGGGCACCTGTAGTCCCAGCTACTTGGGAGGCTGAGGCAGGAGAATGGTGTGAAC
+CCAGGAGGTGGAGTGGAGCTGGTAGTGAGCCGAGACGGCGCCACTGCACTCCAGCCTGGG
+TGACATAGCGAGACTCTGTCTCAAAAAAAAAAAGAAATTTGAAGTTTCAGGCCGGGCGCG
+GTGGCCTGTAATCCTAGCACTTTGGGAGGCCGAGGTGGGTGGATCACTTGGGGTCGGGAG
+TTCAAGACCAGCGTGACCAACATGGAGAAACCCCATCTCTACTAAAAATACAAAATCAGC
+TGGGCGTGGTGGCACATGCCTGTAATCCTAGCTACTTAGGAGGCTGAGGCAGGAGAATCA
+CTTGAACCCTGGAGGCAGAGATTGCGGTGAGCCAAGATCACGCCATTGTACTTCAGCCTG
+GGCAAGAAGAGCAAAGCTTCGTCTTAAAAAAAAAAAAAAAGAAATTTGAAGTTTCACCTC
+TACATATACATTTCTCTTCCAGAGAAAAATACTATGGTGACATTTAGTATTTTCAGAATG
+TCATTACTTTGACCACATACTTTCCATCATTGCTATTCTGCATGGAGGAAAAAATCCAAA
+GCACTAGAATTTCTTTTTAAAGAGGGGAAGAATCTGGTGCTAATACTGCCTAGCATACAG
+TGGAGGAAAAACAGAGGACTGGCTCACATGGCGCTCCCCTGTGGTAAAGGCAGAAGCAGA
+AATAAGGCCAGCAGCTTTTCTTGGCATCTGGAACAATTACTTGATAGGCTCAGAAGGTAA
+AAACAGGCTGACCTCAGCAGTTCAAAACTCCAGGCTTCATTTGTGATCATGTCCCAAAGC
+AGTTTTCCTTAGGAAATTACCTCTACTGGTTCCCTCTTAAGTTTCTATAAAGGGACAGAA
+AGTGCTCAGTAGAAGGATGTTTTGTTTTGTTTTGAGACAAGGTCTCACAATGTTGGCCAG
+GCTGGAGTGCAGTAGCACCATCATGGCTCACTGCAGCCTCGACCTCCCAGACTCAAGCAT
+TCTTCTCACCTCAGCCTCCTGAGTAGCTGGGAATACAAGAGTGTGCTACGACACCCAATT
+AATTTTTAAATTTTTTTGTAGAGACAGGGTCTTACTATGTTGCCCAGGCTAGTCTTGAAC
+TCCTGGGCTCAAGTGATCCTCCTGCCTTGGCCTCCTAAAGTGCTGGGATTACAGAAGTGA
+GCCGCTGTGCCCAGCTGGGATTTTTTTTTTTTTTTTGAGATGAAGTCTCCCTCTTGTCCC
+CAGGCTAGAGTGCAGTGGCGCAATCTTGGCTCACTGCAACCTCCGCCTCCTGGGTTCAAC
+CGATTCTCTAGCCTCAGCCTCCCGAGTAATCCTGAGCTAGGATTACAGGTGCCTACCACC
+ACGCCCAGTTAACTTTTGTATTTTTAGTAGAGATGGGGTTTCACCATGTTGGCCAGGCTG
+GTCTCGAACTCCTGACCTCAGGTGATCCACCCGCCTTGGGCTCCCAAAGTGCTGGGATCA
+CAGGTGTGAGCCACCGCGACCAGCCTGGGATGTTCTGAAATGCCTGGTAGTGCACACTTG
+AAAAAGGAAGAAAAGCAGACTGGGAACATAGCACTTAGGGAGCTGAGAAAGCAGCCAGCT
+CAGGCCTGACAGGTAAGTGTGAAATCTTGCAGACTTTCTCCCTGTGAGGAAGTCAGAGTT
+CTGGCTAAGTCATCTGCTACAATATGATCAGGAGAAAGTCATTGAGTCTTCTTGGGTCTC
+ATCTGCAAAGTTGTTAGAATGCTCCATTTTTTTTCCCTCCGTGAAGCCTTCAACAACTTT
+TCAAGAAACTATAGTATTGTTGTTAAGAGTTTAGAATTGGAGGCCGGGTGCAGTGGCTCA
+TGCTTGTAATCCCAGCACTTTGGGAAGCCAAGGCGGGTGGATCACTGGAGGCCAGGAGAT
+CAAGGCCAGCCTGGCCAACATGGCAAAACCCCATCTCTAATAAAAATATAAAAATTAAGG
+CCGGGTGCAGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGCCTGAGGCGGGCAGATG
+ATCTGAGGTCTGGAATTTGAGACCAGCCTGGCCAACATGTTGAAACCTTGTTTCTATTAA
+AAATACAAAAAACTATCTCGGTGTGGTGGCACGTGCCTGTAATCCCAGCTATTTGGGAGG
+CTAAGGCACGAGAATCACTTGAACCTGGGAGCTGGAGACTGCAGTGAGCTGAGATTGCGC
+CACTGCACTCCAGACTGGCCAACAGAATCAGACAAAAAATTAGCTAGTTGTTGTGGCACA
+TGCCTGTAATCCTAGCCACTTGGGAGGCCAAGGCACAAGAATTGAACAAGGTTTGAACTT
+GGGAGGTGAAGGTTGCAGTGAGCAGAGATAGTGGCACTGCACTCCAGCCTGGGTGACAGA
+GTAAGACTCTGGCCCGAAAAATAAATTAACAAAGAATTTAGACTTGGAGCTAGACTTCCT
+GAGTTCAACTTCTAGTTCCATCACTTATTACCTGTGTGACTTTGAGCAACTTATTCAACC
+TCTCTGAGCCTCAATTTTCACATCTGTAATATAGGCATAATTACAGTACATAGCTCATAG
+AGTTGTCATAAAATTGTTAATTAGTTAAAACATGGTTGGGCCTTTAGAGCAGTCCCAGCA
+TAAAGTGATCTTTTTTTTTTTTTTTTCTTTTGAGATCTTCTGTCTGTCGTCTAGGCTGGA
+GTGCAGTGGCGCAATCTCCGTTCACTGTAGTCCCCTCTTCTTGGGCTCAAGAGATACTCT
+CAACTCAGCCTTCCGAGTAGCTGGAACTACAAGTACATGCCACCACGCCTGGCTAATTTT
+TGTATATTTTTTTTGGTAGAGATGGGGTTTTGCCATGTTGCCCAGGCTGGTATCGAACTC
+CTTGGCTCAAGCGATCTGCCTGCCTCAGCTTCCCAAAGTGCTGGGATAACAGGAACGAGC
+CGCTGTGCCTGGCCCAGTGAACATTATATAAATTTTAGCTATTATTGGCTGGGCACGGTG
+GCTCACGCCTATCCCAGCACTTGGGGAGGCCAAGGCGGGAGGATCACAAGGTCAGGGGTT
+CAAGACCAGCCTGGGCAAGATGAGTTTTCAGTGAGCTGAGATCGCACCACTGCACTCTGG
+CCTGGGCAATGGAGTGAGACTCCGTCTTGGGAAAAAAAAAAAGAGAGAGAGAGAGCAAGA
+GAGAGAGAGAGAAAGACACCCCAGTGAAGTGAAAAGAGCAAAGTCTTTAGATTCTCATCT
+GCTTAAAGTCCCAGCTCTTCCACTTATCAGCTAAGATCTGAACCCGAGACGGGAATCCAA
+ATTACACAGCCTCTCTAAATCTCTTAGTTTTATCATTCATAAAGTAGAGACAATACTTAT
+TTATGTGGTTGGGATGGAAGAGTGAAAAAAGAACCTGTGTGAAAGTATCTAGCACTGTGT
+ATGTATGTAATAAGTCTTACAAAATGAAGCGGCCCATCTCTGCAAAGGGGAGTGGAATAC
+AGAGTGGTGGGGTGAGATTTTTGTCAACTTGAGGGAGGGAGCTTTACCTTTCTGTCCTGG
+GATTCTCTTGCTCGCTTTGGACCTTGGTGGTTTCTTCCATTGACCACATCTCCTCTGACT
+TCAAAATCATGCTGAAAGAAACCAAACACAACCCATCAGGATAAGAGAAAGAGAAGCTTC
+CTTCAATGGAAGTGGAGCAGACACGTCATATTTAAGGCATTCAGGCCAGGCGCAGTGGCT
+CACCCCTGTAATCCTAGCACTTTGGGAGACTGAGGCAGGCAGATCACTTGAGGTCAGGAG
+TTCGACACCAGTCTGACCAACATGGTGAAACCTCATCTCTACTAAAAATACAAAAAATTA
+GTTGGGCGTGGTGGCAGGCACCTGTAATCCCAGCTACTTGGGAGGCTGAGGCAGGAGAAT
+CTTTTGAATGCAGGAGGTGGAGGTTGCAGTGAGCTGAGATGGTGCCACTGCACTCCAGCC
+TGGGTAACAGAGCGAGACTCCATCTCGCATCTCAAAAAATTAAAAATAAAATTAAAAAAA
+AAAAAATTAGGCCGGGTGTGGTGGCTCACGCCTGTAATCCCAGGACTTTGGGAGGCCGAG
+ACAGGCGGATCACGAGGTCAGGAGATCGAGACCATCCTGGCTAACACGGTGAAACCCCGT
+CTCTACTTAAAATACAAAAAAATTAGCCGGGTGTAGTGGCAGGCGCCTGTAGTCCCAGCT
+ACTCGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCGGGAGGCGGAGCTTGCAGTGAGCG
+GAGATCACGCCACTGCACTCCAGCCTGGGCAACTGAGCGAGACTCCGTCTCAAAACAAAC
+AAACAAACAAACAAAAAAACCAAAAATTAGCTGGGCGTGGTGGCATGCACCTGTAGTCCC
+AGCTACTCGGGAAGCTGAGGCATGAGAATTGCTGGAATCCAGGAGGCAGAGGTTGCTGTG
+AGCCACGATCATGCCACTGCACTCCAGCCTGGGTGACAGAGTGAAACTCTGTCTCAAAAA
+AAAAAAAAAAAAAAAAAAAAATTTAAGGCATTCAGAATTGCCAGGCAGGCAGTAGCTGGG
+CACCAATGGCTCACACCTATAACCCTAGCACTTTGGCACTTTGGGAGGCTGAGGCAGGAG
+GACAGCTTGAGACCAGGAGCTGGAGACCCAGCTGGGCAACACAGTGAGACCCCTTCTCTA
+GAAAAAAGATACATAAAACCTCAGCCAGGCATAGTTGCATGTGCCTGCAGTCCCAATTTC
+TTGAAAAGCTGAAGCTGGAGGATCACTTGAGCCCAGGAGTTGGAGGCTGCAGTGAACTGT
+GATCATACCACCACACTCCCGCCTGGGTGACAAAGTGAGACTCTGCTAAAAAAAAACACA
+CACACACACACACATAAAACAAAAAAAAGAAAGAAAGAAAAAGAATTGCTGGGCAGAGAT
+TTGACCAAAAGCAAGTAAAATCATTCTTTTTGGTAGACCAGGTGAAATGACTAGGATCTC
+AGCTGTTGAAATCAATTCACTGAAGCAAATCTTTTGTGTGCAGAACTTAACAATCGGCTT
+TTCACCTCACTGGGACTTAATGTATTTTAATTTTCAACATCTATCTCCTCTCAAAACATT
+CACTTAGCATTTAGATTAGACTGCTAATACTGTGCTGTTATAAAGGTAACTGAAAAATTC
+CCTATCTCCTAAATCAATTGTATATTATCATCTAAGGAAATAAAGGCTTTTCAGATTTCC
+ACTGAGAGATTTACAGTTAACACAACCAAAATGATAAAATATACATTCAATGCACTAAAG
+AAAGTTAGAGGTTTTTCATAATTACTATTATGACTGGTCATGGACATGAGAATAAAGAAT
+AATGAGACTGGGGAGAAATTTGAGGAAGAACGCTCAGAAACAATTCTGACTGAAACTCAG
+ATTGTAGGGAAGGCCTTATGTGTTGCCAAGAGTATTGTGAAGAAAACTAAAGGCAAGAGT
+ATAACCACTGGCTATTACTAGGGGAAGAATATCTGACATTTCCTAGTTACTTGAATGAGG
+AGTCTAGTGATAAATTTGTCAGAAGACTCCCATGTTCATAGTCCTCCTTGTACCCCTGAG
+CTTCATACAATGTGTCCAACTGCCTACTTAACTTCTCTATCCAGAAGTCTAGTATACATC
+TCAAAATTCATGCATCTGGCCGGGCACAGTGGCTCACACCTGCAATCCCAGCACTTTGGG
+AGGCCGAGGTGGGTGGATTACCTGAGGTCAGGAGTTTAAGACCAGCCTGGCCAACATGGT
+AAAACCCCATCTCTACTAAAAATACAAGTATTAGCCAGGCATTGTGGCAGGTGCCTGTAA
+TCCCAGCTACTCGGGAGGCTGAGGCAGGAAAATCACTTGAACCGGGAGGCGGAGGTTGGA
+GTGAGCTGAGATCGTGCTACCGCACTCCATGCACTCTAGCCTGGGCAACAGAACGAGATG
+CTGTCACAACAACAACAACAACAACAACAACAACAACAACAACAACAACAAATTCTCACA
+TCTAAAACAGAGTTCCTGGTTCCATTCCTGCTTCCTGCCTTTCCCACTCCCCCATATTCC
+CTACCATGCCTTCTTCATCTAATTTAATATTACTAACAAGATCTATTGTTCAAGCCAAAA
+CCCAAGTGTCACTCCTTCAATTTCTCTTTACCTTATCCTCCAAATTTAATCCATTAGCAA
+GTCCTCTCTTCAAACCCATCCCAAACCAACCTTGTTTTTAACCATCTCCACACCACCAAT
+TACCACAAGGATAAAATCTGAATTCCTTACCACCAAATACTATGTGATCTGGCCCTCATC
+TATGACCTTCTCCCATTCCTTGTGTAATCTCTGCCTCCACACATAATTTGCAAATTACTC
+CAGCTACACTGGCCTATTATTATTATTATTATTATTTTTGAGACGGAGTCTTGCTCTTTC
+GCCCAGCCTGGAGTGCAGTGGCGCAATCTCAGCTCACTGCAATCTCCGCCTCCTGGGTTC
+AAGCGATTCTCCTGCCCCAGCCTCCCAAGTAGCTGTGATTACAGGCACATGCCACCATTC
+CCAGCTAATTTTTTTTTGTTTTTGAGATGGAGTTTCACTCTTGTTGCCCAGGCTGGAGTG
+CAATGGTGCGATCTCAGCTCACCACAACCTCCACCTCCCGGGTTGATGAAGTGATTCTCT
+TGTCTCAGCCTCCCGTGTAGCTGGGATTAGAGGCACGCGCCACCACGCTGGGCAAATTTT
+TGTATTTTTAGTAGAGACAGGGTTTCTACCTCAGTGATCTGTCCGCCTTGACCTCCCAAA
+GTGCTGGGATTACAGGAATGAGCCACCACACCCAGCCGTGCCCAGCTAATTTTTGCATTT
+TTTAGTAGAGATGGGGTTTTGCCACGTTGGCCAGGCTGGTCTCAAACTCCTGACCTCAGG
+GGATCTGCCTGCCTCGGCCTCCTAGAGTGCTGGAATTACAGGTGTGAGCCACTGTGCCCG
+AACCTTTTATCATTATTATTTCTTGAGACAGGAGTCTTGCTCTGTCGTTCAGGCTGGAGT
+GCAGTGATGCGATCTTGGCTCACTGTAACTCCTACCTTTCGGTTCAAGTGATTCTCCTGC
+CTCAGCCTCTGGAGTAGCTGGGATTACAGGCACTGGGATTACAGGCACACACCACCACAC
+CATGCTAGTTTTTTGTATTTTTAGTAGAGATGGGGTTTCACCATGTTGGCCAGGCTGGTC
+TCGAACTCCTGACCTCAAGTGATTTGCCTGCCTTGGCTTCCCAAAGTGCTGGGATTATAG
+GCACGAGCCACCACACACGACCAACATTGGCCTATCTTTTAAAAAATAAACCAAGCTCTG
+GCCGGGCACAGTGGCTCACACCTGTGATCCCAGCACTTTGGGAGGTTGAGGTGGTTGGAT
+CACTTGAGTTCAGGAGTTTGAGACCAGCCTGACCAACGTGGTAAAACCCCATCTCTACTA
+AAAATAAAAACTAGTCGGGTGTGGTAGCACGCGTGCCTGTAATACCAGCTACTCAGGAGG
+CCAAGGCAGGAGAATTGCTTGAACCCAGGAGACAGAGTTTGCAGTGAGCCAAGATTGTGC
+CACTGCACTCCAGCCTGGGGGATAGAGGGAGACACCATCTCAAAAAAACCAAAATACAGA
+AATCAAAAAACCACACTCATTATTACCTCAAGACCTTTATGTTTGCTATTCCTCTGCCTA
+TAAGATGCATTCCCTTCATTTTTCAAGGACAATTATTTCTTGTTATTTAGGTCTCAGCTC
+AATTTTTTCAGAAAGGCTTTCCCTGGCCTCCTTAAACGAAAGTAATCAACAACCTTTGAC
+AGCTAATACTATTCCACTGTTCTGTATATTTCTCCATAGCATTTATTGTTATCTTAAATT
+CATCTTTATTGTGTATCTCCCCTCGACAGAACCTGAATCCTACCAGGGACTTAGTTAGTC
+TTATTTACTGTTGCATTCCTAGTGCCCAGAACACAGTAGGCTCCCAATAAATAGCCACTG
+AATAAAAGTTAAAACCAACAAAAATAATCATTTAATTAATTATGAATACATCGAATTGTG
+CACAATAGTTTATAAAATTACTTTTTTTTTTTTTTTAAGACAGGGTCTCATTCTGTCTCA
+CAGGCTGGAGTGCAGTGGTGCAATCTAGGCTCACTGCAACCTCCGCCTCCCGGGTTCAAG
+TGATTCTCCTGCCTCAGCCTCCCCAGCAGCTAGGATTACAGGCACATGCCACCACGCTCG
+ACTAATTTTTTTGTGTTTTTAGTAGAGACAAGGTTTCACCATGTTGACCAGGCTGGTCTC
+GAACTCCTGACCTCAAGTGATCCACCTGCCTTGGCCACTCAAAGTGCTGGGATTATAGGC
+ATGAGCCACCACGCCTGGCCTATAAAATTACTTTCACATTTCATTTTGCCTGATCTGTTG
+TCACAGAAGTTCTCAGATGGCTGTTCTGAAATTATTCCTCCTCCTACACTCTATCTTATT
+TACTTCTCACTGTTCTCAGTATCATAAAGTGCAACATCTTTTTGAAGCAATCTGAATTAT
+AAACAGATACATTTGCATGTATATATATGTATATATGCATATGCACACACACACTTTTTT
+TTTTTTAAGAGACAGGGTCTTGCTCTGTGCAAGTGCAAGAGTGCAATGGTATGATCATAG
+CTCACTGCAGCCTTGAACTCCTGGGCTCAAGTGATTCTTCTGGCTTAGCTTCCTCAGTAG
+CTAAGACTACAGAAGCACACTGCCATGCCCGGCTAATTAAAAAAAAATTTTGTGGAGACA
+GAGTCTCACTATGTTGCCCAGGCTGGTTTCAAACTCCTGGCCTCAAGTAATCTTCCTGTC
+TCAGCCTCCCAAAGGGCTGAGATTATAAGTGTGAGCCACTGCATCTGGACTGCATATTAA
+TATGAAGAGCTTTTCTTCAACAACAGTGAACAGTTTTCTACAAAGGTATATGCAAGTGGG
+CCCACTTCTTGTTCTTATGAATCTTTTCTTTCCTTTTATAAAACTCCTTTTCCTTTCTCT
+TTTCCCCAAAGAAAGGACTGTTTCTTTTGAAATCTAGAACAAATGAGAACAGAGGATATC
+CTGGTTTGCGCTGCAAAATTTTTTTTTTTTTTAAGACGGAGTCTCGCTCTGTTGCCAGGT
+TGGAGTGCAGTGGCACGATCTTGGCTCATTGCAACCTCCACCTCCCGGGTTCAAGAGATT
+CTCCTGCCTCAGCCTCCTGAGTAGCTGGAACTAAAGGCGCATGCCACCACGCTGAGTAAT
+TTTTTGTATTTTAGTAGAGACAGGGTTTCACCATGTTGCCCAGGCTGATCTCGAACTCCT
+GAGCTCAGGCAATCTGCCTGTCTTGGCCTCCCACAGTGTTAGGATTACAGGCATGAGCCA
+CTGCACCCGATTTTTTTTTTCTTTTGATGGAGTTTTGCTCTTGTTGCCCAGGTTAGAGTG
+CAATGATGCGATCTCAGCTCACTGCAACCCCCGCCTCCCAGGTTCAAGTGATTCTCCTGC
+CTCAGCCTCCCGAGTAGCTGGAATTACAGGCAAGTGCCACCAAGCCCGGCTAATTTTGTA
+TTTTTAGTAGAAACGGGGTTTCTCCATGTTGGTCAGGCTGGTCTTGAACTCCCGACATCA
+GGTGATCCAAGCGCCTCAGCCTCCCAAAGCGCTGGGATTATAGGTATGAGCCACAGTGCA
+GGCCTGCATAATTCTTGATGATCCTCATTATCATGGAAAATTTGTGCATTGTTAAGGAAA
+GTGGTGCATTGATGGAAGGAAGCAAATACATTTTTAACTATATGACTGAATGAATATCTC
+TGGTTAGTTTGTAACATCAAGTACTTACCTCATTCAGCATTTTTCTTTCTTTAATAGACT
+GGGTCACCCCTAAAGAGATCATAGAAAAGACAGGTTACATACAGCAGAAGAACGTGCTCT
+TTTCACGGAGATAGAGAGGTCAGCGATTCACAAAAGAGCACAGGAAGAATGACAGAGGAG
+AGGTCCTTCCCTCTAAAGCCACAGCCCTTTAATAAGGCTTGTAGCAGCAGTTTCCTTCTG
+GAGACAGAGTTGATGTTTAATTTAAACATTATAAGTTTGCCTGCTGCACATGGATTCCTG
+CCGACTATTAAATAAATCCCTAGCTCATATGCTAACATTGCTAGGAGCAGATTAGGTCCT
+ATTAGTTATAAAAGAGACCCATTTTCCCAGCATCACCAGCTTATCTGAACAAAGTGATAT
+TAAAGATAAAAGTAGTTTAGTATTACAATTAAAGACCTTTTGGTAACTCAGACTCAGCAT
+CAGCAAAAACCTTAGGTGTTAAACGTTAGGTGTAAAAATGCAATTCTGAGGTGTTAAAGG
+GAGGAGGGGAGAAATAGTATTATACTTACAGAAATAGCTAACTACCCATTTTCCTCCCGC
+AATTCCTAGAAAATATTTCAGTGTCCGTTCACACACAAACTCAGCATCTGCAGAATGAAA
+AACACTCAAAGGATTAGAAGTTGAAAACAAAATCAGGAAGTGCTGTCCTAAGAAGCTAAA
+GAGCCTCAGTTTTTTACACTCCCAAGATCAATCTGGATTTATGATTCTAAAACCCCTGGT
+GACAGAATCAGAGGCTGAAAACACCACTAATTATAACCAGCAGGTATGGATATTTGGAAG
+TCTAGGGGAGGCTGATATGAAGTTAAGACCAGAGGAAATATCTGTCCACTCCCTCTTCTC
+AACACCCATCTTCTAGACGCCAAGGCTAGCTATAGATCTCCATTATAGTGTTCAAGGAAT
+TAGGAATTATCCATGTCAATAGTTTTGATTAATGTGGACGGAGAACATCTATATTACTAG
+ATGGCAATATGTGAAAGAAGAAAACAGTATTGTTGAAAACCTAAATCTGAAATGTCAATG
+TAATGACAAATTTTCACCCCTAGAATGTCTACCTGGGGAGTCCTAACCCTCTAATATTCC
+CCTGAGAGGGATGGGAGAATACAGTGCAGAGCTTTTATATAAGTATTTCAGAAAGCAGTA
+GCTAAAGAATCACTTGTTTATTTCCCAGTGTTTCAAAGGCCCTTCTGAAGAACTAAGCAA
+ACTAAGGAAAGACCATTTAGTTTTAAACAGGAGAAATGTATTTAACTAAATCCTAAACAC
+AGCAGGCTATCTGCAAGCAGCAGCAGCAGCAGCAGCCATGCTCCCTCACAGAATCCTTAC
+AATTTTTGAAGTTTTTTGTTTAACTGCTACAAAAGCCGATTTAGTAACATTTATTACACT
+TAAAAACTTCAGTTCATTTGTAGTTCAAAGCAAATGTATTGGCTTTGAGTTTAAAGACTG
+AACTACTTTAGATTTGATTTGCATTTTTTTTTTTTTTTTTTTTTGAGATGCAGTCTTGCT
+CTGTCAGCCAGGCTGGAGTGCAGTGGCTGGATCTCAGCTCACGGCAAGCTCTGCCTCCTG
+GGTTCATGCCATTCTCCTGCCTCAGCCTCCTGAGTAGCTGGGACTACAGATGCCCGCCAC
+CATGCCCGGCTAATTTTTTGTATTTTTACTAGAGATGGGGTTTCACCGTGTTAGCCAGGA
+TGGTCTCGATCTCCTGACCTCGTGATCTGCCCGCCTTGGCCCCCCAAAGCGCTGGGATTA
+CAGGCCTGAGCCACCACGCTTGGCATCTTTTTACCTTTCATTAACTTTGATGCAAACCTA
+TAGCTTAAGGTATCTTAAACTTTAATGACATTTTTCTCTAAAATAGTAGTTTGTAATAAC
+TTGTTCTGGCACCTGGCTCCAATGAACACTACCCTCTGACCCTGTGGTATAATTTTCATG
+AGTAAGTGGAAACCTAAGATCTTAGAAGTTCAACGGCAATGTGTCCAAGGGGTTTAGATC
+CTCTCCTTAAGTGCCTGTATCTCTGTGAAAAGAATCATCATAGGCTAGGCGCGATGGCTC
+ACACCTGTAATCCCAGCACTTTGGGAGGCCGAGGTAGGTGGATCACCTGAGGTCGGGAGT
+CCAAGACCAGCCTGACTGACATGGAAAAACCCTGTCTCTACTAAAAATACAAAATTAGGT
+ATGGTGGTGCATTCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGA
+ACCCGGGAGGGGGAGGTTGCAGCAAGCCAAGATCGTGCCATTGCACTCCAGCAGCCTGGG
+CAACAAGAGTGAAAAACTACACCTCAAAAACAAAAACAAAAACAAAAGAATCATCATCAA
+GTGAACTGGAACACATCCAGAGAACTAATTTTGTTAGAAAGATTTTAGAGTTGAGCCACA
+CAATCTGCATCTTCTGCGTCCTCCATGCACTCGTCTGCTTTCTGGAGCCCCATGAGTGAG
+TCTTAATCCTGTTCCAGATAACAGTTCTCTTCCGGGTAACGGTTCTTCAGATACTTGAAG
+ACAGTGTCTTATTTCCTTAAATCTTCTCATTTCTTCTTCAAAAGACAGTATTTCAAGTTA
+CTTTTATGTATCTTTACCATCTACCTCTGGATAAACACTCTCCAATTTGTCAGTGACCAT
+GTTAAAAACCAAGCACGGTGCTTAAAACTGACATCATCTTTCAGGCAATCACTCCATTGG
+AGAATACAGTGGGGCTCTGGATCTGTACTTCACTTGCTCCAGAGCCTCTGCTTGTGTTAA
+TACGGCCCAGTTTCAAATAAGCATTTTTAGCAGCCCTGAAATGTGTACTCAGATTTAGTT
+TATAGTCAACTAAAAACACCCAGAGGTCTCCTGTATTACACAAGTTATAATTAAAACCTT
+AAAAGAGAAAGGTATAGGACAAATGATCTGTCTCCTCCCTTTTTTGCTTTTTCATATGTT
+AAGACTATCTCGGAGCTGTTATCAGACTTTTTTCCTGAAAAACTCTCAACAATACTCAAA
+CTAGGTGTTACATGAAGCTGGGGTCTCCAGGTTTTGCCTCACTTGTTCTTTCTTTTGTTG
+TTGTTGAGACAGAGTCTCACTCTGTCGCCAGGCTGGAGTGCAGTGGCAGGATCTCAGCTG
+ACTGCAACCTCAGCCTCCAGAGTTCAAGCAATTCTTCTGTGTCAGCCTCCCAAGTAGCTG
+GGATTACAGGTGCACACCACCACGCCCAGCCAATTTATGTATTTTTAGTAGAGACTGGGT
+TTTACCATATTGGCCAGGCTGGTCTCGAACTCCTGACCTTGTGATCTGCCCGCCTCAGGC
+TCCCAAAGTGCTGGGATTACTGATGCGAGCCACCGCGTCCAGCTGCCTCACTTGTTGTTT
+TAGGACTTAGGCTCCACCTCACCAGTGTAGTCCCAGCAGGTAGATAGGAGTTAATAGTTG
+ACTATCTCAGCTCACCACCCTCCAAACCTTTTTTTTTTTTTTTTTTTTTTGAGACAAGAA
+TCTCGCTCTTGTCCCCAGGCTGGAGTGCAATGGTGCGATCTTGGGTCACTGCAACCTCCA
+CCTCCTGGGTTCAAGCGATTCTGCTGCCTCAGCCTCCTGAGTAGCTGGGATTACAGGTGC
+CTGCCACCACGCCCACCTAATTTTTATATTTTTAGTAGAGACGGGGTTTCAACACGTTGG
+CCAGGCTGGTCTCGAACTCCTGACCTCAGGTGATCCACCCGCCTCGGCCTCCCAAAGTGC
+TGAGATTACAGGTGTGAGCCACCGTGCCTGGCCCACACTCCAAATCTTAACCCAAAACAA
+AAGGAGGTAAGGAAGCAGCAAAACTATTATTTGTCTTTCATAAAGTAATTGATTGACTAT
+TAGAAGACTATCATCCATGCTATGCTCAACAAATATTCTTATTTTTTCACGTTTTTTTTT
+TTTTTTTTTGAGACGGAGCCTTGCTCTGTCGCCAGGCTGGAATGCAGTGGCATGATCTCG
+GCTCACTGCAACCTCCATCTCCCCGGTTCAAGTGATTCTCCTGCCTCAGCCTCACGAGTA
+GCTGGGACTACAGGCGCACGCGACCACACCCAGCTAATTTTTTTATTTTTTAGTAGAGAC
+GGGGTTTCACCATGCTGGCCAGGATGGTCTCGATCTCCTAATCTCGTGATCTGCCCGCCT
+CGGCCTCCCAAAGTGCTGCGATTACAGGCATGCGCCACCGTGCCTCGCCTCATGTGGTTT
+TATGCAGCAGATGCAAGGTATTCTGTAAAGGTTCTTGGTATACCTGTTTTCATAACAACA
+TGAGTAGTCTCTTCAGTAATTAGATTAGTTAAAGTGATGTGGTGTTTTCTGGCAAACTTG
+TACACGAGCATCTGAAATTAAATCAAATATTCCATTATCATGAGTTACCTCTAGCACACA
+GCTCAGAATACTAGTTATTCCACCATGGCATATGTTTACCTATGTAGCAATCCTGCACGT
+TCTACACGTGTCCTGGAACTATTTAAAGTGAATTTTTTTTTTTTTTTTTTTAGACAGAGT
+CTTGCTCTGTCACCCAGGCTGGAGGTAAAAAAAAAAAAAAAAAAAAAATAGAATACCAGT
+TATCCTAGCTTTAAGTCTCTGTTTTTCTCAGAAAGGGTACATTTAAAAAATTCTAAGACA
+CCTGAAGTCTCGGCTGGGCGCGGTGGCTCACGCCTGTAATCTCAGCACTTTGGGAGGCTG
+AGGCGGGCAGATCACAAGGTCAGGAGATCGAGACCATCCTGGCTAACACGGTGAAACCCT
+GTCTCTACTAAAAATACAAAAAATTAGCCAGGCGTGGTGGCGGGCACCTGTAGTCTCAGC
+TACTCAGGAGGCTGAGGCAGGAGAATGGCGTGAACCCAGGAAGCAGAGCTTGCAGTAAGC
+CGAGATGGCGCCACTGCACTCTAGCCTGGGCGAGAGTGCGAGACTCCGTCTCAAAAAAAA
+AAAAAAGATACCTGAAGTCTCAAATAAATAGTTTAATAAAAATTATGTACACATCAGCAG
+ACATAAAATTACAACTAAGGATTCAAAATAATATTATAAACCTACTACGTACCACAAAAC
+TTAAAACTTAAAAAATATATACTGGGCCAGACACGGCAGCTCATGCCTATAATCCCAGCA
+CTTTGGGAAGCTGAGGTGGGAGGACTGCTTGAGCTCAAGAGTCTGAGACCAAGACCAGCC
+TGGGCAATACAGTGAGATTTCATGTCTTTAAAAAAAAAAAAAAGTAAAAAGAAAAAATAT
+ATATTAATTTTGCTTTAATAGCAGATATCATTCGATTCCCTAAGATCGTTTCTTTGCATA
+GTGACACTCTACTGTACTATAAATTTATCAGCCTACACTTTATAAGCTGAGAGGTAACTA
+GCCTACACAGAAAGTTATGCTACAGATATACATGGCTTAAAACCAAGACTCAACCCTCTG
+ATAGTTACAAAACACTGAAATCAGGATGTTACTAAAGGTCAGTGCAAAAGCGATCAATTC
+TCTCGTAAGAAGGCTTAGAAGGGGTTCATGTTCTTCCCCAAAGAAATTTAGAGTCCTCTA
+GCTATTATCTATCAACCAAATAAAAATCAATAGGCAGCAAAAGAAATTAACCAGATCAAT
+TATGGGCACAGTTGACCTAGCTGGTAGGTATTGTCTGATAAATAACTTTGTTTACCAAGG
+GCCATCATTTACTAGCCATAGCCACAGCCACTCACACCAGTATTTACGTGTTGCACAATA
+CTGCCATGAAGGTCAGGCCATCTTTCTTTCATGTTGCCTCACTCCATACTGCCACAGGGC
+ACTGAAAAAAGGCAGGCTAGAGAAGCTAATGACATCCTCCCCCTTTTGCTACCACCCTCC
+GCCAGGATCATTAGCAATTCTGAACTGATTAATTGCTGAAATCCCAGCCTTGAAACTGTT
+CAGTTAGAAGAGCAATGCTGAACTGCTGAAAAGATCATCTTAATATGGGCTTCAGAATTA
+ATCATGTGTAATACAGTCAGTAGCTTTCATCATAAATTTACCACACTTCACCAAGTCTGA
+ATAGAGCTCAAAGTTTTCCTCTTCGCTTGTTTAAAGACAACATGTACCCAAGCCACTTGT
+AGTCTAATCTGCAGCTCAGAATTGCCTTTGCCAAGAAAGATTAGACCATTTTAGCCATCT
+CTAAAAAGCTGAACTTGCAAAACAAAGGGATAAAGAACGCTAATTTTCAATGAATAAATA
+AGGAATTCTGGACGTGCAGGCAAGTGATCAAGAGCCATTGAAACAGACACAGGTAAGAGC
+TTTCAGAGCAAATTGCTGGTCTGGACATGGGATTATGAGATGAAAACATTTATAGCCATC
+ACTGTGCACTTACTCATTGTATCTACCAGGGCAGCCACAGCTTACTTTGCCCTTTTAGTA
+GTGGGATACATCTGGCCACAGAGATGTTATGCTAAGTAACTACCTATGGAGAAGTTAGGA
+TGAAAAATCCTAGGAAGGATATATTAATAAAGATATTTCAGAATGACTTGGTCATCTCTC
+AGTGTGCAATAAATGGCACACCCACTACTGAATCCATTTGATAATCTGGTATGTTATCTC
+ATCATAGTTTTAAAGAAATATTCACGCAATTCTTCTTCTTATTATTGAGACAGAGTTTCG
+CTCTTGTTGCCCAGGCTGGAGTGCAATGGTGCAATCTCGGCTCACCGCAACCTCCGCCTC
+CCGGGTTCAAGCAATTCTCCTGCCTCAGCCTCCTGAGTAGCTGGGATTATAGGCATGCGC
+CACCACGCCCGGCTAATTGTGTATTTTTAGTAAAGATGGGGTTTCTTCATGTTGGTCAGG
+CTGGTCTTGATCTCCTGACCTTAGGTGATCTGACCACCTCAGCCTCCCAAAGTGCTGGGA
+TTACAGGCTTGAGCCACCATGCCCGGCCATGCAATTATTTTTATTATGAAGTGATGACAA
+TGACAATTAATTACAGGGGTGGTAAACTTCTCAGGATGTCTGAAATCCACAAATAGCCCA
+AGCAGAAACGAGGTTTTACTGGTCTTAATATTTTAATGGGTATTTTTCCACAGTATGAAG
+CAATTCCCATTTCTGGCATTAAGGACCCAAGGTGATGCCAAAATCCTAATAGCAAGGGAT
+ATTGCAGGGCAGAAGTGGCAGGGCATTCTTACAAGCCAGGATGAAAACAAACACTAGAGA
+AATGCTACTATCTGGCAGTACATTTGGAACCAGTCTGAATTTAGTTAAATATGCTGGTAA
+ATTCACCCATGTGAGACAAGGGGGAGAAAAAGATGCCTTCTGGGGAATAAAACTATACCT
+ACTTGCTTTTACAGATAGAAAGGAAAATTCCAATTCGAAAGTCCTATATCATACCCAAAG
+TATAGCTTTTCCACTAATATTTAATAATTATTTTCTCAAGTAAATATACATAAAATAATC
+CACACTATAGCTTTATCTAGATCTAAATTTTCAGAAATTAGTAATCGAAATTAAATTACA
+CAGAACTGTGATTGTTTTCTAGATTTCTTCCTCTAGGTTATTAATTGACAATACCTACAT
+AAAACTCTTTCCAGAATGTTGTTAAGTCTTAGTCATTAGGGAGATACATATGGATACACT
+CACAAATTCTTCTGGGGTCAGGCCAGACACCACCATGGACATTCTTTTGTTGACCCTTTC
+TGTTGAAGCTGTCAATTCTGGCTTCTCCCTGCTCACACTTTCTTCCATTGCATTATACCC
+AGCAGTATCAGTAGTATGAGCAGCAGCTGGACTCTGGGCAGATTCTGCAACTTTCAATTG
+GGGAACTTTCAATGCAGAGGTTGAAGATGGTATGTTGCCAACACGAGCTGACTCTGGGGC
+TCTGTCTTCAGAAGGATCAGATTCAGGGTCATCAGAGAAGAGGCTGATTCCAGATTCCAG
+GTAAGGGGTTCCCTCTGAAAGGAATGGGAGAAGTTTAATTTACACAACGATGAATGTTGA
+ATTACAAAGTTCTGGTCTCTGTTAAGAATTAAAAAGACCAATAAAGTTAGGTTAAGAGAA
+AAATGGGTACATGAATACAGTGTTGGTGGAAATCCAAAGTAGCTTAGTTTCCTAAAAAGG
+AAATATGGCATTATGTAGCAAACACCTTAACACGTATTTACACTTTCAGTCAACAATGCT
+AGTTTTAGAAATATATCCTAGGGAGATAAAAGATATATGCAAAGGTTTAGTCATAGGAAT
+AGTATAATTTTAGAAACAATGTAGTTGTCCAATAATAGGAGATTAAATTACGATATACCT
+AGTCCAATGGAGTACTCTTCACCCATTAATTTGAATATAAATGTTGATGTACAATAAAAC
+AGAAATGTTACTAATATATTAAAGACACCTAAGCAATATTATTTATCATGACATTATTTT
+AAAAATAAAAGTTTATGGGCCGAGCACGGTGGCTCACACCTGTAATCCCAGCACTTTGGG
+AGGCCGAGACGGGTGGATCACGAGGTCAGGAGATCAAGACCATCCTGGCTAACACAGTGA
+AACCCTGTCTCTACTGAAAATACAAAAAAAAAAATTAGCTGGGCGTGGTGGCGGGCGCCT
+GTAGTCCCGGCTACTAGGGAGGCTGAGGCAGGGGAATGGCGTGTACCCGGGAGGCAGAGC
+TTGCAGTGAGCTGAGATTGAGCCATTGCATTCCAGCCTGGGCAACAGAGCGAGACTCCGT
+CTCAAAAAAATAAATAAATAAAAATAAATAAATAAATAAAAGTTTATGTAAAATGACTAA
+AGAAACACAGAAATATTTTATTATTAAAGAATAAGAGTACAGGCCGGGTGCGGTGGCTCA
+GGCCTGTAATCCCAGCACTTTGGGAGGCCAAGGTGGGCGGATCACCTGAGGTCAAGAGGT
+CGAGACCAGTCTGACCAACATGGAGAAACCCTGTCTCTACTAAAAATACAAAAAATTAGC
+CGGGCGTGGTGGTGCATGCCTGTAATCCCAGCTACTGGGGAGGCTGAAGCAGGAGAATCG
+CTCGAACCCAGGAGGCGGAGGTTGCGCTGAGCCGAGATTGCGCCATTGCACTCCAGCCTG
+GGCAACAAGAGTGAAACTCCGTCTCAAAAAAGAGTACGGGTAATATTTTTTTTTTTGAGA
+AGGGTCTCGGTCTGTCATCCAGGCTGCAGTGCAGTGGCACAAACATGGCTCACCTGCAGC
+CTTGACCTCCTGGACTCAAGTGATCTTCCTGTCTCAGCCTCCTGAGTAGCTGGGACCACA
+GGTGTTTGCCACCTTCCAGCTGATTTTTTTTTTTTTTGAGATGGAGTTTCATTCTTGTTG
+CCCAGGCTAGAGTGCAATGGCGCGATCTCAGCTCACTGAAACCTCTGCCTCCCAGGTTCA
+AGCGATTCTCCTGCCTCAGCCTCCCGAGTAGCTGGGACTACAGGCATAAGCCACCAAGCC
+TGGCTAATTTTGTATTTTTAGTAGAGACAGGGTTTCTCCATATTGGTCAGGTTGGTCCTG
+AACTCCTGCCCTCAGGTGATCTGCCCGCCTCGGCCTCCCAAAGTGCTGGGATTACAGGCG
+TAAGCCACCCACCACGCCTGGCCCCAGCTAGTTTTTTTTTTTTTTTACTTTTTATAGAGA
+TCAGGTCTCGCTACATTGCCCAGGCTGGTCTTGAACTCTTGGCCTCGAGCAATTCTCCCA
+CCTTGGCCTCCCAAAGTACTGAGATTACAGGCATGAGCAGTGGCTGTAATCTGTCCTTAT
+TTTATCTTTTAAGAGGTGGCATCTCAGCTTGGTGAAGTGGCTCACACCTATAATCCCAGC
+ACTTTGGGAGGCCAAGGTAGGAAGATTGCATGAGGCCAGGAGTTAGAGACCAGCCTCGGC
+AACATAACAAGACCCGTGTCTAACCCCACCCCAAATTATCTTTTTTATTCCCTATATTGT
+CCAATTTGGGGGCAATGAGCTTATAGCAATTTTGTAAGAAAGGAAAAAAAAGTTGAAAAA
+TGTGGCAAATGCTTTATTTTTGTTTCTTCATCCAAGGTAATGACACCATTACTTTTTTCA
+CTTAATAAATCAGCAGATATCATTACCAAATTAAAAACAGCAGAGATGTCATCCTTGAAA
+CATTTCAGAAAATGCCATGGTATCAGGAATTAAGCATAGCTAAGTAGAATGTATGAGATT
+CCTAAAATGACCCTAATGAACATGGCCAAATACCACATTTGATGCCAAACAGTGTCTTTT
+ATGATAACGTGTTTTTGAGGATTAAAAACTTTCTTTACTGATTAAAACTCTGATTTACAA
+GCCATAAAACACCATTCATTAAAAGTGATTTTTAAGGCATAAAATATGTAGTCATTTATA
+TTCATTAACTCATAAAAAAAACTTGCTTTGGGATTTGACTCATTTTCTAATAAAGGACTG
+GCCTAAAACTTTATTCTTTGGCCTTTGGACTCTTGTCTAACAGTTGAAATAAAATATATG
+TGTGTATATATATATATATATATTTTTTGAGATGGAGTCTTGCTCTGTCACCCAGACTGG
+AGTGCAGTGGTGTGATCTTGGCTCACCGCAACCTCCGCCTCCCGGGTTCAAGTGATTCTG
+CTGCCTCAGCCTCCAGAGTAGCTAGGATTACGGGCATGCACTAGCACACCCAGTTAATTT
+TTTTGTATTTTTAGTAGAGACAGGGTTTCACCATGTTGGCCAGACAGGTCTTGAACTCCT
+GACCTCAGCTGATCCACCTGCCTCGGCCTCCTGGAGTACTGGGATTACAGGCGTGAGCCA
+CTATGCCTGGCCTGAAATAATACATTTAGAGTACACCAAGACTCCCTCATCCTCAAAATC
+ATTAGTTAAACCATTAATTAAAATATAGATGGATTAACAGTTTCAATAATTTTCAAGTAA
+ACCTTGATTAACACTTGAGCTATTTTTCTAAAGTGGGCTTAATTAAGTATAACAAAAGTG
+TCCATGATAGACTAGTACATCTAAAAGTTGGTTAACCAGAATATCTTTATGTAGGATTCA
+GAGTAAAATCAAAGTGTTTGTTCCAATACAGCAGATGAAATATTACCTAGATCTTGCCTT
+GGCAAGTAAGATGTTTCCGTCAAATCGTGTGGCCCAGACTCTTCCAGCTGTTGCTCCTCC
+ACATCAACAACCTTAATGAGCTCCTCTTGAGATGGGTAGTTTCTATTCTGAAGACTCCCA
+GAGCAACTGTGCATGTACCACCTATCATCTAATGATGGGCATTTAGAAGGGGATGACCTA
+GAAAGATAAATGGAAGGAGAAAACCATCGCCACCAATTGTGAAAGGACAAATCATACTTG
+CTGGGCAGCCAAAGCATAAATGAAACAGCTCATGTCAGAGAGATCAGAAATGACTGGCAA
+AAAAGAGCCCGCAAGACAGCCTAGAAGTCTGGATTCATGTTGCCTGCCAATATGTCAGGG
+TTGACATATAACATGGGGTTGGGTTGGTCTGAGGCACCATATCTCCCAGCTGTTTAAAAG
+CAGGTCAGTAGCTGGGTGTGGTGGCTGGCGCCTGTAATCTCAGCTACTCGGGAGGCTGAG
+GCAGGAAAATTGCTTGAACCTGGGAGACAGAGGTTGCAGTGAGCCGAGATCACGCCACTG
+CACTCCAGCCTGAGTGACAGAGCAAGACTCTGTCAAGAAAGAAAGGAAAGGAAAGAAAGG
+AAAGAAAAGGAAAGGAAAGAAAGAAAAGAAAAGGAAGGGAGGAAGGAAAGAAAGGAAGAA
+AGGAAAGAAAGGAAAGAAAGAAGGAAAGAAGGAAGGAAGGGAGGGAAAGGAAAGGAAAGG
+ACGGAAGGAAGGAAGGAAGGAAAGGAAGAAAGAAAGGAGGAAAGAATAAAAGCAGGTCAG
+CAAATTTTTACCAAATTACTCACTGCCACTCACTCTATACACAATATTCTACTTGAGTCT
+AAATGGATATGTTAGAATCAGATCTCTTATGAAGATAGAAAGTTGATCAATGTCGACATC
+TCTACACTCATTCTTTCTACTCAGTTTTAGCAGAATTCACAGAATCATCCCTATTGCCTG
+CCTTTTCAATGTTCAAATTCATTCTAAAAACAAAAGCCAGCTATAAAATATTGTTAGAAA
+AGCATACACACCCAGTAAATAGTTCCTCTGCTCTTCCAAGTGCTTAGGACTTTGCAAAAT
+AAGATACTTATCAACAGATTTAAAGGGCCTCAGAGGTTAATTAATTTAAACAATTATTGG
+GTGCTTACTATGGGTCAAATACTAAGGCTAGGCCCCCTGGATTGAAGATGGGTGAGACCT
+GAATTACTGCTCTCTCTCTCTTTTTTTTTTTGTTTTGAGACGGAGTCTTGCTCTGTCGCC
+CAGGCTGGAGTGCAATGGCACGGTCCCAGCTCACTGCAACCTCTGCCTCCCAGGTTCAAG
+CAATTCTCCTGCCTCAGCCTCCTGAGTAGCTGGGATTACAGGCACCTGCCACCACGCCTG
+GCCCTCCAGTAAGGAAAAGAATAGTACTGGACTACATAGTCCAGTACTGGACTGCTATAC
+AGCCCTGTGTTAATAGTGGTGTAAATACACATCTCTGAAAGATATTCTAAATGTTTTCTG
+GCTTTGGGAGGGCAAGGCGGGCGGACTACTTGAGTCCAGGAATTTGAGACCAGCCTGGGC
+AACAAGGTAAAACTCCATCTCTACCAAAAATACAAAAACTTAGTGGGTGTGGGTGGCGCA
+TGCTTGTGGACCCAGCTACTCAGGAGGCTAAGGTGGGAGGATTGCTTGAGCCTGAAAAAC
+GGAGGATGCAGTGAGCCATGACTGCACCACTGCAATCTAGGTGACACAGGGCGACCCTGT
+CTCAAAAAATAATAATAATAGTAATTATTATTATTATTTTCTGTGGTAAATCAACAGCTA
+GACTTTTTCTAGAAAGACAAGAATTTTAATTAGGGCAAGGGCTGCCTTGAAGAAGTCTAC
+CATCAGTTTCCAAGCTTGTTCAGGTTTTACCTCCATTATATTTTTTTCTGACCTTCAGAA
+GGGACATATCTATCTAACCGCACATTTCTCATGTTGTAGCTTATGTTATAGGTTCAAAAA
+ACCTATATAGGATTAAACAAAAGAAGTATCCTAGAGCAATAAAAGTGTATAAATGCCTGT
+ATGCAAAAAACTGGAGAAAGTATGGTGAAAAAAATTAACAATCAGAGTTCAATATAAATA
+AAGATGTCAGATACCACAGCATCTTTACATTGATGTTTCTTACCTTTCCACTCCTGGTTC
+TTTATTTTTACTGGTAGAACTATCTGCAGACACCTCAAACTTGTCAGCAGAAAGGCCTTC
+TGGATTCTGGCTTATAGGGTATTCACTACTTTTCTGTGAAGTTAATACTGCTTTAAATGG
+AATGAGAAAACAAATCTACTTTACTGCTTTGTTCTGATAGTGATAATTCAGGTTAGAATA
+CTGATTTTTTTCAAAAGCATCAATCTATGATACACAAATTGGTTTTTAAACAAGTATATC
+AGGCAGAATTTTATAAACACAAGCAATGCAACAGACAGATGCTAGCACCAAATGGAATTC
+AATGATTAAAAAATAATAATGATAATAAAAGGAACACTTTAAGACAGAGTAAATAAAGAC
+ACCCAGCTGAGACAAGGCTGAAAAAAAAAATCTATATTCCTTGGCCCTGAATGATAAAAA
+ATATATATAACAAATTTTTATCTCTGCAGCAAAATAAATTATGCCCAAATCCCCTCAGAC
+AATAGGAAAGAAAGAGTACCGGAGAGCACAAAGTACATTATTTTCTCCATCCCTACTGCC
+TCCACATTGAAGACTGTATGAAATGGGGATTTCAGCTTCTGCATGTCGGGGGTAAACAAG
+ACATGAGTGTCAGACATGAAAGAAAAAACAGGTGACATTTTGCTTCACATTTTCAATTAC
+CGAAAAAAAAGAAAAAAACAAATAAACCCCCTAAACCAACACATACACAAAAAAATCCCA
+AGGTGCTGGTTGATAAGAAATCTTAAATAATACATGGAACTAATGATGAAATGGCACAAG
+AAGGGAAAAATCACAAAACATACTGAAGGCAAAGTTCTGGCATGTTAGTTCTTTTTTTTT
+TTTTGAGACGGAGTCTCACTCTGTTGCCCAAGCTGAAGTGCAATGGTGCAATCTTGGCTC
+ACTGCAACCTCCACCTCCTGGGTTCAAGCGATTCTCCTGCCTCAGCCTTCCTAGTAGCTG
+ACATTACAGGTGCCTGCCACCACGCCCAGCTAGTTTTTTTGGTATTTTTAGTAGAGATGG
+GATTTTACCCTGTTGATCAGGCTAGTCTCGAACTCCTGACCTCAAGTGATCCACCCGCCT
+TGGCCTCCCAAAGTGCGGGGATTACAGACATGAGCCACTGCGCCCAGCCTAATTCATTTT
+GTAATATATTTACTCCTCCAAATGTATCACTTTGTGCCACTGCCTTCTAGGAAGTGGCTT
+AAAGGCAGAAGTACTTATTTATTTATTTTTATTTATTTATTTTTTTTGAGATGGAGTTTG
+CTCTTGTTGCCCAGGCTGCAGTGCAATGGCATGATCTTGGCTCACCACAACCTCTCTGCC
+TCCCAGGTTCAAGCTGTTCTCCTGCCTCAGCCTCCCAAGTAGTTGGGATTACAGGTATGC
+ACCACCTCGCCCAACTAATTTTGTATTTTTAGTAGAGATGGGGTTTCTCCATGTTGGTCA
+CGCTGGTCTCGAACTCCCGACCTCAGGTGATCTGCCTGCCTCGGCCTCCCAAAGTGATGG
+GATTACAGGCGTGAGCCACTGCGCCCGACCGTTATTTTTCAACGAGATGGGTGTCTTGCT
+GTGTTGACCAGGCTGGTTTCAAACTTTTTTTTTTTTTTGAGACAGAGTCTTGCTCTGTTA
+CCCAGGCTGGAATACAGTGGCATGATCTCGGCTCACTGCAACCTCTGCCTCCAGGTTCAA
+GCGATTCTCCTGCCTTAGCCTCCCAAGAAGATGGGATTATAGGTGCCCACCACCACCCCT
+TGGCTAATTTTTGTATTTTTTGTAGAGATGGGGTTTTACCATGTTGGCCAGGCTGGTCTT
+AAACTCCTGACCTCAGGTGATCCGCCAACCTTGGCCTCACAAAGTGCTGGGATTATAGGC
+ATGAGCCACCATACCCAGCCTGGTCTAGAACTCTTAAACTCAAGTGATCCTCCTGCCTTG
+GCATCTCACAGTGCTGGGATTATAGGCGTGAGCCACCATGCCTGGCCAAGGCGGAAATAT
+TTAATAAGTAAAAACAAATAGTTAAAAATTGCAAAAGTCTTCTATTCATTAAAAAGTCAC
+TGATGACTGTAATTCATTTTGAGCTTTTATTAGAAAAGCTAAAAGCCATAAATATAGGTA
+GAAAATTGAAACAAAAGATTGTATTAATTAAACTGTTTTTTTAAGACACTGGGTAGCCTG
+GGGGGAAATAATCATTGATTTCCTGAGTTAGTCTTCAAATGCATTATTTATAGTTTCCTT
+TATGCTTGTCTTTTCTGGACCTGTGAGTTTCTAGGATTGTTAAGAACTCTGTTGAAAGTA
+AGTAGGATCTAACTATGAAGAGAGGTATCATCCTCCCCACCCCCAATACAGGGTGATAAT
+TGATAAAGGGTAATGTGCAAGTTCCAAGGAACCATATCAAACGGAATTAACCATTGGAAA
+GAGTTAAAAAAGTGGCCAGGTGATGTGGCTCACGCCTACAATCCCAGCACTTTGAGAGGC
+CGAGGTGGACAGATCACCTGAGGTCAGGAGTTTGAGACCAGCCCGGCCAACATGGTGAAA
+CCCTGTCTCTACTAAAAATACAAAAATTAGCTGGGCGTGGTGGCGGGTGCCTGTAATCCC
+AGCTACCCAGGAGGCTGAGGCGGACATTGTAATGAGCCGAAATCACACCATTGCACTCCA
+GCCTGGGCAACAAAAGTGAAACTTCATCTCAAACAAAAACAAAACAAAACAAAACAAAAA
+AAATGAAAGGCAGAGGGAAGGCTCAGATACAAACACAGCTATTAAAAAGTCATTCCTCCT
+TTTGGCCAGAACCACCATCTTTCAGTAATTTGCCAAAATGACGAACACAAAGGGAAAGAG
+GAGAGGCACCTGATATATGTTCTCTAGGCCTTTTAGAAAACATGGAGTTGTTCCTTTGGC
+CATGTATATGCGAATCTGTAAGAAAGGTGAAATTGTAGACATCAAGGGAACGGGTACTGT
+TCAAAAAGGAATGCCCCACAAGTGTTACCATGGCAAAACTGGAAAAGTCTACAACGTGAC
+CCAGCATGCTGTTGGCATCGCTGTAAACAAGTTAAGGGCAAGATTCTTGCCAAGAGAATT
+AATGTGCGTATTGAGCACATTAAACACTCTAAGAGCCAAGACAGCTTCCTGAAACGCGTG
+AAGGAAAATGATCAGAAAAAGAAAGAAGCCAAAGAGAAAGGTACGTGGGTTCAACTGAAG
+CACCAGCCTGCTCCACCCAGAGAAGCACACTTTGTGAGAACCAATGGGAAGGAGCCTGAG
+CAGCTGGAACCTATTCCCTATGAATTCATGGCATAATAGGTGTTAAAAAAAAAAAAAAAA
+GACCTTTGGACTGTAAAAAAAAAGAAAAGTCATTCTATCACCAGAACATTTAGCATATAA
+ATTCCTCTTCTTACTACAATGGGCCTCATGCAATGAAGCAAATAAGATAACTTGTTAGAA
+GTTAACAACTCAATAGAACCTGAAAAACAGAGCAAAACCTTTCTGCTTTTTTTTCTCCTT
+AATCCTTAATTCATTCTCTGAACAGCAAGCCCAACCTAAGCCTTGTGACATGATGATCTA
+CTTGCTGGCTGGTTTAGGAAAGTCTAAATGCAGAGATCCAGAGTCCAAGTTTCAGAATAT
+TATTGTAGTTCCTCTTAAATCATTCCCTCATCTAGATGTCTTAACATGTTACATTCTTTG
+TGGATAGGAAGTATGGGCCACACCAAACATTTAATAAACTTACAGACTGCCCACTGTGTG
+CTAAGCATTGTACAGGGTATTGTGAAGAATTAAGGAAGACACTGGAAGACAACAGATATT
+AAGAAATAATAAACTAGGCCAGGCACCGTAGCTCCCAAGTAGGTGGGATTACAGGCATGT
+GCCACCACGCCCGGCTAATTTTTTGTAGTTTTAGTAGAGATGTGGTTTCTCCATGTTGGT
+CAGGCTGGTCTCGAGCTCCCGACCTCAGGTGATTCGCCTGCCTTGGCCTCCCAAAGTGCT
+GGGGTTACAGGCGTGAGCCACCGTACCCGGCAACAATATTCTTTTTACTAGAAGTTCTGG
+CCAGGTGCCATGGCTCACACCTGTAACCCCAGCACTTTGGGAGGCTGAGGTGAGAGGACT
+GCTTGAGTCCAGGAGTTTGAGACCAACTTGGGCAACATAGGGAGACCTTGTCTCTACAAA
+AAATAAAAAAAAAAATTAGCTGGGTATGGTGGTGGACGCCTATAGTCCCAGCTACTTGGG
+AGGCTAAGGCAGGAGGATCGCTTGAGGAGGTCGAGAGGCTGCAGTGAGCTGTGATTATGC
+CACTGCCCTCCAGCTTGGGCAACAGAGCAAGACCCTCTCTATAAGGTGAGGCTCAGGTCG
+GGGAGGATGGCTCAAGATCAGGAGTTCAAGACCAGCCTAGTTAACAGTGCGTCCCTGTCT
+CTACTTAAAAAAAAAATTAAAGAAAAGAAAAAATTATTTTTAAAAAGTTCATTTGAGTTT
+CAGTTAGACTCACACCAGATTTAGGGAGAAAAAGGCTCAAAACTTATGTTGGTATTAAGT
+TGTGATATCCAAAACAATTCAGAAATTAAGCATTTCAGTTACAGATCTCCAGAAAAAAAT
+AAACACACGTATATACCAAAGAGGAGATAGTAGATTTACACAGATATTCAAAGTCACACA
+ATAATAACATTTTAAATCTTACACATTATAATTGAAAGTCTAGTCTGTGTTTAGACTGAA
+GATGGTGAAAGTACCCTAAAGAAGAGTATTATACTGGGGATGGGACTCTGATCTCTCATT
+ATCTGAGAGATGAACTAAATGAAGATAGTTACAAAGAAAGCATTTAAGGAAATACATTTT
+GAAGCACTGCCATAGCAACAGAGTTTCTAGCTAGCTTCTTTATCCAAGAGCTACTGTTTC
+TTCCTGAACACAAAAATACTGCAAGGCACAACTGGGGACCAAAGCCACTGTTCTGTATAA
+GTAGCAGACTTGAGTTCCTAGAAAGACTCCAAGAAAGGTCTTAAAGTTCCCAGTTGGACT
+GTGGAACGGGGTGCTGAAGAAGGAACTTTAACACTCAGATAAGAATCACTGAGCTAGGAA
+TGAAGTGTACTTTGGGAGTACTCACCACCCCTGCATGTTTCTAAGCAGCATCCTAGTGGG
+GACCCCATGCCTAGCATCTCCTATGTGTCTGTTTGTTTGCCCCTATTTAAAAATCTGCCT
+GATGTATTGTCTTTCCAATTAAAAACTCAAATTTCCATCTCACTTTCCTTCATTTATGCC
+ATTATTCCTCAGCTCAGTGCTCACTTCTTATAGGAAGTCAGCTCTGATCAACTGCATCTG
+CCTGGTTACTCCAATGGCATCCTCTCAGAGGTCCATCTGGATTTTTTTTGATAACTGTAA
+CATTGCTATAAAGCACTTGACTCTATTGCATAATTAGGCTTTCTGTGTTGTTCTTTTCTT
+TTCCTTTTGAACTAACAGGAGCTCTACATCACTAGGCTTTCTGTGGATCAAAGTGCAGTT
+CCTGAAGTATAGGATGTCTCTCCCTATAAATCAGAAGCACATTAAATAGGTCTTTGTGAT
+GTGACACCAGTGTTATAAGGAATATGTCTGAGTACTTTTTCATAGCTTTCTGAAATTATG
+GGGTTGCCTGTCACCAATTTCTCCCATTCCACTTAGCTTCCAATAGAGCAAGAGCTATGT
+TGTATACCATGTATCTTCCATGGGCTCCCCATAGCATCTACTTGTTGTAGGTACTCAGAT
+GACAACATGAATGACTGCCTTGGGTCCCTCTGACTGGTATATTAGTTGTGAGCAGGGACA
+AGAACCAAGGCTCCATAATTACCCATGTGCTGAGCAAGGATCATAAAATGTTGGAGCTAG
+GTCCTTACTCTTCAGAAGGAGATAAAGGGGAAGGAAAGAATTTTGCTTAAGATATCAGTG
+TTTGGCCAACAATACACACCTTTTTCTGATGTGCTTTGTTCTGGATTTCGCAGGTCCTCA
+AGGGCAGAAGAGTCACTTATGATGGAAGGGTAGCTGTTAGAAGGCTGGCTCCCATGCTGT
+TCTAACACAGCTTCTAGTTCAGCCATTTCCTGCTGGAGCTTTATCAGGTTATGTTGCATG
+GTATCCCTCTGCTTCAAAAACGATAAATGGCACCAAGAAAATGAAATACTTTGAGAAGCT
+TTCCATTAAATGAAAATATATCATACAAATTAATTTTAGCACAGGAATTGAAATCACCTA
+GTATGGAACTACAAGTTCTAGCTGAACACCTTTTAATCTAACCACATTCATGCAATTAAT
+GCCCATGAAATTATTTCCAAATGATGTTAGTGAGGGAAAAAATCCTCAAATTCCCCCAAA
+TAGACTTGATGTTATTGTGATGTCCTTTTGAAGTTGGTTATTTTCTTTTAAAGCTAGGGA
+GTGAAAAAATAATTAAGGCATTTAAACACTATCGATATTTAAAATTAGCATGAATCTGTT
+AACATTTTATTTATATGGGCACATTTCAAAGACTTGGTGTTGTGAGATTCATCAGACATT
+TAGGTTAGTTCATATAAAAATGTGTGATTTTTAGACTGATGTAATGTTGAAAAAAGCCCT
+CTATCTATGGCATTTTATAAAAATACAACAAATATAAAAATACTATCAGTAATCCTGCCT
+AGATTACTGGCTTGTGAGGACTCTTCCTTTTCTGGGATTCTTTGAACCTTTAGTTTCTTT
+TCTTTCTTTCTTTCTTTTTTTTTTTAAGTCTCCCTCTGTCACCCAGGTTGGCACCATCTC
+GGCTCACTGCAACCTCTTCCTCCCAGGTTCAAGCGATTCTCCCACCTCAGCCTCTCAAGT
+AGCTGGCATTACAGGTGCTTGCCAAGACGCCCGGCTAATTTTGGTAATTTTTGTAGAAAC
+AGGGTTTTACTATGTTGGCCAGGCTGGTCTTGAACTCCTGACCTCAAGTGATCAGCCCGC
+CTCGGCCTCCCAAAGTGCTGGGATTAGAGACATGCGCCATTGTGCCTGACCTGAACCTTT
+AGTTTCTAACAGAAAAAGCAAAAAGCTAATTCATGAATCTATCTGTTTGCTCAGTTAATT
+AGACAACTATTTACTATCTATTAAGCACCAGGCGCTGTCCTAGTACTGAGGATATAGCCC
+TCATGGTGCTGCCATTCTAGACAGGGACATCTCATCTAGAATGTGTCCACCTAGAGATCA
+TTAGCAAGGACCTGTGAGAGGGAAGGATCCAACAGAAAGAGCCCTGAGAAAGCCTGTAAG
+GATAGTTACTGTTTTTAAAATAATGAGTTCTTTTTGCTTATGGGCTCCTGTTGTTTATTG
+GTCCATTTCAAAGAAGAGTGTGCTAAGTCCAAGTATTTGATAAACAAAGAATTTAGGTAT
+GTAAGGAGTTTTCCAAAATATCCTTCTTAAGAATTTATTTTATTTATTTATTTTTTTTGA
+GACAGTCTTGCTCTGTTGCCCCAGGCTGGAGTGCAGTGGTGCGATCTTGGCTCACTGCAA
+CCTCCGCCTACCTGGTTCAAGCAATTCTCCCTGCCTCAGCCTCTCAAGTAGCTGGGATTA
+CAGGCACCTGTTACCATGCCCGACTAATTTTTTTTTTTTTTTTTGAGACGGAGTCTCACT
+TTGTTGCCCAGGCTGGAGTGCAGTGGCGCAATCTTGGTTCACTGCAAGCTCCGCCTCCCA
+GGTTCAAGCCATTCTTCTGCTTCAGCCTCCTGAGTAGCTGGGATTACAGGCGCCCGCCAC
+CATGCCCAGCTAATTTTTTGTATTTTTAGTAGAAATGGTGTTTCACCGTGTTAGCCAGGA
+TGGTCTGGATCTCCTGACCACATGATCCTCCCGCCTCGGCCTCCCAAAGTGCTGGGATTA
+CAGGCGTGAGCCACCACACCTGGCCTAATTTTTGTATTTTTAGTAGAGACGGGGTTTCAC
+CATGTTGGCCAGGCTGGTCTTGAACTCCTGACCTCAGGTGATCTGCCCGCCTCGGCCTCC
+CAAAGTGCTGGGATTACAGACGTGAGTCACTGTGCCTGGCTTCAAAATATACATGTTTAA
+AAATCACTTTTAGAAGGAACAGCAATGGTTGCCAAAAAGTCCAGTGGGGGAGTAGGGCAG
+GAACACATTGTTTCACTCTCCGTTTCTTCTTCTGATCCTTAAAAATGACTTTGCCCTTTA
+CTAAAAACAAGCCATCTTCTTTCTCCTGCTACACTGAGTTCACAATTTTCAGGAGGTTTT
+TATGACCAGAAAATGTATTCCTAGCTTCACAAAGGTTTCTACTGCTACTCTAACACTGCT
+TTGCTGCCAAGGTCTGCAGCAATGCCATTGCCACCACGTGGTACTCGTGAGTAGTTACAT
+CACTGATCAAACCCTAGCCAAAGTCTTGCCTCAGTCAACCTGGAATGAAAGCACATAGAT
+ATCTGACCAAAATGCTTCACAGGCTGTATTAGTCACTACTGTCACAACCATCACATCTAA
+CCTCTACGTGGCCATTACATAAATCAGAAAAAGTAGTGGGGTAATTATTAATAGATAACT
+TTCCTTTGGGTTTCCCAAAGGAATTATTTTTTATAACTTAGACAAATTCCCCAGCAGGTA
+AGTGGCCAAATACATTAGGGAGAATAAAACCAATAGGTTTCTAAGACTTCTTGATTCTAA
+TTCTGAAGTGCTCCTTCAATTAGCTCTAGCCTTCTACTTCTACTATGCTGCTCTGATCTC
+TACTTTTAATACAGCTACATTACTGTAGAAGTTCCCTAAAAGCCTTGTTTATCATGTCTT
+TTTCTTCCATAAAGACCCTTAGTGCTCCATCCTGGCCATCACAGTGAAACACTGGCTGAG
+GCAGAAGAATCACTTGAACCCAGGTGGCGGAAGTGCAGTGAGCTGAGATCGTGCCACGGC
+ACTCCAGCCTGGGCAACAGAGCAAAACTCTGTCTCAAAAAAAAAAAGAAAAGAAAAAAAC
+CCTTAGTGGTATACCACTGCTGATTTATACTTTTTGAACACTATATAATTGTTAGTCATT
+ACTGCCATTAGGATAAAATTCCTCAACATAGCATTCAAAAGGCCCTTTATACCCTGGTAT
+TATCTCTCATTTCTCCCAACACCCCTCACACAAGTTGTTTTCCTATAACACATGACAACT
+TTACGTTTCCTGGGAATTCCATGACTCTGTACCTTTACCTTACTTGCTGCCACTCCTCTT
+TTTCCACTTGGAAAAATTCTCATCTTTCAAGGCCTAGTTTGAATGTCTCCTTAAGTCCCC
+ACCAGGAGGAGTTGTGAAATATGAGAAGTAAGGGCAAGTGGGCAGAATGTGGCTAATTCT
+AATAAGACTCCTGAAATGTGCAGCAGAGCAGCCGGAACTGGTCTGGAGGGAAGCAGAGTG
+TATATCTGACCCTTGTTTGTTCACATTCATTACATATAAATATATATATAAAACCTTCCC
+ATAAAACATGTGTATTTAATGAGTTAAAACTATTTCTAATGTTCCTACTACTACATAATA
+AGCCTAATCCAGATACAAGCTGAAGTCTTAGCACAAATAGTGGCTTTATCATGCTAGTTT
+TGTCGACATGTTGTGAATATTTTCAAATATACAGAAAACTTGAAGCAACTTTGCAATGAG
+TGTTTATATATCTACTACTTAGAATCTATAATTAACATTTCCTATATTTATTTTATCACA
+TACATACACACACACACACACACACACACACACACACACACACAGAAGTCCCCACCAATA
+ATCCATCTCCTATCGGGAACAGATGATCTCTCACTACTTGATTTACATTGCTAATGCATT
+AGTATACCCAAATGGAACACATGACCTTGATAGGAGGAAGCTTCCCTTAATCATATTTGT
+CTCCCTAATGCCTAGCAGACAGTAAGCACTCAGCAAGTGTTTATTAATGAGAAGATAAAT
+TAATAAATAAGTATAGTTAATCAGTCTTCTGTAAAAACAAACAAAAACCCAGATATCAAT
+GATACCAAATTAGGAATTCTCTATCATCTATATACTTTTTCTCGGTTCAGTACAAAAAGG
+GAAAAAAAAATCCCACTTCAATAGTTTTTCCTGCCTGTGCTACTTTAGACGTAAGACAGC
+CTGAAATCTGACTTCAACGGTTTTGGGTAGATGCTTAGTAAAAACACGTTGCAAAATGAA
+TCCTGAACAAATAGACACATCTCTGGGAATAAGATTAGAAATACAGAAAAACAAGGACAT
+TGTATATTGAATGTCAAATATAATACAGTATGGCTAAGGCAGATGTAATCAGAAATTGCA
+ACCTTAAACTTTAAAACACAATGGACAGAATTAGATGATGGGTATATTGACAGAGTCCCA
+AACCCACATTCAAAAAGGATCATAGGAATTGCAAAGAGAGAAAAGGCCTCCTAAATCTTT
+TCATCAATTTAGTTGCCATGGCAATCCTGAAGAAGTGGAGAATACTGGTGACAGCTCAGA
+TACAGAGTGGGGAGTCATCTCAAAGGTTTCTTGACAACTCCAAGGGGCTTCAGGTCTAGA
+GGGATTTGCTCTGTACAGAGAATGGGCAGTAGAAGATAAGCCTTCTCTAATTGTAGTTCT
+CATAGCAATGCAAGATTTAGATTTTAAAACTGGATATCACCCAGTGTTGGCAAGGTACAG
+GAAAATGGGAACTATCATATACCACAGGGGCTGGAAGAGCATAAACTGGTTTAATCTTTC
+TAAAAAACAATTTAGTAACATGTATCAAACACCAAAATCCTAGTCCCAGTAATTTAGACT
+AAGGAAATAATCAGGGATGTAGGCAAATATTTAGCTATCAGGATGCCACTATAGTGATGT
+ACATAATAGCAAACTGTGCCTCTTACCCTGAAACCTCCAACATTCAGCAATAGGTCAAAT
+AAATCATGATACACTGGAAAGATAGAATCCCATATAGTAATTAAAAATGAAGTCACTTAA
+GAATTTTAACGACCCAGGCTGAGTGCGGTGGCTCACGCCTGTAACCCCAGCACTTTGGGA
+GGCCGAGGTGGGTGGATCACTTGAGGCCAGGAGTTTGAGACCAGCCTGGTCAACATGGAG
+AAACCCTGTCTCTACTAAAAATACAAAGTTAGCTGGGCATGGTGGCACATGCCTGTAATC
+CCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCATGAACCCGGGAGGCAGAGGATGCGG
+TGAGCCAAGGTCACACCACTGCACTCCAGCCTGGGCAACAAGAGTGAAACTCCATCTCAG
+AAAAAAAAAAAAAAAAAGAAAAAAGAATTTTAATGATCCAGTAAAAGCTAGATTATAATG
+CACAGAATTATCTGGATTTCTTGTTTTTGAGACAGGGTCTCACCATATCACCCAGGATGG
+AGTGCAGTGGCACCATCATGGCTCACCACGGCCTCAACTTGCTGGGATCAAGCAATCCTA
+CCCCAGCCACTCAAGTAGCTGAGACTACAGGTGTGCACCACTAAGCCTCACTAATTTTTT
+TTTTTTTCCCAGACAGGGGTTGCCCAGAACAGAGTGCAGTAGCGTGATCACAACTCACTG
+CAGCCTTGACCTCCGGGGCTCAGGCAATCTTCCTGCCTCACCCTCCCAAAGTGCTGGGAT
+TACAGGTGTAAGCCACTGTGCCTAGCTTCCTGGATATATTTTAAAGATAAAGTATATACA
+AGCACCCCTGTGCACACACAGGAATACTAAAAGAATATACACCAATAAATTGCTAACCAT
+TTCTGGATAACACAAATTACAATTAACTTATCATTTTAATCATTTTAAGTGTACAGTTCA
+GTGGCATTATTTTCACACTGTTGTGTTACCATTGCCACTATCTATCTCCAGAACTTTTTC
+ATCATCCCAAACTGAAATCTGCACTCATCAAACAGTAACTCCCCATTTCCCCCTCCCCAA
+GTCCCTAGTAACCACTATTCTACCTTCCATCCTATGAATTTATCTTTTTTTTTTTTTTAA
+CTGCTCCTTGTGGAGCAAGGCTTATCTATAGGCAATGTACCCAGAGTAACCAAATGTAAC
+TATTCTAGGTATCTCATATAAGTGGAAGCATATAACATGTGTCCTTTGGTGTCCGGTTTA
+TTTCAGTTAACACAATGTCTTCAAGGTTCGTCCATGGATGATTTTTGTTTATCTGTATTT
+TCTAAGTTTTCTATGATGCACATATATAACTTTATAAGAATATCAGGCTTTTCTCAACTT
+CATCTAATCTGACTTCAGAAAGTTCATAAAAAAACATCATTCACTTACTAGCAGCTAAAA
+GGGTATTTAAGATTTAGGTGGGAAAAAGAAGCCACAGCAGGATGAATCGAGGGGGTCTGA
+ACAGCTTCATTTTAAGAATGTGCCTACGGCAGGTCAGAGAACATAAGCAAACTGTCTAAG
+ATCACATAGCCCAGTACAGAACTCTCACCAATATTATTGCCAGCAACTGCTGTGTGTGTA
+TTCTGCATAGAACCCTGTGCTGGGAATACAAAGAACCAACCTAATTATTAGAAGTTGTCA
+ATTTAGTGGGAGATAAATAAATGAAAAAAATAAACTGAGATGAGCCTGAATTTTTGCATG
+AGAACTTGGAAAATTTTGGTGCCACTTCTACAAATAAAAATTAGGAGGCCAGGCCTGGTG
+GCTCACGCCTGTAATCTCAGCACTTTGGGAGGCTGAGACGGGTGGATTATTTGAGGTCAG
+GAGTTCGAGACGAGCCTGGCCAACATGGTGAAACCCTCTCTCTACTAAAAAAATACAAAA
+AAATGAGCTGGGTGTGGTGGCAGTCACCTGTAATCCCAGCTACTTAGAAGGCTGAAGCAC
+GAAAATCACTTGATCCTGAACCTGGGAGCTGAAGGTTGCAGTGAGCCAAAATTGTGCCAC
+TGCATTCCAGCCTGGGTGACAGAGCAAAACTCCATCTCAAAAAAAAAAATTAGGAGAAAG
+AGCCTGGTTCTATGATGAAGATGATATTCATTTTTAGACGTTGTGATACAGAATGTTTTT
+TCTAGACTATTCTGCCTTTAGTACATAAACATTTCATATTACATTATCAAATGGTCATAT
+ATATGGTAAAGCTTTTATTTATTTCATAGGTGACCAAATTATTGGCCTTGACCATTAGGT
+CCAGAAAGTAAAATTGTGTACTTTCTTTTTTTTTTTTTTTGAGATGGAGTTTCACTCTTG
+TTGCCCAGGCTGGAGAGCAGCAGCATGATCTCAGCTCACTGCAACCTCCGCCTCCTGGGT
+TCAAGTGATTCTCCTGCTTTAGCCTCCCATCTTTCTTTTTTTTAAAGAAAAAAGATGATT
+TATGAGCAATTAAAAAAAAAATAGGCCAGGCGTGGTTGCACACACCTGTAATCCCAGCAT
+TTTGGGAGGCTGAGGTGGGATCACTTGAGCCCAGGATTTTGAGACCAGCCTGGGCAACAT
+AGTGAGATGTTGTCTCTAGTAAAAACTTAAAAATTAGCTGGAGGTGTTGGTGGGCGCCTG
+TGGTCCCAGCTACTCGGGAAGCTGAGGTAGGAGGATCGCTTGAGCCCAGGAAGTCAAAGC
+TACAGTGAACCATGACTGCACTACTCCATTCCAGCCTGGGTAACAGAGTAAGAGACCCTG
+TGTCAAAGAAACCAAAAAGAAAAAAATAACTAGATTTTAAAAGGGAAAAAAAAAAAGAAG
+AAGAGAAAGAAGTATCCACAAAACAGTGAAAGGCTAGATGGTCTCTATTAGGAAGAGAAC
+CCTATAGTCTCCAACTTGGTACCAAGAATAAACACCAAAATTGCGATTGCTGGCAATAAT
+ATTGGTGAGAGTTCTGTACCTGGCTGTGTGGCCTTAGGCAGTTTGCTTACCTTCTCTGAC
+CTGCAGTAGGCATATTCTTAAAATGGAGCTATGCAGAGTCCCTTGAATCATCCTGCTGTG
+GCTCCTTTTTCTCACCTCTCTTGATACAGTAAGTGCCGTCATGTTTTTGCTATAGGGGAA
+ATGATGTGTTTTTGTTTGTTTGTTTTTGAGATGGAGTCTCACTTTGTCACCCAGGCTGGA
+GTGCAGTGGTACAATCCCAGCTCAGTGCAACCTCCGCCTCCCAGGTTCAGGCGATTCTCC
+TGTCTCAGCCTCCAGAATAGCTGGGATTACAAGGCATTGGCCACCACGCCCAGCTAATTT
+TTGTATTTTTAGTAGATGTGGGGTTTCACCATGTTGGCCAGGCTGGTCTCAAACTTCTGA
+CCTGAGGTGATCCACCCACCTTGGCCTCCCAAAGTGCTGGGATTAGCAAATGGGTTTCGA
+AGGTTTAGCTTATTCATTAAAATCAGTATTTAGTATGCTACAATGAGCTAGGCAGTGTAT
+GTGTAGGCTGTGTGTGCGCGTGTGCGTGTGTGTGAAATAAAAGGTAGTATGAGTTCCATC
+AAGGTGCTTACAGTCTAATTTAAGGAGACAATGAACCACAAACAATTGTGCCATTAATTC
+AAAGAGATGATGTCAGCAAACCTAAGAATGTGGGATACATACTACTGAATGCAAAGGACA
+CCACACACACGCATGTGCACACACACACACGCTTTTTACCTGAGTGGTTAAAATGTCACT
+CTGAGAGGATAGCCCTGAGCAGTCTTCAGAGACGCTTGTTTCACTCTCACACCCAGATGC
+TGCTTCACCTTAAATAACAAAAACAGAGGTTCAGATGTAAAAGCAGACTATAAACGCTGC
+AACTTGCTGTGTCTTTTTCTTCTCATTGGCAGGACTGGATTTACTTTCATGTCACACAAA
+ATGATTAAATTCCTTGCTTTGGGACACCTGGATTTGCTTTTATAAAATGAAACCAGAAGT
+AAGTCCACCAGTAATTAGGATGTTAAAGCTCATTCAGTCAAAGATGACGTCCTAGCTGTG
+TGAAGGACTTTTTTCTATGAAAAGCACCTTAGGAGGAACATGTTTCAAGTTTAAGAAGCA
+GTTCCTTTAACTATACTTGGAAATTTGTAAAATGTGCTCCCCAAAAGCATAAACATTTAG
+CTCACTTCTATAAATAGACTGGGGCAAACACAAAAACCTGGTTCCAATACCTAAGTTTGA
+ATCCATGCTTTGCTCTTCTTGATTATTTTCTTCCAAGCCCGTTCCTCTTTCTTCATCATC
+TGAAACCAATTCCTTGTCACTCAGACCAACTCCCTGGCTTTCAGACTGATGCCTCATTTG
+TTTGGAAGAACCAATCAAGAAAGGATCCTGGGTGTTTGTATTTGCAGTCAAGTCTTCCAA
+TTCACTGCACTGTGAAGAAAACAAGCTAGCAGAACATTTTGTTTCCTCACTAAGGTGATG
+TTCCTGAGATGCCTTTGCCAATATTACCTGGTTACTGCAGTCATTTAAGCTATTCTTCAA
+TGATAATAAATTCTCCTCTGTGTTCTTAGACAGACACTCGGTAGCAACGGTGCTATGCCT
+AGTAGACTGAGAAGGTATATTGTTTACTTTACCAAATAACAAGTGTTGGAAGCAGGGAAG
+CTCTTCATCCTCACTAGATAAGTTCTCTTCTGAGGACTCTAATTTCTTGGCCCCTCTTCG
+GTAACCCTGAGCCAAATGTGTATGGGTGAAAGGGCTAGGACTCCTGCTAAGCTCTCCTTT
+CTGGACGCTTTTGCTAAAAACAGCAGAACTTTCCTTAATGTCATTTTCAGCAAAACTAGT
+ATCTTCCTTTATTTCACCATCATCTAACAGGTCATCAGGTGTCTCAGAACAAACCTGAGA
+TGCATGACTACTTCCCATAGGCTGTTCTAAGTTATCTGAAATCAGATATGGAGAGAAATC
+TGTATTAACAGTCTGAACTACTTCTTCATATTCTTGCTTTTTTATTTCAGGATGCTTACA
+ATTACTTCCAGGAAGACTTTGTTTATAGACCTCAGGTTGCAAAACCCCTAATCTAAGCAT
+AGCATTCAATTTTGGCCCTCTGTTTCTACCTAGTTCTGCTTGAATGTTTTCATCACTGGA
+ACCTATTTCATTAATACTGGAGCCCACTTCATTAGTACTGGAACCTACTTCATTAATATT
+GCTTGAGCTGGCTTCTTTAAAAACATTTTCTCTAATGTTATTACGGCTAATTGTGCTCAC
+TGTACTTGGAATGTTCTCATTTCCCATTTCTCTTTCAGGTGACATTGAATGTTCCTCAAA
+GTTTTCCTCTAGCAGATTTTTCTTACATTTAGTTTTAACAAATGACTTGATGGGAAAAAG
+TGGTGGTATACGATATGGGTTTTGTAAAAGTCCATGTTTATTTGGAGTAATGAGTCCAGT
+TTCGTTGCCTCTGAACTGAGATGATAGACAAAACCTAGAGCCTCCTTTGATACTACATTT
+GGCATTATCAACTGGCTTATCTTTCTGACCAACCACAGGAAAGCCTGCAGTGATATTAAC
+TGTCTGTACAGGCTTGATATTAGACTCATTCTTTCCTTGATTTTCTTCCTTTTGTTCACA
+TTCAAAAGTGACTTTTGGACTTTGTTTCTTTAAGGACCCAGAGTGGGCAGAGAATGTTGC
+ACATTCCTCTTCTGCATTTCCTGGATTTGAAAACGGAGCAAATGACTGGCGCTTTGAAAC
+CTTGAATGTATTCTGCAAATACTGAGCATCAAGTTCACTTTCTTCCATTTCTATGCTTGT
+TTCCCGACTGTGGTTAACTTCATGTCCCAATGGATACTTAAAGCCTTCTGTGTCATTTCT
+ATTATCTTTGGAACAACCATGAATTAGTCCCTTGGGGTTTTCAAATGCTGCACACTGACT
+CACACATTTATTTGGTTCTGTTTTTGCCTTCCCTAGAGTGCTAACTTCCAGTAACGAGAT
+ACTTTCCTGAGTGCCATAATCAGTACCAGGTACCAATGAAATACTGCTACTCTCTACAGA
+TCTTTCAGTTTGCAAAACCCTTTCTCCACTTAACATGAGATCTTTGGGGTCTTCAGCATT
+ATTAGACACTTTAACTGTTTCTAGTTTCTCTTCTTTTTCTTCTCTTGGAAGGCTAGGATT
+GACAAATTCTTTAAGTTCACTGGTATTTGAACACTTAGTAAAAGAACCAGGTGCATTTGT
+TAACTTCAGCTCTGGGAAAGTATCGCTGTCATGTCTTTTACTTGTCTGTTCATTTGGCTT
+GTTACTCTTCTTGGCTCCAGTTGCAGGTTCTTTACCTTCCATGAGTTGTAGGTTTCTGCT
+GTGCCTGACTGGCATTTGGTTGTACTTTTTTTTCTTTATCTCTTCACTGCTAGAACAACT
+ATCAATTTGCAATTCAGTACAATTAGGTGGGCTTAGATTTCTACTGACTACTAGTTCAAG
+CGCATGAATATGCCTGGTAGAAGACTTCCTCCTCAGCCTATTCTTTTTAGGTGCTTTTGA
+ATTGTGGATATTTAATTCGAGTTCCATATTGCTTATACTGCTGCTTATAGGTTCAGCTTT
+CGTTTTGAAAGCAGATTCTTTTTCGAGTGATTCTATTGGGTTAGGATTTTTCTCATTCTG
+AATAGAATCACCTTTTGTTTTATTCTCATGACCACTATTAGTAATATTCATCACTTGACC
+ATTCTGCTCCGTTTGGTTAGTTCCCTGATTTATCATTTCAGGAGTCTTTTGAACTGCCAA
+ATCTGCTTTCTTGATAAAATCCTCAGGATGAAGGCCTGATGTAGGTCTCCTTTTACGCTT
+TAATTTATTTGTGAGGGGACGCTCTTGTATTATCTGTGGCTCAGTAACAAATGCTCCTAT
+AATTAGATTTTCAGTTACATGGCTTAAGTTGGGGAGGCTTGCCTTCTTCCGATAGGTTTT
+CCCAAATATTTTGTCTTCAATATTACTCTCTACTGATTTGGAGTGAACTCTTTCACTTTT
+ACATATTAAAGCCTCATGAGGATCACTGGCCAGTAAGTCTATTTTCTCTGAAGAACCAGA
+ATATTCATCTACCTCATTTAGAACGTCCAATACATCAGCTACTTTGGCATTTGATTCAGA
+CTCCCCATCATGTGAGTCATCAGAACCTAACAGTTCATCACTTCTGGAAAACCACTCATT
+AACTTTCTGAATGCTGCTATTTAGTGTTATCCAAGGAACATCTTCAGTATCTCTAGGATT
+CTCTGAGCATGGCAGTTTCTGCTTATTCCATTCTTTTCTCTCACACAGGGGATCAGCATT
+CAGATCTACCTTTTTTTCTGTGCTGGGAGTCCGCCTATCATTACATGTTTCCTTACTTCC
+AGCCCATCTGTTATGTTGGCTCCTTGCTAAGCCAGGCTGTTTGCTTTTATTACAGAATTC
+AGCCTTTTCTACATTCATTCTGTCTTTAGTGAGTAATAAACTGCTGTTCTCATGCTGTAA
+TGAGCTGGCATGAGTATTTGTGCCACATGGCTCCACATGCAAGTTTGAAACAGAACTACC
+CTGATACTTTTCTGGATGCCTCTCAGCTGCACGCTTCTCAGTGGTGTTCAAATCATTATT
+ACTGGGTTGATGATGTTCAGTATTTGTTACATCCGTCTCAGAAAATTCACAAGCAGCTGA
+AAATATACAAAAATAACAAGGTACTCAAAAACTGAATTGTCATTAAAAAAATACATACTT
+CATACACCTTGGAGGTGGAAATCAACCAACTGGCTATATTAGAGAAACTAACCTCATAAA
+CTACCAAGTATACTGAAGATGTAGCTCATACTCTTTCATTTAATTCCTATTTACCTAGAT
+TATTTCCACTTAGGATCCATTAAATTTTTAATTTCAGAATTTTCCCTATGCAGAAACCAC
+ACCTATTTCTCTAACGTCTAAGAGTGAATTAAAAGCAGATTGGCCATCAGAAAACTGGTT
+CTGATGTACTCTAAAGATTACTGGCCATTAAGTCTACTTAATACTCTGTTCTATCTACAG
+ACTTACCACTCCCTATATTTAAAAACCAGTAGGTAAAAGATGAAACACAAATACACCAAT
+TAAAAGTAAAGGGCAGGCCAGGCACAGTGGCTCAAGCCTGTAACTGCAGCACTTTGGGAG
+GCTGAAGTGGGCAGACTGCTTGAGTCCAGGAGTTTGAGACCAGCCTCGGTAACATGGTGA
+AACCCCATCTCTATAAAACCACAAAAAATTAACCGGGTGTGGTGGCATGCGCCTGTAGTC
+CCAGCTACTCAGGAGGCTGAAGTGGGAGGATAGCTTGAGCCTTGGAGGTGGAGGTTGCAG
+TGAGCCAAGATTGCATCACTGCACTCCAGCCTGGGCAACAGAGTGAGACCCCATCTCAAA
+AAAAAACAAACAAACAAACAAAAAAAAAAACGAAAGGGCAACAATCAGTTACAGAAGGTC
+TTATTATAGGTACATTAGTCTAGTACCATTTAAATCTATCAGACCATACCACGACATTTG
+ACAGAGAATGATACTCTAACTCTGCCAAGAGATTTTGTGGGTTGTAAAGGTCCCAAATGG
+TCTTCAGAATAATCTAATTACAGTACTGTATCTACCCACTCTCTTTTCAGTGCCTGTTAA
+GTTGGCAAACTTTGCCATTACCCTTTTTTGCAGAATCCAAACTGATTTCATCCCTGGTTC
+CTTGAGGGGTGATTTGTAACAATTCTTGATCTCCCACACTATAGGGAAAAGACAGAGTCC
+TAATAAGAAACACTAGTTACATGTATGCAGAACTGTCAAATGACCAAGATCAAACATTTT
+AGCTCTTTCGATTACAGAAAGCTGACCAATCTTATTTAGTTAGTGAAAGCTGCTCTCTCC
+TTTAGAAACTTCTAGTTGAAATGAAATGGTTGCTGGGCACGGTGGCTCAAGCCTGTAATT
+CCAGCACTTTGGGAGGCTGAGGCGGGTGGACCACTTGAGGTCATGAGTTCAAGACCAGCC
+TGGCCAACATGGTGAAACCCCATCTCTACTAAAAATACAAAAATTAGCCGGGTGTGGTGG
+CGCGCGCCTGTAGTCCCAGCTACTAGAGAGGCTGAGGCAGGAGTATGGCTTCAACCTGGG
+AGGCAGACGTTGCGGAGAGGTGAGATCACACCTCTGTACTCCAGCCTGGGCAACAGAGCA
+AGACTCTGTCTCAAAAAAAAAAAAAAAAAAGAGAGAAAGAAAGAAATGGAATGGTCAATT
+AACCGGGCGTGGTGGTGTATACCTGTAGTCCCAGCTACTCGTGAGATTGAGACAGGAGAA
+TCGCTTGAACCAGGGAGTTGGAGATTGCAGTGAGCCGAGATGGCGCCACTACACTCCATC
+CTGGCAACAGGGCAAGACCCCGTCTCCAAAAAAAAAAAAAAAAAAACCTGGGTCAAGCAA
+TAATTCCTAAGGAAGGTAGGTAACATAGTTGGGGTTGCTTGTAGTTTATTATATAACATA
+CAGACAAAGCTTGAGAGATATGTGGAAATAAGGAACAGAGGAAAGAAAGAGTTGAAAATG
+AAGTCCTTGAACATTTTCATCAGTCACAATTACTGCTGTGTCAATATTACTGTATATGAG
+GAACTTAGAGAACAATCTGCTAGAAGCAAGCATGTGCAGAGTTCTACTGTTATCCTAAAT
+TCCTTTGGACAGTGCTAATAACTAAATCCAACAAACAAAAAGGGTATTTCCTCCACTATA
+AAATGAGAGAACTAAACTAGATGATCTCTAAGGTTTCTTCCAATACCATGATTCTAGTCT
+GGAGAAACACCAGCCTACTTGAGGGAGGAAGGTGGGAAGAGGGAGAAATTCAGAAAGAAA
+GCAAACAAAAAACTGTGGGGTATGCTTAGTACCCGGATGATGAAAAAAATCTATACACCA
+AATCCCAAGTCGTGTGTTTACCTATATAACAAACTGCACATACATCCCTGAACCTAAAAT
+AAAAGTTAAAATATTTTTAAAAAGAGAGAAACATCAATCCTTAATATTAACTAAATAGGA
+AAATACCAGCTTCATAGACAAAGGTTCTCTTTGACTCACCTGCAATAAGTTGCCTTATTA
+ACGGTATCTTCAGAAGAATCAGATCCTAAAAAATTTCCCCCCAAAAAATAAATCAATAAA
+AGTTTTCTTAATTAAAAGGGTTAAAAAAATGTACTTGTTGAAAAACAGATATTCAACTAG
+AAATATTTACTGAGCATCTACTGTGGCAGGTACAATGCTAGTTAAGCTAGTATGTAATAC
+AGAGAAGTGGTTAAAGGCATGGGCTTCGCCAGGCACAGTGGCTCTCACCTGTAATCCCAG
+CACTTGAGGAGGCCGAGATGGGTGGATTATTTGAGGTTAGGAGTTCAAGACCAGCCTGGC
+CAACAAAGTGAGACCCCCGTTTCTACTGAAAACAAAAACAAAAACAAAAAAAAAGCACAG
+GCTCTGACATCTAACTTCCTAGGTTTGAATCATGGCTCAGCCACTTACTAGGTTTAATAC
+CTTGGAAAAATTTCATAACTTCTCTGTGCCTTAATTTTCTCATCTGTAAAATAAGTATAA
+TAGGAACAATCTCAGAGGTCTGACAAGCATCTAATGAGTTATACAAGAAAAGCACAATAG
+TGCCTGGAATATAGTTAAGTGCTCCTAAATATCAACTACTATAACTATTTTTACAATGCC
+TGTTGTCTAGGAATTTATGATCATAAGGGGGGAAAACAGTAAGTGTTATGATAAATAGAT
+GGTGGTGCCTGGGAGCTCAAAAGATGGCTATCCTTTTTAATTATAAATATATTCTAAAAG
+AAAATCCAATTTGAGAGCCCAGTTTGAATTCTGAGCTCAGCAGCTCTTTTTTTTTTTTTT
+TTGGAGGTCTTGCTCTGTCACCCAGGTTGGAGTGCAGTGGCATGATCATAGCTCACTACA
+GCCTCAAACTCCTGGGTTCAATGTATCCACTCACCTCTGCCTCCTGAGTAGCTGGGACTA
+CAGATGCACACCACCACACCCAGCTAATTTAAAAAAGAAATTTTTTTGTAGAGATGAGGT
+CTTGCTATGTTGCCCAGGCTGGTCTCAAACTCCTGGCTTCAAGCAATCCTCTGCCACTGC
+TGAGATTACAGATGTGAGCTACTATGCTGGCCTCAACTTTTCTTTTTATAAGCTTAAAAA
+AATTTATTATTTTTAAAAATTATTATTTTTTTGAGATGCAGTCTCACTCTATTGCCCAGG
+CTGGAGTGCAGTGGTGTAGTGTTGGCTCATTGTAACCTCCGCCTCCCTGGTTCAAGCGAT
+TCTCCTGCCTCAGCCTCCCAAGTAGCTGGGATTACAAGCATGTGCTACCACACCCAGCTA
+ATTTTTTTTTTTTTTTGTATTTTTAGTAAAGAGGGGTTTCACCAGGTTATCCAGGCTGGT
+CTCGAACTCTGACCTCAGGTGATCTACCTGCCTCAGCCTCCCAAAGTATTGGGATTACAG
+GCATGAGCCACCGCACCGGCCAAAAATGTATTATTATTTTAAAAATAGAGACAGGGTTCC
+CCTATGTTGGCCAGGCTGGTCTTAAACTCGTGGACTCAACCAATCCTTCTGCCTCGGTCT
+TCCAAAGCGTTAGGATTACAGGCACGAGCCATCCTGCCCAGCCAAGATTCAGCTCTTTTT
+TTTTTTTTTTGAGATGGAGTTTCACTCTTGTTGCCTAGGCTGGAGTGCAATGGTGCGATC
+TTGGCTCACTGCAACCTCTGCTTCCTGGGTTCAAGCGATTCTCCTGCCTCAGCCTCCTGA
+GTAGCTGGGATTACAGGCATAAGCCACCACCCCGGCTAATTTTTTTTTTTTTTTTTTTAG
+TAGAGATGGGGTTTCTCCATGTTGGTCAGGCTGGTCTTGAACTCCCGACCTCAGGTGATC
+CGCCCACCTCGGCCTCCCAAAGTGCTGGGATTACAGGCGTGAGCCACTGCGCCTGGCAAT
+TCAGCTCTTCTTAAAAGGCTTCCTCATCTAGTACAATTTATCTTGGAACTAAATACTGTA
+GCAATCCATCATGTTTTTTCTTATTGCTACTCTCCATCTTTCCAAAACATATTTACACAT
+ATTTAAAACCAGATATTCTTTCTTTTGCTCTCTTTTTTTTTTTTAGATGGAGTTTCGCTA
+TTTTTGCCCAGGCTGGAGTGCAATGGTGCGATCTCGGTTCACCGCAACCTCCACCTCCCG
+GGTTCAAGTGATTCTCCTGCCTCAGCCTCCCGAGTAGCTGGGATTACAGTTATGTGCCAC
+CACACCTGGCTAATTTTTTATTTTTTGGTACAGACAGAGTTTCTCCATGTTGGCTAGGCT
+GGTCTCGAACTCCCGACCTCAGGTGATCCACCCACTTTGGCCTCCCAAAGTGCTGGGATT
+ACAGGTGTGAGCCACCATGCCTGGCCTCTTTTGCTCCCTTTTTAAAGTAAGATTCTTCAA
+GGTGGGAACTGCGTCTTTTACATTTTTTATAACTCACCATAGGGCTCATAAAATTCACTT
+CCCAAAGCTGCCTACCACAAATACAAATTATGACCAAGATTTTTGGCAAAACTATAAGAT
+AAGGAATCCAGCAATTATTATTAAATACTTAAAAAACCTGAGACCCTTACCCAATTCAAT
+GTAGACAGACGTCTTTTGAGGTTGTATCCGCTGCTTTGTCCTCAGAGTTCTCACAGTTCC
+AAGGTTAGAGAGTTGGACACTGAGACTGGTTTCCTGCTAAACAGTATGGTAAAGAACAGT
+CAAGCAATTGTTGGCCAGTTCTGTGCTTTTCCTCCTGAAGAGAAACTTGACACCATGGAC
+AAAATAAATTGACCATCATCAGTCAGCTAACATGTATGATGCCTGGAAAAAATGCCCAGG
+AATTTACACACTAAAATGTCTGGGGCTGGGAGCGGTAGCTCATGCCTATAATCCCAGCAC
+TTTGGGAGGCTGGAGCAGGACTGCTTGAGGCCAGGAGTTCAAGACCAGCATAAGCAACAG
+AGTGAGACCCAGTCTCTACAAAATAATAGTAGTAGTAATAATAAAATGTGTGGGATATGT
+GTGATTTGAATTTTTTTTTCTGTTGTCTTAAATTTTTCAAACCTGATTATGTATTATTTG
+TGTAATTTTTGAAGTATTAATATAGCATATTTTGAAGCTGATACTTGATATACATTCCAA
+TCACATCTGATAACTTTTTTTTTTGTTTTGGGGGGTGTACAGAGTCCTGCTCTGTCACCC
+AGGCTGGAGTGCAGTGGCGCAATCTCAGCTCACTGCAACCTCCGCCTCCTAAGTTCAAGA
+GATTCTCCTGCCTCAGCCTCCTGAGTAGCTGGGTCTACAAGCGTGTGCAACTATGCCTGG
+CTAATTTGTGTGTGTGTGTGTATATATATATACATATATATGTGTGTGTGTGTGTATATA
+TATATATAACATATATATAACATATATATATTATATATATATAACATATATATAACATAT
+ATATATGTTATATATATATAACATATATATAACATATATATATATATATATATAATATAT
+ATATATATATATATATATGTAATCCCAGCACTTTGGGATATATGTGTATATATGTTTTTT
+TTTTTTGAGACAGAATCTTGCTCTGTTGCCAGGCTAGAGTGCAGTGGCGTGATCTCGGCA
+CACTGCAACCTCCACCTCCCTGGTTCAGTTGATTCTCCTGCCTCAGCCTCCCGAGTAGCT
+GGGACTACAGGCGTACACCACCACGCCTAGTTAATTTTTGTATTTTTAGTAGAGACAGGT
+TTCGCCATGTTGGCCAGGCTGGTCTCACACTCCTGACCTCAGGTGATCTGCCTGCCTCGG
+CCTCCCAAAGTGCTGGGATTACAGCCATGAGCCACCGTGCCTGGCCAATAACATTTTTAA
+AAAGGATAAATGATGACAATAAAACCCCAGCACTCCTAAGAACATTTAGTATAGGAACGA
+GTATTTAAAAGCCCAACATTACTTTTTTTTTCCTTCCTTTTTAGCTCTATATCTTTTGAA
+AAATGAATGCTGGTACTGTGAGAACTACTTTTATTTTATTTGTATTTTTTTAGACAGAGT
+CTTGTTCTGTTGCCCAGGCTGGAGCGTGGTGGCGTGATCTCGGTTCACTGCAACCTCTGT
+CTCCTGGGTTCAAGTGATCCTCCCACCTCAGCCTCCCAAGGAGCTGGGACTACATGCGCA
+CGCCACCATGCCTGGCTAATTTTTGTATTTTTTGTAGCGATGGGGTTTCACCACATTGCC
+TAGGCTGGTCTTGAACTCTAGGACTCGAGATCCACCCGCCTTGGCCTCCCAAAGTGCTGG
+GATTACAGGCAAGAGCCACTGCGCCCAGCTAGAACAATTACTTTTTTTTCTTTTTTGAGA
+CAGAGTCTCACTCTACGGCCCAGGCTGGAGTGCAGTGGCGCGATCTTGGCTCGCTGCAAC
+CTCCGCGTCCTAGGTTCAAGCAATTCTTGTGCCTCCGCCTCCCGAGTAGCTGGGATTACA
+GGTACGTGCCACCACACCCAGCTAATTTTTGTATTTTTAGTAGAGATGGGTTTCACCATG
+TTGGCCAGGCTGGTCTCAAACTCCTGACCTCAAATTATCTGCCTGCCTCAGCCTCCCGAA
+GTGCTGGGATTACAGGTGCAAGCTACTACGCCCAGCCCCAGAATGATTACTTTTTAAGAT
+CTCCATCATTCATGCACATATAAGTAACAACAGAGCAAATCACTACATTTTCTTTAACAA
+TTACACCTTTTAAGTTCAAGTAATTTTCCCTTTTTTTAAAAGATAGGGTCTCAGTCACCT
+GCGCTGGAGTCCAGTGGCACAGTCATAGCTCAACTGCAGCCTTGACTCTCTATGTTAAAG
+CAATGCTCCAGCCTCAGCCTCCCAAGTAGCTAGGACCACAGGTGCATACCACCACGCCCA
+GCTAAGTTTTTTTGTTTTTTTTTTGAGACAGAGTCTCACTCTGTCGCCCAGGCTGGATCG
+CAGTGGCGGGATCTCGGCTCACTGCAAGCTCCACCTCCCGGGTTCATGCTATTCTCCTGC
+CTCAGCCTCCCGAGTAGCTGGGACTACAGGAGTCCGCCATCACGCTCAGCTAATTTTTCT
+GTGTTTTTAGTAGAGACGGGCTTTCACCATGTGAGCCAGGATAGTCTTGATCTCCACACC
+TCGTGATCCACTTGACTCGGCCTCCCAAAGTGCTGGGATTACAGGCGTGAAGCTTTTTTT
+TTTTTTTTTTTGAGACGGAGTCTCGCTCTGTCGCCAGGCTGGAGTGCAGTGGCGCAATCT
+CGGCTCACTGCAACCTCCGACTCTCAGGTTCAAGTGATTCTCCATCCTCAGCCTCTGGAG
+TAGCTGGGATTACAGGCACGTGCCACCACACCCAGCTAATTTTTGTATTTTTAGTAGAGA
+CCGGGTTTCACCATGTTGGCCAGGGTGGTCTCAATCTCCTGACCTCATGATCCACTGGCC
+TCAGCCTCCCAAGGTGCTGGGATTGCAGGTGTTAGCCGCCGCACCCAGCCAGTTCTTTTT
+TTTTTTGCAACTAGATCTTGCTTTGCCGCCCACGCTGAAGTGCAGTGGAGTGATCATAGC
+TCACTGTAGTCTACATCTCCTGGACTCAAGTGATCCTTCTGTCTCAGCTTCCCAAGTAGC
+TGGGACTACAGGCACACACCACCATGCCCAGATAATTTAAAAAAACTTTTAATATAGACA
+AGGACTTGCTATGTTGCCCAAACTGGTCTTGAACTCCTGAGCTCAGGCAATCCTCAAGCC
+TCCTAGTGCTGGAATTACAGGCGTGAGCCACGGCACCCAGCTACTTTTTTTTTTTTTTAA
+TTGCAGAGACAGTGTCTCACTGTGTTGCCCAAGCTGGGCTCAAAGGACCTCCTACCTCAG
+CCTCCCAAAGGGTTGGGATTATAGGCATGAGCCATGGCACCCAGCTGAAGTAATTTCCAA
+ATGCTTAAAAATATCAGTGACCTTATGGCTATTTTAGATAAGCATCACAGAGCAGATAAA
+GCTCCAAAGCAAGGAAGGGCCTATAAGAGCTCTCTTTTTTGGCCGGGCTTGGTGGCTCAC
+GCCTGTAATCCCAGCACTCTGGGAGGCCAAGGAGGGTGGATCACCTGAGGTCAGGAGTTC
+GAGACCAGCCTGACCAATATGGTGAAACCCCGACTCTACTAAAATTACAAAAATTAGCCA
+GGTCTGGTGTCGTACCCCTGTAGTCCCAACTACTCAGGAGGCTGAGGCAGGAGAATCACT
+TGAACCTGGGAGGCGGAGGTTGCAGTGAGCTGACATCGTGTCACTGCGCTCCAGCCTGGG
+CGACAGAGCGAGACTCTGTCTCAAAAAAAAAAAAAAAAAAGAAATCTGTCTTTTTGGTGT
+ATCTGATGGGGATCTTGCTATGTTGCCTGGGCTGGTCTCAAACCTGGACTCAAGTGATCC
+TCCCATTTCAGCCTCCTAAGTAGCTGGGATTATAGGTACATTCACCTCACCTGGCTGTAA
+GGTCTCTCTCTTGATTATATCAGGTACCCTGACCTTCTCTGAACTCTAACTGATTAGAAC
+ACTTGTCTAACCACTTAATATACCATCTTTCCTTCTTCACTAACTTTTTATATAAATCTA
+TGAGCATCTAGCACATTCACTAACATATTCACAATGCTCAATAAAGAGATGTTGCCAGAA
+TAAATGAAAATGGTTTTACCGGCCGGGCACAGTGGCTCACACCTGTAATCCCAGCAATTT
+GGGGAGCCGAGGTGGGTGGATCACCTGAGGTTAGGAGTTCGAGACCAGCCTGGCCAACAT
+GATGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCTGGCATGGTGGCGCGTGCCTG
+TAATCCCAGCTACTAAGGGGGCTAAGGCAGGAGGACTGCTTCTAGCCTGGGCCACAGAGC
+AAGACTCCATCTCAAAAAAAAAAAAGAAAAAAAAAAGAAAAGAAGAAGAAGAAGAAGAAG
+AAAACAAATGGTTTTACCAAGGAAGGATTTTCGGGTTCACTCTGTAGAAGTCTTTTGGCA
+CGGTTTCTGTAGCCCATACTTTGGATGATAGAAACTTCATCTTTTAGATGTTCAGGAGAG
+TTATTTTCCTTTTTTGCAAAATTATAGCTGTTTGCATCTGTAAAATACAAGGGAAAACAT
+TATGTTTGCAGTTAGAGAAAAATGTATGAATTATAATCAAAGAAACCAAGAGAAACCCTA
+TGTATGCTCTTTGTTGTGTTAAGACAATGCATTAAGGTTACCTGTGATTTTTTTTAAAAA
+TCAAATTTTAAAAAATCAACTGGAAATTTTACTCCTAGGAAACAAAAACAAATACACAGA
+CCATCAAAGTTATTTAGAGTCCTTGTTTTCTACCTTAACACTAAGAAATTTGCCTATCAA
+TACTGTATTTCACTAAAGCTAAGACACCAACAATGTAAGTTGCACTATTATTTTCTGTAT
+CACTAAGAAAGAAAGCACACAAATTAAACAAATGACACACCCTCAATAGTAAAATGTTCC
+CAATTTCAGAGATGTTAAGATGTGAAAAATGTGCACCTTACGATTGATAAAATAAGGTGT
+GAGACCAGTGGGAGTAATTTTTTAAAAATAGATTACAGATACAGAACTAAAATTAACCTA
+GACTAAAAGGTCTTATCACCACGTCATAGAAAGTAATTGTGCAAACTTCCTGAGTTTTCA
+TGGACAGCACTTGAGTGTCATTCTTGGGATATTCAACACTTACACTCCAAACCTGTGTCA
+AGCTGAAAAGCACAAATGATTTTCAATAGCTCTTCAACAAGTTGACTAAATCTCGTACTT
+TCTTGTAGGCTCCTGAAATTAAATTGTTTGAGAAACACACTCAGCAAGTGATTATCAACC
+TTTTAAGGACACTAAAATAAGAAAAGACATGTAAACAAATAAAAATAAGATGCAGCAACA
+GTAGAAAACCTCTATAATCAATACATCATTGACATCTGTATAAACCGTGTGATGGCAGTG
+ATTTAGTAACTTTTTGTCATTCATTTAAGCCTACCAAATGCCTAAAATTATCTGATATAA
+TACTGCCCTAAATCCACAGCAGATATAATGCATTGCATAGAAAACTAGAGTACTTTTTTT
+TTTGTTTAATTTAGAGACAGGGTCTTGCTCTATTGCCCAGGCTAGCATGCAGTGCCACAA
+TCATAGCTCACTGCAGCCTCAGACTTCTGTACTCAAGCTATCCTCCCACTATAGCCTCCC
+AAGTAGCTAGGACTATGGGCATATGCCACCATGTACATTTATTTATTTATTTTGTTGGTA
+GTGATGGGGTCTCACTATGTTGCCCAGGCTGATTTCAAACTCCTGGCCTCAAGCAATCAT
+CCCACCTCAGCCTCCTAGAGTGCTAGGGTTATAGGCATGAGCAATCACACCCTGCTGAGC
+TTACTGTTCTTAACATCTGAACCCTGCCCAATCCCTCACTTAGTTCTGCCTCTCAAGGAT
+TTCTGTCAAATTATGATTATACTTCTTTGAAAACACATAGATAACAATGTCCAAAGGGAG
+ATTTGGGTTTAGTAAAGTGGAATTAAAGCACAATTCATTCATTCCTTTAAGCATCTGAGT
+GCCTACTATGTACCAAACTTAGGAAAAACAGTGTTGAGACAGACAAAATTACTACTCTCA
+TAGAATTTACATTGTAGCAGAAGAGATACACAATATATAAATACATTGTGTTTGTGTAAA
+TAATTAGATAGAAATAAACACACACCTGTGAACCCCAGCACTTTGGGAGGCCGAGGTGGG
+CAGATCACCTGAGCTCAGGAGTTACCAGCCTGGGCAACATGGTAAAACCTCATCTCTACA
+AAAAATACAAAAATTGGCCGGGCATGGTAGCGTGTGCCTGTAGTCCCAGCTATTTGGGAG
+GCTAAGGCAGGAAGAGGCTGGGAGACAGAGGCTACAGTGAGCCGAGATCACGCCACTGCA
+CTCCAGCCTCAGTGACAGAGCAGGACCCTGTCTTAAAAAAAAAAAAAAAAAGAAAAGGAA
+ACACAATCAAAAATATAAAAACAAGATTAACAGACAATGGGGGCACGGCGATACAGCCCT
+ACTTTACATAAGTCTGCAAGTTTTTACACTAGAAGCATTAGAGAAAGGCAGTAAGTTTCT
+AATACCTGTATAAGGCAGATGTCCCATAAAACTTTCAGGAAAATAACTTTGGAAATAATT
+TACTGTGTGCTAAAAACTCTTTTATAAATTTTTCTGATGAATGGTTTTATAGGAACGCTA
+TGTTATTAAATAATTTCTACTTTTTCCTACTGTGGTTGCTTCCAACCTAGCATCATTACC
+AAATTATATACCTTTTGGTTATATCATTCTTACATAAAGGACACTGTGAAGGCCCTTTCT
+TCTGGTTGAGAAGTTTCAGCATGCAAAATCTATAAATTATAAAGAAAGAAAGAACAATTT
+AATTTACTTCCTTTTGTAGAAAGAATACTCAAAAGGCAAATAGCCATGAAAAGATAATCT
+CACAACTGCCCTTAAGAGCCATTTAAAAAGTAATGGCAGGTGAATTACAAGCAATAGTTT
+CCTAATTGTTTTTGGATGCTGCATAAGCAAAAACCTAAACTACATAAGCAATGATCTATG
+AAAACTGAACTTACATGCATATGGCTTACTGTTATGATCACATAAAACTTAATAAAAGTT
+AATATGGCATATTTAATGATATATTCATAATTATTTCATGCTGCATAATCAAATATAAAC
+GGTAAGTAGTTCATGTAAGATGCTTATAATTAGTTTAAAATCTCAACACCTCACCACAAA
+GCTATAGTAATCAAGAAAGTGTGGTAATAGCATAAGAATAGACACATACATCAATAAAAT
+GGAATTGACAGTACAGAAATAAACTCATACATACATCTGTGATCAAGCGATTTTCAACAA
+TAATAAATACCAAGACAATTTTTTTTTTTTTTTTTTTTGAGACGGAGTCTCGCTCTGTCT
+CCCAGGCTGGAGTGCAGTGGCACGATCTCGGCTCACTGCAAGCTCCACCTCCTGGGTTCA
+CGCCATTCTCCTGCCTCAGCCTCCCGAGCAGCTGGGACTACAGGCGCCCAGCACCATGCC
+CGGCTAATTTTTTTATTTTTAGTAGAGACGGGGTTTCACCATGTTAGCCAGGATGGTCTC
+CATCTCCTGACCTCGTGATCTGCCCGCCTCTGCCTCCCAAAGTGCTGGGATTACAGGTGT
+GAGCCACCATGCCTGGCCGACGATTTTTATTTTCTTAATTTTTTTTTTTTTTTTTTGAGA
+CAGACTCACTCTATCACCCAGGCTGGAGGGTAGTGACACAATCTCAGCTCACTACAACCT
+CCACCTCCTAGGCTCAAGCAATTCTCGTGCCTCAGCCTCCCGAGTAGCTGGGATTACAGA
+CATGCACCACCATACCCAGCTAATTTTTTGTATTTTTAGTTTCACCATGTTGGCTAGTCT
+TGAACTCCTGGCCTCAAATTGATCCATCTGCCTTGGCCTTCCAGAGTGCTGGGATTACAG
+GCATGAGCCACCGTGCCCAGGCCAAAGATGATTAAATGGGAAAATAATACTTTTTGTGTT
+TTTAACAAACAGTGTTGAGACAAAAGTATAACCACATGTAAAAGAATGAAATTATACTCC
+TATCTCACACCAAATAACAAAAGTTAACTCAAAGTGGATCATAGACCAGAAGTAGAGAGA
+GCAATGGTGATGATAATTAAAAGCAGCGATTCACTCATACAACCAATATTTACTATGTCT
+AGTACTATTCTAGATGGAGGGGATTCAATAGAAAAGCAAAATAAGATCCTGCAAAATAAA
+ACATAAAGGACATAATATACTGGTGAAGGGGGTGACTAGGTAGGGAGTAAATAGCAGACA
+CTGACAATGAAGAGACCCAGGAAAGAAAAGATTAAGGGGCTAAAAAAAAAGTCACTAGGG
+CTGTGCACGGTGGTCCACACCTGTAATCCCAGCACTTGCGGGGTGGGTGAATCACTTGAG
+GCCAGGAGTTCAAGACCAGCCTGGCCAACATGGTGAAACCCTGTCTCTACTAAATATTCA
+AAAATTAGCTGGGTGTGGTGGTGGTGCACTGTAGTCCCAGTTACTCGGGAGGCTGAGGCA
+TGAGAATAAGTTGAACCTGTGAGGCGGGGGTTACAGTGAGCCAATATTGCACCATTGCAT
+TCCAGCCTGGGCAACAGAGTGAGATTGTGCCAAAAAAAAAAAAAAGGCATTGGGAATTGT
+GAGAAAAGACACTTAGAGAATATTTTTTACTAGCCAGGTAATTTAACATTTATTACCCTC
+TCTTGGCCGGGTGCAGTGGCTCATGTCTGCAATCCCAGGAGGCTGAGGCAGGCAGATCAC
+TTGAGGCCTGGAGTTTGAGACCAGCCTGGCTAACATGGTGAAACCCTGTCTCTACTAAAA
+ATACAACAAAATTAGCCAGGCGTGGTGGGCACACGCCTGAGTCCCAGCTACTTGGGAGGC
+TGAGGCATGAGAATCACTGGAACCCAGGATGGCAGAGGTTGCAATGAGCTGAGAAGAGTG
+CCACTGCACTCCACCCTGGGCAACAGAGGAAGACTCTGTCTCAAAAAAAAAAAAAAAAAA
+AAAAAAAAGGCCAGGAGCGGTGGCTCACGCCTGTAATCCCAACACTTTGGGAGAGGTCAG
+GAGTTCAAGACCAGCCTGACCAACACGGAGAAACCCTGTCTCTACTAAAAATACAAAAAT
+TAGCCGGGCATGGTGGCATATGCCTGTAATCCTGGCTACTCAGGAGGCTGAGGCAGGAGA
+ATCTCTTGAACCCGGGAGGCGGAGGTTGCAGTAAACTGAGATCGCGCCATTGCACTCCAG
+CCTGGGCAACAAGAGCGAAACTCCATCTCAAAAACAAAACAAAACAAAACAAAAAAACCC
+CAACTATATCTATATCTCTATCTATCTACCTACCTATCTATCTGTCTACAGTCTTGAACT
+CCCGACCTCAAGTGATCGCCTGCTTCAGCCTCCCAAAGTGCTGGGATTACAGGTGTGAGC
+CATTGCGCTGGGCTACTTTCTATCTTTATTTTTGTACAGATGTGGTTTCACTATATTGCC
+CAGTCTGGTCTCGAACTCCTGACCTCAAGTGATCCTCCTGCCTTGGCATCCCAACGTGCT
+GGGATTACAGGCATGAGCCATCAAGCCTGGCCTTATCTTCATTTTTATAGAGTAGAGGCT
+TGTCCCAGATCACACAGTAATTAAGCAATGAAGGTTATATTGGATCCAGAATTGGATTGT
+AGCAAAGCCCACAATCTTCCTTTTTTCTTTTTTGACATGGAAACTAAGTCTGGAGAGAGG
+CACCCACAATCTTCCTACCAGAGAAAGTGAATGTAGGTAGGTAAGGTCAAGGAGACTTGG
+GTCCTTCTTCGCCGATATAGATGCTTCAAGTACCATATTGCACTCAACAAAACAATGACT
+CTATAGTTTGGAAGATGAGGCTGTCAAAAAGCTACCTCCACTGTACATAAGTACCTTTAA
+AACTCAGAATAGAGGCTCCCACTCCTTCAGAATCTACAAATACTACATATACTCTAGTAT
+AATGGATCAAGAAGGCATCAAGCATTACTCCAGCAAATAGTACAATTGAACAATTCAGAG
+CAGGGGTAGGGAGGAAATTCCCTTATGATAGTACTGCAGAATATAGTACAGTAGAGTGAC
+AAGCTAAGCTGTCTCGTGCTGTAGTCTATACAATTATATAAATAATTCAGTGGAACTAGA
+TACGCAAAAATCAACCAAGATAAGGATTCGAATCTTTTTTTTTTTTTTTAGACGGAGTCT
+CGCTCTGTCTCTCAGGCTGGAGTGCAGTGGCACAATCTCTGCTCACTGCAAGCTCTGCCT
+CCTGGGTTCACGCCATTCTCCTGCCTCAGCCTCCTGAGTAGCTGGGACTACAGGTGCCCG
+CTACCACGCCTGGCTAACTTTTTGTAATTTTAGTAGAGGCGGGGTTTCACCATGTTAGCC
+AGGATGGTCTCGATCTCCTGACCTCGTGATGTGCCCATCTCAGCCTCCCAAAGTGCTGGG
+ATTACAGGCGTGAGCCACCGCACCCGGCCTCGAATCTTTCTTTATGCTAGAAAAAGAATA
+CATGTATAAAGGTTGTTAACTAAACTTAAAAGAAAATGAACTTGTATATGACTTGAAAAG
+ACAGAGCTAACTAAAATACTGGCCAGGCATGATGACTCACACCTGTAATCCTAGCACTTT
+GGGATGCCTAGGTGGGCAGACGGGTTAAGCCCAAAGTTCAAGACCAGCCTGGGAAACATG
+GCGAAACCCCGTCTCTACAGAAAACACAAAATTTAGCTGGATATGGTGGTGTGCACTTAC
+AGTCCCAGCTACTTGGGAGACTGAGGTGATAGGATCGCTTGAGCCTAGGAGGTCAAGGCA
+ACAGTAAGCCTCATGATCGCACCACTGTACTCCAGCTGGGACAACAGAGTAAGACCCTGT
+CTCAAAAAAAAAAAAAAAAAGTAGCTGTTGAAAAATTTAAGTTACATTTATTGCTCACAT
+TCTATCTCTTTGAACAATGTGGTTCTAGATCTTCAAAAAAGTATTACAGGCTGGGTGCGG
+TGGCTCATGCCTATAATCCCACCATTTTGGGAGGTGGAGGTGGGCGGATCACTTGAGGTC
+AGCTCAAGACCAGCTTGGTCAACATGGTGAAACATGGTCTCTACTAAAATAAAAGGCTGG
+GCGTGGTGGCTAATGCCTGTAATCTCAGCACTTTGGGAGGCTGAGGTGGGCGGATCACCT
+GAGGTCAGGAGTTCGAGATCAGCCTTGTCAACATGGTGAAACCCTGTCTCTACTAAAAAT
+ACAAAAATTAGCCATGCATGGTGGTGCACGCCTGTAATCCCAGCTACTTGGGAGGCTGAG
+GCAGGAGAATCACTTGAACCAGAGAGGCAGAGGCTGCAGTGAGCCGAGATTGTACCACTG
+CACTCCAGCCTGGGCAACAGAACAAGACTCCATCTCAAAAAAAAAAAAAAAAGTATTACA
+CATTGCATTTTTTTGTTTGGAAAGTTCAAACTAATGCATGACTGCCTTAAGAAATATTTT
+CTAGATTGGTATTATTATCTTTTTTTATAGGCTTCATAAAAGATTTCAGAACTGGCTGGG
+CAAGGTGGCTCATGCCTGTAATCCTGGCACTGTGGGAGGCCAAGGCGAGCAGATCACCTG
+AGGTCAGGAGTTTTGGACCAGCCTGGCCAACATAGTGAAACCCCGTCTCTACTAAAAATA
+CAAAAATTAGCCAGGTGTGGTGGCACATGCCTGTAGTCCCAGCTACTCGGGAGGCTGAGG
+CAGGAGATTTGCTTGAACCCAGGAGATGGAGGTGGCAGTGAGCTGAGATCATGCCACTGC
+ACTCCAGTCTGGGCAACACAGTGAGACTCCGTCTCAAAACAAAACAAAAAAAAACAGCCG
+GGCGTGGTGGCTCACACTTGTAATCCCAGAACTTAGGGAGGCCAAGGCGGGCAGATCACG
+AGGTCAGGAGATCGAGACCATCCTGGCTAACACGGTGAAACCCTTTCTCTACTAAAAATA
+CAAAAAAATTAGCTGGGCGTGGTGGCAGGCGTCTGTAGTCCCAGCTACTTGGGAGGCTGA
+GGCAGGAGAATGGTGTGAACCCGGGAGGTGGAGCTTGCAGTGAGCCGAGACTGCACCACC
+GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAACAAAACAAACAAAAACAAA
+CAAACAAACAAACAAAAATAAAAAAAAGATTTCAGAACTTTAGGCTTGCTTGGGTCAATA
+AAGTTGTTTTATTTTTAGCAATTAGAGTTTATCCGTAGAAAATACAATTAATACAACAAA
+AGCATGGGGGTATCGCTCCCAGGCTCCCAGCTTTCTCATCATATAGATCAAAGTGTTATT
+CAGATTATATTGATATTACAGAAGAGATTTCATGAAAAAGTCGATCTATCACATGGGCAT
+TATACTGGACTTTTTTTTTTTTTGAGACGGAATCTTGCTCTGTCGCCCAGGCTAGAGTAC
+AGTGGCACGATCTCAACTCACTGCAGCCTCTGCCTCCTGGGTTCAAGAGGTTCCTCTGCC
+TCAGCCTCCTGAGTAGCTGGGACTACAGGCATGTGCCCCCATACCCAGCTAATTTTTGTA
+TTTTTAGTAGAGATGGTGTTACCATATTGGCCAGGCTGGTCTCGAACTCCTGACCTCGTG
+ATCCGCCCACCTCAGCCTCCCAAAGTGCTGGGATTACAGGCGTGAGCCACCACACCCGGC
+TTTGGACTTTTAATTCTAATATAACATTCAAAACACAATTTAAAATATGGCTGGCCCATC
+TCTACAAGAAACTTAAAAATTAGCTGGGCAAATGCCATGTACCTGTAGTCCTAGCTACTT
+GAGGGGCTGAGATGAGAGATTGCTTGAACCCAGATTGCAAGGTAAAAGTGAACTATGATC
+ACACCACTGAACTCCAGCCTGGGTGTCAGAGGGAGACACTGTCTCAAAGAAACAAACAAA
+AATATATATGTGTCACACACACACATATATATAACATATTTATATGTATACACACACATA
+TATCTTTATGACTGGTTCTTTCCTGACTATCACAATCCTGACTATCACAAGCTTGAAACC
+AAGCTTCTCACTCTTCTCCAGTTGCCAACTCTAATCCTCTCAATCTCAACAGCTGTTTTT
+TGTTGTTTTTTTTTTTTGAGACAGTTTTCACTCTTGTCGCCCAGGCTGGAGTGCAATGGC
+GCAATCTCGGCTCACTGCAACCTCCGCCTCCCAGGTTCAAGTGATTCTCCTGCCTCAGCC
+TCCCAAGTAACTGGGATTACAGGCATGCGCCTCCACGCCCGTCTAATTTTGTATTTTTAG
+TAGAGATGGGGTTTCTCTATGTTGGTCAGGCTGGTCTTGAGCTCCTGACCTCAGGTGATC
+CACCTGCCTTGGGCTCCAAAAGTGCTAGGATTAGAGGCGTGAGCCACCGTGCCCGGCCTC
+AACAGCTGTCTTTACCTCCAACTTCACTGGGCTCAAAGCACCTCAGCATCTTCCTGTAGA
+ATTACTCTCCTTTTCCTTCATTACTGTTTATGAGTAATAATCAACTCTTTCTTACATCCT
+TTTTCTATTTCCAATCCCTTCTGCCTCCTCTTGGACCTTCTCTTTCTTGCAAATGGCTTC
+CCATCTTTGAGGGCTTCTTCCTTTTCTAACACAACTCCTATACACATATGCAAAGTTAGC
+TTATTTTTCCTGGATGTATTTTCTTTTCTTTTCTTTTTTTTCAGACAGAGTCTCACTCTG
+TTGTCAGGCTGGAGTGCATTGGCATGATCTCGGCTCAGGGCAACCTCTGCCTCCCAGGTT
+CAAGTGATACCCCTGCCGCAGCCTACCAAGTAGCTGGGACTACAGGTACGTGCCACCATG
+CCAGGCTAGTTTTTTGTGTGTTTTAGTAGAGACAGTGTTTCGCCATTTTGGCCAGGATGG
+TCTTAATTTCCTGACCTCGTGATCCGCCCACCTCGACCTCCCAAAGTGCTGGTATTATAG
+GCGTGAGCCACCGCGCCCGTCCTCTATTTTCTTTTATTTGTACATTTGCTCGTATTATTA
+TCTCTGCCTATAAGCCTATAATTTCCTTCTTCCACAAGTTCTCAAAGCAACTATATTCAT
+AACTTAATCTCTCTTTTTTTGTTAAGAGACAGGGTCAGCCAGGCGCGGTGGCTTACACCT
+GTAATCCCAACACTTTTTAAGGCCAAGGTAGCTGAAGTCAGGAGTTTGAGAGCAGCCTGG
+CCAACATGGTGAAAACCCTGTCTCGACTAAAAATACAAAAATTAGCTGGGTGTGGTGGCA
+GATGCCTGTAATCCCAGCTACTCAAGAGGCTGAGGCAGGAGAATCGCTTGAACCCAGGAG
+GTGGAGGTTGCAGTGAGCCGAGATCACACCACTGCACTCCAGCCTGGGCAATAGAGTGAA
+ACACCATCTCAAAAAAAAAAAAAGACAGGGTCTCACTCTGTCATCTAGGCTGGAGTGCAG
+TGGTGTGATCATAGCTCACTACAGCTTCGAACTCCTGGCCTTAAGTGATCTTCCTGCCTT
+GGCCTCCCAAAGTGCTGGGGTTATGGGCAGGAGCTACCACACTGGGCCCTTGAGTCCCTG
+TAATAATAGTATAGTATGTTCAGCATTTGTTACTCAAGCTGACAAGAAAACATACAGTTC
+ATTCCAGAAAGATTCTCATCCAGATAAATTGAAAGCCCCAGGGCTTTAAAGGTTAATCTT
+TAGCTCTCTGTAGTAAATACTGGGACTTTTTTTTTTTTTTTTGAGTCTCCCTCTTGTCGC
+CCAGGCTGGAATGCAGTGGCATGATCTTAGCTCACTCAGATGAAAATTATGGACTATCTT
+CCCAGAAAAATGTACATGGCCATAGTTTTGAATACAATTTAAATATAATTCTAGGAAATT
+CATAAAGACTATTCATAAACCCCAAGTTAAGAACTCTGGAATTTAAAAATTCCTCAAAGG
+ATACATAAGAAATTGATCATTGTGGTTGTCTGGGGAGGGAACAGGGAGGCAGGGGTTGTA
+GGGTAAGAGGGAAGTATACTTTGCATCATATACCTTTTTGTGCTAATAAACTTTTTACCA
+AGTACATAGTTTGTACCTGGTACCAGGTTATGTACCAGGTACATAAATACTTAAAAACAA
+ATTAGTTGACATTTAAGGTAAGATGTGAGCCATAGCTTAACATAAAGAAAAGGAGAAAGC
+CCACTTGTTCTACTAAATTACCTACTCTACTTTTTCTGAAATTCTTTTATTAAGAAACAA
+ACATTTTCATTTCAAAAGACAAGATCATCAAATACGTAAATATAACTTGAATCACTGCTA
+TAAATGAATTTTGGCCTAAATAGAAACTGGTATCAGGTCCTTTCCTGTCTTCACAATGAT
+TACAAAGCGGGCAAACACTGACCCTTAGAAGGGGGAATGCATAAGGATATGCAGAAATGA
+ACAGAAAGGAGAAACTGGGAAGGCTCAAACACAATGTGCTTATTTCAAAACTGCTTGCAG
+TTTGCTTTCACTGATGGACACAAAAAATACAAAACACTGTTCAAAATGATGTTACATCCT
+AATAGATAATATATGTCAGTCGGGTGTGGTGGCTCACGCCTGTAATCCCAGAACTTTGGG
+AGGCCGAGGCAGGTGGATCACAAGGTCAGGAGTTCGAGACCAGCCTGGCCAATATGGTGA
+AACCTTATCTCTACTAAAAGTACAAAAATTAGCCAAGCATGGTGGCGGGTGCCTGTAGTC
+CCAGCTACCTGGGAGGCTGAGGTAGAAGAATCGCTTGAACTCGGGGGGCGGAGGTTGCAG
+TGAGCCAAGATCATGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTTTGTCTCAAA
+AAAAAAAAAAAAGATAATATATGTCAAAACTTTACCAGGAACTATGATTACAACCAACTT
+TTGATAACTATATACTCTCTGAGAAAGAATGAAATGGAGTTGGATTTTTCGTTCTCACTT
+AATTGAAGAAAGTAAAGCTTCTATAAAGTTAGGTGTTTCCTGGGTTATGAAGGACAAAAA
+CAAAAGCTAATAATGGAGCCACATAACACATTCAAACTTACTTGCAAAATATGTGGTCAC
+ACTTTGTGGAGACAGGTTCCTTGATCAACTCCAGACTAGCAGGGTAGGGGGGGAGAAAAA
+GAAAATAAATGAGGCTCAATAATTTATTTAAAAATAAAGCTATTCTTAGTGAATAAGTTC
+AACTTTGAGCTGTTATGACTGAGTCAACATAAGGCCTCAAGTTCGTTCAATATTTATTAA
+ATGTCTGCTGTGTCAGGAACTGAGAATACAGCAGAGAATACGATCCTTACCTTCAGTGAG
+CTTTCAGATATCAAAACAGAATTATATTGATCCCTTCAATACTCTATACTATCATCAGCA
+TTTAAAAGATTAGTTGATAATAGTTCGTACGAATTCATTTCCAGTGATATATTTTTCTGC
+ACTATCACTGTGGGTGCACATCTCATCTTTAAGCTCCATAAAGACAAAATTTTCTGCTTA
+TATTTCTTTTGAATTCCTTCCTAGAACTTTTTTTTGTTTACTGTAAATGCCTTTTTAACT
+TAATATGGAAAATTTCAAGTATTTCAAAATTTCAAGTAAATAAAATAATAAAATGAACTA
+TATGGACCATCACCCTGGTCCAACAACCATCAACTCATGGCCAAGCTGTTTCACCCATAT
+CCACCCCTACCCCAGATTATTTTAATTATTATTACTTTTAAGATAAGGTCACACTCTGTC
+ACCTAGGCTGGAGTGCAGTGGTGCAAACATACCTCACTGCAGCCTTGAACTCCTGGGCTC
+AAGCAATCCTCCCAGCACGGGGTTTACAGGCATGAGCCAACACACCCAAACCCAAGTGTC
+TTCTTTTTTTTGAGATGGGGTTTTGCTTTTGTAGCCCAGACTGGCATGCAATGGTGCGAT
+CTCGGCTCACTGCAACCTCTGCCTCCCAAGTTCAAGTGATTCTCCTGCCTCAGCCTCCCA
+GGTAGTTGGAACTACAGGCGTGCGCCACCACGCCCGGCTGATTTTTCGTATTTTTAGTAG
+AGTTGGGGTTTCACCATGTTGGCCGGCTGGTCTTGAACTCCTGACCTCAGGTGATCCGCC
+TGCCTTGGCCTCCCAAAGTGCTGGGATTACAGGTGTGAGCCACCATGCCCAGCCCCAAGT
+GTCTTCTGATCTATAGGTGTCTCTTACTTTTTCTCCCTTGTCATTTATTTTTAAAATTAG
+GTCATTTGACCTGTGGAGTTTCCCCCATTCTGGATTTTGCTGATTGTATAACCCTATGGT
+GAGGTTTAACTTGTTCCTCTAGCCTTATTTCCTATAAACTAGACTTACAGGCTTAATCAT
+TCAGGTTCAACTTTCTGGCAAGAACACTTTACAGATGGTACTGTGTACTCTTATTAGATC
+ACTTCAGAAGAGGCATGATGTTTGGTTTGTGATTACTTTGTAAAAACAGTGTAATAAGTA
+CTCACTAAAGGAAATTTAGAAAATGATAAGCTTAAGGCCGGGCATGGTGCCTCATGCCTG
+TAATCCTAGCACTTTGGGAGGCTGAGGTGGGTGGATCACCTGAGCTCAGGAGTTCCAGAT
+CATCCTGGACAATATGGTGAAACCCTGTCTACGCTAAAAATACAAAAATTAGCCGGGCGT
+GGTGGCGCATGCCTGTGGTCTCAGCTACTTTGGAGACTAAGGTAGAAGGATCACTTGAAT
+CCTGGAGGTGGAGGTTGCAGAGTGAGCCAATATCGTGCCACTGCACTCCAGCCTAGGTGA
+CAGAGGAAGACTCTGTCTCAAAAAAAAGAAAATAAGGCCAGACACGGGGGCTCATGCTTG
+TAATCCCAGCACTTGGGAGGCCGAGGCGGGCGGATCATGAGGTCAGGATTTCGAGACCAG
+CCTGGCCAACACAGTGAAACGCTGTCTCTACTAAAAATACCAAAACTAACTGGGCATGGT
+GGCATGCGCCTGTAATCCCAGCTACTTGGGAGGCTAAGGCAGGAGAATCGCTTGAACCGG
+GGAAGTGCACGTTGCAGTGAGCCAAGATCGCGCCACTGTACTCCAACCTGGGCGACAGAG
+CTGGACTCCATCTCAAAATAATAATAAGCTTAAAAATAAAAACTTCAGAAAATACATCAC
+CCAAGTTCCCATCCCTACCTGTCTATCCACAAAACCAAGGCATTCCTGAGATTAGTTCAT
+TTATTATACTAATATAACAAGTGTTTATTAAGTATCTACTACTATATTCAAGTACTATTC
+TAGGAGATAGAAATGTAGCAGTTTACAAAATAAAGCCTGCTCTCATAGAGCTCATATTCT
+AGTGTGGTAGACAGTTGATACGGAATTAAAGAATACATGGGAATAAGTGCATTAAAGAGA
+AAAATTAAGCAGGGTAAGGGGAAACAGGTAGTTCAATATCTATGTGGGGGTGAGATGTAC
+ATGGGGGGAGTCAGGAAAGGTTTCACTGAGGTGAGACTAGAGGATAGCTTAATAATGTAA
+AGAAACACACTATGCAACAATTAGGGGAAGAGCATTCCAAGAAAGAGGGAGCAGAGAAGG
+CAAACCCTGAGCAGGACCATGCCTGTGTATGCAGGACATCAGATAGGTCAAGGTGCTAAA
+ATGTAATAATCCAGGAGGATATTGTAGGGAAAGACTATCAGAGAGGTAGCTGGTAACTTC
+TGGTAGGAACCTATAGGCTATTTTAAATCTTTAGCTTTATTCTGGTCTTTTTAATTTTCT
+TTTTTTTTTTCAGACAGAGTCTCGTTCTGTCGCCCAGGCTGGAGTGCAGTGGCACCATCT
+CGGCTCTCTGTAACCTCCGCCTCCTGAATTCAAGTGATTCTCCTGCCTCAGCCTCCCGAG
+TAGCTGGGACTAAAGGCATGCACCACCATGCCTTGGCCTCCCAAAGTACTGGGATTACAG
+GAGTGAGCCACCATGCCAGCCATCTTTTTAATTTTTAATGTTAATTAATTTTTGTAGAGA
+CAGGATCTCACTATGATGCCCATGCTGGTCTTGAATGCCTGGCATCAAGCAATCTTCCTG
+CTTCGGCTTCCCAAAGTGCTGGGATTACAGGTGTGAGCTACTATACCCGGCCTTTAGCTT
+TCTTCTGAATGTGAACCTTTTTTTTTTTTTTTGGAGATGGAGTCTCACTCACTCTGCTGC
+TCAGGCTGGAGTGCAGTGGTGTGGTCTTGGCTCACTGCAACCTCTGCCTCTCGGATTGAA
+GTGATTCTTGTGCCTCAGCATTCCAAGTAGCTGGGACTACAGGCGCGTGCTGCCACACCC
+GGCTAATTTTTTTGTATTTTTGGTAGGGAAGGGGTTTCACCATATTGCCCAGGCTGGTCT
+TGAAGTCCTGACCTCAAGTGATCCATCTGCCTCGACCGGGATTACAGGCGTGAGCCACTA
+CACTTAGCTCTAAATGTGAATTTTTGAAACGGATTTTTTGGATAAAGTCCAGGCAAGATA
+TCAAAGAACGACTAACCTGGCAGTGTGACAAGAATGTGGTTTTTTCCTTAAATATTTAAC
+TTTTTAGAAAAGGATCACAAGGGCCAGGTGCGGTGGCTCACGCTGTAATCCCAGCATTTT
+GGGAGGCCAAGGCGGGCCAGCCTGGGTGACAGAGAATCCATCTCAAAAAAAGAAAAAAAA
+AAAAGAAAAGGATCACAAGAAAAGCTTGTGGACAGTAACCTTATTGTGAAGGGTTGTAAT
+ACAACTCTTGTAATCATGGGGTTTTTGACATAGCACAGGGCAGTGAAAAGAAAAACAATG
+AACTAAGTCAGGAGGCTGGGTTTCTACTACCAGTTGTGTATATAAGCAGAGCCACCTTGG
+GCTAACCACTCTACCTGAACCTGTTTCCTTCTCTTGCCATTCACCCTGCCAGACTCCTTG
+GGCTATTGCAAGAATAAAATTAAATGCTACTTGGGAAAATGCTTCACAACCTGAGATGAC
+TTGGGAAAAATGCTTCACAACCTGAGATAACTTGTACCAACATTGGTATTATTACTGGGA
+CCAAATGTGACTTTAAAAAGAAAAACAACCTTGACAAAGAAAACTCTGATTGGTTACTAA
+ATCCCTATTTCTGAGATAAGCTACATTTCAAAGAAATTCTCCGTAAAAGAAAAATTGGAT
+TCAGTTATCATACCAGATGGCTTTCATTCTCACCACTGACTCAATTCTGAAACAATTATA
+TTTCAGTATGGTAATTATAATCTAAACTATATAAACACACTGTAAACACAAACTTTGAAC
+AGATGAAAACTCCGATATGTAAAAAGGTAATGAATGTTGAAGGAAGACTGTGAAAAGGGA
+AAAGAAAAAAAATTAAAATGTTCCCCTTCTAGGTCCTGATGAGAGTAAATGTTTACTATA
+AAAATGATTCAAATATTTTAAACACTTTTCAAACCAGGCAATATTTTAGGCCTACTGTAT
+ATTTGCATTTTGAGCTTCCAATACGGATAAGTGACTGGAAAAAGCAGCTAGGTTTAGGTT
+GAAAAACAACAACCCACCGGGGAACACATTTTAGCAAATTCTTCTGAAAGTCAAAAATGT
+TATAGTCATAGGTAAAAAGTTACAAAGAACTACCAATTGTCAGAAATAGCTGCCAATATT
+GACTTAGAAGACAGCAGAAGGAATTTTAGTTCAAGAAACCTAAAACAGGCTGAAAACCTT
+ACCTACCCTATAGCTACCACAAATAACACTGTTTCCAGTCATGATCATTCCTGATCACAT
+ATTAAGACATAACTGCAAATTGTGCTATACTGTACTATATTAAAAGGAAGTGAAATATGA
+TCCCTATCCTAGAACTTTCCATACAAATGAATGTAAAACACCATAAAAATTAATCTTAAG
+GCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGTGGGCGGAT
+CACGAGGTCAGGAAGTGGAGACCATCCTGGCTAACACGGTGAAACCCCGTCTCTACTAAA
+AATACAAAAAATTAGCCGGGCGTGGTGGTGGACGCCTGTAGTCCCAGCTACTTGGGGGGC
+CGAGGCAGGAGAATGGCGTGAACCCGGGAGGCGGAGCTTGCAGTGAGCCGAGATGGCGCC
+ACTGCACTCCGGCCTGGGTGAAAGAGCGAGACTCCGTCTCAAAAACAAAACAAACAAAAA
+TTAATCTTAAGCCAGGCGCAGTGGCTCACGCCAGCACTTTGGAAGGCCGAGGCGGGTGGA
+TCACGAGATCAGGACTTCAAGACCAGCCTGACCAACGTGATGAAACCCTATCTCTACTAA
+AAATACAAAATTAGCCGGCCACGGTGGCGTGCGCCTATAATCCCAGCTACTCAGGAGGCT
+GAGGCAGGAGAAGCGCTTGAACTTGAACCTGGCAGGCGGAGGTTGCAGTGAGCCAAGATG
+GCGCCACTGCACTCCAGCCTGGGCGACAGAGCCAGACTCCAACCCCCCACCCCGAAAAAA
+AAAGGTCCAGGCCGGGCGCAGTGGCTCAGGACTGTAATCCCAGCACTTTGGAAGGCTGAG
+GCGGGTGGATCACAAGGTCAGGAGATCGAGACCATCTTGGCTAACATGGTGAAACCCCGT
+CTCTACTAAAAATACAAAAAATTAGCCGGGCATAGTGGTGGGCGCCTGTAGTCCCAGCTA
+CTCGGGAGGCTGAGGCAGGAGAATGGCCTGAACCCGGGAGGCGGAGCTGGCAGTGAGCCA
+AGATCGTGCCACTGCACTCCAGCCTAGGCAGCAGAGCGAGACCGTGTCTCAAAAAAACAA
+AACAAAACAAAACAAAAAGTCTGGGAGCGGTGGCTCACGCCTGTAATCCCAGCACTTTCG
+GAGGCCAAGGCAGGAGGATCACCTGAGGTCAGGAGTTCGAGACCAACCTGACCAATATGG
+AGAAACCCTGTCTCTACTAAAAATACAAAATTAGCTGGTGTGATGGCACATGCCTGCAAT
+CCCAGGTACTCCGGAGGCTGAGGCAGCAGAATTGCTTGAACCCGGGAGGTGGAGGTTGTA
+GTGAGCCGAGATTGTGCCACTGCACTCCAGCCTGGGCAACAAGAGCCAAAGTCTGTCTCA
+AAAAAAAAAAAAAAAAAAAAAAAAGAAATTAATCTTAACAGGAAACAGAAAAAAGCAATG
+AAAAGCTAGAAAACATAATAGTTGATTGAAAATAACAATTTAGCATTTTCATTCTTACAT
+CTTTAATTTTTATGTATCTGAGTTTTTAATTGATGGTTTAATTTGCCAGAATGAGAAAGA
+ACATCCTATTTTTATGACTCTCTCCCATGGAAATGAAACATAAATGTATCCAAATGCCAC
+ACTATTGAGGATTTTCCTGATCACTGATTGTCATGAGTAAGTTTTGTGCTTTTTCAAAAG
+CAGTTTTTTCCTACAATGTCATTTCCTGCTTCTCTGGCTCTGATTTTCAATAAATTGATA
+AATTGTGAATCCTGTTTTCCTCTTATTTTTGTTTAGCTATAATGTTGAAGGGCAAGGGAG
+AGGATGGTTATTTATAAATCTTGTATCGCTCTGAAAACACAACATACATTTTCCTTAATC
+TGATTAACTTGACTTCAAATATGAAAAACAACTTTCATAAAGCAGAAAAGAATTTACCCT
+TTTTTATTGTGGGTAAGAGGCAATGGTACAACTTTTCAACTTATTTTTTGAATGTTACTC
+ACTACTAACCATCACCATATTTAAAAAAATTAAAGAACTAATTTAGTTTAGTTTATTATT
+TATTTGACAAATGTTTATTGAGTGGCAACTAGGTCCCAAGTACCGTTCTAACTACTGAAC
+ATACAGATGTATGTAAACAAAACAAAAATCCCATCCTGGAGTTTACATTCTGTGGGACTA
+GAGATAAAAAATGGATACATTACATAGAATGTCAGCTAGTAATCAGTGTTATGGAGAAGC
+AGCAGGAATAGAAGATAAAGTGTGTGCTGGGGGTGTGGTAATTTTAAATAGGGGTGTCTG
+GAAATGAAAAGGTGGTATTTCAATCAAGATTTTTAGACCATGGCTGGGTGCAATGGCTCA
+GGCCTGTAATCCCAGCACCTTGAGAGGCCAAGGGAGGGTAGATCACTTGAGGTCAGGAGT
+TTGAGACCAGCATGGCCAACATAGCAAAACCCTATCTCTACAACAGAAAAATACAAGAAT
+GGCTGGACGCAGTGGCTTATGCCTGTAATCCTAGCACTTTGGGAGGCCCAGGCGGGTGGA
+TCACAAGGTCAGGAGATCAAGACTATCCTGGCTAACACGGTGAAATCCCGCCTCTACTAA
+AAAAGAAAAAAAAATACAAAAAATTAGCCGGGCGTGGTAGTGGGTGCTTGTAGTCCCAGC
+TATTCAGGAGGCTCAGGCAGAAGAATGGCATGAACCCGGGAGGCAGAGTTTGCAGTGAGC
+TGAGATCGCGCCACTGCACTCCAGCCTGGGCAACAGAGCAAGACTCCATCTCAAAAAAAG
+AAAAAAAAATACAAAAATTAGCTGGGCATGGTGGTGCACACCTATCGTCCCTGCTACTCT
+GGAGGCTGAGGTGGGAGGATTGCTTGAGCCTGACGAGGTTGAGGCTGCAGTGAGCTGTGA
+TAGCACCACTGCACTCCAGCCTCTCGACAGAGATCCTATATAAAAAAAAAACCTCTGCAT
+TTCATTGTATGTAAATAAGTATGTAATTTCATTGTATGTACAGAGCCAGTTTCAAACAAA
+GGTTCTTCCAAATACCTATCCTCTCAACGACACCGATCATCCATGTTTTTTTTTTTTTTT
+TTTTTTTTTTGAGATGGAGTTTAGCTCTGTCGCTGGAGTTCAGTGGTGCCATATTGGCTC
+ACAGCAACATCTGCCTCCTGGTTCAAGTGATTCTCCTGCCTCAGCCTCCTGAGTAGCTGG
+GATTACAGGCACATGCCACTACGCCCAGCTAATTTTTGTATTTTTAGTGGAGAGGGGGTT
+TCACCATGTTGGCCAGGATGGTCTCGATCTCCTGACCTCGTGATCCTACCACCTTGGCCT
+CCCAAAGTGCTGGGATTACAGGCATAAGCCACCGCCCTCGGCCTCATCCATGATTTTATT
+TTGCCATTTCAAGTGATGGAGCTTGTTTTAGAGCTGGAAGAAAAGCCAAAATGCCAGTTA
+ATCTAAACTAGATTCCTGCCCCAGTGCAGAACCAATCAAGACAGAGTCCCTGTCTTTCCC
+GGACCACAGGATTTGTGTTGAAAAGGAGAGGAGTGGGAGAGGCAGAGTGGATGGAGAACA
+AGGAATCATTTTCTATATTTTTAAAGTTCTTCAGTTAAGAAAATCAGCAATTACAATAGC
+CTAATCTTACTAGACATGTCTTTTCTTCCCTAGTATGTAAGGTCAATTCTGTTCATTTGC
+ATAGGAGATAATCATAGGAATCCCAAATTAATACACTCTTGTGCTGACTTACCAGATGGG
+ACACTCTAAGATTTTCTGCATAGCATTAATGACATTTTGTACTTCTTCAACGCGAAGAGC
+AGATAAATCCATTTCTTTCTGTTCCAATGAACTTTAACACATTAGAAAAACATATATATA
+TATCTTTTTAAAAGGTTTATAAAATGACAACTTCATTTTATCATTTTAAAATAAAGTAAA
+TTTAAGATTTGGAAGGTTTTAGAATAATACAAACCAAAGAACTAATGACAACGTCCTTTA
+TTTTTAAAGATTCTAGAAGTTGCTTTTTGTAATTAGACAACATAAATTCTGAATTTTTTC
+ACATATTGCTGCCAACCCCTTGGGTCTTTTCCTTTCTCCAAGAAAGAGAAAGCTACAGAG
+GAGTGACTGACCGGGTAGGTGGTGGTAGCCTTAGCTTTCTCCAATGTTTCTGGTTGTTTT
+CTTTTTCTTGCATAAAACCAAAATCAACAACGACCAAACCAACACCAATCAAGGCCTCCC
+CGCCCCTAACCTTTCCCAGTGACCTGCTCTCATCTCTGGATCCTCCTCAAGCACATCCCT
+GCCGGCAGCATCTGTTACTACTGACGCTCCTCTACTTCCCTCTTGCGCTTTCTCAATGGC
+GCAAATGGATCCAGTTCTTAAGTTCTCCCTCCCACAAAATCCTGTCTCCTCCCCTTCCCA
+GACATATTCCTGGCACCTCTTCTTCCACAAGGTCCCATCCTCTCATACATACCAGCCGGT
+GTTTTTTGTTTTGTTTTGTTTTGTTTTGTTTTGAGACAGTCTCGCTCTGTCGCCCAGGCT
+GGAGTGCAATGGCGCGATCTCGGCTCACTGCAACCTCCGCCTCCCGGGTTCTAGCGATTC
+TCCTGCCTCAGCCTCCTGAGTAGCTGGAGCGGCACCACGCCCGGCTAATTTTTGTATTTT
+TAGTAGAGACGGAGTTTCACCACGTTGGTCAGGCTGGTCTGGAACTCCTGACCTCATGAC
+CAGCCGACGTTTTTAAAGACATAGTGTCCCCCTCAAGGCATATTCCAGTTCCTATCACGA
+GGATTCCCCCACGGACACTCAGTGCCCCCTTCCTGATCCTCAGCGCTTCCCTCGCGACCT
+ACAAACTGCCCCCCTCCCCAGGGTTCACAACGCCTTACGCCTCTCAGGTTCCGCCCCTAC
+CCCCCGTCAAAGAATACCCATCTGTCAGCTTCGGAAATCCACTCTCCCACGCCAGTACCC
+CAGAGCATCACTTGGGCCCCCTGTCCCTTTCCCGGGACTCTACTACCTTTACCCAGAGCA
+GAGGGTGAAGGCCTCCTGAGCGCAGGGGCCCAGTTATCTGAGAAACCCCACAGCCTGTCC
+CCCGTCCAGGAAGTCTCAGCGAGCTCACGCCGCGCAGTCGCAGTTTTAATTTATCTGTAA
+TTCCCGCGCTTTTCCGTTGCCACGGAAACCAAGGGGCTACCGCTAAGCAGCAGCCTCTCA
+GAATACGAAATCAAGGTACAATCAGAGGATGGGAGGGACAGAAAGAGCCAAGCGTCTCTC
+GGGGCTCTGGATTGGCCACCCAGTCTGCCCCCGGATGACGTAAAAGGAAAGAGACGGAAG
+AGGAAGAATTCTACCTGAGTTTGCCATAAAGTGCCTGCCCTCTAGCCTCTACTCTTCCAG
+TTGCGGCTTATTGCATCACAGTAATTGCTGTACGAAGGTCAGAATCGCTACCTATTGTCC
+AAAGCAGTCGTAAGAAGAGGTCCCAATCC
diff --git a/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.amb b/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.amb
new file mode 100644
index 000000000..5ebcf7d62
--- /dev/null
+++ b/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.amb
@@ -0,0 +1 @@
+81689 1 0
diff --git a/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.ann b/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.ann
new file mode 100644
index 000000000..db6585070
--- /dev/null
+++ b/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.ann
@@ -0,0 +1,3 @@
+81689 1 11
+0 17:43044045-43125733 (null)
+0 81689 0
diff --git a/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.bwt b/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.bwt
new file mode 100644
index 000000000..0de2ab7a2
Binary files /dev/null and b/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.bwt differ
diff --git a/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.fai b/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.fai
new file mode 100644
index 000000000..fba445218
--- /dev/null
+++ b/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.fai
@@ -0,0 +1 @@
+17:43044045-43125733 81689 22 60 61
diff --git a/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.pac b/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.pac
new file mode 100644
index 000000000..8b8fdc407
Binary files /dev/null and b/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.pac differ
diff --git a/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.sa b/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.sa
new file mode 100644
index 000000000..d2abfba61
Binary files /dev/null and b/janis_bioinformatics/tools/test_data/hg38-brca1.fasta.sa differ
diff --git a/janis_bioinformatics/tools/test_data/small.bam b/janis_bioinformatics/tools/test_data/small.bam
new file mode 100644
index 000000000..be2dc24dd
Binary files /dev/null and b/janis_bioinformatics/tools/test_data/small.bam differ
diff --git a/janis_bioinformatics/tools/test_data/small.bam.bai b/janis_bioinformatics/tools/test_data/small.bam.bai
new file mode 100644
index 000000000..76ca4a805
Binary files /dev/null and b/janis_bioinformatics/tools/test_data/small.bam.bai differ
diff --git a/janis_bioinformatics/tools/ucsf/cnvkit/base.py b/janis_bioinformatics/tools/ucsf/cnvkit/base.py
index 636e4eb24..4aeea33fa 100644
--- a/janis_bioinformatics/tools/ucsf/cnvkit/base.py
+++ b/janis_bioinformatics/tools/ucsf/cnvkit/base.py
@@ -94,6 +94,7 @@ def outputs(self) -> List[ToolOutput]:
return []
def bind_metadata(self):
+ self.metadata.contributors = ["Michael Franklin"]
self.metadata.dateCreated = datetime(2019, 7, 3)
self.metadata.dateUpdated = datetime(2019, 7, 3)
self.metadata.documentationUrl = "https://github.com/etal/cnvkit"
diff --git a/janis_bioinformatics/tools/vardict/vardictgermline.py b/janis_bioinformatics/tools/vardict/vardictgermline.py
index 6c6e68b59..f313e56fe 100644
--- a/janis_bioinformatics/tools/vardict/vardictgermline.py
+++ b/janis_bioinformatics/tools/vardict/vardictgermline.py
@@ -1,3 +1,4 @@
+from datetime import datetime
from abc import ABC
from typing import List, Dict, Any
@@ -14,6 +15,7 @@
InputSelector,
CaptureType,
get_value_for_hints_and_ordered_resource_tuple,
+ ToolMetadata,
)
from janis_bioinformatics.data_types import BamBai, Bed, FastaFai, Vcf
@@ -495,9 +497,17 @@ def arguments(self):
),
]
- def docurl():
+ def docurl(self):
return "https://github.com/AstraZeneca-NGS/VarDict"
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Michael Franklin"],
+ dateCreated=datetime(2019, 1, 21),
+ dateUpdated=datetime(2020, 6, 4),
+ documentation="",
+ )
+
def doc(self):
return """
VarDict
diff --git a/janis_bioinformatics/tools/vardict/vardictsomatic.py b/janis_bioinformatics/tools/vardict/vardictsomatic.py
index 602a785b6..80db9354c 100644
--- a/janis_bioinformatics/tools/vardict/vardictsomatic.py
+++ b/janis_bioinformatics/tools/vardict/vardictsomatic.py
@@ -1,7 +1,8 @@
+from datetime import datetime
from abc import ABC
from typing import List, Dict, Any
-from janis_core import CpuSelector
+from janis_core import CpuSelector, ToolMetadata
from janis_core import get_value_for_hints_and_ordered_resource_tuple
from janis_core.operators.standard import JoinOperator
@@ -508,9 +509,17 @@ def arguments(self):
var2vcf_inputs = []
- def docurl():
+ def docurl(self):
return "https://github.com/AstraZeneca-NGS/VarDict"
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Michael Franklin"],
+ dateCreated=datetime(2019, 6, 12),
+ dateUpdated=datetime(2020, 7, 22),
+ documentation="",
+ )
+
def doc(self):
return """
VarDict
diff --git a/janis_bioinformatics/tools/vardict/vardictsomatic_compressed.py b/janis_bioinformatics/tools/vardict/vardictsomatic_compressed.py
index d05869f25..cd7a00de0 100644
--- a/janis_bioinformatics/tools/vardict/vardictsomatic_compressed.py
+++ b/janis_bioinformatics/tools/vardict/vardictsomatic_compressed.py
@@ -1,3 +1,4 @@
+from datetime import datetime
from abc import ABC
from typing import List, Dict, Any
@@ -13,6 +14,7 @@
String,
InputSelector,
CaptureType,
+ ToolMetadata,
)
from janis_core import get_value_for_hints_and_ordered_resource_tuple
from janis_core.operators.standard import JoinOperator
@@ -501,9 +503,17 @@ def arguments(self):
var2vcf_inputs = []
- def docurl():
+ def docurl(self):
return "https://github.com/AstraZeneca-NGS/VarDict"
+ def bind_metadata(self):
+ return ToolMetadata(
+ contributors=["Michael Franklin"],
+ dateCreated=datetime(2019, 9, 24),
+ dateUpdated=datetime(2020, 7, 22),
+ documentation="",
+ )
+
def doc(self):
return """
VarDict
diff --git a/janis_bioinformatics/tools/variantcallers/gatk/gatkgermline_variants_4_1_3.py b/janis_bioinformatics/tools/variantcallers/gatk/gatkgermline_variants_4_1_3.py
index 81c4d0f63..c71c8ad9c 100644
--- a/janis_bioinformatics/tools/variantcallers/gatk/gatkgermline_variants_4_1_3.py
+++ b/janis_bioinformatics/tools/variantcallers/gatk/gatkgermline_variants_4_1_3.py
@@ -2,7 +2,7 @@
from janis_unix.tools import UncompressArchive
from janis_bioinformatics.tools import gatk4
-from janis_bioinformatics.data_types import FastaWithDict, BamBai, VcfTabix, Bed
+from janis_bioinformatics.data_types import FastaWithDict, BamBai, VcfTabix, Bed, Vcf
from janis_bioinformatics.tools import BioinformaticsWorkflow
from janis_bioinformatics.tools.common import SplitMultiAllele
@@ -64,7 +64,9 @@ def constructor(self):
self.step("uncompressvcf", UncompressArchive(file=self.haplotype_caller.out))
self.step(
"splitnormalisevcf",
- SplitMultiAllele(vcf=self.uncompressvcf.out, reference=self.reference),
+ SplitMultiAllele(
+ vcf=self.uncompressvcf.out.as_type(Vcf), reference=self.reference
+ ),
)
self.output("variants", source=self.haplotype_caller.out)
diff --git a/janis_bioinformatics/tools/variantcallers/illuminagermline_strelka.py b/janis_bioinformatics/tools/variantcallers/illuminagermline_strelka.py
index ff8dbe37e..afa3a4879 100644
--- a/janis_bioinformatics/tools/variantcallers/illuminagermline_strelka.py
+++ b/janis_bioinformatics/tools/variantcallers/illuminagermline_strelka.py
@@ -1,4 +1,5 @@
-from janis_core import Boolean
+from datetime import datetime
+from janis_core import Boolean, WorkflowMetadata
from janis_unix.tools import UncompressArchive
from janis_bioinformatics.data_types import FastaWithDict, BamBai, BedTabix
@@ -71,6 +72,14 @@ def constructor(self):
self.output("variants", source=self.strelka.variants)
self.output("out", source=self.filterpass.out)
+ def bind_metadata(self):
+ return WorkflowMetadata(
+ contributors=["Jiaan Yu", "Michael Franklin"],
+ dateCreated=datetime(2019, 3, 28),
+ dateUpdated=datetime(2020, 7, 14),
+ documentation="",
+ )
+
if __name__ == "__main__":
diff --git a/janis_bioinformatics/tools/variantcallers/illuminasomatic_strelka.py b/janis_bioinformatics/tools/variantcallers/illuminasomatic_strelka.py
index 0677ef3a0..4583ca7c5 100644
--- a/janis_bioinformatics/tools/variantcallers/illuminasomatic_strelka.py
+++ b/janis_bioinformatics/tools/variantcallers/illuminasomatic_strelka.py
@@ -1,4 +1,5 @@
-from janis_core import Boolean
+from datetime import datetime
+from janis_core import Boolean, WorkflowMetadata
from janis_unix.tools import UncompressArchive
from janis_bioinformatics.data_types import FastaWithDict, BamBai, BedTabix
@@ -87,3 +88,11 @@ def constructor(self):
self.output("sv", source=self.manta.diploidSV)
self.output("variants", source=self.sortvcf.out)
self.output("out", source=self.filterpass.out)
+
+ def bind_metadata(self):
+ return WorkflowMetadata(
+ contributors=["Jiaan Yu", "Michael Franklin"],
+ dateCreated=datetime(2020, 6, 12),
+ dateUpdated=datetime(2020, 8, 25),
+ documentation="",
+ )
diff --git a/janis_bioinformatics/tools/variantcallers/vardictgermline_variants.py b/janis_bioinformatics/tools/variantcallers/vardictgermline_variants.py
index 72c062a50..a73a20375 100644
--- a/janis_bioinformatics/tools/variantcallers/vardictgermline_variants.py
+++ b/janis_bioinformatics/tools/variantcallers/vardictgermline_variants.py
@@ -1,4 +1,5 @@
-from janis_core import File, String, Float
+from datetime import datetime
+from janis_core import File, String, Float, WorkflowMetadata
from janis_unix.tools import UncompressArchive
from janis_bioinformatics.data_types import FastaWithDict, BamBai, Bed
@@ -77,6 +78,14 @@ def constructor(self):
self.output("variants", source=self.tabixvcf.out)
self.output("out", source=self.filterpass.out)
+ def bind_metadata(self):
+ return WorkflowMetadata(
+ contributors=["Michael Franklin", "Jiaan Yu"],
+ dateCreated=datetime(2019, 3, 28),
+ dateUpdated=datetime(2020, 7, 14),
+ documentation="",
+ )
+
if __name__ == "__main__":
v = VardictGermlineVariantCaller()
diff --git a/janis_bioinformatics/tools/variantcallers/vardictsomatic_variants.py b/janis_bioinformatics/tools/variantcallers/vardictsomatic_variants.py
index 87007665a..984144f1c 100644
--- a/janis_bioinformatics/tools/variantcallers/vardictsomatic_variants.py
+++ b/janis_bioinformatics/tools/variantcallers/vardictsomatic_variants.py
@@ -1,4 +1,5 @@
-from janis_core import File, String, Float
+from datetime import datetime
+from janis_core import File, String, Float, WorkflowMetadata
from janis_unix.tools import UncompressArchive
from janis_bioinformatics.data_types import FastaWithDict, BamBai, Bed
@@ -72,6 +73,14 @@ def constructor(self):
self.output("variants", source=self.tabixvcf.out)
self.output("out", source=self.filterpass.out)
+ def bind_metadata(self):
+ return WorkflowMetadata(
+ contributors=["Michael Franklin", "Jiaan Yu"],
+ dateCreated=datetime(2019, 6, 12),
+ dateUpdated=datetime(2020, 7, 14),
+ documentation="",
+ )
+
if __name__ == "__main__":
v = VardictSomaticVariantCaller()
diff --git a/janis_bioinformatics/transformations/__init__.py b/janis_bioinformatics/transformations/__init__.py
new file mode 100644
index 000000000..963463e41
--- /dev/null
+++ b/janis_bioinformatics/transformations/__init__.py
@@ -0,0 +1,74 @@
+from janis_unix import UncompressArchive
+
+from janis_bioinformatics.tools.common import IndexFasta
+from janis_core import JanisTransformation, JanisTransformationGraph
+
+from janis_bioinformatics.data_types import (
+ CompressedVcf,
+ VcfTabix,
+ Vcf,
+ Bam,
+ BamBai,
+ VcfIdx,
+ Fasta,
+ FastaWithIndexes,
+ BedGz,
+ Bed,
+ BedTabix,
+)
+
+from janis_bioinformatics.tools.samtools import SamToolsIndex_1_9
+from janis_bioinformatics.tools.htslib import Tabix_1_9, BGZip_1_9
+from janis_bioinformatics.tools.igvtools import IgvIndexFeature_2_5_3
+
+transformations = [
+ JanisTransformation(Bam, BamBai, SamToolsIndex_1_9(), relevant_tool_input="bam"),
+ JanisTransformation(Vcf, VcfIdx, IgvIndexFeature_2_5_3()),
+ JanisTransformation(
+ Vcf,
+ CompressedVcf,
+ BGZip_1_9(),
+ relevant_tool_input="file",
+ relevant_tool_output="out",
+ ),
+ JanisTransformation(
+ CompressedVcf,
+ VcfTabix,
+ Tabix_1_9(),
+ relevant_tool_input="inp",
+ relevant_tool_output="out",
+ ),
+ JanisTransformation(Fasta, FastaWithIndexes, IndexFasta(bwa_algorithm="bwtsa")),
+ JanisTransformation(
+ BedGz,
+ Bed,
+ UncompressArchive(),
+ relevant_tool_input="file",
+ relevant_tool_output="out",
+ ),
+ JanisTransformation(
+ Bed, BedGz, BGZip_1_9(), relevant_tool_input="file", relevant_tool_output="out",
+ ),
+ JanisTransformation(
+ BedGz,
+ BedTabix,
+ Tabix_1_9(),
+ relevant_tool_input="inp",
+ relevant_tool_output="out",
+ ),
+]
+
+if __name__ == "__main__":
+ start = Bam
+
+ graph = JanisTransformationGraph()
+ graph.add_edges(transformations)
+
+ wf = graph.build_workflow_to_translate(BamBai, BamBai)
+
+ if wf is None:
+ print("Types are already compatible")
+
+ wf.translate("wdl")
+
+# wf.get_dot_plot(show=True)
diff --git a/setup.py b/setup.py
index dbe90f781..a20d62090 100644
--- a/setup.py
+++ b/setup.py
@@ -24,12 +24,30 @@
"janis_bioinformatics." + p
for p in sorted(find_packages("./janis_bioinformatics"))
],
+ package_data={"": ["*/test_data/*"]},
+ include_package_data=True,
entry_points={
"janis.extension": ["bioinformatics=janis_bioinformatics"],
"janis.tools": ["bioinformatics=janis_bioinformatics.tools"],
"janis.types": ["bioinformatics=janis_bioinformatics.data_types"],
+ "janis.datatype_transformations": [
+ "bioinformatics=janis_bioinformatics.transformations:transformations"
+ ],
+ },
+ install_requires=["janis-pipelines.core >= 0.11.0"],
+ extras_require={
+ "tests": [
+ "nose",
+ "parameterized",
+ "janis-pipelines.unix >= 0.11.0",
+ "janis-pipelines.runner >= 0.11.0",
+ ],
+ "ci": [
+ "setuptools",
+ "wheel",
+ "twine",
+ ],
},
- install_requires=["janis-pipelines.core >= 0.10.10"],
zip_safe=False,
long_description=long_description,
long_description_content_type="text/markdown",
diff --git a/tests/__init__.py b/tests/__init__.py
index 38c95cda0..e69de29bb 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1,4 +0,0 @@
-import unittest
-import janis_bioinformatics
-
-print(janis_bioinformatics.tools)
diff --git a/tests/local_test_one_tool.py b/tests/local_test_one_tool.py
new file mode 100644
index 000000000..abbdd9619
--- /dev/null
+++ b/tests/local_test_one_tool.py
@@ -0,0 +1,62 @@
+import unittest
+import sys
+from parameterized import parameterized
+from nose.plugins.attrib import attr
+
+import janis_bioinformatics
+
+from janis_core.tool.test_suite_runner import ToolTestSuiteRunner
+from janis_core.tool import test_helpers
+
+version = None
+tool_id = None
+engine = None
+for arg in sys.argv:
+ if arg.startswith("tool="):
+ parts = arg.split("=")
+ tool_id = parts[1]
+
+ if arg.startswith("engine="):
+ parts = arg.split("=")
+ engine = parts[1]
+
+ if arg.startswith("version="):
+ parts = arg.split("=")
+ version = parts[1]
+
+if tool_id is None or engine is None or version is None:
+ print(
+ "USAGE: -a test_suite -a tool=[TOOL_ID] -a engine=[ENGINE_NAME] -a version=[TOOL_VERSION]"
+ )
+ exit(1)
+
+tool = test_helpers.get_one_tool(tool_id, [janis_bioinformatics.tools], version)
+runner = ToolTestSuiteRunner(tool)
+
+
+class TestOneTool(unittest.TestCase):
+
+ failed_cases = {}
+ succeeded_cases = set()
+
+ @parameterized.expand([[tc.name, tc] for tc in tool.tests()])
+ @attr("test_suite")
+ def test(self, name, test_case):
+ failed, succeeded, output = runner.run_one_test_case(test_case, engine)
+
+ if len(failed) > 0:
+ error_msg = "\n".join(failed)
+ self.failed_cases[name] = error_msg
+ self.fail(error_msg)
+ else:
+ self.succeeded_cases.add(name)
+
+ @attr("test_suite")
+ def test_report(self):
+ # Note: This function has to be run LASt! (these tests are run by alphabetical order
+ print(f"{tool.versioned_id()} - {engine}")
+ test_helpers.print_test_report(
+ failed=self.failed_cases,
+ succeeded=self.succeeded_cases,
+ id_column_header="Test Case",
+ )
diff --git a/tests/local_test_tools_unit_tests.py b/tests/local_test_tools_unit_tests.py
new file mode 100644
index 000000000..256d9157a
--- /dev/null
+++ b/tests/local_test_tools_unit_tests.py
@@ -0,0 +1,75 @@
+import unittest
+from parameterized import parameterized
+
+import janis_bioinformatics
+
+from janis_core.tool.test_suite_runner import ToolTestSuiteRunner
+from janis_core.tool import test_helpers
+
+
+all_engines = test_helpers.get_available_engines()
+all_tools = test_helpers.get_all_tools([janis_bioinformatics.tools])
+
+all_versioned_tools = []
+for tool_versions in all_tools:
+ for versioned_tool in tool_versions:
+ all_versioned_tools.append(versioned_tool)
+
+
+class RunAllToolsTestSuite(unittest.TestCase):
+ failed_tools = {}
+ succeeded_tools = set()
+
+ @parameterized.expand(
+ [
+ [f"{tool.versioned_id()} - {engine}", engine, tool]
+ for tool in all_versioned_tools
+ for engine in all_engines
+ ]
+ )
+ def test(self, name, engine, tool):
+ if not tool.tests():
+ error_message = "No test suite provided"
+ self.failed_tools[name] = error_message
+ self.fail(error_message)
+ else:
+ runner = ToolTestSuiteRunner(tool)
+
+ n_test_case_failed = 0
+ error_messages = []
+ for tc in tool.tests():
+ error_msg = None
+ try:
+ failed, succeeded, output = runner.run_one_test_case(tc, engine)
+
+ # the len(failed) here is the number of expected output that fails per test case
+ if len(failed) > 0:
+ error_msg = ";".join(failed)
+
+ except Exception as e:
+ error_msg = str(e)
+
+ except SystemExit as e:
+ error_msg = f"Workflow execution failed (exit code: {e.code})"
+
+ finally:
+ if error_msg is not None:
+ n_test_case_failed += 1
+ error_messages.append(f"{tc.name}: {error_msg}")
+
+ if n_test_case_failed > 0:
+ self.failed_tools[name] = f"{n_test_case_failed} test case(s) failed"
+ self.fail("\n".join(error_messages))
+ else:
+ self.succeeded_tools.add(name)
+
+ def test_report(self):
+ # Note: This function has to be run LASt! (these tests are run by alphabetical order
+ test_helpers.print_test_report(
+ failed=self.failed_tools, succeeded=self.succeeded_tools
+ )
+
+ if len(self.failed_tools) > 0:
+ raise Exception(
+ f"There were {len(self.failed_tools)} tool(s) did not pass their unit tests"
+ )
diff --git a/tests/test_tools_definitions.py b/tests/test_tools_definitions.py
new file mode 100644
index 000000000..b346a696b
--- /dev/null
+++ b/tests/test_tools_definitions.py
@@ -0,0 +1,47 @@
+import unittest
+from nose.plugins.attrib import attr
+from parameterized import parameterized
+
+import janis_bioinformatics
+from janis_core.tool.test_definitions import ToolEvaluator
+from janis_core.tool import test_helpers
+
+all_tools = test_helpers.get_all_tools([janis_bioinformatics.tools])
+
+all_versioned_tools = []
+# TODO: revert to full list
+for tool_versions in all_tools:
+ for versioned_tool in tool_versions:
+ all_versioned_tools.append(versioned_tool)
+
+
+class TestToolsDefinitions(unittest.TestCase):
+ failed = {}
+ succeeded = set()
+ skipped = set()
+
+ @parameterized.expand([[t.versioned_id(), t] for t in all_versioned_tools])
+ @attr("ci")
+ def test(self, name, tool):
+ evaluation = ToolEvaluator.evaluate(tool)
+
+ if evaluation is True:
+ self.succeeded.add(tool.versioned_id())
+ elif evaluation == ToolEvaluator.STATUS_SKIPPED:
+ self.skipped.add(tool.versioned_id())
+ else:
+ self.failed[tool.versioned_id()] = evaluation
+ raise Exception(evaluation)
+
+ @attr("ci")
+ def test_report(self):
+ # Note: This function has to be run LASt! (these tests are run by alphabetical order
+ test_helpers.print_test_report(
+ failed=self.failed, succeeded=self.succeeded, skipped=self.skipped
+ )
+
+ if len(self.failed) > 0:
+ raise Exception(
+ f"There were {len(self.failed)} tool(s) that did not contain sufficient metadata to include in the "
+ f"janis_bioinformatics repository. Please check to ensure your tool is in the list below"
+ )