diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index af6733c..00807f6 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -36,6 +36,5 @@ jobs:
       - name: Test granite
         run: |
           make configure
-          make update
           make build
           make test
diff --git a/docs/API.md b/docs/API.md
index fc5c183..0e1216b 100644
--- a/docs/API.md
+++ b/docs/API.md
@@ -187,7 +187,8 @@ The method *add_values_genotype(ID_genotype, values, sep=':')* allows to add val
 
     vnt_obj.add_values_genotype(ID_genotype, values)
 
-The method *get_genotype_value(ID_genotype, tag, sep=':')* returns value for tag from the genotype specified by corresponding ID. sep is the tags separator used in format definition and genotype(s).
+The method *get_genotype_value(ID_genotype, tag, complete_genotype=False, sep=':')* returns value for tag from the genotype specified by corresponding ID. sep is the tags separator used in format definition and genotype(s).
+If complete_genotype=True, return '.' if tag is missing. If complete_genotype=False (default) raise exception for the missing tag.
 
     tag_val <str> = vnt_obj.get_genotype_value(ID_genotype, tag)
 
@@ -207,3 +208,17 @@ The method *get_tag_value(tag, sep=';')* returns the value from tag in INFO. sep
     tag_val <str> = vnt_obj.get_tag_value(tag)
 
 *note: tag and ID are case sensitive.*
+
+### Custom error classes
+
+*MissingTag* describes a missing tag or tag value.
+
+*MissingTagDefinition* describes a missing tag definition.
+
+*TagDefinitionError* describes a format error for a tag definition.
+
+*TagFormatError* describes a format error for a tag.
+
+*MissingIdentifier* describes a missing genotype identifier in the VCF file.
+
+*VcfFormatError* describes an error in the VCF format.
diff --git a/docs/conf.py b/docs/conf.py
index 20dccd9..d33fa62 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -22,7 +22,7 @@
 author = 'Michele Berselli, Phil Grayson'
 
 # The full version, including alpha/beta/rc tags
-release = '0.2.0'
+release = '0.2.1'
 
 
 # -- General configuration ---------------------------------------------------
diff --git a/docs/filters.md b/docs/filters.md
index 8b82ed0..430a32f 100644
--- a/docs/filters.md
+++ b/docs/filters.md
@@ -103,6 +103,7 @@ blackList allows to filter-out variants from input VCF file based on positions s
                             population allele frequency
       --afthr AFTHR         threshold to filter by population allele frequency
                             (<=) [1]
+      --BEDfile BEDFILE     BED format file with positions to blacklist
 ```
 
 #### Examples
diff --git a/granite/_version.py b/granite/_version.py
index 90477e9..36509b4 100644
--- a/granite/_version.py
+++ b/granite/_version.py
@@ -1,4 +1,4 @@
 """Version information."""
 
 # The following line *must* be the last in the module, exactly as formatted:
-__version__ = "0.2.0"
+__version__ = "0.2.1"
diff --git a/granite/blackList.py b/granite/blackList.py
index d8217ba..08207e7 100644
--- a/granite/blackList.py
+++ b/granite/blackList.py
@@ -35,8 +35,10 @@ def main(args):
     # Variables
     afthr, aftag = 0., ''
     big_dict = {}
+    BED_bitarrays = {}
     is_afthr = True if args['afthr'] else False
     is_bigfile = True if args['bigfile'] else False
+    is_BEDfile = True if args['BEDfile'] else False
     is_verbose = True if args['verbose'] else False
 
     # Creating Vcf object
@@ -50,9 +52,11 @@ def main(args):
         else:
             sys.exit('\nERROR in parsing arguments: to filter by population allele frequency please specify the TAG to use\n')
         #end if
+    elif is_BEDfile:
+        pass
     else:
         if not is_bigfile:
-            sys.exit('\nERROR in parsing arguments: to blacklist specify a BIG file and/or a threshold for population allele frequency and the TAG to use\n')
+            sys.exit('\nERROR in parsing arguments: to blacklist specify at least a BIG file, a BED file, and/or a threshold for population allele frequency and the TAG to use\n')
         #end if
     #end if
 
@@ -63,6 +67,11 @@ def main(args):
     if is_bigfile: big_dict = load_big(args['bigfile'])
     #end if
 
+    # BED
+    if is_BEDfile:
+        BED_bitarrays = bed_to_bitarray(args['BEDfile'])
+    #end if
+
     # Writing header
     vcf_obj.write_header(fo)
 
@@ -102,6 +111,15 @@ def main(args):
             #end if
         #end if
 
+        if is_BEDfile:
+            try: # CHROM and POS can miss in the BED file, if that just pass
+                if BED_bitarrays[vnt_obj.CHROM][vnt_obj.POS]:
+                    continue
+                #end if
+            except Exception: pass
+            #end try
+        #end if
+
         # All good, pass and write variant
         vcf_obj.write_variant(fo, vnt_obj)
     #end for
diff --git a/granite/granite.py b/granite/granite.py
index 4d24c3d..6c6dbee 100644
--- a/granite/granite.py
+++ b/granite/granite.py
@@ -103,6 +103,7 @@ def main():
     blackList_parser.add_argument('-b', '--bigfile', help='BIG format file with positions set for blacklist', type=str, required=False)
     blackList_parser.add_argument('--aftag', help='TAG (TAG=<float>) or TAG field to be used to filter by population allele frequency', type=str, required=False)
     blackList_parser.add_argument('--afthr', help='threshold to filter by population allele frequency (<=) [1]', type=float, required=False)
+    blackList_parser.add_argument('--BEDfile', help='BED format file with positions to blacklist', type=str, required=False)
     blackList_parser.add_argument('--verbose', help='show progress status in terminal', action='store_true', required=False)
 
     # Add whiteList to subparsers
diff --git a/granite/lib/vcf_parser.py b/granite/lib/vcf_parser.py
index f16251a..f9497e9 100644
--- a/granite/lib/vcf_parser.py
+++ b/granite/lib/vcf_parser.py
@@ -21,6 +21,60 @@
 import gzip
 
 
+#################################################################
+#
+#    Custom errors
+#      -> MissingTag
+#      -> MissingTagDefinition
+#      -> TagDefinitionError
+#      -> TagFormatError
+#      -> MissingIdentifier
+#      -> VcfFormatError
+#
+#################################################################
+class MissingTag(Exception):
+    ''' custom error class,
+    describe a missing tag '''
+
+    def __init__(self, message):
+        self.message = message
+
+class MissingTagDefinition(Exception):
+    ''' custom error class,
+    describe a missing tag definition '''
+
+    def __init__(self, message):
+        self.message = message
+
+class TagDefinitionError(Exception):
+    ''' custom error class,
+    describe a format error for a tag definition '''
+
+    def __init__(self, message):
+        self.message = message
+
+class TagFormatError(Exception):
+    ''' custom error class,
+    describe a format error for a tag '''
+
+    def __init__(self, message):
+        self.message = message
+
+class MissingIdentifier(Exception):
+    ''' custom error class,
+    describe a missing genotype identifier in the VCF'''
+
+    def __init__(self, message):
+        self.message = message
+
+class VcfFormatError(Exception):
+    ''' custom error class,
+    describe a format error in the VCF '''
+
+    def __init__(self, message):
+        self.message = message
+
+
 #################################################################
 #
 #    Vcf
@@ -87,7 +141,7 @@ def get_tag_field_idx(self, tag, field, tag_type='INFO', sep='|'):
                         format = format.replace('\"', '')
                         format = format.replace('>', '')
                     except Exception:
-                        raise ValueError('\nERROR in VCF header structure, {0} tag definition has no format specification\n'
+                        raise TagDefinitionError('\nERROR in VCF header structure, {0} tag definition has no format specification\n'
                                             .format(tag))
                     #end try
                     # Search exact match
@@ -102,7 +156,7 @@ def get_tag_field_idx(self, tag, field, tag_type='INFO', sep='|'):
                     #end for
                 #end if
             #end for
-            raise ValueError('\nERROR in VCF header structure, {0} tag definition is missing\n'
+            raise MissingTagDefinition('\nERROR in VCF header structure, {0} tag definition is missing\n'
                                 .format(tag))
         #end def
 
@@ -122,7 +176,7 @@ def check_tag_definition(self, tag, tag_type='INFO', sep='|'):
                     #end if
                 #end if
             #end for
-            raise ValueError('\nERROR in VCF header structure, {0} tag definition is missing\n'
+            raise MissingTagDefinition('\nERROR in VCF header structure, {0} tag definition is missing\n'
                                 .format(tag))
         #end def
 
@@ -191,7 +245,7 @@ def remove_tag_genotype(self, tag_to_remove, sep=':'):
             #end for
             # Error if tag_to_remove not found in FORMAT
             if idx_tag_to_remove == -1:
-                raise ValueError('\nERROR in variant FORMAT field, {0} tag is missing\n'
+                raise MissingTag('\nERROR in variant FORMAT field, {0} tag is missing\n'
                             .format(tag_to_remove))
             #end if
             # Updating FORMAT
@@ -250,7 +304,7 @@ def add_values_genotype(self, ID_genotype, values, sep=':'):
             try:
                 self.GENOTYPES[ID_genotype] += sep + values
             except Exception:
-                raise ValueError('\nERROR in GENOTYPES identifiers, {0} identifier is missing in VCF\n'
+                raise MissingIdentifier('\nERROR in GENOTYPES identifiers, {0} identifier is missing in VCF\n'
                             .format(ID_genotype))
             #end try
         #end def
@@ -272,18 +326,20 @@ def get_tag_value(self, tag_to_get, sep=';'):
                     try:
                         return tag.split(tag_to_get + '=')[1]
                     except Exception: # tag field is in a wrong format
-                        raise ValueError('\nERROR in variant INFO field, {0} tag is in the wrong format\n'
+                        raise TagFormatError('\nERROR in variant INFO field, {0} tag is in the wrong format\n'
                                     .format(tag_to_get))
                     #end try
                 #end if
             #end for
 
             # tag_to_get not found
-            raise ValueError('\nERROR in variant INFO field, {0} tag is missing\n'.format(tag_to_get))
+            raise MissingTag('\nERROR in variant INFO field, {0} tag is missing\n'.format(tag_to_get))
         #end def
 
-        def get_genotype_value(self, ID_genotype, tag_to_get, sep=':'):
-            ''' get value from tag (tag_to_get) in genotype specified by corresponding ID '''
+        def get_genotype_value(self, ID_genotype, tag_to_get, complete_genotype=False, sep=':'):
+            ''' get value from tag (tag_to_get) in genotype specified by corresponding ID
+            if complete_genotype, return '.' if tag is missing
+            if not complete_genotype, raise Exception for the missing tag '''
             # Get index from FORMAT
             idx_tag_to_get = -1
             for i, tag in enumerate(self.FORMAT.split(sep)):
@@ -294,16 +350,24 @@ def get_genotype_value(self, ID_genotype, tag_to_get, sep=':'):
             #end for
             # Error if tag_to_get not found in FORMAT
             if idx_tag_to_get == -1:
-                raise ValueError('\nERROR in variant FORMAT field, {0} tag is missing\n'
+                raise MissingTag('\nERROR in variant FORMAT field, {0} tag is missing\n'
                             .format(tag_to_get))
             #end if
             # Get value from index in genotype by ID
-            try:
-                return self.GENOTYPES[ID_genotype].split(sep)[idx_tag_to_get]
-            except Exception:
-                raise ValueError('\nERROR in GENOTYPES identifiers, {0} identifier is missing in VCF\n'
+            if self.GENOTYPES.get(ID_genotype):
+                try:
+                    return self.GENOTYPES[ID_genotype].split(sep)[idx_tag_to_get]
+                except Exception:
+                    if complete_genotype: # expect dropped tags in genotype, return default '.'
+                        return '.'
+                    else: # expect full genotype, raise error if tag is missing
+                        raise MissingTag('\nERROR in variant GENOTYPE field, {0} tag is missing for {1} identifier\n'
+                                    .format(tag_to_get, ID_genotype))
+                #end try
+            else: # if genotype identifier is missing
+                raise MissingIdentifier('\nERROR in GENOTYPES identifiers, {0} identifier is missing in VCF\n'
                             .format(ID_genotype))
-            #end try
+            #end if
         #end def
 
     #end class Variant
@@ -349,7 +413,7 @@ def parse_header(self):
         if definitions and columns:
             return self.Header(definitions, columns, IDs_genotypes)
         else:
-            raise ValueError('\nERROR in VCF header structure, missing essential lines\n')
+            raise VcfFormatError('\nERROR in VCF header structure, missing essential lines\n')
         #end if
     #end def
 
@@ -362,7 +426,7 @@ def parse_variants(self): # generator
                     try:
                         yield self.Variant(line_strip, self.header.IDs_genotypes)
                     except Exception:
-                        raise ValueError('\nERROR in variant VCF structure, missing essential columns\n')
+                        raise VcfFormatError('\nERROR in variant VCF structure, missing essential columns\n')
                     #end try
                 #end if
             #end if
diff --git a/poetry.lock b/poetry.lock
index 972e3de..edb3375 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,6 +1,6 @@
 [[package]]
 name = "atomicwrites"
-version = "1.4.0"
+version = "1.4.1"
 description = "Atomic file writes."
 category = "dev"
 optional = false
@@ -8,21 +8,21 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
 
 [[package]]
 name = "attrs"
-version = "21.4.0"
+version = "22.1.0"
 description = "Classes Without Boilerplate"
 category = "dev"
 optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+python-versions = ">=3.5"
 
 [package.extras]
-dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"]
+dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"]
 docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
-tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"]
-tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"]
+tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "cloudpickle"]
+tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"]
 
 [[package]]
 name = "bitarray"
-version = "2.4.1"
+version = "2.6.0"
 description = "efficient arrays of booleans -- C extension"
 category = "main"
 optional = false
@@ -38,7 +38,7 @@ python-versions = "*"
 
 [[package]]
 name = "colorama"
-version = "0.4.4"
+version = "0.4.5"
 description = "Cross-platform colored terminal text."
 category = "dev"
 optional = false
@@ -157,8 +157,8 @@ python-versions = ">=3.6"
 importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
 
 [package.extras]
-dev = ["pre-commit", "tox"]
-testing = ["pytest", "pytest-benchmark"]
+testing = ["pytest-benchmark", "pytest"]
+dev = ["tox", "pre-commit"]
 
 [[package]]
 name = "py"
@@ -181,7 +181,7 @@ diagrams = ["jinja2", "railroad-diagrams"]
 
 [[package]]
 name = "pysam"
-version = "0.19.0"
+version = "0.20.0"
 description = "pysam"
 category = "main"
 optional = false
@@ -271,271 +271,33 @@ content-hash = "b6e8b81ee1c0d5e9e28c359042778d40ae84b8d8d4906b3c362d71075722463e
 
 [metadata.files]
 atomicwrites = [
-    {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"},
-    {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
+    {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"},
 ]
 attrs = [
-    {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"},
-    {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"},
-]
-bitarray = [
-    {file = "bitarray-2.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c986ed73054706a4520e0e40bfc0eab733d7ac888fa01b6f986ae675bd1ae01b"},
-    {file = "bitarray-2.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5e5ea88b023d1d9850a76dca7ea33ddd10e1a4dc19344928c430dae37c2f13d9"},
-    {file = "bitarray-2.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:39e47b8125244e48ee9dd01d1ee790775a887a0c803c6edf4026ed83ed8ce4b6"},
-    {file = "bitarray-2.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70342e166fbae13071320257dac3899ad7a0a8e2a697404af30fa5f59609b03f"},
-    {file = "bitarray-2.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e6abfc1969f41abd764c9cb421d59bcdd7b0761b81fc433532ad511a1730355"},
-    {file = "bitarray-2.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ce835deeba8c3341bed57f2aa02687d91cd013f90925bbb033ef6d29dfd5a301"},
-    {file = "bitarray-2.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82f9eb3c7ccf15225cab14cb745e39814b5fe512788303270707f509a64850c5"},
-    {file = "bitarray-2.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4186660099e7b7ddfb6278897d9d7d2cd223b460f1646ab3c30207d7e6412654"},
-    {file = "bitarray-2.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:99c16c176bbe709d699981dd3a94778ee5179dfff34c77458a8d29da82529553"},
-    {file = "bitarray-2.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:d8e672472109425b03ddcd2ff7eaef6a3f2a3a4fd6113db185f3bcaa0db7c246"},
-    {file = "bitarray-2.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e6b6980aa4efaf5e12d58f3728c6756b9a3895ddc3ab29c07a86cbc527b3ee91"},
-    {file = "bitarray-2.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:10479f6c795302d014677eeb56ec5be90e64f04500c38fec6b9712b5e0bc8593"},
-    {file = "bitarray-2.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:81e77a65b04114cd8f5665d0fc1a2f84f916c5cc65e9d112a21588f3b26d2180"},
-    {file = "bitarray-2.4.1-cp310-cp310-win32.whl", hash = "sha256:a09c7acc6c59e39dc12cfbe43c5e84f1482e57831df97b5433951f867baca1d1"},
-    {file = "bitarray-2.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9cfd809859e81a7fc11b7d7679b63d9f95e45289dc8ef7fecf573e0385c6b590"},
-    {file = "bitarray-2.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ebda73921e4eb8fcd295209906a82917e17e6ded438bb3cb4255e29556393d34"},
-    {file = "bitarray-2.4.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a517ce706fb1ea49c0fed083068ff9bd13c1101245952a3522213935b673deca"},
-    {file = "bitarray-2.4.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cf70d802b71e9867337b1d66b058c20b25fc260d3226683231c314864f5fe14"},
-    {file = "bitarray-2.4.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0266da3e2b69a0e83594518f2e8be0e3c710733be376460b04f4f32db9915553"},
-    {file = "bitarray-2.4.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b233f07264b608dd39a7db52c08436206bc0cb9fffabe9d1bfe0fb344f66aa3e"},
-    {file = "bitarray-2.4.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c727ece52069ec7181490027f777941db488627c53744e948646329175d55ae"},
-    {file = "bitarray-2.4.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:056d1898bc0e4069e0e2ed019d33298e6fea5777cb51c76aaf666c61a940ff3c"},
-    {file = "bitarray-2.4.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:c99925e2e4e87da227297439aae2d879644d57c87141293a163c88a7a8d6c5b4"},
-    {file = "bitarray-2.4.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:57e09bdaa3fe46a5db8f7ede58339df14bbbb04fcdc01958cdb03135c4debdfb"},
-    {file = "bitarray-2.4.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:a579c5501a2587bc228e045b020854934da5ee0745afb35c7aa1045df0719073"},
-    {file = "bitarray-2.4.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ac33b1f6647a28f05fff1996b9e0ecfeff01006afeff901515c77e75eb5d8beb"},
-    {file = "bitarray-2.4.1-cp36-cp36m-win32.whl", hash = "sha256:4d88b09eb6a0760c41a99c34d92cf0af1b4dbda90b7ed7751137c0e42618cccf"},
-    {file = "bitarray-2.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:1ff58f910aac14bcf64875a409a17d1dece3fe1d9a43b4f576d75db00d4e8560"},
-    {file = "bitarray-2.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c88d0a14aa181066f65478401e8bcd1e631652fd5b2d02c2fc74b2e4d328ed5f"},
-    {file = "bitarray-2.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3aebd4045dae28ba3ed7ace8ef8315c894de908cc86edfbcfcf9e8c1b6301f1"},
-    {file = "bitarray-2.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05b873f2070abe4f3c44f1bb1b95549629f790184cabf2435c12b1637a45d790"},
-    {file = "bitarray-2.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:efabf024517c4024e64d825b4741c01d6c6a4d45eea22cb4ecd3cae28c41e6ea"},
-    {file = "bitarray-2.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3148b4794bbc58db457c5852f99da7a4715ee77a67e1c7b4b38c860ef32af561"},
-    {file = "bitarray-2.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:655ba9ccc5a8f4c80054d8ff089b2a87628b708c74826196899a66d68d340a3e"},
-    {file = "bitarray-2.4.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e9057381af0cda0d90dc6396bf55298d0cd6af8d331a46cd71cb1bed791be5ca"},
-    {file = "bitarray-2.4.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f34c74b09d61c82668cd3483f8da00ee271887de18e9c2db3d7f50d342bdb2c3"},
-    {file = "bitarray-2.4.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:871da93c8db7cba2aed91cde9155cdac9e2b19820f1a125afa298f86c7796713"},
-    {file = "bitarray-2.4.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:0ba2a7fca0c3a8bb8da374ccb8dc93c30cf43e7e49338844a3012cf164aa851d"},
-    {file = "bitarray-2.4.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:f80dae48a6644cd10548252363089bf631b5af2a2d3eb6fa7da6c19813e92966"},
-    {file = "bitarray-2.4.1-cp37-cp37m-win32.whl", hash = "sha256:ea5b65469aca8ba5606372abac82111cbb80bfc3f7d65d1044383b3e3952e54b"},
-    {file = "bitarray-2.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:728c44ab4c833b8cd9f219e7348776c0e45e8b9b6149a0beeae8fbb196c5a7d7"},
-    {file = "bitarray-2.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6b5770d8afb3ca0b996888e97e926b497a3c00d44a89fddfcae62405c01ca48b"},
-    {file = "bitarray-2.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:77c0a681c3d7945ec86c9cff39e2751b2fbd431c06f8be55b6024b023ebd8113"},
-    {file = "bitarray-2.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:70edf29ee88301efe03fa4961a07a63a1e699c5a52bd28bee171265dcf5abca9"},
-    {file = "bitarray-2.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e366e939d6664e9852b03ea4b9f047d9f37d6894ba5dd7db8ee56e1250d7a90"},
-    {file = "bitarray-2.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c84c4dec5c3212b650403bafd6c67254ac31157485eb0dec4e83f42057b9f96d"},
-    {file = "bitarray-2.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:68e8f6241a0ddacaac7a1e6cc4d086a03775e08bd6e8993d71095d5adc5cceb6"},
-    {file = "bitarray-2.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a18aa5240b18de40613c27a847483b8cfda1c29fe1738049e6513cbef2f46fb"},
-    {file = "bitarray-2.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:913b2290ace76e5d59fb26fc98dac6101b917324d3ad249932a0721d20b1c1a4"},
-    {file = "bitarray-2.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:404ac056e6539cb2c9666b8792921c8a33b50032a0e36934be2e8692512bf930"},
-    {file = "bitarray-2.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f914aff9cfc5cde97ff5ad55acc127870a056ed9abdad0f3e301a7f59efd4be8"},
-    {file = "bitarray-2.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:92e4ced145cfab3396069f87209e60dcd48e63b1168398e3544f63b3c8b83edd"},
-    {file = "bitarray-2.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4f1b9ec29b1ace5efca695338ab66e5c1015be00360d186b83c7c855ba4686bd"},
-    {file = "bitarray-2.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aee976dbec4a47fd8027530e71d9850757f11bce735859b9a4581f61ee54ccb9"},
-    {file = "bitarray-2.4.1-cp38-cp38-win32.whl", hash = "sha256:878a8f4cb2413b28d745e4fc16d741021ad68dfabe03cb1f26a569eeafa3da3d"},
-    {file = "bitarray-2.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5ed21d59bffd8ac192d01e935e05e3376ad85a6db0b3ae9ecd57cbe8d768a903"},
-    {file = "bitarray-2.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ee347d039f10ef624845d087e66950e9d913a1f9b37e3d0c2d71dfdcd7822e16"},
-    {file = "bitarray-2.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2364b6af6d5900732dbc56f4b623ccf0cd8534c393939620edd2689ead4c5365"},
-    {file = "bitarray-2.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2d3331c2a37278f3f8c3669c1d99a6132d524490fb5c6415450af881d885510c"},
-    {file = "bitarray-2.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:408f769ea8b28a523f86ac2ccebec2b3712e3084d020467bb7db865913fcba10"},
-    {file = "bitarray-2.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ed8a77a7084bd6ff5da4a926ec6daa1968fbdf04a7fb970231d9bc219c11f8d"},
-    {file = "bitarray-2.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b98b551d01a149a3756eeeb66769b5da5dd7fc6574dbf2ad1881efd2094b3a1"},
-    {file = "bitarray-2.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72b86e634f13cd9014e3d17ea224834ef3a4bd8220e45239b11b7e0543545718"},
-    {file = "bitarray-2.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02807aaf75b2a2c268f2959f40b9afd2f943dc615883616413f2d385cbf0454f"},
-    {file = "bitarray-2.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b2ffcbe5cf97a118f36d5065043e7ecc16246e40545b31929d7582fce256064d"},
-    {file = "bitarray-2.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:eb12494f5b8a9849f0c76c1e8b6e9287096ccb19b2a4b596f5fb1adcf709c8a2"},
-    {file = "bitarray-2.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:8673229b706638ca6b1ab7e2ccee6e20736ec0caa39b4e095749429bbb57675a"},
-    {file = "bitarray-2.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e85ad843a7ebd526ab8dd3cf7bdf5f65013a42463a96946b7b30854a82f57d44"},
-    {file = "bitarray-2.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5abe2f63f49431eff708086df50132cd8a19089f22ad9fc45e2e8922aa0b61fa"},
-    {file = "bitarray-2.4.1-cp39-cp39-win32.whl", hash = "sha256:98fbb749fa4047fa2e1049aa0cde4f6020defd2b40ed8bf31dd1f2c1ef07e416"},
-    {file = "bitarray-2.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:57f52f9f5fcd086961c6055337e22d4ea5ce442fd7b8a101e25cd4a6059069d5"},
-    {file = "bitarray-2.4.1.tar.gz", hash = "sha256:faeca03f979e992cc76f7406af7eb9795cb111b8d8969c891a032bd7497c87da"},
-]
-cached-property = [
-    {file = "cached-property-1.5.2.tar.gz", hash = "sha256:9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130"},
-    {file = "cached_property-1.5.2-py2.py3-none-any.whl", hash = "sha256:df4f613cf7ad9a588cc381aaf4a512d26265ecebd5eb9e1ba12f1319eb85a6a0"},
+    {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"},
+    {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"},
 ]
+bitarray = []
+cached-property = []
 colorama = [
-    {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
-    {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
-]
-cycler = [
-    {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"},
-    {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"},
-]
-h5py = [
-    {file = "h5py-3.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1cd367f89a5441236bdbb795e9fb9a9e3424929c00b4a54254ca760437f83d69"},
-    {file = "h5py-3.1.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:fea05349f63625a8fb808e57e42bb4c76930cf5d50ac58b678c52f913a48a89b"},
-    {file = "h5py-3.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2e37352ddfcf9d77a2a47f7c8f7e125c6d20cc06c2995edeb7be222d4e152636"},
-    {file = "h5py-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e33f61d3eb862614c0f273a1f993a64dc2f093e1a3094932c50ada9d2db2170f"},
-    {file = "h5py-3.1.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:236ac8d943be30b617ab615c3d4a4bf4a438add2be87e54af3687ab721a18fac"},
-    {file = "h5py-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:02c391fdb980762a1cc03a4bcaecd03dc463994a9a63a02264830114a96e111f"},
-    {file = "h5py-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f89a3dae38843ffa49d17a31a3509a8129e9b46ece602a0138e1ed79e685c361"},
-    {file = "h5py-3.1.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:ba71f6229d2013fbb606476ecc29c6223fc16b244d35fcd8566ad9dbaf910857"},
-    {file = "h5py-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:dccb89358bc84abcd711363c3e138f9f4eccfdf866f2139a8e72308328765b2c"},
-    {file = "h5py-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cb74df83709d6d03d11e60b9480812f58da34f194beafa8c8314dbbeeedfe0a6"},
-    {file = "h5py-3.1.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:80c623be10479e81b64fa713b7ed4c0bbe9f02e8e7d2a2e5382336087b615ce4"},
-    {file = "h5py-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:1cdfd1c5449ca1329d152f0b66830e93226ebce4f5e07dd8dc16bfc2b1a49d7b"},
-    {file = "h5py-3.1.0.tar.gz", hash = "sha256:1e2516f190652beedcb8c7acfa1c6fa92d99b42331cbef5e5c7ec2d65b0fc3c2"},
-]
-importlib-metadata = [
-    {file = "importlib_metadata-4.8.3-py3-none-any.whl", hash = "sha256:65a9576a5b2d58ca44d133c42a241905cc45e34d2c06fd5ba2bafa221e5d7b5e"},
-    {file = "importlib_metadata-4.8.3.tar.gz", hash = "sha256:766abffff765960fcc18003801f7044eb6755ffae4521c8e8ce8e83b9c9b0668"},
+    {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"},
+    {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"},
 ]
+cycler = []
+h5py = []
+importlib-metadata = []
 iniconfig = [
     {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
     {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
 ]
-kiwisolver = [
-    {file = "kiwisolver-1.3.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:fd34fbbfbc40628200730bc1febe30631347103fc8d3d4fa012c21ab9c11eca9"},
-    {file = "kiwisolver-1.3.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:d3155d828dec1d43283bd24d3d3e0d9c7c350cdfcc0bd06c0ad1209c1bbc36d0"},
-    {file = "kiwisolver-1.3.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:5a7a7dbff17e66fac9142ae2ecafb719393aaee6a3768c9de2fd425c63b53e21"},
-    {file = "kiwisolver-1.3.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:f8d6f8db88049a699817fd9178782867bf22283e3813064302ac59f61d95be05"},
-    {file = "kiwisolver-1.3.1-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:5f6ccd3dd0b9739edcf407514016108e2280769c73a85b9e59aa390046dbf08b"},
-    {file = "kiwisolver-1.3.1-cp36-cp36m-win32.whl", hash = "sha256:225e2e18f271e0ed8157d7f4518ffbf99b9450fca398d561eb5c4a87d0986dd9"},
-    {file = "kiwisolver-1.3.1-cp36-cp36m-win_amd64.whl", hash = "sha256:cf8b574c7b9aa060c62116d4181f3a1a4e821b2ec5cbfe3775809474113748d4"},
-    {file = "kiwisolver-1.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:232c9e11fd7ac3a470d65cd67e4359eee155ec57e822e5220322d7b2ac84fbf0"},
-    {file = "kiwisolver-1.3.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:b38694dcdac990a743aa654037ff1188c7a9801ac3ccc548d3341014bc5ca278"},
-    {file = "kiwisolver-1.3.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ca3820eb7f7faf7f0aa88de0e54681bddcb46e485beb844fcecbcd1c8bd01689"},
-    {file = "kiwisolver-1.3.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:c8fd0f1ae9d92b42854b2979024d7597685ce4ada367172ed7c09edf2cef9cb8"},
-    {file = "kiwisolver-1.3.1-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:1e1bc12fb773a7b2ffdeb8380609f4f8064777877b2225dec3da711b421fda31"},
-    {file = "kiwisolver-1.3.1-cp37-cp37m-win32.whl", hash = "sha256:72c99e39d005b793fb7d3d4e660aed6b6281b502e8c1eaf8ee8346023c8e03bc"},
-    {file = "kiwisolver-1.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:8be8d84b7d4f2ba4ffff3665bcd0211318aa632395a1a41553250484a871d454"},
-    {file = "kiwisolver-1.3.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:24cc411232d14c8abafbd0dddb83e1a4f54d77770b53db72edcfe1d611b3bf11"},
-    {file = "kiwisolver-1.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:31dfd2ac56edc0ff9ac295193eeaea1c0c923c0355bf948fbd99ed6018010b72"},
-    {file = "kiwisolver-1.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ef6eefcf3944e75508cdfa513c06cf80bafd7d179e14c1334ebdca9ebb8c2c66"},
-    {file = "kiwisolver-1.3.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:563c649cfdef27d081c84e72a03b48ea9408c16657500c312575ae9d9f7bc1c3"},
-    {file = "kiwisolver-1.3.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:78751b33595f7f9511952e7e60ce858c6d64db2e062afb325985ddbd34b5c131"},
-    {file = "kiwisolver-1.3.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:a357fd4f15ee49b4a98b44ec23a34a95f1e00292a139d6015c11f55774ef10de"},
-    {file = "kiwisolver-1.3.1-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:5989db3b3b34b76c09253deeaf7fbc2707616f130e166996606c284395da3f18"},
-    {file = "kiwisolver-1.3.1-cp38-cp38-win32.whl", hash = "sha256:c08e95114951dc2090c4a630c2385bef681cacf12636fb0241accdc6b303fd81"},
-    {file = "kiwisolver-1.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:44a62e24d9b01ba94ae7a4a6c3fb215dc4af1dde817e7498d901e229aaf50e4e"},
-    {file = "kiwisolver-1.3.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6d9d8d9b31aa8c2d80a690693aebd8b5e2b7a45ab065bb78f1609995d2c79240"},
-    {file = "kiwisolver-1.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:50af681a36b2a1dee1d3c169ade9fdc59207d3c31e522519181e12f1b3ba7000"},
-    {file = "kiwisolver-1.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:792e69140828babe9649de583e1a03a0f2ff39918a71782c76b3c683a67c6dfd"},
-    {file = "kiwisolver-1.3.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:a53d27d0c2a0ebd07e395e56a1fbdf75ffedc4a05943daf472af163413ce9598"},
-    {file = "kiwisolver-1.3.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:834ee27348c4aefc20b479335fd422a2c69db55f7d9ab61721ac8cd83eb78882"},
-    {file = "kiwisolver-1.3.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:5c3e6455341008a054cccee8c5d24481bcfe1acdbc9add30aa95798e95c65621"},
-    {file = "kiwisolver-1.3.1-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:acef3d59d47dd85ecf909c359d0fd2c81ed33bdff70216d3956b463e12c38a54"},
-    {file = "kiwisolver-1.3.1-cp39-cp39-win32.whl", hash = "sha256:c5518d51a0735b1e6cee1fdce66359f8d2b59c3ca85dc2b0813a8aa86818a030"},
-    {file = "kiwisolver-1.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b9edd0110a77fc321ab090aaa1cfcaba1d8499850a12848b81be2222eab648f6"},
-    {file = "kiwisolver-1.3.1-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0cd53f403202159b44528498de18f9285b04482bab2a6fc3f5dd8dbb9352e30d"},
-    {file = "kiwisolver-1.3.1-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:33449715e0101e4d34f64990352bce4095c8bf13bed1b390773fc0a7295967b3"},
-    {file = "kiwisolver-1.3.1-pp36-pypy36_pp73-win32.whl", hash = "sha256:401a2e9afa8588589775fe34fc22d918ae839aaaf0c0e96441c0fdbce6d8ebe6"},
-    {file = "kiwisolver-1.3.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d6563ccd46b645e966b400bb8a95d3457ca6cf3bba1e908f9e0927901dfebeb1"},
-    {file = "kiwisolver-1.3.1.tar.gz", hash = "sha256:950a199911a8d94683a6b10321f9345d5a3a8433ec58b217ace979e18f16e248"},
-]
-matplotlib = [
-    {file = "matplotlib-3.3.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:672960dd114e342b7c610bf32fb99d14227f29919894388b41553217457ba7ef"},
-    {file = "matplotlib-3.3.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:7c155437ae4fd366e2700e2716564d1787700687443de46bcb895fe0f84b761d"},
-    {file = "matplotlib-3.3.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:a17f0a10604fac7627ec82820439e7db611722e80c408a726cd00d8c974c2fb3"},
-    {file = "matplotlib-3.3.4-cp36-cp36m-win32.whl", hash = "sha256:215e2a30a2090221a9481db58b770ce56b8ef46f13224ae33afe221b14b24dc1"},
-    {file = "matplotlib-3.3.4-cp36-cp36m-win_amd64.whl", hash = "sha256:348e6032f666ffd151b323342f9278b16b95d4a75dfacae84a11d2829a7816ae"},
-    {file = "matplotlib-3.3.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:94bdd1d55c20e764d8aea9d471d2ae7a7b2c84445e0fa463f02e20f9730783e1"},
-    {file = "matplotlib-3.3.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:a1acb72f095f1d58ecc2538ed1b8bca0b57df313b13db36ed34b8cdf1868e674"},
-    {file = "matplotlib-3.3.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:46b1a60a04e6d884f0250d5cc8dc7bd21a9a96c584a7acdaab44698a44710bab"},
-    {file = "matplotlib-3.3.4-cp37-cp37m-win32.whl", hash = "sha256:ed4a9e6dcacba56b17a0a9ac22ae2c72a35b7f0ef0693aa68574f0b2df607a89"},
-    {file = "matplotlib-3.3.4-cp37-cp37m-win_amd64.whl", hash = "sha256:c24c05f645aef776e8b8931cb81e0f1632d229b42b6d216e30836e2e145a2b40"},
-    {file = "matplotlib-3.3.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7310e353a4a35477c7f032409966920197d7df3e757c7624fd842f3eeb307d3d"},
-    {file = "matplotlib-3.3.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:451cc89cb33d6652c509fc6b588dc51c41d7246afdcc29b8624e256b7663ed1f"},
-    {file = "matplotlib-3.3.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:3d2eb9c1cc254d0ffa90bc96fde4b6005d09c2228f99dfd493a4219c1af99644"},
-    {file = "matplotlib-3.3.4-cp38-cp38-win32.whl", hash = "sha256:e15fa23d844d54e7b3b7243afd53b7567ee71c721f592deb0727ee85e668f96a"},
-    {file = "matplotlib-3.3.4-cp38-cp38-win_amd64.whl", hash = "sha256:1de0bb6cbfe460725f0e97b88daa8643bcf9571c18ba90bb8e41432aaeca91d6"},
-    {file = "matplotlib-3.3.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f44149a0ef5b4991aaef12a93b8e8d66d6412e762745fea1faa61d98524e0ba9"},
-    {file = "matplotlib-3.3.4-cp39-cp39-manylinux1_i686.whl", hash = "sha256:746a1df55749629e26af7f977ea426817ca9370ad1569436608dc48d1069b87c"},
-    {file = "matplotlib-3.3.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:5f571b92a536206f7958f7cb2d367ff6c9a1fa8229dc35020006e4cdd1ca0acd"},
-    {file = "matplotlib-3.3.4-cp39-cp39-win32.whl", hash = "sha256:9265ae0fb35e29f9b8cc86c2ab0a2e3dcddc4dd9de4b85bf26c0f63fe5c1c2ca"},
-    {file = "matplotlib-3.3.4-cp39-cp39-win_amd64.whl", hash = "sha256:9a79e5dd7bb797aa611048f5b70588b23c5be05b63eefd8a0d152ac77c4243db"},
-    {file = "matplotlib-3.3.4-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1e850163579a8936eede29fad41e202b25923a0a8d5ffd08ce50fc0a97dcdc93"},
-    {file = "matplotlib-3.3.4-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:d738acfdfb65da34c91acbdb56abed46803db39af259b7f194dc96920360dbe4"},
-    {file = "matplotlib-3.3.4-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:aa49571d8030ad0b9ac39708ee77bd2a22f87815e12bdee52ecaffece9313ed8"},
-    {file = "matplotlib-3.3.4-pp37-pypy37_pp73-manylinux2010_x86_64.whl", hash = "sha256:cf3a7e54eff792f0815dbbe9b85df2f13d739289c93d346925554f71d484be78"},
-    {file = "matplotlib-3.3.4.tar.gz", hash = "sha256:3e477db76c22929e4c6876c44f88d790aacdf3c3f8f3a90cb1975c0bf37825b0"},
-]
-numpy = [
-    {file = "numpy-1.19.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc6bd4fd593cb261332568485e20a0712883cf631f6f5e8e86a52caa8b2b50ff"},
-    {file = "numpy-1.19.5-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:aeb9ed923be74e659984e321f609b9ba54a48354bfd168d21a2b072ed1e833ea"},
-    {file = "numpy-1.19.5-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:8b5e972b43c8fc27d56550b4120fe6257fdc15f9301914380b27f74856299fea"},
-    {file = "numpy-1.19.5-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:43d4c81d5ffdff6bae58d66a3cd7f54a7acd9a0e7b18d97abb255defc09e3140"},
-    {file = "numpy-1.19.5-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:a4646724fba402aa7504cd48b4b50e783296b5e10a524c7a6da62e4a8ac9698d"},
-    {file = "numpy-1.19.5-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:2e55195bc1c6b705bfd8ad6f288b38b11b1af32f3c8289d6c50d47f950c12e76"},
-    {file = "numpy-1.19.5-cp36-cp36m-win32.whl", hash = "sha256:39b70c19ec771805081578cc936bbe95336798b7edf4732ed102e7a43ec5c07a"},
-    {file = "numpy-1.19.5-cp36-cp36m-win_amd64.whl", hash = "sha256:dbd18bcf4889b720ba13a27ec2f2aac1981bd41203b3a3b27ba7a33f88ae4827"},
-    {file = "numpy-1.19.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:603aa0706be710eea8884af807b1b3bc9fb2e49b9f4da439e76000f3b3c6ff0f"},
-    {file = "numpy-1.19.5-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:cae865b1cae1ec2663d8ea56ef6ff185bad091a5e33ebbadd98de2cfa3fa668f"},
-    {file = "numpy-1.19.5-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:36674959eed6957e61f11c912f71e78857a8d0604171dfd9ce9ad5cbf41c511c"},
-    {file = "numpy-1.19.5-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:06fab248a088e439402141ea04f0fffb203723148f6ee791e9c75b3e9e82f080"},
-    {file = "numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6149a185cece5ee78d1d196938b2a8f9d09f5a5ebfbba66969302a778d5ddd1d"},
-    {file = "numpy-1.19.5-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:50a4a0ad0111cc1b71fa32dedd05fa239f7fb5a43a40663269bb5dc7877cfd28"},
-    {file = "numpy-1.19.5-cp37-cp37m-win32.whl", hash = "sha256:d051ec1c64b85ecc69531e1137bb9751c6830772ee5c1c426dbcfe98ef5788d7"},
-    {file = "numpy-1.19.5-cp37-cp37m-win_amd64.whl", hash = "sha256:a12ff4c8ddfee61f90a1633a4c4afd3f7bcb32b11c52026c92a12e1325922d0d"},
-    {file = "numpy-1.19.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cf2402002d3d9f91c8b01e66fbb436a4ed01c6498fffed0e4c7566da1d40ee1e"},
-    {file = "numpy-1.19.5-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1ded4fce9cfaaf24e7a0ab51b7a87be9038ea1ace7f34b841fe3b6894c721d1c"},
-    {file = "numpy-1.19.5-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:012426a41bc9ab63bb158635aecccc7610e3eff5d31d1eb43bc099debc979d94"},
-    {file = "numpy-1.19.5-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:759e4095edc3c1b3ac031f34d9459fa781777a93ccc633a472a5468587a190ff"},
-    {file = "numpy-1.19.5-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:a9d17f2be3b427fbb2bce61e596cf555d6f8a56c222bd2ca148baeeb5e5c783c"},
-    {file = "numpy-1.19.5-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:99abf4f353c3d1a0c7a5f27699482c987cf663b1eac20db59b8c7b061eabd7fc"},
-    {file = "numpy-1.19.5-cp38-cp38-win32.whl", hash = "sha256:384ec0463d1c2671170901994aeb6dce126de0a95ccc3976c43b0038a37329c2"},
-    {file = "numpy-1.19.5-cp38-cp38-win_amd64.whl", hash = "sha256:811daee36a58dc79cf3d8bdd4a490e4277d0e4b7d103a001a4e73ddb48e7e6aa"},
-    {file = "numpy-1.19.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c843b3f50d1ab7361ca4f0b3639bf691569493a56808a0b0c54a051d260b7dbd"},
-    {file = "numpy-1.19.5-cp39-cp39-manylinux1_i686.whl", hash = "sha256:d6631f2e867676b13026e2846180e2c13c1e11289d67da08d71cacb2cd93d4aa"},
-    {file = "numpy-1.19.5-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7fb43004bce0ca31d8f13a6eb5e943fa73371381e53f7074ed21a4cb786c32f8"},
-    {file = "numpy-1.19.5-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:2ea52bd92ab9f768cc64a4c3ef8f4b2580a17af0a5436f6126b08efbd1838371"},
-    {file = "numpy-1.19.5-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:400580cbd3cff6ffa6293df2278c75aef2d58d8d93d3c5614cd67981dae68ceb"},
-    {file = "numpy-1.19.5-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:df609c82f18c5b9f6cb97271f03315ff0dbe481a2a02e56aeb1b1a985ce38e60"},
-    {file = "numpy-1.19.5-cp39-cp39-win32.whl", hash = "sha256:ab83f24d5c52d60dbc8cd0528759532736b56db58adaa7b5f1f76ad551416a1e"},
-    {file = "numpy-1.19.5-cp39-cp39-win_amd64.whl", hash = "sha256:0eef32ca3132a48e43f6a0f5a82cb508f22ce5a3d6f67a8329c81c8e226d3f6e"},
-    {file = "numpy-1.19.5-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:a0d53e51a6cb6f0d9082decb7a4cb6dfb33055308c4c44f53103c073f649af73"},
-    {file = "numpy-1.19.5.zip", hash = "sha256:a76f502430dd98d7546e1ea2250a7360c065a5fdea52b2dffe8ae7180909b6f4"},
-]
+kiwisolver = []
+matplotlib = []
+numpy = []
 packaging = [
     {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
     {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
 ]
-pillow = [
-    {file = "Pillow-8.4.0-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:81f8d5c81e483a9442d72d182e1fb6dcb9723f289a57e8030811bac9ea3fef8d"},
-    {file = "Pillow-8.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3f97cfb1e5a392d75dd8b9fd274d205404729923840ca94ca45a0af57e13dbe6"},
-    {file = "Pillow-8.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb9fc393f3c61f9054e1ed26e6fe912c7321af2f41ff49d3f83d05bacf22cc78"},
-    {file = "Pillow-8.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d82cdb63100ef5eedb8391732375e6d05993b765f72cb34311fab92103314649"},
-    {file = "Pillow-8.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62cc1afda735a8d109007164714e73771b499768b9bb5afcbbee9d0ff374b43f"},
-    {file = "Pillow-8.4.0-cp310-cp310-win32.whl", hash = "sha256:e3dacecfbeec9a33e932f00c6cd7996e62f53ad46fbe677577394aaa90ee419a"},
-    {file = "Pillow-8.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:620582db2a85b2df5f8a82ddeb52116560d7e5e6b055095f04ad828d1b0baa39"},
-    {file = "Pillow-8.4.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:1bc723b434fbc4ab50bb68e11e93ce5fb69866ad621e3c2c9bdb0cd70e345f55"},
-    {file = "Pillow-8.4.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72cbcfd54df6caf85cc35264c77ede902452d6df41166010262374155947460c"},
-    {file = "Pillow-8.4.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70ad9e5c6cb9b8487280a02c0ad8a51581dcbbe8484ce058477692a27c151c0a"},
-    {file = "Pillow-8.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25a49dc2e2f74e65efaa32b153527fc5ac98508d502fa46e74fa4fd678ed6645"},
-    {file = "Pillow-8.4.0-cp36-cp36m-win32.whl", hash = "sha256:93ce9e955cc95959df98505e4608ad98281fff037350d8c2671c9aa86bcf10a9"},
-    {file = "Pillow-8.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2e4440b8f00f504ee4b53fe30f4e381aae30b0568193be305256b1462216feff"},
-    {file = "Pillow-8.4.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:8c803ac3c28bbc53763e6825746f05cc407b20e4a69d0122e526a582e3b5e153"},
-    {file = "Pillow-8.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8a17b5d948f4ceeceb66384727dde11b240736fddeda54ca740b9b8b1556b29"},
-    {file = "Pillow-8.4.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1394a6ad5abc838c5cd8a92c5a07535648cdf6d09e8e2d6df916dfa9ea86ead8"},
-    {file = "Pillow-8.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:792e5c12376594bfcb986ebf3855aa4b7c225754e9a9521298e460e92fb4a488"},
-    {file = "Pillow-8.4.0-cp37-cp37m-win32.whl", hash = "sha256:d99ec152570e4196772e7a8e4ba5320d2d27bf22fdf11743dd882936ed64305b"},
-    {file = "Pillow-8.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:7b7017b61bbcdd7f6363aeceb881e23c46583739cb69a3ab39cb384f6ec82e5b"},
-    {file = "Pillow-8.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:d89363f02658e253dbd171f7c3716a5d340a24ee82d38aab9183f7fdf0cdca49"},
-    {file = "Pillow-8.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0a0956fdc5defc34462bb1c765ee88d933239f9a94bc37d132004775241a7585"},
-    {file = "Pillow-8.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b7bb9de00197fb4261825c15551adf7605cf14a80badf1761d61e59da347779"},
-    {file = "Pillow-8.4.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72b9e656e340447f827885b8d7a15fc8c4e68d410dc2297ef6787eec0f0ea409"},
-    {file = "Pillow-8.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5a4532a12314149d8b4e4ad8ff09dde7427731fcfa5917ff16d0291f13609df"},
-    {file = "Pillow-8.4.0-cp38-cp38-win32.whl", hash = "sha256:82aafa8d5eb68c8463b6e9baeb4f19043bb31fefc03eb7b216b51e6a9981ae09"},
-    {file = "Pillow-8.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:066f3999cb3b070a95c3652712cffa1a748cd02d60ad7b4e485c3748a04d9d76"},
-    {file = "Pillow-8.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:5503c86916d27c2e101b7f71c2ae2cddba01a2cf55b8395b0255fd33fa4d1f1a"},
-    {file = "Pillow-8.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4acc0985ddf39d1bc969a9220b51d94ed51695d455c228d8ac29fcdb25810e6e"},
-    {file = "Pillow-8.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b052a619a8bfcf26bd8b3f48f45283f9e977890263e4571f2393ed8898d331b"},
-    {file = "Pillow-8.4.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:493cb4e415f44cd601fcec11c99836f707bb714ab03f5ed46ac25713baf0ff20"},
-    {file = "Pillow-8.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8831cb7332eda5dc89b21a7bce7ef6ad305548820595033a4b03cf3091235ed"},
-    {file = "Pillow-8.4.0-cp39-cp39-win32.whl", hash = "sha256:5e9ac5f66616b87d4da618a20ab0a38324dbe88d8a39b55be8964eb520021e02"},
-    {file = "Pillow-8.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:3eb1ce5f65908556c2d8685a8f0a6e989d887ec4057326f6c22b24e8a172c66b"},
-    {file = "Pillow-8.4.0-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ddc4d832a0f0b4c52fff973a0d44b6c99839a9d016fe4e6a1cb8f3eea96479c2"},
-    {file = "Pillow-8.4.0-pp36-pypy36_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a3e5ddc44c14042f0844b8cf7d2cd455f6cc80fd7f5eefbe657292cf601d9ad"},
-    {file = "Pillow-8.4.0-pp36-pypy36_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70e94281588ef053ae8998039610dbd71bc509e4acbc77ab59d7d2937b10698"},
-    {file = "Pillow-8.4.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:3862b7256046fcd950618ed22d1d60b842e3a40a48236a5498746f21189afbbc"},
-    {file = "Pillow-8.4.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4901622493f88b1a29bd30ec1a2f683782e57c3c16a2dbc7f2595ba01f639df"},
-    {file = "Pillow-8.4.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84c471a734240653a0ec91dec0996696eea227eafe72a33bd06c92697728046b"},
-    {file = "Pillow-8.4.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:244cf3b97802c34c41905d22810846802a3329ddcb93ccc432870243211c79fc"},
-    {file = "Pillow-8.4.0.tar.gz", hash = "sha256:b8e2f83c56e141920c39464b852de3719dfbfb6e3c99a2d8da0edf4fb33176ed"},
-]
+pillow = []
 pluggy = [
     {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
     {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
@@ -544,40 +306,10 @@ py = [
     {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
     {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
 ]
-pyparsing = [
-    {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"},
-    {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"},
-]
-pysam = [
-    {file = "pysam-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:44de1a3af7c7eb5f404d6337f0c9c4ee88c34c2d2fee1a7896ccd8e7d2aa475a"},
-    {file = "pysam-0.19.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0ceb07c6253598ec70fef6ac0c0f7ab0d299562c1a91e737adb07239afba22d6"},
-    {file = "pysam-0.19.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2057f3b8cc20562fd010e7971e83ab78978f17975563a711c94bca583ce8a2d3"},
-    {file = "pysam-0.19.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a1a9ee6cd6dfa50973dcb51cd2245ea7d4d64d4e962d60e5e1a088f7b790e3e"},
-    {file = "pysam-0.19.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b831170ff810bfd1242dbce4ddf8e693e95e39a4332d5903d416233d3d1be50a"},
-    {file = "pysam-0.19.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fa4a5d334986d0696522246820f295cbf6c18dc1b78798f800a2d57d56207789"},
-    {file = "pysam-0.19.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ab58d7d9b140e2e8a4918fc00661aa901ba461d9bccd4b499102b0828f2d897e"},
-    {file = "pysam-0.19.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1d964c29fedf55d2a5d095227d19d915c2e0e5e42b1e0bdf7fab30cd1d2a850"},
-    {file = "pysam-0.19.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8c78f9b84f7fe69530eaccf5b7f08636b3419f0017b5050aa7013f1c59d3d654"},
-    {file = "pysam-0.19.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ada92b376717ac4c9c9924a096af9186035115d29a113eaa997d1c020ce421b9"},
-    {file = "pysam-0.19.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:80b8f5b929c7f660b6e1497790a13c61f386b310a31ca54ad6ba110674d11c55"},
-    {file = "pysam-0.19.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30017bed8d002d41f83fa7e10569525c811a8e3860d73a880ee653ef29fd4fbc"},
-    {file = "pysam-0.19.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5e2e465522ba2c34cb96c013a28f9c9db303f8ab1350b4c11cca73677f1e9594"},
-    {file = "pysam-0.19.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2103b4b6d9b0cc0b4aaccf64e87a92bfdabb7dc92810cf84be35ffe78fafa002"},
-    {file = "pysam-0.19.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eaf342b9c71ed83a63237df2000e3bc1f0236165d48fd7240c4c78b66f28d63b"},
-    {file = "pysam-0.19.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc0021b154206edfbaa13515cb67523c76c576b7a670e72a793f2da4f03139f4"},
-    {file = "pysam-0.19.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3101e0fcd2f6accbfa72a554a71baf83f1c096bb0f9045059b3ead35901ce128"},
-    {file = "pysam-0.19.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5118dcabac574638df43739941f0ee20cc4e9197aee4a8f10f195542a13f18e3"},
-    {file = "pysam-0.19.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4fe1f1fae0e559d3412625dc7d4d08b477e80211b3fe5b267ba341a84f78b8be"},
-    {file = "pysam-0.19.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2911e3760dd2b709c686f075146787b8bda35629093352c28a7e52ac00ddaffc"},
-    {file = "pysam-0.19.0.tar.gz", hash = "sha256:dcc052566f9509fd93b2a2664f094a13f016fd60cdd189e05fb4eafa0c89505b"},
-]
-pytabix = [
-    {file = "pytabix-0.1.tar.gz", hash = "sha256:0774f1687ebd41811fb07a0e50951b6be72d7cc7e22ed2b18972eaf7482eb7d1"},
-]
-pytest = [
-    {file = "pytest-7.0.1-py3-none-any.whl", hash = "sha256:9ce3ff477af913ecf6321fe337b93a2c0dcf2a0a1439c43f5452112c1e4280db"},
-    {file = "pytest-7.0.1.tar.gz", hash = "sha256:e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171"},
-]
+pyparsing = []
+pysam = []
+pytabix = []
+pytest = []
 python-dateutil = [
     {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
     {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
@@ -586,15 +318,6 @@ six = [
     {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
     {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
 ]
-tomli = [
-    {file = "tomli-1.2.3-py3-none-any.whl", hash = "sha256:e3069e4be3ead9668e21cb9b074cd948f7b3113fd9c8bba083f48247aab8b11c"},
-    {file = "tomli-1.2.3.tar.gz", hash = "sha256:05b6166bff487dc068d322585c7ea4ef78deed501cc124060e0f238e89a9231f"},
-]
-typing-extensions = [
-    {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"},
-    {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"},
-]
-zipp = [
-    {file = "zipp-3.6.0-py3-none-any.whl", hash = "sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc"},
-    {file = "zipp-3.6.0.tar.gz", hash = "sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832"},
-]
+tomli = []
+typing-extensions = []
+zipp = []
diff --git a/pyproject.toml b/pyproject.toml
index b6b61b2..51943af 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "granite-suite"
-version = "0.2.0"
+version = "0.2.1"
 description = "granite is a collection of software to call, filter and work with genomic variants."
 authors = ["Michele Berselli <berselli.michele@gmail.com>", "Phil Grayson"]
 readme = "README.md"
diff --git a/tests/files/input_BED_blacklist.bed b/tests/files/input_BED_blacklist.bed
new file mode 100644
index 0000000..6ea2e13
--- /dev/null
+++ b/tests/files/input_BED_blacklist.bed
@@ -0,0 +1,5 @@
+track name=pairedReads description="Clone Paired Reads" useScore=1
+1	24152100	24152321
+1	35849464	35849466
+1	20951585	20953585
+3	258099	259199
diff --git a/tests/files/input_blackList_BED.out b/tests/files/input_blackList_BED.out
new file mode 100644
index 0000000..0b96528
--- /dev/null
+++ b/tests/files/input_blackList_BED.out
@@ -0,0 +1,55 @@
+##fileformat=VCFv4.2
+##ALT=<ID=NON_REF,Description="Represents any possible alternative allele at this location">
+##FILTER=<ID=LowQual,Description="Low quality">
+##FORMAT=<ID=AD,Number=R,Type=Integer,Description="Allelic depths for the ref and alt alleles in the order listed">
+##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Approximate read depth (reads with MQ=255 or with bad mates are filtered)">
+##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">
+##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
+##FORMAT=<ID=MIN_DP,Number=1,Type=Integer,Description="Minimum DP observed within the GVCF block">
+##FORMAT=<ID=PGT,Number=1,Type=String,Description="Physical phasing haplotype information, describing how the alternate alleles are phased in relation to one another">
+##FORMAT=<ID=PID,Number=1,Type=String,Description="Physical phasing ID information, where each unique ID within a given sample (but not across samples) connects records within a phasing group">
+##FORMAT=<ID=PL,Number=G,Type=Integer,Description="Normalized, Phred-scaled likelihoods for genotypes as defined in the VCF specification">
+##FORMAT=<ID=PS,Number=1,Type=Integer,Description="Phasing set (typically the position of the first variant in the set)">
+##FORMAT=<ID=RGQ,Number=1,Type=Integer,Description="Unconditional reference genotype confidence, encoded as a phred quality -10*log10 p(genotype call is wrong)">
+##FORMAT=<ID=SB,Number=4,Type=Integer,Description="Per-sample component statistics which comprise the Fisher's Exact Test to detect strand bias.">
+##GATKCommandLine=<ID=CombineGVCFs,CommandLine="CombineGVCFs  --output /home/mk446/bio/pipeline/JC50/GENO/1_9874305.comb.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_HG002.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_HG003.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_HG004.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-003.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-011.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-017.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-019.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-024.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-026.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-028.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-033.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-035.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-036.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-052.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-066.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-070.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-088.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-092.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-094.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-106.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-116.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-119.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-120.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-125.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-132.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-133.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-134.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-137.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-141.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-147.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-164.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-165.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-170.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-171.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-172.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-173.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-177.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-181.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-190.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-191.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-193.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-195.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-196.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-197.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-204.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-207.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-208.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-211.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-213.gvcf.gz --variant /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_PSC-01-223.gvcf.gz --reference /home/mk446/BiO/Install/GATK-bundle/2.8/b37/human_g1k_v37_decoy.fasta  --convert-to-base-pair-resolution false --break-bands-at-multiples-of 0 --input-is-somatic false --drop-somatic-filtering-annotations false --ignore-variants-starting-outside-interval false --interval-set-rule UNION --interval-padding 0 --interval-exclusion-padding 0 --interval-merging-rule ALL --read-validation-stringency SILENT --seconds-between-progress-updates 10.0 --disable-sequence-dictionary-validation false --create-output-bam-index true --create-output-bam-md5 false --create-output-variant-index true --create-output-variant-md5 false --lenient false --add-output-sam-program-record true --add-output-vcf-command-line true --cloud-prefetch-buffer 40 --cloud-index-prefetch-buffer -1 --disable-bam-index-caching false --sites-only-vcf-output false --help false --version false --showHidden false --verbosity INFO --QUIET false --use-jdk-deflater false --use-jdk-inflater false --gcs-max-retries 20 --gcs-project-for-requester-pays  --disable-tool-default-read-filters false --disable-tool-default-annotations false --enable-all-annotations false",Version="4.1.2.0",Date="November 18, 2019 11:26:58 AM EST">
+##GATKCommandLine=<ID=GenotypeGVCFs,CommandLine="GenotypeGVCFs  --output /home/mk446/bio/pipeline/JC50/GENO/1_9874305.geno.vcf.gz --standard-min-confidence-threshold-for-calling 30.0 --dbsnp /home/mk446/BiO/Install/GATK-bundle/dbsnp_147_b37_common_all_20160601.vcf --variant /home/mk446/bio/pipeline/JC50/GENO/1_9874305.comb.gvcf.gz --reference /home/mk446/BiO/Install/GATK-bundle/2.8/b37/human_g1k_v37_decoy.fasta --verbosity INFO  --include-non-variant-sites false --merge-input-intervals false --input-is-somatic false --tumor-lod-to-emit 3.5 --allele-fraction-error 0.001 --keep-combined-raw-annotations false --use-new-qual-calculator true --use-old-qual-calculator false --annotate-with-num-discovered-alleles false --heterozygosity 0.001 --indel-heterozygosity 1.25E-4 --heterozygosity-stdev 0.01 --max-alternate-alleles 6 --max-genotype-count 1024 --sample-ploidy 2 --num-reference-samples-if-no-call 0 --only-output-calls-starting-in-intervals false --interval-set-rule UNION --interval-padding 0 --interval-exclusion-padding 0 --interval-merging-rule ALL --read-validation-stringency SILENT --seconds-between-progress-updates 10.0 --disable-sequence-dictionary-validation false --create-output-bam-index true --create-output-bam-md5 false --create-output-variant-index true --create-output-variant-md5 false --lenient false --add-output-sam-program-record true --add-output-vcf-command-line true --cloud-prefetch-buffer 40 --cloud-index-prefetch-buffer -1 --disable-bam-index-caching false --sites-only-vcf-output false --help false --version false --showHidden false --QUIET false --use-jdk-deflater false --use-jdk-inflater false --gcs-max-retries 20 --gcs-project-for-requester-pays  --disable-tool-default-read-filters false --disable-tool-default-annotations false --enable-all-annotations false",Version="4.1.2.0",Date="November 18, 2019 11:27:09 AM EST">
+##GATKCommandLine=<ID=HaplotypeCaller,CommandLine="HaplotypeCaller  --dbsnp /home/mk446/BiO/Install/GATK-bundle/dbsnp_147_b37_common_all_20160601.vcf --emit-ref-confidence GVCF --output /home/mk446/bio/pipeline/JC50/GVCF/1_9874305_HG002.gvcf.gz --intervals 1:9874205-9874405 --input /home/mk446/BiO/Data/AshkenazimTrio/b37/HG002.hs37d5.60x/BAM/HG002.hs37d5.60x.1.addrg.bam --reference /home/mk446/BiO/Install/GATK-bundle/2.8/b37/human_g1k_v37_decoy.fasta --verbosity INFO  --use-new-qual-calculator true --use-old-qual-calculator false --annotate-with-num-discovered-alleles false --heterozygosity 0.001 --indel-heterozygosity 1.25E-4 --heterozygosity-stdev 0.01 --standard-min-confidence-threshold-for-calling 30.0 --max-alternate-alleles 6 --max-genotype-count 1024 --sample-ploidy 2 --num-reference-samples-if-no-call 0 --genotyping-mode DISCOVERY --genotype-filtered-alleles false --contamination-fraction-to-filter 0.0 --output-mode EMIT_VARIANTS_ONLY --all-site-pls false --gvcf-gq-bands 1 --gvcf-gq-bands 2 --gvcf-gq-bands 3 --gvcf-gq-bands 4 --gvcf-gq-bands 5 --gvcf-gq-bands 6 --gvcf-gq-bands 7 --gvcf-gq-bands 8 --gvcf-gq-bands 9 --gvcf-gq-bands 10 --gvcf-gq-bands 11 --gvcf-gq-bands 12 --gvcf-gq-bands 13 --gvcf-gq-bands 14 --gvcf-gq-bands 15 --gvcf-gq-bands 16 --gvcf-gq-bands 17 --gvcf-gq-bands 18 --gvcf-gq-bands 19 --gvcf-gq-bands 20 --gvcf-gq-bands 21 --gvcf-gq-bands 22 --gvcf-gq-bands 23 --gvcf-gq-bands 24 --gvcf-gq-bands 25 --gvcf-gq-bands 26 --gvcf-gq-bands 27 --gvcf-gq-bands 28 --gvcf-gq-bands 29 --gvcf-gq-bands 30 --gvcf-gq-bands 31 --gvcf-gq-bands 32 --gvcf-gq-bands 33 --gvcf-gq-bands 34 --gvcf-gq-bands 35 --gvcf-gq-bands 36 --gvcf-gq-bands 37 --gvcf-gq-bands 38 --gvcf-gq-bands 39 --gvcf-gq-bands 40 --gvcf-gq-bands 41 --gvcf-gq-bands 42 --gvcf-gq-bands 43 --gvcf-gq-bands 44 --gvcf-gq-bands 45 --gvcf-gq-bands 46 --gvcf-gq-bands 47 --gvcf-gq-bands 48 --gvcf-gq-bands 49 --gvcf-gq-bands 50 --gvcf-gq-bands 51 --gvcf-gq-bands 52 --gvcf-gq-bands 53 --gvcf-gq-bands 54 --gvcf-gq-bands 55 --gvcf-gq-bands 56 --gvcf-gq-bands 57 --gvcf-gq-bands 58 --gvcf-gq-bands 59 --gvcf-gq-bands 60 --gvcf-gq-bands 70 --gvcf-gq-bands 80 --gvcf-gq-bands 90 --gvcf-gq-bands 99 --indel-size-to-eliminate-in-ref-model 10 --use-alleles-trigger false --disable-optimizations false --just-determine-active-regions false --dont-genotype false --do-not-run-physical-phasing false --use-filtered-reads-for-annotations false --correct-overlapping-quality false --adaptive-pruning false --do-not-recover-dangling-branches false --recover-dangling-heads false --consensus false --dont-trim-active-regions false --max-disc-ar-extension 25 --max-gga-ar-extension 300 --padding-around-indels 150 --padding-around-snps 20 --kmer-size 10 --kmer-size 25 --dont-increase-kmer-sizes-for-cycles false --allow-non-unique-kmers-in-ref false --num-pruning-samples 1 --min-dangling-branch-length 4 --recover-all-dangling-branches false --max-num-haplotypes-in-population 128 --min-pruning 2 --adaptive-pruning-initial-error-rate 0.001 --pruning-lod-threshold 2.302585092994046 --max-unpruned-variants 100 --debug-assembly false --debug-graph-transformations false --capture-assembly-failure-bam false --error-correct-reads false --kmer-length-for-read-error-correction 25 --min-observations-for-kmer-to-be-solid 20 --likelihood-calculation-engine PairHMM --base-quality-score-threshold 18 --pair-hmm-gap-continuation-penalty 10 --pair-hmm-implementation FASTEST_AVAILABLE --pcr-indel-model CONSERVATIVE --phred-scaled-global-read-mismapping-rate 45 --native-pair-hmm-threads 4 --native-pair-hmm-use-double-precision false --bam-writer-type CALLED_HAPLOTYPES --dont-use-soft-clipped-bases false --min-base-quality-score 10 --smith-waterman JAVA --max-mnp-distance 0 --min-assembly-region-size 50 --max-assembly-region-size 300 --assembly-region-padding 100 --max-reads-per-alignment-start 50 --active-probability-threshold 0.002 --max-prob-propagation-distance 50 --force-active false --interval-set-rule UNION --interval-padding 0 --interval-exclusion-padding 0 --interval-merging-rule ALL --read-validation-stringency SILENT --seconds-between-progress-updates 10.0 --disable-sequence-dictionary-validation false --create-output-bam-index true --create-output-bam-md5 false --create-output-variant-index true --create-output-variant-md5 false --lenient false --add-output-sam-program-record true --add-output-vcf-command-line true --cloud-prefetch-buffer 40 --cloud-index-prefetch-buffer -1 --disable-bam-index-caching false --sites-only-vcf-output false --help false --version false --showHidden false --QUIET false --use-jdk-deflater false --use-jdk-inflater false --gcs-max-retries 20 --gcs-project-for-requester-pays  --disable-tool-default-read-filters false --minimum-mapping-quality 20 --disable-tool-default-annotations false --enable-all-annotations false",Version="4.1.2.0",Date="November 18, 2019 11:18:23 AM EST">
+##INFO=<ID=AC,Number=A,Type=Integer,Description="Allele count in genotypes, for each ALT allele, in the same order as listed">
+##INFO=<ID=AF,Number=A,Type=Float,Description="Allele Frequency, for each ALT allele, in the same order as listed">
+##INFO=<ID=AN,Number=1,Type=Integer,Description="Total number of alleles in called genotypes">
+##INFO=<ID=BaseQRankSum,Number=1,Type=Float,Description="Z-score from Wilcoxon rank sum test of Alt Vs. Ref base qualities">
+##INFO=<ID=DB,Number=0,Type=Flag,Description="dbSNP Membership">
+##INFO=<ID=DP,Number=1,Type=Integer,Description="Approximate read depth; some reads may have been filtered">
+##INFO=<ID=DS,Number=0,Type=Flag,Description="Were any of the samples downsampled?">
+##INFO=<ID=END,Number=1,Type=Integer,Description="Stop position of the interval">
+##INFO=<ID=ExcessHet,Number=1,Type=Float,Description="Phred-scaled p-value for exact test of excess heterozygosity">
+##INFO=<ID=FS,Number=1,Type=Float,Description="Phred-scaled p-value using Fisher's exact test to detect strand bias">
+##INFO=<ID=InbreedingCoeff,Number=1,Type=Float,Description="Inbreeding coefficient as estimated from the genotype likelihoods per-sample when compared against the Hardy-Weinberg expectation">
+##INFO=<ID=MLEAC,Number=A,Type=Integer,Description="Maximum likelihood expectation (MLE) for the allele counts (not necessarily the same as the AC), for each ALT allele, in the same order as listed">
+##INFO=<ID=MLEAF,Number=A,Type=Float,Description="Maximum likelihood expectation (MLE) for the allele frequency (not necessarily the same as the AF), for each ALT allele, in the same order as listed">
+##INFO=<ID=MQ,Number=1,Type=Float,Description="RMS Mapping Quality">
+##INFO=<ID=MQRankSum,Number=1,Type=Float,Description="Z-score From Wilcoxon rank sum test of Alt vs. Ref read mapping qualities">
+##INFO=<ID=QD,Number=1,Type=Float,Description="Variant Confidence/Quality by Depth">
+##INFO=<ID=RAW_MQandDP,Number=2,Type=Integer,Description="Raw data (sum of squared MQ and total depth) for improved RMS Mapping Quality calculation. Incompatible with deprecated RAW_MQ formulation.">
+##INFO=<ID=ReadPosRankSum,Number=1,Type=Float,Description="Z-score from Wilcoxon rank sum test of Alt vs. Ref read position bias">
+##INFO=<ID=SOR,Number=1,Type=Float,Description="Symmetric Odds Ratio of 2x2 contingency table to detect strand bias">
+##source=CombineGVCFs
+##source=GenotypeGVCFs
+##source=HaplotypeCaller
+##MUTANNO=<ID=MUTANNO,Version="0.2",Date="10/29/2019",DataVersion="0.2",DataDate="10/29/2019">
+##MUTANNO=<ID=novoAF,Version="2.1.1",Date="03/06/2019">
+##INFO=<ID=novoAF,Number=.,Type=String,Description="population AF by gnomAD. Format:'AF' ">
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	HG002	HG003	HG004	PSC-01-003	PSC-01-011	PSC-01-017
+1	14699	.	C	G	5732.43	VQSRTrancheSNP99.90to100.00	AC=35;AF=0.350;AN=100;BaseQRankSum=3.04;DP=2321;ExcessHet=46.3686;FS=43.430;InbreedingCoeff=-0.5579;MLEAC=36;MLEAF=0.360;MQ=36.30;MQRankSum=-1.515e+00;QD=3.75;ReadPosRankSum=0.097;SOR=3.624;novoAF=3.41347e-01	GT:AD:DP:GQ:PL	0/1:26,12:38:99:259,0,809	0/0:43,4:47:21:0,21,1381	0/0:26,2:28:43:0,43,902	0/1:97,11:108:16:16,0,2531	0/1:28,4:32:18:18,0,729	0/1:28,15:43:99:338,0,716
+1	66434150	.	T	C	1279.64	PASS	AC=1;AF=0.010;AN=100;BaseQRankSum=2.51;DP=1812;ExcessHet=3.0103;FS=3.005;InbreedingCoeff=-0.0101;MLEAC=1;MLEAF=0.010;MQ=70.00;MQRankSum=0.00;QD=16.20;ReadPosRankSum=-7.950e-01;SOR=1.009;novoAF=0.0	GT:AD:DP:GQ:PL	0/1:41,38:79:99:1297,0,1309	0/0:63,0:63:99:0,120,1800	0/0:78,0:78:99:0,120,1800	0/0:41,0:41:99:0,106,1456	0/0:34,0:34:90:0,90,1114	0/0:29,0:29:76:0,76,897
+1	168455916	.	C	T	927.64	PASS	AC=1;AF=0.010;AN=100;BaseQRankSum=0.219;DP=1871;ExcessHet=3.0103;FS=0.000;InbreedingCoeff=-0.0101;MLEAC=1;MLEAF=0.010;MQ=70.00;MQRankSum=0.00;QD=12.71;ReadPosRankSum=0.738;SOR=0.788;novoAF=0.0	GT:AD:DP:GQ:PL	0/1:45,28:73:99:945,0,1606	0/0:63,0:63:99:0,120,1800	0/0:66,0:66:99:0,120,1800	0/0:35,0:35:99:0,99,1485	0/0:34,0:34:99:0,99,1485	0/0:42,0:42:99:0,108,1294
+2	27100779	.	T	C	1582.64	PASS	AC=1;AF=0.010;AN=100;BaseQRankSum=-6.330e-01;DP=1871;ExcessHet=3.0103;FS=17.093;InbreedingCoeff=-0.0101;MLEAC=1;MLEAF=0.010;MQ=70.00;MQRankSum=0.00;QD=17.58;ReadPosRankSum=1.56;SOR=1.383;novoAF=3.18451e-05	GT:AD:DP:GQ:PL	0/1:43,47:90:99:1600,0,1448	0/0:50,0:50:99:0,120,1800	0/0:67,0:67:99:0,120,1800	0/0:36,0:36:99:0,99,1238	0/0:38,0:38:99:0,111,1665	0/0:37,0:37:99:0,99,1235
+1	26860231	.	A	T	1082.64	PASS	AC=1;AF=0.010;AN=100;BaseQRankSum=1.09;DP=1588;ExcessHet=3.0103;FS=0.985;InbreedingCoeff=-0.0101;MLEAC=1;MLEAF=0.010;MQ=70.00;MQRankSum=0.00;QD=18.35;ReadPosRankSum=-1.378e+00;SOR=0.853;novoAF=0.324	GT:AD:DP:GQ:PL	0/1:27,32:59:99:1100,0,844	0/0:49,0:49:99:0,120,1800	0/0:49,0:49:99:0,120,1800	0/0:34,0:34:90:0,90,1350	0/0:33,0:33:99:0,99,1080	0/0:37,0:37:99:0,105,1575
+1	23535069	.	G	GA	606.70	VQSRTrancheINDEL99.00to99.90	AC=1;AF=0.010;AN=100;BaseQRankSum=-1.318e+00;DP=1775;ExcessHet=3.8753;FS=14.866;InbreedingCoeff=-0.0466;MLEAC=1;MLEAF=0.010;MQ=68.30;MQRankSum=0.00;QD=9.95;ReadPosRankSum=1.29;SOR=0.723;novoAF=3.46380e-04	GT:AD:DP:GQ:PL	0/1:33,28:61:99:608,0,735	0/0:42,0:42:99:0,104,1458	0/0:66,0:66:99:0,120,1800	0/0:49,0:49:39:0,39,1214	0/0:36,0:36:87:0,87,1082	0/0:36,0:36:99:0,99,1091
+1	15752321	.	TCTGA	T	857.64	VQSRTrancheINDEL99.00to99.90	AC=1;AF=0.010;AN=100;BaseQRankSum=-2.065e+00;DP=1550;ExcessHet=3.0103;FS=13.462;InbreedingCoeff=-0.0101;MLEAC=1;MLEAF=0.010;MQ=70.00;MQRankSum=0.00;QD=17.87;ReadPosRankSum=1.64;SOR=1.981;novoAF=9.56206e-05	GT:AD:DP:GQ:PL	0/1:25,23:48:99:875,0,1423	0/0:36,0:36:99:0,99,1384	0/0:50,0:50:99:0,120,1800	0/0:34,0:34:99:0,99,1141	0/0:29,0:29:75:0,75,1125	0/0:29,0:29:76:0,76,896
+1	6268385	.	A	AT	493.68	PASS	AC=1;AF=0.010;AN=100;BaseQRankSum=-3.840e-01;DP=1501;ExcessHet=3.0103;FS=2.415;InbreedingCoeff=-0.0102;MLEAC=1;MLEAF=0.010;MQ=70.00;MQRankSum=0.00;QD=10.29;ReadPosRankSum=-7.640e-01;SOR=0.416;novoAF=3.02251e-03	GT:AD:DP:GQ:PL	0/1:23,25:48:99:511,0,460	0/0:36,0:36:99:0,102,1530	0/0:44,0:44:99:0,105,1686	0/0:27,0:27:75:0,75,1125	0/0:28,0:28:73:0,73,868	0/0:29,0:29:72:0,72,1080
+1	16942782	.	G	GTATA,GTATATATA,GTATATATATATA,GTATATATATA,GTATATA,GTGTATATATATATATATA	7607.93	PASS	AC=3,6,8,9,4,1;AF=0.030,0.060,0.080,0.090,0.040,0.010;AN=100;BaseQRankSum=-1.003e+00;DP=4977;ExcessHet=34.0376;FS=0.648;InbreedingCoeff=-0.4215;MLEAC=3,6,8,9,3,1;MLEAF=0.030,0.060,0.080,0.090,0.030,0.010;MQ=61.24;MQRankSum=0.00;QD=3.18;ReadPosRankSum=0.539;SOR=0.777;novoAF=0.312	GT:AD:DP:GQ:PL	0/1:120,32,0,0,0,0,18:170:99:784,0,7504,1311,7582,8924,1311,7582,8924,8924,1311,7582,8924,8924,8924,1311,7582,8924,8924,8924,8924,512,6153,7505,7505,7505,7505,7646	0/6:157,32,0,0,0,0,26:217:99:1402,452,7812,1794,7966,9586,1794,7966,9586,9586,1794,7966,9586,9586,9586,1794,7966,9586,9586,9586,9586,0,6185,7806,7806,7806,7806,7669	0/0:212,0,0,0,0,0,0:212:99:0,120,1800,120,1800,1800,120,1800,1800,1800,120,1800,1800,1800,1800,120,1800,1800,1800,1800,1800,120,1800,1800,1800,1800,1800,1800	0/2:69,0,8,0,0,0,0:116:65:65,325,3395,0,3070,3117,325,3395,3070,3395,325,3395,3070,3395,3395,325,3395,3070,3395,3395,3395,325,3395,3070,3395,3395,3395,3395	0/2:43,0,12,7,4,0,0:66:99:525,440,2702,0,2199,2155,128,2401,1895,2408,163,2389,1996,2192,2319,440,2702,2199,2401,2389,2702,440,2702,2199,2401,2389,2702,2702	0/0:39,0,0,0,0,0,0:48:99:0,126,2352,126,2352,2352,126,2352,2352,2352,126,2352,2352,2352,2352,126,2352,2352,2352,2352,2352,126,2352,2352,2352,2352,2352,2352
+1	6268385	.	A	AT	493.68	PASS	AC=1;AF=0.010;AN=100;BaseQRankSum=-3.840e-01;DP=1501;ExcessHet=3.0103;FS=2.415;InbreedingCoeff=-0.0102;MLEAC=1;MLEAF=0.010;MQ=70.00;MQRankSum=0.00;QD=10.29;ReadPosRankSum=-7.640e-01;SOR=0.416;novoAF=3.02251e-03	GT:AD:DP:GQ:PL	0/1:23,25:48:99:511,0,460	0/0:36,0:36:99:0,102,1530	0/0:44,0:44:99:0,105,1686	0/0:27,0:27:75:0,75,1125	0/0:28,0:28:73:0,73,868	0/0:29,0:29:72:0,72,1080
+1	15752321	.	TCTGA	T	857.64	VQSRTrancheINDEL99.00to99.90	AC=1;AF=0.010;AN=100;BaseQRankSum=-2.065e+00;DP=1550;ExcessHet=3.0103;FS=13.462;InbreedingCoeff=-0.0101;MLEAC=1;MLEAF=0.010;MQ=70.00;MQRankSum=0.00;QD=17.87;ReadPosRankSum=1.64;SOR=1.981;novoAF=9.56206e-05	GT:AD:DP:GQ:PL	0/1:25,23:48:99:875,0,1423	0/0:36,0:36:99:0,99,1384	0/0:50,0:50:99:0,120,1800	0/0:34,0:34:99:0,99,1141	0/0:29,0:29:75:0,75,1125	0/0:29,0:29:76:0,76,896
+2	1432699	.	C	G	5732.43	VQSRTrancheSNP99.90to100.00	AC=35;AF=0.350;AN=100;BaseQRankSum=3.04;DP=2321;ExcessHet=46.3686;FS=43.430;InbreedingCoeff=-0.5579;MLEAC=36;MLEAF=0.360;MQ=36.30;MQRankSum=-1.515e+00;QD=3.75;ReadPosRankSum=0.097;SOR=3.624;novoAF=3.41347e-01	GT:AD:DP:GQ:PL	0/1:26,12:38:99:259,0,809	0/0:43,4:47:21:0,21,1381	0/0:26,2:28:43:0,43,902	0/1:97,11:108:16:16,0,2531	0/1:28,4:32:18:18,0,729	0/1:28,15:43:99:338,0,716
diff --git a/tests/test_SVqcVCF.py b/tests/test_SVqcVCF.py
index 94885c5..2daeeae 100644
--- a/tests/test_SVqcVCF.py
+++ b/tests/test_SVqcVCF.py
@@ -17,14 +17,14 @@ def test_fail_SVqcVCF_no_SVTYPE():
     #Variables
     args = {'inputfile': 'tests/files/SVqcVCF_no_SVTYPE.vcf.gz','outputfile':'tests/files/main_test.out','samples':["TESTSAMPLE", "TESTSAMPLE2"], 'verbose': None}
     # Run and Tests
-    with pytest.raises(Exception, match = "ERROR in parsing vcf, variant at position 1:46000 does not contain SVTYPE in INFO"):
+    with pytest.raises(ValueError, match = "ERROR in parsing vcf, variant at position 1:46000 does not contain SVTYPE in INFO"):
         main_SVqcVCF(args)
 
 def test_fail_SVqcVCF_wrong_SVTYPE():
     #Variables
     args = {'inputfile': 'tests/files/SVqcVCF_wrong_SVTYPE.vcf.gz','outputfile':'tests/files/main_test.out','samples':["TESTSAMPLE", "TESTSAMPLE2"], 'verbose': None}
     # Run and Tests
-    with pytest.raises(Exception, match = "ERROR in parsing vcf, variant at position 1:46000 contains unexpected SVTYPE \"SNV\" in INFO"):
+    with pytest.raises(ValueError, match = "ERROR in parsing vcf, variant at position 1:46000 contains unexpected SVTYPE \"SNV\" in INFO"):
         main_SVqcVCF(args)
 
 def test_success_SVqcVCF_twoSamples():
diff --git a/tests/test_blackList.py b/tests/test_blackList.py
index a411ba3..1f97763 100644
--- a/tests/test_blackList.py
+++ b/tests/test_blackList.py
@@ -15,7 +15,7 @@ def test_run_blackList_big():
     ''' '''
     # Variables
     args = {'inputfile': 'tests/files/input_blackList.vcf', 'outputfile': 'tests/files/main_test.out',
-            'aftag': None, 'afthr': None, 'bigfile': 'tests/files/input_blackList.big', 'verbose': None}
+            'aftag': None, 'afthr': None, 'bigfile': 'tests/files/input_blackList.big', 'BEDfile': None, 'verbose': None}
     # Run
     main_blackList(args)
     # Tests
@@ -28,7 +28,7 @@ def test_run_blackList_032_big():
     ''' '''
     # Variables
     args = {'inputfile': 'tests/files/input_blackList.vcf', 'outputfile': 'tests/files/main_test.out',
-            'aftag': 'novoAF', 'afthr': '0.32', 'bigfile': 'tests/files/input_blackList.big', 'verbose': None}
+            'aftag': 'novoAF', 'afthr': '0.32', 'bigfile': 'tests/files/input_blackList.big', 'BEDfile': None, 'verbose': None}
     # Run
     main_blackList(args)
     # Tests
@@ -41,7 +41,7 @@ def test_run_blackList_032():
     ''' '''
     # Variables
     args = {'inputfile': 'tests/files/input_blackList.vcf', 'outputfile': 'tests/files/main_test.out',
-            'aftag': 'novoAF', 'afthr': '0.32', 'bigfile': None, 'verbose': None}
+            'aftag': 'novoAF', 'afthr': '0.32', 'bigfile': None, 'BEDfile': None, 'verbose': None}
     # Run
     main_blackList(args)
     # Tests
@@ -54,7 +54,7 @@ def test_run_blackList_01():
     ''' '''
     # Variables
     args = {'inputfile': 'tests/files/input_blackList.vcf', 'outputfile': 'tests/files/main_test.out',
-            'aftag': 'novoAF', 'afthr': '0.1', 'bigfile': None, 'verbose': None}
+            'aftag': 'novoAF', 'afthr': '0.1', 'bigfile': None, 'BEDfile': None, 'verbose': None}
     # Run
     main_blackList(args)
     # Tests
@@ -67,7 +67,7 @@ def test_run_blackList_001():
     ''' '''
     # Variables
     args = {'inputfile': 'tests/files/input_blackList.vcf', 'outputfile': 'tests/files/main_test.out',
-            'aftag': 'novoAF', 'afthr': '0.01', 'bigfile': None, 'verbose': None}
+            'aftag': 'novoAF', 'afthr': '0.01', 'bigfile': None, 'BEDfile': None, 'verbose': None}
     # Run
     main_blackList(args)
     # Tests
@@ -76,6 +76,19 @@ def test_run_blackList_001():
     os.remove('tests/files/main_test.out')
 #end def
 
+def test_run_blackList_BED():
+    ''' '''
+    # Variables
+    args = {'inputfile': 'tests/files/input_blackList.vcf', 'outputfile': 'tests/files/main_test.out',
+            'aftag': None, 'afthr': None, 'bigfile': None, 'BEDfile': 'tests/files/input_BED_blacklist.bed', 'verbose': None}
+    # Run
+    main_blackList(args)
+    # Tests
+    assert [row for row in open('tests/files/main_test.out')] == [row for row in open('tests/files/input_blackList_BED.out')]
+    # Clean
+    os.remove('tests/files/main_test.out')
+#end def
+
 
 #################################################################
 #   Errors
@@ -84,18 +97,18 @@ def test_args_afthr_bigfile_missing():
     ''' '''
     # Variables
     args = {'inputfile': 'tests/files/input_blackList.vcf', 'outputfile': 'tests/files/main_test.out',
-            'aftag': None, 'afthr': None, 'bigfile': None, 'verbose': None}
+            'aftag': None, 'afthr': None, 'bigfile': None, 'BEDfile': None, 'verbose': None}
     # Run and Tests
     with pytest.raises(SystemExit) as e:
         assert main_blackList(args)
-    assert str(e.value) == '\nERROR in parsing arguments: to blacklist specify a BIG file and/or a threshold for population allele frequency and the TAG to use\n'
+    assert str(e.value) == '\nERROR in parsing arguments: to blacklist specify at least a BIG file, a BED file, and/or a threshold for population allele frequency and the TAG to use\n'
 #end def
 
 def test_args_afthr_conflict():
     ''' '''
     # Variables
     args = {'inputfile': 'tests/files/input_blackList.vcf', 'outputfile': 'tests/files/main_test.out',
-            'aftag': None, 'afthr': '0.2', 'bigfile': None, 'verbose': None}
+            'aftag': None, 'afthr': '0.2', 'bigfile': None, 'BEDfile': None, 'verbose': None}
     # Run and Tests
     with pytest.raises(SystemExit) as e:
         assert main_blackList(args)
@@ -106,7 +119,7 @@ def test_args_afthr_conflict():
 #     ''' '''
 #     # Variables
 #     args = {'inputfile': 'tests/files/input_blackList_novoAF_missing.vcf', 'outputfile': 'tests/files/main_test.out',
-#             'aftag': 'novoAF', 'afthr': '0.2', 'bigfile': None}
+#             'aftag': 'novoAF', 'afthr': '0.2', 'bigfile': None, 'BEDfile': None,}
 #     # Run and Tests
 #     with pytest.raises(SystemExit) as e:
 #         assert main_blackList(args)
diff --git a/tests/test_novoCaller.py b/tests/test_novoCaller.py
index be06b80..75c0083 100644
--- a/tests/test_novoCaller.py
+++ b/tests/test_novoCaller.py
@@ -41,7 +41,7 @@ def assert_(tfile, ofile, test=False):
         try:
             af_t = float(vnt_obj_t.get_tag_value('novoAF'))
             af_o = float(vnt_obj_o.get_tag_value('novoAF'))
-        except ValueError:
+        except vcf_parser.MissingTag:
             af_t = float(vnt_obj_t.get_tag_value('AlleleFreq'))
             af_o = float(vnt_obj_o.get_tag_value('AlleleFreq'))
         assert abs(af_t - af_o) < 0.0000000001
@@ -53,7 +53,7 @@ def assert_(tfile, ofile, test=False):
             pp_o = float(vnt_obj_o.get_tag_value('novoPP'))
             if pp_t > 0.1: assert abs(pp_t - pp_o) < 0.0000000001
             else: assert abs(pp_t - pp_o) < 0.0001
-        except ValueError as e:
+        except vcf_parser.MissingTag as e:
             assert str(e) == '\nERROR in variant INFO field, novoPP tag is missing\n'
         # genotypes
         for id in vnt_obj_t.IDs_genotypes:
@@ -65,8 +65,8 @@ def assert_(tfile, ofile, test=False):
                 assert GT_t == GT_o
                 assert ref_t == ref_o
                 assert alt_t == alt_o
-            except ValueError as e:
-                assert str(e) == '\nERROR in GENOTYPES identifiers, PSC-01-003 identifier is missing in VCF\n'
+            except vcf_parser.MissingTag as e:
+                assert str(e) == '\nERROR in variant GENOTYPE field, RSTR tag is missing for PSC-01-003 identifier\n'
 
 #################################################################
 #   Tests
@@ -470,7 +470,7 @@ def test_run_novoCaller_bam_rerun_noUNR_NORSTR():
             'ppthr': None, 'afthr': '0.01', 'aftag': 'novoAF', 'bam': True,
             'MQthr': None, 'BQthr': None, 'afthr_unrelated': 0.01, 'ADthr': 3, 'verbose': None}
     # Run and Tests
-    with pytest.raises(ValueError) as e:
+    with pytest.raises(vcf_parser.MissingTag) as e:
         assert main_novoCaller(args)
     assert '\nERROR in variant FORMAT field, RSTR tag is missing\n' == str(e.value)
     # Clean
diff --git a/tests/test_toBig.py b/tests/test_toBig.py
index 9b64098..b13fa3e 100644
--- a/tests/test_toBig.py
+++ b/tests/test_toBig.py
@@ -378,7 +378,7 @@ def test_run_toBig_rdthr_2_all_miss_pos():
             'regionfile': 'tests/files/input_toBig.regions',
             'chromfile': 'tests/files/input_toBig.chrom.size'}
     # Run and Tests
-    with pytest.raises(Exception) as e:
+    with pytest.raises(IndexError) as e:
         assert main_toBig(args)
     assert str(e.value) == '\nERROR in file: position 13:11006 in file tests/files/input_toBig_miss_pos.rck.gz is not consistent with other files\n'
 #end def