diff --git a/.gitignore b/.gitignore index 0b6e57f..9c59327 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,9 @@ # Created by .ignore support plugin (hsz.mobi) ### Python template +# Custom +proc/* +.DS_Store + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/README.md b/README.md index a9a2971..c906267 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ -# Phigaro v2.3.0 +# Phigaro v2.4.0 [](https://badge.fury.io/py/phigaro) - - +  [](https://github.com/psf/black) diff --git a/deployment.sh b/deployment.sh new file mode 100755 index 0000000..7b4b2b0 --- /dev/null +++ b/deployment.sh @@ -0,0 +1,28 @@ +#!/bin/bash +conda activate main +pip install --upgrade twine +echo "Did you change git action and updated the package?" +read +git status +read +git pull +read +rm dist/* +python setup_version.py +python setup.py sdist bdist_wheel +read +git add --all +git status +read +read -p commit_name="Please, make up the commit name:" +tag=`cat tag_name` +git commit -m $commit_name +read +git tag $tag +read +git push +read +git push --tags +read +twine upload --repository phigaro dist/* +read \ No newline at end of file diff --git a/dist/phigaro-2.3.0-py2.py3-none-any.whl b/dist/phigaro-2.3.0-py2.py3-none-any.whl deleted file mode 100644 index 3fa6736..0000000 Binary files a/dist/phigaro-2.3.0-py2.py3-none-any.whl and /dev/null differ diff --git a/dist/phigaro-2.3.0.tar.gz b/dist/phigaro-2.3.0.tar.gz deleted file mode 100644 index 96cbe08..0000000 Binary files a/dist/phigaro-2.3.0.tar.gz and /dev/null differ diff --git a/dist/phigaro-2.4.0-py2.py3-none-any.whl b/dist/phigaro-2.4.0-py2.py3-none-any.whl new file mode 100644 index 0000000..5624cbf Binary files /dev/null and b/dist/phigaro-2.4.0-py2.py3-none-any.whl differ diff --git a/dist/phigaro-2.4.0.tar.gz b/dist/phigaro-2.4.0.tar.gz new file mode 100644 index 0000000..21ffce9 Binary files /dev/null and b/dist/phigaro-2.4.0.tar.gz differ diff --git a/environment.yml b/environment.yml index ecf699d..47f7bbf 100644 --- a/environment.yml +++ b/environment.yml @@ -1,6 +1,6 @@ name: phigaro_env dependencies: - - python=3.7 + - python<=3.12.1 - pip - bioconda::prodigal - bioconda::hmmer diff --git a/phigaro/_version.py b/phigaro/_version.py index 8c402aa..2386b50 100644 --- a/phigaro/_version.py +++ b/phigaro/_version.py @@ -1,4 +1,4 @@ """Version information.""" # The following line *must* be the last in the module, exactly as formatted: -__version__ ="2.3.0" +__version__ ="2.4.0" diff --git a/phigaro/batch/task/base.py b/phigaro/batch/task/base.py index 320e96c..6dfeb09 100644 --- a/phigaro/batch/task/base.py +++ b/phigaro/batch/task/base.py @@ -14,9 +14,7 @@ class AbstractTask(object): def __init__(self): if self.task_name is None: - raise Exception( - "{}.task_name must by set".format(self.__class__.__name__) - ) + raise Exception("{}.task_name must by set".format(self.__class__.__name__)) self.directory() self.context = Context.instance() diff --git a/phigaro/batch/task/dummy.py b/phigaro/batch/task/dummy.py index 2ecfc57..df7c298 100644 --- a/phigaro/batch/task/dummy.py +++ b/phigaro/batch/task/dummy.py @@ -4,12 +4,12 @@ class DummyTask(AbstractTask): - task_name = 'dummy' + task_name = "dummy" def __init__(self, output, old_task_name): super().__init__() self._output = output - self.task_name = '{}-dummy'.format(old_task_name) + self.task_name = "{}-dummy".format(old_task_name) def run(self): pass diff --git a/phigaro/batch/task/gene_mark.py b/phigaro/batch/task/gene_mark.py index 508b90f..364adeb 100644 --- a/phigaro/batch/task/gene_mark.py +++ b/phigaro/batch/task/gene_mark.py @@ -7,19 +7,20 @@ class GeneMarkTask(AbstractTask): - task_name = 'gene_mark' + task_name = "gene_mark" def __init__(self, input): super().__init__() self.input = input - self._lst_file = input + '.lst' - self.gene_mark = sh.Command(self.config['genemark']['bin']).bake( - m=self.config['genemark']['mod_path'], A=self.output(), + self._lst_file = input + ".lst" + self.gene_mark = sh.Command(self.config["genemark"]["bin"]).bake( + m=self.config["genemark"]["mod_path"], + A=self.output(), ) def output(self): - return self.file('{}.faa'.format(self.sample)) + return self.file("{}.faa".format(self.sample)) def run(self): self.gene_mark(self.input) diff --git a/phigaro/batch/task/hmmer.py b/phigaro/batch/task/hmmer.py index 2e18a3d..3011dbc 100644 --- a/phigaro/batch/task/hmmer.py +++ b/phigaro/batch/task/hmmer.py @@ -7,7 +7,7 @@ class HmmerTask(AbstractTask): - task_name = 'hmmer' + task_name = "hmmer" def __init__(self, prodigal_task): """ @@ -18,18 +18,18 @@ def __init__(self, prodigal_task): self.prodigal = prodigal_task def _prepare(self): - self.hmmer = sh.Command(self.config['hmmer']['bin']) + self.hmmer = sh.Command(self.config["hmmer"]["bin"]) def output(self): - return self.file('{}.hmmer_out'.format(self.sample)) + return self.file("{}.hmmer_out".format(self.sample)) def run(self): self.hmmer( - '--cpu', + "--cpu", self.context.threads, - '--notextw', - '--tblout', + "--notextw", + "--tblout", self.output(), - self.config['hmmer']['pvog_path'], + self.config["hmmer"]["pvog_path"], self.prodigal.output(), ) diff --git a/phigaro/batch/task/parse_hmmer.py b/phigaro/batch/task/parse_hmmer.py index 2cb7301..a909154 100644 --- a/phigaro/batch/task/parse_hmmer.py +++ b/phigaro/batch/task/parse_hmmer.py @@ -10,11 +10,11 @@ logger = logging.getLogger(__name__) -INFINITY = float('inf') +INFINITY = float("inf") class ParseHmmerTask(AbstractTask): - task_name = 'parse_hmmer' + task_name = "parse_hmmer" def __init__(self, hmmer_task, gene_mark_task): """ @@ -27,27 +27,27 @@ def __init__(self, hmmer_task, gene_mark_task): self.genemark_task = gene_mark_task def output(self): - return self.file('{}.npn'.format(self.sample)) + return self.file("{}.npn".format(self.sample)) def run(self): self._parse_hmmer_output() @staticmethod def parse_line(line): - tokens = re.split(r'\s+', line) - scaffold = '>' + line.split('>')[1] + tokens = re.split(r"\s+", line) + scaffold = ">" + line.split(">")[1] name = tokens[0] evalue = float(tokens[4]) return scaffold, name, evalue def _parse_hmmer_output(self): - max_evalue = self.config['hmmer']['e_value_threshold'] + max_evalue = self.config["hmmer"]["e_value_threshold"] with open(self.hmmer_task.output()) as f: lines_it = ( self.parse_line(line.strip()) for line in f - if not line.startswith('#') and line.strip() + if not line.startswith("#") and line.strip() ) hmm_res = {} @@ -63,12 +63,10 @@ def _parse_hmmer_output(self): hmm_res[scaffold][gene_name] = evalue with open(self.genemark_task.output()) as f: - with open(self.output(), 'w') as of: - writer = csv.writer(of, delimiter='\t') + with open(self.output(), "w") as of: + writer = csv.writer(of, delimiter="\t") lines_it = ( - line.strip().split('\t') - for line in f - if line.startswith('>') + line.strip().split("\t") for line in f if line.startswith(">") ) for scaffold, group in groupby(lines_it, key=lambda t: t[1]): @@ -81,7 +79,5 @@ def _parse_hmmer_output(self): for gene_name, _ in group ) - is_phage_it = ( - 'P' if is_phage else 'N' for is_phage in is_phage_it - ) - writer.writerow((scaffold, ''.join(is_phage_it))) + is_phage_it = ("P" if is_phage else "N" for is_phage in is_phage_it) + writer.writerow((scaffold, "".join(is_phage_it))) diff --git a/phigaro/batch/task/path.py b/phigaro/batch/task/path.py index 36db2fc..d5afa70 100644 --- a/phigaro/batch/task/path.py +++ b/phigaro/batch/task/path.py @@ -5,15 +5,15 @@ def sample_name(sample_path): sample_path = basename(sample_path) - tokens = sample_path.split('.') + tokens = sample_path.split(".") if len(tokens) == 1: return sample_path else: - return '.'.join(tokens[:-1]) + return ".".join(tokens[:-1]) def path(*items): - items = ('proc',) + items + items = ("proc",) + items return join(*items) diff --git a/phigaro/batch/task/preprocess.py b/phigaro/batch/task/preprocess.py index 2a18cb1..b2fc6f4 100644 --- a/phigaro/batch/task/preprocess.py +++ b/phigaro/batch/task/preprocess.py @@ -6,7 +6,7 @@ class PreprocessTask(AbstractTask): - task_name = 'input_file' + task_name = "input_file" def __init__(self, input): super().__init__() @@ -15,8 +15,8 @@ def __init__(self, input): def check_fastafile(self): def get_users_answer(question): - yes = ['yes', 'y'] - no = ['no', 'n'] + yes = ["yes", "y"] + no = ["no", "n"] try: input_ = raw_input except NameError: @@ -40,20 +40,20 @@ def get_users_answer(question): SeqIO.write(records_to_save, self.output(), "fasta") del records_to_save - if not self.config['phigaro']['delete_shorts']: + if not self.config["phigaro"]["delete_shorts"]: if len(sequences_to_delete) > 0: print( - 'Error! Your fasta file contains at least one sequence length < 20000. The short sequences are: ' + "Error! Your fasta file contains at least one sequence length < 20000. The short sequences are: " ) - print('\n'.join(sequences_to_delete)) + print("\n".join(sequences_to_delete)) if not get_users_answer( - 'Do you want to start Phigaro without these sequences?' + "Do you want to start Phigaro without these sequences?" ): self.clean() exit(1) def output(self): - return self.file('{}.fasta'.format(self.sample)) + return self.file("{}.fasta".format(self.sample)) def run(self): self.check_fastafile() diff --git a/phigaro/batch/task/prodigal.py b/phigaro/batch/task/prodigal.py index 79fad98..e2ba757 100644 --- a/phigaro/batch/task/prodigal.py +++ b/phigaro/batch/task/prodigal.py @@ -5,18 +5,18 @@ class ProdigalTask(AbstractTask): - task_name = 'prodigal' + task_name = "prodigal" def __init__(self, preprocess_task): super().__init__() self.preprocess_task = preprocess_task - self.prodigal = sh.Command(self.config['prodigal']['bin']).bake( + self.prodigal = sh.Command(self.config["prodigal"]["bin"]).bake( i=self.preprocess_task.output(), a=self.output() ) def output(self): - return self.file('{}.faa'.format(self.sample)) + return self.file("{}.faa".format(self.sample)) def run(self): self.prodigal() diff --git a/phigaro/batch/task/run_phigaro.py b/phigaro/batch/task/run_phigaro.py index f35bf61..d085ed1 100644 --- a/phigaro/batch/task/run_phigaro.py +++ b/phigaro/batch/task/run_phigaro.py @@ -25,7 +25,7 @@ class RunPhigaroTask(AbstractTask): - task_name = 'run_phigaro' + task_name = "run_phigaro" def __init__(self, hmmer_task, prodigal_task): """ @@ -37,39 +37,35 @@ def __init__(self, hmmer_task, prodigal_task): self.prodigal_task = prodigal_task def _prepare(self): - self.mode = self.config['phigaro']['mode'] + self.mode = self.config["phigaro"]["mode"] self.finder = V2Finder( - window_len=self.config['phigaro']['window_len'], - threshold_min=self.config['phigaro'][ - 'threshold_min_%s' % self.mode - ], - threshold_max=self.config['phigaro'][ - 'threshold_max_%s' % self.mode - ], + window_len=self.config["phigaro"]["window_len"], + threshold_min=self.config["phigaro"]["threshold_min_%s" % self.mode], + threshold_max=self.config["phigaro"]["threshold_max_%s" % self.mode], mode=self.mode, ) - self._wtp = self.config['phigaro'].get('wtp', False) - self._print_vogs = self.config['phigaro'].get('print_vogs', False) - self._filename = self.config['phigaro'].get('filename', False) - self._no_html = self.config['phigaro'].get('no_html', False) - self._not_open = self.config['phigaro'].get('not_open', False) - self._save_fasta = self.config['phigaro'].get('save_fasta', False) - self._output = self.config['phigaro'].get('output', False) + self._wtp = self.config["phigaro"].get("wtp", False) + self._print_vogs = self.config["phigaro"].get("print_vogs", False) + self._filename = self.config["phigaro"].get("filename", False) + self._no_html = self.config["phigaro"].get("no_html", False) + self._not_open = self.config["phigaro"].get("not_open", False) + self._save_fasta = self.config["phigaro"].get("save_fasta", False) + self._output = self.config["phigaro"].get("output", False) if self._wtp: - self._output_wtp = self.config['phigaro'].get('output_wtp', False) - self._uuid = self.config['phigaro'].get('uuid', False) + self._output_wtp = self.config["phigaro"].get("output_wtp", False) + self._uuid = self.config["phigaro"].get("uuid", False) self.context = Context.instance() def output(self): - return self.file('{}.tsv'.format(self.sample)) + return self.file("{}.tsv".format(self.sample)) def run(self): - max_evalue = self.config['hmmer']['e_value_threshold'] - penalty_black = self.config['phigaro']['penalty_black'] - penalty_white = self.config['phigaro']['penalty_white'] - gff = self.config['phigaro']['gff'] - bed = self.config['phigaro']['bed'] - mean_gc = self.config['phigaro']['mean_gc'] + max_evalue = self.config["hmmer"]["e_value_threshold"] + penalty_black = self.config["phigaro"]["penalty_black"] + penalty_white = self.config["phigaro"]["penalty_white"] + gff = self.config["phigaro"]["gff"] + bed = self.config["phigaro"]["bed"] + mean_gc = self.config["phigaro"]["mean_gc"] pvogs_black_list = const.DEFAULT_BLACK_LIST pvogs_white_list = const.DEFAULT_WHITE_LIST @@ -77,7 +73,7 @@ def run(self): scaffold_set = read_prodigal_output(self.prodigal_task.output()) hmmer_result = read_hmmer_output(self.hmmer_task.output()) - gff_base = ['##gff-version 3.2.1'] + gff_base = ["##gff-version 3.2.1"] gff_scaffold = [] gff_prophage = [] gff_gene = [] @@ -85,33 +81,34 @@ def run(self): bed_gene = [] wtp_output = [] - with open(self.output(), 'w') as of: - writer = csv.writer(of, delimiter='\t') + with open(self.output(), "w") as of: + writer = csv.writer(of, delimiter="\t") if self._print_vogs: writer.writerow( ( - 'scaffold', - 'begin', - 'end', - 'transposable', - 'taxonomy', - 'vog', + "scaffold", + "id", + "begin", + "end", + "transposable", + "taxonomy", + "vog", ) ) else: writer.writerow( - ('scaffold', 'begin', 'end', 'transposable', 'taxonomy') + ("scaffold", "id", "begin", "end", "transposable", "taxonomy") ) plotly_plots = [] phage_info = [] transposables_status = [] - phage_num = 0 for scaffold in scaffold_set: + phage_num = 0 if gff: gff_scaffold.append( - '##sequence-region %s 1 %d' + "##sequence-region %s 1 %d" % ( scaffold.name, self.context.scaffolds_info[scaffold.name], @@ -128,119 +125,118 @@ def run(self): pvogs_black_list=pvogs_black_list, pvogs_white_list=pvogs_white_list, ) - gc = hmmer_res_to_gc( - scaffold, hmmer_result, max_evalue=max_evalue - ) - if self.mode == 'abs': + gc = hmmer_res_to_gc(scaffold, hmmer_result, max_evalue=max_evalue) + if self.mode == "abs": gc = np.array(gc) gc = np.absolute(gc - mean_gc) + mean_gc gc[gc == np.absolute(0 - mean_gc) + mean_gc] = 0 phages = self.finder.find_phages(npn, gc) + for phage in phages: phage_num += 1 - begin = genes[phage.begin].begin - end = genes[phage.end].end + phage_name = "%s_prophage%d" % (scaffold.name, phage_num) + begin = genes[phage.begin].begin - 1 + end = genes[phage.end].end - 1 phage_genes = genes[phage.begin : (phage.end + 1)] + + hmmer_records = [ + hmmer_result.min_record( + hmmer_result.get_records(scaffold.name, gene.name) + ) + for gene in genes[phage.begin : phage.end] + ] + hmmer_pvogs_records = ( + record.vog_name + for record in hmmer_records + if record and record.evalue <= max_evalue + ) + pvogs_records_str = ", ".join(hmmer_pvogs_records) + taxonomy = define_taxonomy(pvogs_records_str) + hmmer_records = [ + record + for record in hmmer_records + if record and record.evalue <= max_evalue + ] + transposable = if_transposable(hmmer_records) + if gff: gff_prophage.append( - '\t'.join( + "\t".join( [ scaffold.name, - '.', - 'prophage', + ".", + "prophage", str(begin + 1), str(end + 1), - '.', - '.', - '.', - 'ID=prophage%d' % phage_num, + ".", + ".", + ".", + "ID=%s;taxonomy=%s;transposable=%s" + % (phage_name, taxonomy, transposable), ] ) ) if bed: bed_prophage.append( - '\t'.join( + "\t".join( [ scaffold.name, str(begin), - str(end), - 'prophage%d' % phage_num, - '.', - '.', + str(end + 1), + phage_name, + ".", + ".", ] ) ) - hmmer_records = [ - hmmer_result.min_record( - hmmer_result.get_records(scaffold.name, gene.name) - ) - for gene in genes[phage.begin : phage.end] - ] + if gff or bed: for record in phage_genes: hmmer_record = hmmer_result.min_record( - hmmer_result.get_records( - scaffold.name, record.name - ) + hmmer_result.get_records(scaffold.name, record.name) ) pvog = ( - '.' - if hmmer_record is None - else hmmer_record.vog_name + "." if hmmer_record is None else hmmer_record.vog_name ) evalue = ( - '.' - if hmmer_record is None - else hmmer_record.evalue + "." if hmmer_record is None else hmmer_record.evalue ) if gff: gff_gene.append( - '\t'.join( + "\t".join( [ scaffold.name, - '.', - 'gene', - str(record.begin + 1), - str(record.end + 1), + ".", + "gene", + str(record.begin), + str(record.end), str(evalue), - '+' if record.strand > 0 else '-', - '.', - 'ID=gene%s;Parent=prophage%d;pvog=%s' - % (record.name, phage_num, pvog), + "+" if record.strand > 0 else "-", + ".", + "ID=%s;Parent=%s;pvog=%s" + % (record.name, phage_name, pvog), ] ) ) if bed: bed_gene.append( - '\t'.join( + "\t".join( [ scaffold.name, - str(record.begin), - str(record.end + 1), - 'gene%s' % (record.name), + str(record.begin - 1), + str(record.end), + record.name, str(evalue), - '+' if record.strand > 0 else '-', + "+" if record.strand > 0 else "-", ] ) ) - hmmer_pvogs_records = ( - record.vog_name - for record in hmmer_records - if record and record.evalue <= max_evalue - ) - pvogs_records_str = ', '.join(hmmer_pvogs_records) - taxonomy = define_taxonomy(pvogs_records_str) - hmmer_records = [ - record - for record in hmmer_records - if record and record.evalue <= max_evalue - ] - transposable = if_transposable(hmmer_records) if self._print_vogs: writer.writerow( ( scaffold.name, + phage_name, begin, end, transposable, @@ -250,12 +246,19 @@ def run(self): ) else: writer.writerow( - (scaffold.name, begin, end, transposable, taxonomy) + ( + scaffold.name, + phage_name, + begin, + end, + transposable, + taxonomy, + ) ) sequence, record = form_sequence( self._filename, - '%s_prophage_%d' % (scaffold.name, phage_num), + "%s_prophage_%d" % (scaffold.name, phage_num), begin, end, scaffold.name, @@ -270,48 +273,37 @@ def run(self): ] phage_info[-1][1].append(the_phage_info) if self._save_fasta: - with open(self._output + '.fasta', 'a') as f: + with open(self._output + ".fasta", "a") as f: SeqIO.write( SeqRecord( record, - id='%s_prophage_%d' - % (scaffold.name, phage_num), - description='%s_prophage_%d' + id=phage_name, + description="%s_prophage_%d" % (scaffold.name, phage_num), ), f, "fasta", ) if (not self._no_html) and (self._output): - plotly_plots.append( - plot_html(hmmer_records, begin, end) - ) - - + plotly_plots.append(plot_html(hmmer_records, begin, end)) phage_info = ( - phage_info - if len(phage_info[-1][1]) > 0 - else phage_info[:-1] + phage_info if len(phage_info[-1][1]) > 0 else phage_info[:-1] ) wtp_output = [the_phage_info[0] for the_phage_info in phage_info] if self._wtp: - with open(self._output_wtp, 'w') as f: - f.write( - '\n'.join(wtp_output) - ) + with open(self._output_wtp, "w") as f: + f.write("\n".join(wtp_output)) if gff: - with open(self._output + '.gff3', 'w') as f: + with open(self._output + ".gff3", "w") as f: f.write( - '\n'.join( - gff_base + gff_scaffold + gff_prophage + gff_gene - ) + "\n".join(gff_base + gff_scaffold + gff_prophage + gff_gene) ) if bed: - with open(self._output + '.bed', 'w') as f: - f.write('\n'.join(gff_base + bed_prophage + bed_gene)) + with open(self._output + ".bed", "w") as f: + f.write("\n".join(gff_base + bed_prophage + bed_gene)) if (len(phage_info) > 0) and (not self._no_html) and (self._output): html = form_html_document( @@ -321,12 +313,12 @@ def run(self): self._filename, self._uuid, ) - with open(self._output + '.html', 'w') as f: + with open(self._output + ".html", "w") as f: f.write(html) if not self._not_open: os.system( - 'xdg-open ' + "xdg-open " + self._output - + '.html' - + ' > /dev/null 2>/dev/null' + + ".html" + + " > /dev/null 2>/dev/null" ) diff --git a/phigaro/cli/batch.py b/phigaro/cli/batch.py index 0cdb931..0303f99 100644 --- a/phigaro/cli/batch.py +++ b/phigaro/cli/batch.py @@ -35,7 +35,7 @@ def create_task(substitutions, task_class, *args, **kwargs): task = task_class(*args, **kwargs) if task.task_name in substitutions: print( - 'Substituting output for {}: {}'.format( + "Substituting output for {}: {}".format( task.task_name, substitutions[task.task_name].output() ) ) @@ -46,7 +46,7 @@ def create_task(substitutions, task_class, *args, **kwargs): def clean_fold(): is_empty = True - for root, dirs, files in os.walk('proc', topdown=False): + for root, dirs, files in os.walk("proc", topdown=False): for name in files: is_empty = False break @@ -54,174 +54,174 @@ def clean_fold(): for name in dirs: os.rmdir(os.path.join(root, name)) if is_empty: - os.rmdir('proc') + os.rmdir("proc") def main(): - default_config_path = join(os.getenv('HOME'), '.phigaro', 'config.yml') + default_config_path = join(os.getenv("HOME"), ".phigaro", "config.yml") parser = argparse.ArgumentParser( - prog='phigaro', - description='Phigaro is a scalable command-line tool for predictions phages and prophages ' - 'from nucleid acid sequences', + prog="phigaro", + description="Phigaro is a scalable command-line tool for predictions phages and prophages " + "from nucleid acid sequences", ) parser.add_argument( - '-V', - '--version', - action='version', - version='%(prog)s {version}'.format(version=__version__), + "-V", + "--version", + action="version", + version="%(prog)s {version}".format(version=__version__), ) parser.add_argument( - '-f', - '--fasta-file', - help='Assembly scaffolds/contigs or full genomes, required', + "-f", + "--fasta-file", + help="Assembly scaffolds/contigs or full genomes, required", required=True, ) parser.add_argument( - '-c', - '--config', + "-c", + "--config", default=default_config_path, - help='Path to the config file, not required. The deafult is %s'%default_config_path, + help="Path to the config file, not required. The deafult is %s" + % default_config_path, ) + parser.add_argument("-v", "--verbose", action="store_true", help=argparse.SUPPRESS) parser.add_argument( - '-v', '--verbose', action='store_true', help=argparse.SUPPRESS + "-p", + "--print-vogs", + help="Print phage vogs for each region", + action="store_true", ) parser.add_argument( - '-p', - '--print-vogs', - help='Print phage vogs for each region', - action='store_true', + "-e", + "--extension", + default=["html"], + nargs="+", + help="Type of the output: html, tsv, gff, bed or stdout. Default is html. You can specify several file formats with a space as a separator. Example: -e tsv html stdout.", ) parser.add_argument( - '-e', - '--extension', - default=['html'], - nargs='+', - help='Type of the output: html, tsv, gff, bed or stdout. Default is html. You can specify several file formats with a space as a separator. Example: -e tsv html stdout.', + "-o", + "--output", + default="", + help="Output filename for html and txt outputs. Required by default, but not required for stdout only output.", ) parser.add_argument( - '-o', - '--output', - default='', - help='Output filename for html and txt outputs. Required by default, but not required for stdout only output.', + "--not-open", + help="Do not open html file automatically, if html output type is specified.", + action="store_true", ) parser.add_argument( - '--not-open', - help='Do not open html file automatically, if html output type is specified.', - action='store_true', - ) - parser.add_argument( - '-t', - '--threads', + "-t", + "--threads", type=int, default=multiprocessing.cpu_count(), - help='Num of threads (' - 'default is num of CPUs={})'.format(multiprocessing.cpu_count()), + help="Num of threads (" + "default is num of CPUs={})".format(multiprocessing.cpu_count()), ) parser.add_argument( - '--no-cleanup', action='store_true', help="Do not delete any temporary files that was generated by Phigaro (HMMER & Prodigal outputs and some others)." + "--no-cleanup", + action="store_true", + help="Do not delete any temporary files that was generated by Phigaro (HMMER & Prodigal outputs and some others).", ) parser.add_argument( - '-S', - '--substitute-output', - action='append', - help='If you have precomputed prodigal and/or hmmer data you can provide paths to the files in the following format: program:address/to/the/file. In place of program you should write hmmer or prodigal. If you need to provide both files you should pass them separetely as two parametres.', + "-S", + "--substitute-output", + action="append", + help="If you have precomputed prodigal and/or hmmer data you can provide paths to the files in the following format: program:address/to/the/file. In place of program you should write hmmer or prodigal. If you need to provide both files you should pass them separetely as two parametres.", ) parser.add_argument( - '--save-fasta', - action='store_true', - help='Save all phage fasta sequences in a fasta file.', + "--save-fasta", + action="store_true", + help="Save all phage fasta sequences in a fasta file.", ) parser.add_argument( - '-d', - '--delete-shorts', - action='store_true', - help='Exclude sequences with length < 20000 automatically.', + "-d", + "--delete-shorts", + action="store_true", + help="Exclude sequences with length < 20000 automatically.", ) parser.add_argument( - '-m', - '--mode', - default='basic', - help='You can launch Phigaro at one of 3 modes: basic, abs, without_gc. Default is basic. Read more about modes at https://github.com/bobeobibo/phigaro/', - ) - parser.add_argument( - '--wtp', - action='store_true', - help=argparse.SUPPRESS + "-m", + "--mode", + default="basic", + help="You can launch Phigaro at one of 3 modes: basic, abs, without_gc. Default is basic. Read more about modes at https://github.com/bobeobibo/phigaro/", ) + parser.add_argument("--wtp", action="store_true", help=argparse.SUPPRESS) args = parser.parse_args() logging.basicConfig(level=logging.INFO if args.verbose else logging.WARN) - logging.getLogger('sh.command').setLevel(logging.WARN) + logging.getLogger("sh.command").setLevel(logging.WARN) logger = logging.getLogger(__name__) if not exists(args.config): # TODO: pretty message - print('Please, create config file using phigaro-setup script') + print("Please, create config file using phigaro-setup script") exit(1) args.extension = [atype.lower() for atype in args.extension] for ext in args.extension: - if ext not in ['html', 'gff', 'bed', 'tsv', 'stdout']: + if ext not in ["html", "gff", "bed", "tsv", "stdout"]: print( - 'Error! The unknown output format in -e/--extensionn parameter: %s. Please, choose one or several from the list: html, gff, bed, tsv, stdout'%ext - ) + "Error! The unknown output format in -e/--extensionn parameter: %s. Please, choose one or several from the list: html, gff, bed, tsv, stdout" + % ext + ) exit(1) - if (args.output == '') and (args.extension != ['stdout']): + if (args.output == "") and (args.extension != ["stdout"]): print( - 'Error! Argument -o/--output is required or change the type of the output to stdout.' + "Error! Argument -o/--output is required or change the type of the output to stdout." ) exit(1) with open(args.config) as f: - logger.info('Using config file: {}'.format(args.config)) + logger.info("Using config file: {}".format(args.config)) config = yaml.load(f, Loader=yaml.FullLoader) - config['phigaro']['wtp'] = args.wtp - config['phigaro']['print_vogs'] = args.print_vogs - config['phigaro']['filename'] = args.fasta_file - config['phigaro']['no_html'] = ( - True if 'html' not in args.extension else False - ) - config['phigaro']['not_open'] = args.not_open - config['phigaro']['output'] = (args.output+'/'+os.path.splitext(os.path.basename(args.fasta_file))[0]+'.phigaro').replace('//', '/') - config['phigaro']['uuid'] = uuid.uuid4().hex - config['phigaro']['delete_shorts'] = args.delete_shorts - config['phigaro']['gff'] = True if ('gff' in args.extension) else False - config['phigaro']['bed'] = True if ('bed' in args.extension) else False - config['phigaro']['mode'] = args.mode - config['phigaro']['save_fasta'] = args.save_fasta + config["phigaro"]["wtp"] = args.wtp + config["phigaro"]["print_vogs"] = args.print_vogs + config["phigaro"]["filename"] = args.fasta_file + config["phigaro"]["no_html"] = True if "html" not in args.extension else False + config["phigaro"]["not_open"] = args.not_open + config["phigaro"]["output"] = ( + args.output + + "/" + + os.path.splitext(os.path.basename(args.fasta_file))[0] + + ".phigaro" + ).replace("//", "/") + config["phigaro"]["uuid"] = uuid.uuid4().hex + config["phigaro"]["delete_shorts"] = args.delete_shorts + config["phigaro"]["gff"] = True if ("gff" in args.extension) else False + config["phigaro"]["bed"] = True if ("bed" in args.extension) else False + config["phigaro"]["mode"] = args.mode + config["phigaro"]["save_fasta"] = args.save_fasta filename = args.fasta_file - sample = '{}-{}'.format(sample_name(filename), config['phigaro']['uuid']) + sample = "{}-{}".format(sample_name(filename), config["phigaro"]["uuid"]) if args.wtp: - config['phigaro']['not_open'] = True - config['phigaro']['gff'] = True - config['phigaro']['bed'] = True - args.extension.append('tsv') - config['phigaro']['delete_shorts'] = True - config['phigaro']['print_vogs'] = True - config['phigaro']['output_wtp'] = args.output + '/phigaro.txt' - config['phigaro']['output'] = args.output +'/phigaro/phigaro' - config['phigaro']['save_fasta'] = True - - - if config['phigaro']['output'] != '': - fold = os.path.dirname(config['phigaro']['output']) + config["phigaro"]["not_open"] = True + config["phigaro"]["gff"] = True + config["phigaro"]["bed"] = True + args.extension.append("tsv") + config["phigaro"]["delete_shorts"] = True + config["phigaro"]["print_vogs"] = True + config["phigaro"]["output_wtp"] = args.output + "/phigaro.txt" + config["phigaro"]["output"] = args.output + "/phigaro/phigaro" + config["phigaro"]["save_fasta"] = True + + if config["phigaro"]["output"] != "": + fold = os.path.dirname(config["phigaro"]["output"]) if fold and not os.path.isdir(fold): os.makedirs(fold) if args.wtp: - fold = os.path.dirname(config['phigaro']['output_wtp']) + fold = os.path.dirname(config["phigaro"]["output_wtp"]) if fold and not os.path.isdir(fold): os.makedirs(fold) - - Context.initialize( - sample=sample, config=config, threads=args.threads, + sample=sample, + config=config, + threads=args.threads, ) substitutions = parse_substitute_output(args.substitute_output) @@ -231,9 +231,7 @@ def main(): prodigal_task = create_task( substitutions, ProdigalTask, preprocess_task=preprocess_task ) - hmmer_task = create_task( - substitutions, HmmerTask, prodigal_task=prodigal_task - ) + hmmer_task = create_task(substitutions, HmmerTask, prodigal_task=prodigal_task) run_phigaro_task = create_task( substitutions, @@ -245,14 +243,14 @@ def main(): tasks = [preprocess_task, prodigal_task, hmmer_task, run_phigaro_task] task_output_file = run_tasks_chain(tasks) - if ('tsv' in args.extension) or ('stdout' in args.extension): + if ("tsv" in args.extension) or ("stdout" in args.extension): with open(task_output_file) as f: f = list(f) - if 'tsv' in args.extension: - out_f = open(config['phigaro']['output'] + '.tsv', 'w') + if "tsv" in args.extension: + out_f = open(config["phigaro"]["output"] + ".tsv", "w") for line in f: out_f.write(line) - if 'stdout' in args.extension: + if "stdout" in args.extension: out_f = sys.stdout for line in f: out_f.write(line) @@ -264,5 +262,5 @@ def main(): clean_fold() -if __name__ == '__main__': +if __name__ == "__main__": main() diff --git a/phigaro/cli/helper.py b/phigaro/cli/helper.py index 6b4a240..e7c17a7 100644 --- a/phigaro/cli/helper.py +++ b/phigaro/cli/helper.py @@ -21,23 +21,23 @@ def create_config(no_update_db, config_path, pvogs_dir, force): os.makedirs(config_dir) if exists(config_path) and not force: - print('Phigaro already configured') + print("Phigaro already configured") return helper = SetupHelper(no_update_db) try: config = helper.setup() # TODO: refactor 'allpvoghmms' const - config['hmmer']['pvog_path'] = os.path.join(pvogs_dir, 'allpvoghmms') + config["hmmer"]["pvog_path"] = os.path.join(pvogs_dir, "allpvoghmms") - print("Found Prodigal in: {}".format(config['prodigal']['bin'])) - print("Found HMMER in: {}".format(config['hmmer']['bin'])) - print("HMMER model in: {}".format(config['hmmer']['pvog_path'])) + print("Found Prodigal in: {}".format(config["prodigal"]["bin"])) + print("Found HMMER in: {}".format(config["hmmer"]["bin"])) + print("HMMER model in: {}".format(config["hmmer"]["pvog_path"])) - with open(config_path, 'w') as f: + with open(config_path, "w") as f: yaml.safe_dump(config, f, default_flow_style=False) except HelperException as ex: - sys.stdout.write(ex.message + '\n') + sys.stdout.write(ex.message + "\n") exit(1) return @@ -49,71 +49,69 @@ def read_config_and_download_pvogs(config_path): with open(config_path) as f: config = yaml.load(f, Loader=yaml.FullLoader) - pvogs_dir = dirname(config['hmmer']['pvog_path']) - print('Downloading models to {}'.format(pvogs_dir)) - download_pvogs('http://download.ripcm.com/phigaro/', pvogs_dir) + pvogs_dir = dirname(config["hmmer"]["pvog_path"]) + print("Downloading models to {}".format(pvogs_dir)) + download_pvogs("http://download.ripcm.com/phigaro/", pvogs_dir) def download_test_data(): test_data_dir = input( - 'Please, write a full path to the directory you want test data saved to' - + '(by default - working directory):' + "Please, write a full path to the directory you want test data saved to" + + "(by default - working directory):" ) - if test_data_dir == '': + if test_data_dir == "": test_data_dir = os.getcwd() - test_data_dir = test_data_dir.replace('\\', '/') + test_data_dir = test_data_dir.replace("\\", "/") test_data_dir = ( - test_data_dir + '/test_data' - if (test_data_dir[-1] != '/') - else test_data_dir + 'test_data' + test_data_dir + "/test_data" + if (test_data_dir[-1] != "/") + else test_data_dir + "test_data" ) - base_url = 'https://cdn.jsdelivr.net/gh/bobeobibo/phigaro/test_data/' + base_url = "https://cdn.jsdelivr.net/gh/bobeobibo/phigaro/test_data/" if not exists(test_data_dir): os.makedirs(test_data_dir) - download_file('Bacillus_anthracis_str_ames.fna', base_url, test_data_dir) - download_file('Bacillus_anthracis_str_ames.phg', base_url, test_data_dir) - download_file( - 'Bacillus_anthracis_str_ames.phg.html', base_url, test_data_dir - ) + download_file("Bacillus_anthracis_str_ames.fna", base_url, test_data_dir) + download_file("Bacillus_anthracis_str_ames.phg", base_url, test_data_dir) + download_file("Bacillus_anthracis_str_ames.phg.html", base_url, test_data_dir) def main(): - home = os.getenv('HOME') - phigaro_dir = os.path.join(home, '.phigaro') - phigaro_config = os.path.join(phigaro_dir, 'config.yml') - pvogs_dir = os.path.join(phigaro_dir, 'pvog') + home = os.getenv("HOME") + phigaro_dir = os.path.join(home, ".phigaro") + phigaro_config = os.path.join(phigaro_dir, "config.yml") + pvogs_dir = os.path.join(phigaro_dir, "pvog") parser = argparse.ArgumentParser( - prog='phigaro-setup', + prog="phigaro-setup", description="Phigaro setup helper", formatter_class=argparse.ArgumentDefaultsHelpFormatter, ) parser.add_argument( - '-c', - '--config', + "-c", + "--config", default=phigaro_config, - help='Path to a config.yml, default is {}'.format(phigaro_config), + help="Path to a config.yml, default is {}".format(phigaro_config), ) parser.add_argument( - '-p', - '--pvog', + "-p", + "--pvog", default=pvogs_dir, - help='pvogs directory, default is {}'.format(pvogs_dir), + help="pvogs directory, default is {}".format(pvogs_dir), ) parser.add_argument( - '-f', - '--force', - action='store_true', - help='Force configuration and rewrite config.yml if exists', + "-f", + "--force", + action="store_true", + help="Force configuration and rewrite config.yml if exists", ) parser.add_argument( - '--no-updatedb', action='store_true', help='Do not run sudo updatedb' + "--no-updatedb", action="store_true", help="Do not run sudo updatedb" ) # parser.add_argument('--download-models', action='store_true', help='Skip configuration step and download models') args = parser.parse_args() if args.force: - sh.rm('-rf', args.config) + sh.rm("-rf", args.config) create_config( no_update_db=args.no_updatedb, config_path=args.config, @@ -123,26 +121,26 @@ def main(): read_config_and_download_pvogs(args.config) while True: - overwrite = input('Do you want to download test data Y/N?') - if overwrite.upper() in {'Y', 'YES'}: - overwrite = 'Y' + overwrite = input("Do you want to download test data Y/N?") + if overwrite.upper() in {"Y", "YES"}: + overwrite = "Y" break - elif overwrite.upper() in {'N', 'NO'}: - overwrite = 'N' + elif overwrite.upper() in {"N", "NO"}: + overwrite = "N" break - if overwrite == 'Y': + if overwrite == "Y": download_test_data() - print('To run phigaro on test data enter the following command:') - print('') + print("To run phigaro on test data enter the following command:") + print("") print( - ' phigaro -f test_data/Bacillus_anthracis_str_ames.fna -o test_data/Bacillus_anthracis_str_ames.phg -p --not-open' + " phigaro -f test_data/Bacillus_anthracis_str_ames.fna -o test_data/Bacillus_anthracis_str_ames.phg -p --not-open" ) - print('') + print("") print( - 'The installation process is finished. If you have any questions, you can visit our github: https://github.com/bobeobibo/phigaro.' + "The installation process is finished. If you have any questions, you can visit our github: https://github.com/bobeobibo/phigaro." ) -if __name__ == '__main__': +if __name__ == "__main__": main() diff --git a/phigaro/cli/phigaro.py b/phigaro/cli/phigaro.py index a5ffb11..c94c07a 100644 --- a/phigaro/cli/phigaro.py +++ b/phigaro/cli/phigaro.py @@ -10,16 +10,16 @@ from phigaro.data import convert_npn -def find_and_print_phages(npn_filename, finder, sep='\t'): +def find_and_print_phages(npn_filename, finder, sep="\t"): # type: (str, AbstractFinder) -> list[(str, str, list[Phage])] - writer = csv.writer(sys.stdout, delimiter='\t') - writer.writerow(('scaffold', 'begin', 'end')) + writer = csv.writer(sys.stdout, delimiter="\t") + writer.writerow(("scaffold", "begin", "end")) with open(npn_filename) as f: reader = csv.reader(f, delimiter=sep) for scaffold, npn_str in reader: - npn = convert_npn(npn_str, 'P') + npn = convert_npn(npn_str, "P") phages = finder.find_phages(npn) for phage in phages: writer.writerow((scaffold, phage.begin, phage.end)) @@ -29,10 +29,10 @@ def main(): p = argparse.ArgumentParser( description="Tool for predicting prophages in metagenomes" ) - p.add_argument('npn_file') - p.add_argument('-w', '--window-len', default=const.DEFAULT_WINDOW_SIZE) - p.add_argument('-m', '--threshold-min', default=const.DEFAULT_THRESHOLD_MIN) - p.add_argument('-M', '--threshold-max', default=const.DEFAULT_THRESHOLD_MAX) + p.add_argument("npn_file") + p.add_argument("-w", "--window-len", default=const.DEFAULT_WINDOW_SIZE) + p.add_argument("-m", "--threshold-min", default=const.DEFAULT_THRESHOLD_MIN) + p.add_argument("-M", "--threshold-max", default=const.DEFAULT_THRESHOLD_MAX) args = p.parse_args() @@ -45,5 +45,5 @@ def main(): find_and_print_phages(args.npn_file, finder) -if __name__ == '__main__': +if __name__ == "__main__": main() diff --git a/phigaro/const.py b/phigaro/const.py index 25450f1..123b021 100644 --- a/phigaro/const.py +++ b/phigaro/const.py @@ -10,51 +10,51 @@ DEFAULT_PENALTY_BLACK = 2.2 DEFAULT_PENALTY_WHITE = 0.7 DEFAULT_BLACK_LIST = [ - 'VOG0496', - 'VOG5264', - 'VOG4730', - 'VOG5818', - 'VOG7281', - 'VOG6063', - 'VOG6030', - 'VOG1710', - 'VOG0996', - 'VOG4524', - 'VOG8021', - 'VOG8536', - 'VOG2368', - 'VOG1850', - 'VOG1031', - 'VOG0985', - 'VOG0274', - 'VOG4344', - 'VOG1844', - 'VOG0088', - 'VOG8607', - 'VOG4615', - 'VOG8992', - 'VOG3235', - 'VOG0092', - 'VOG4155', - 'VOG3532', - 'VOG1045', - 'VOG4149', - 'VOG8062', - 'VOG4562', - 'VOG7442', - 'VOG7446', - 'VOG0419', - 'VOG4319', - 'VOG8429', - 'VOG4409', - 'VOG1422', - 'VOG10018', - 'VOG3101', - 'VOG5441', - 'VOG4469', - 'VOG6988', - 'VOG4678', - 'VOG3722', + "VOG0496", + "VOG5264", + "VOG4730", + "VOG5818", + "VOG7281", + "VOG6063", + "VOG6030", + "VOG1710", + "VOG0996", + "VOG4524", + "VOG8021", + "VOG8536", + "VOG2368", + "VOG1850", + "VOG1031", + "VOG0985", + "VOG0274", + "VOG4344", + "VOG1844", + "VOG0088", + "VOG8607", + "VOG4615", + "VOG8992", + "VOG3235", + "VOG0092", + "VOG4155", + "VOG3532", + "VOG1045", + "VOG4149", + "VOG8062", + "VOG4562", + "VOG7442", + "VOG7446", + "VOG0419", + "VOG4319", + "VOG8429", + "VOG4409", + "VOG1422", + "VOG10018", + "VOG3101", + "VOG5441", + "VOG4469", + "VOG6988", + "VOG4678", + "VOG3722", ] DEFAULT_WHITE_LIST = [ "VOG0568", diff --git a/phigaro/data.py b/phigaro/data.py index 6039daa..9c41bcd 100644 --- a/phigaro/data.py +++ b/phigaro/data.py @@ -1,17 +1,17 @@ import csv import re -from collections import OrderedDict, defaultdict, Iterable +from collections import OrderedDict, defaultdict from itertools import groupby -import pickle +import json from phigaro.misc.ranges import first import numpy as np import os -INFINITY = float('inf') +INFINITY = float("inf") def read_npn(filename, sep=None, as_dict=True): - sep = sep or ' ' + sep = sep or " " with open(filename) as f: reader = csv.reader(f, delimiter=sep) if as_dict: @@ -21,7 +21,7 @@ def read_npn(filename, sep=None, as_dict=True): def read_coords(filename, sep=None): - sep = sep or '\t' + sep = sep or "\t" with open(filename) as f: reader = csv.reader(f, delimiter=sep) res = {} @@ -46,11 +46,10 @@ def hmmer_res_to_npn( pvogs_black_list, pvogs_white_list, ): + # type: (Scaffold, HmmerResult, float)->list[int] ordered_records_it = ( - HmmerResult.min_record( - hmmer_result.get_records(scaffold.name, gene.name) - ) + HmmerResult.min_record(hmmer_result.get_records(scaffold.name, gene.name)) for gene in scaffold ) @@ -69,9 +68,7 @@ def hmmer_res_to_npn( def hmmer_res_to_gc(scaffold, hmmer_result, max_evalue): # type: (Scaffold, HmmerResult, float)->list[int] ordered_records_it = ( - HmmerResult.min_record( - hmmer_result.get_records(scaffold.name, gene.name) - ) + HmmerResult.min_record(hmmer_result.get_records(scaffold.name, gene.name)) for gene in scaffold ) @@ -113,9 +110,7 @@ def get_gene(self, gene_name): class ScaffoldSet(object): def __init__(self, scaffolds): # type: (list[Scaffold])->ScaffoldSet - self._scaffolds_map = { - scaffold.name: scaffold for scaffold in scaffolds - } + self._scaffolds_map = {scaffold.name: scaffold for scaffold in scaffolds} def get_scaffold(self, scaffold_name): # type: (str)->Scaffold @@ -179,19 +174,19 @@ def read_hmmer_output(file_path): def parse_line(line): # type: (str)->HmmerRecord - tokens = re.split(r'\s+', line) - begin, end, strand = line.split(' # ', 4)[1:-1] + tokens = re.split(r"\s+", line) + begin, end, strand = line.split(" # ", 4)[1:-1] gc_cont = float( [ - x.split('=')[-1] - for x in tokens[-1].split(';') - if x.startswith('gc_cont') + x.split("=")[-1] + for x in tokens[-1].split(";") + if x.startswith("gc_cont") ][0] ) return HmmerRecord( - scaffold_name='_'.join(tokens[0].split('_')[:-1]), - gene_name=tokens[0].split('_')[-1], + scaffold_name="_".join(tokens[0].split("_")[:-1]), + gene_name=tokens[0], vog_name=tokens[2], evalue=float(tokens[4]), gc_cont=gc_cont, @@ -204,7 +199,7 @@ def parse_line(line): lines_it = ( parse_line(line.strip()) for line in f - if not line.startswith('#') and line.strip() + if not line.startswith("#") and line.strip() ) hmm_res = HmmerResult(lines_it) @@ -217,7 +212,7 @@ def read_prodigal_output(file_name): def extract_coords_and_name(gene_str): # type: (str)->Gene - tokens = gene_str.split(' # ') + tokens = gene_str.split(" # ") return Gene( name=tokens[0], begin=int(tokens[1]), @@ -227,45 +222,40 @@ def extract_coords_and_name(gene_str): def parse_gene_records(gene_records): # type: (list[str])->list[Gene] - return [ - extract_coords_and_name(gene_str) for _, gene_str in gene_records - ] + return [extract_coords_and_name(gene_str) for _, gene_str in gene_records] with open(file_name) as f: genes_scaffold_recs = ( [ - '_'.join(line.strip().split(' # ', 1)[0].split('_')[:-1]), - line.strip().split(' # ', 1)[0].split('_')[-1] - + ' # ' - + line.strip().split(' # ', 1)[1], + "_".join(line.strip().split(" # ", 1)[0].split("_")[:-1]), + line.strip().split(" # ", 1)[0].replace(">", "") + + " # " + + line.strip().split(" # ", 1)[1], ] for line in f - if line.startswith('>') + if line.startswith(">") ) scaffolds = [ - Scaffold( - name=scaffold_name[1:], genes=parse_gene_records(gene_records) - ) - for scaffold_name, gene_records in groupby( - genes_scaffold_recs, key=first - ) + Scaffold(name=scaffold_name[1:], genes=parse_gene_records(gene_records)) + for scaffold_name, gene_records in groupby(genes_scaffold_recs, key=first) ] return ScaffoldSet(scaffolds=scaffolds) def define_taxonomy(pvogs_string): with open( - os.path.dirname(os.path.abspath(__file__)) + '/pvogs_taxonomy.pickle', - 'rb', + os.path.dirname(os.path.abspath(__file__)) + "/pvogs_taxonomy.json", + "r", ) as f: - pvogs_taxonomy, taxonomy_codes = pickle.load(f) - taxonomy_codes = taxonomy_codes.astype(str) - pvog_list = pvogs_string.split(', ') + data = json.load(f) + pvogs_taxonomy = data["pvogs_taxonomy"] + taxonomy_codes = np.array(data["taxonomy_codes"]) + pvog_list = pvogs_string.split(", ") taxonomy_variants = [ pvogs_taxonomy[pvog] for pvog in pvog_list if pvog in pvogs_taxonomy ] if len(taxonomy_variants) > 0: taxonomies, counts = np.unique(taxonomy_variants, return_counts=True) - return ' / '.join(taxonomy_codes[taxonomies[counts == max(counts)]]) + return " / ".join(taxonomy_codes[taxonomies[counts == max(counts)]]) else: - return 'Unknown' + return "Unknown" diff --git a/phigaro/finder/v1.py b/phigaro/finder/v1.py index 84bab7c..c380754 100644 --- a/phigaro/finder/v1.py +++ b/phigaro/finder/v1.py @@ -18,9 +18,7 @@ def find_phages(self, bacteria_npn): kkz, ar_positions = convert_npn(bacteria_npn) grad = count_grad(kkz, self.window_size) - norm_grad = count_norm_grad( - grad, self.window_size, self.min_phage_in_window - ) + norm_grad = count_norm_grad(grad, self.window_size, self.min_phage_in_window) phages = get_phages(kkz, norm_grad) for phage in phages: @@ -30,9 +28,9 @@ def find_phages(self, bacteria_npn): # ) yield Phage( - begin=phage['start'], - end=phage['end'], - is_prophage=phage['end'] - phage['start'] < 0.8 * len(kkz), + begin=phage["start"], + end=phage["end"], + is_prophage=phage["end"] - phage["start"] < 0.8 * len(kkz), ) @@ -48,9 +46,7 @@ def count_grad(sequence, window_size): end = int(i + offset) if end > len(sequence) - 1: # if end is out of range end = len(sequence) - 1 - grad[i] += sum( - sequence[start : end + 1] - ) # count sum of elements in window + grad[i] += sum(sequence[start : end + 1]) # count sum of elements in window return grad @@ -128,10 +124,10 @@ def convert_npn(npn): ar_positions = [] for i, letter in enumerate(npn): - if letter == 'P': + if letter == "P": kkz.append(1) else: kkz.append(0) - if letter == 'r': + if letter == "r": ar_positions.append(i) return kkz, ar_positions diff --git a/phigaro/finder/v2.py b/phigaro/finder/v2.py index 0caecdc..657cfd3 100644 --- a/phigaro/finder/v2.py +++ b/phigaro/finder/v2.py @@ -19,7 +19,7 @@ def __init__(self, window_len, threshold_min, threshold_max, mode): def find_phages(self, bacteria_npn, bacteria_gc): scores = calc_scores(bacteria_npn, self.window_len) - if self.mode != 'without_gc': + if self.mode != "without_gc": gc_scores = calc_scores(bacteria_gc, self.window_len) ranges = scan_phages( np.array(scores) * np.array(gc_scores), @@ -32,7 +32,9 @@ def find_phages(self, bacteria_npn, bacteria_gc): ) for (begin, end) in ranges: yield Phage( - begin=begin, end=end, is_prophage=True, + begin=begin, + end=end, + is_prophage=True, ) diff --git a/phigaro/helper.py b/phigaro/helper.py index 9d5038b..a5869c2 100644 --- a/phigaro/helper.py +++ b/phigaro/helper.py @@ -24,9 +24,7 @@ class HMMERNotFound(HelperException): def _choose_option(message, options): - options = [s.rstrip() for s in options[:-1] if isfile(s.rstrip())] + [ - options[-1] - ] + options = [s.rstrip() for s in options[:-1] if isfile(s.rstrip())] + [options[-1]] if len(options) == 1: return options[0] @@ -36,28 +34,20 @@ def _choose_option(message, options): res = None for i, option in enumerate(options): print("[{}] {}".format(i + 1, option)) - option_num = input( - 'Choose your option (Enter for {}): '.format(options[0]) - ) - if option_num == '': - option_num = '1' - if re.match(r'^\d+$', option_num): + option_num = input("Choose your option (Enter for {}): ".format(options[0])) + if option_num == "": + option_num = "1" + if re.match(r"^\d+$", option_num): if int(option_num) == len(options): - which_program = ( - 'prodigal' if 'Prodigal' in message else 'hmmsearch' - ) - res = input( - 'Please, write a path to {}: '.format(which_program) - ) + which_program = "prodigal" if "Prodigal" in message else "hmmsearch" + res = input("Please, write a path to {}: ".format(which_program)) return res option_num = int(option_num) - 1 if 0 <= option_num < len(options): res = options[option_num] if res is None: print( - 'Please select valid option number ({} to {})'.format( - 1, len(options) - ) + "Please select valid option number ({} to {})".format(1, len(options)) ) continue return res @@ -68,31 +58,34 @@ def download_file(filename, base_url, out_dir): out = join(out_dir, filename) if exists(out): while True: - overwrite = input( - 'File {} already exists, overwrite it (Y/N)?'.format(out) - ) - if overwrite.upper() in {'Y', 'YES'}: - overwrite = 'Y' + overwrite = input("File {} already exists, overwrite it (Y/N)?".format(out)) + if overwrite.upper() in {"Y", "YES"}: + overwrite = "Y" break - elif overwrite.upper() in {'N', 'NO'}: - overwrite = 'N' + elif overwrite.upper() in {"N", "NO"}: + overwrite = "N" break - if overwrite == 'N': + if overwrite == "N": return - print('Downloading {url} to {out}'.format(url=url, out=out,)) - sh.wget('-O', out, url, _tty_out=True) + print( + "Downloading {url} to {out}".format( + url=url, + out=out, + ) + ) + sh.wget("-O", out, url, _tty_out=True) def download_pvogs(base_url, out_dir): if not exists(out_dir): os.makedirs(out_dir) # TODO: refactor 'allpvoghmms' const - download_file('allpvoghmms', base_url, out_dir) - download_file('allpvoghmms.h3f', base_url, out_dir) - download_file('allpvoghmms.h3i', base_url, out_dir) - download_file('allpvoghmms.h3m', base_url, out_dir) - download_file('allpvoghmms.h3p', base_url, out_dir) + download_file("allpvoghmms", base_url, out_dir) + download_file("allpvoghmms.h3f", base_url, out_dir) + download_file("allpvoghmms.h3i", base_url, out_dir) + download_file("allpvoghmms.h3m", base_url, out_dir) + download_file("allpvoghmms.h3p", base_url, out_dir) class SetupHelper(object): @@ -104,14 +97,14 @@ def _locate(self, *args, **kwargs): if not self._dont_update_db: try: print( - 'If you do not want to run sudo, use the following command to configure Phigaro:' + "If you do not want to run sudo, use the following command to configure Phigaro:" ) - print(' phigaro-setup --no-updatedb') + print(" phigaro-setup --no-updatedb") with sh.contrib.sudo: sh.updatedb() self._dont_update_db = True except sh.ErrorReturnCode_1: - print('Invalid password') + print("Invalid password") exit(1) try: return [s.rstrip() for s in sh.locate(*args, **kwargs)] @@ -119,8 +112,8 @@ def _locate(self, *args, **kwargs): return [] def _find_binary(self, name, options_message, raise_if_not_found): - locations = [sh.which(name) or ''] + self._locate( - '-b', '-r', '^{}$'.format(name) + locations = [sh.which(name) or ""] + self._locate( + "-b", "-r", "^{}$".format(name) ) locations = [l.rstrip() for l in locations if l.rstrip()] @@ -128,32 +121,37 @@ def _find_binary(self, name, options_message, raise_if_not_found): # raise raise_if_not_found() print(raise_if_not_found) which_program = ( - 'prodigal' if 'Prodigal' in raise_if_not_found else 'hmmsearch' + "prodigal" if "Prodigal" in raise_if_not_found else "hmmsearch" ) - locations = input('Write a full path to {}:'.format(which_program)) + locations = input("Write a full path to {}:".format(which_program)) return locations - locations.append('Add another path manually') - return _choose_option(message=options_message, options=locations,) + locations.append("Add another path manually") + return _choose_option( + message=options_message, + options=locations, + ) - def _setup_prodigal(self,): + def _setup_prodigal( + self, + ): prodigal_location = self._find_binary( - name='prodigal', - options_message='Please select appropriate Prodigal location', + name="prodigal", + options_message="Please select appropriate Prodigal location", raise_if_not_found=ProdigalNotFound.message, ) return { - 'bin': prodigal_location, + "bin": prodigal_location, } def _setup_hmmer(self): hmmsearch_location = self._find_binary( - name='hmmsearch', - options_message='Please select appropriate HMMER location', + name="hmmsearch", + options_message="Please select appropriate HMMER location", raise_if_not_found=HMMERNotFound.message, ) return { - 'bin': hmmsearch_location, + "bin": hmmsearch_location, } def setup(self): @@ -161,21 +159,23 @@ def setup(self): hmmer_params = self._setup_hmmer() return { - 'prodigal': {'bin': prodigal_params['bin'],}, - 'hmmer': { - 'bin': hmmer_params['bin'], - 'e_value_threshold': const.DEFAULT_MAX_EVALUE, + "prodigal": { + "bin": prodigal_params["bin"], + }, + "hmmer": { + "bin": hmmer_params["bin"], + "e_value_threshold": const.DEFAULT_MAX_EVALUE, }, - 'phigaro': { - 'window_len': const.DEFAULT_WINDOW_SIZE, - 'threshold_min_basic': const.DEFAULT_THRESHOLD_MIN_BASIC, - 'threshold_max_basic': const.DEFAULT_THRESHOLD_MAX_BASIC, - 'threshold_min_abs': const.DEFAULT_THRESHOLD_MIN_ABS, - 'threshold_max_abs': const.DEFAULT_THRESHOLD_MAX_ABS, - 'threshold_min_without_gc': const.DEFAULT_THRESHOLD_MIN_WITHOUT_GC, - 'threshold_max_without_gc': const.DEFAULT_THRESHOLD_MAX_WITHOUT_GC, - 'mean_gc': const.DEFAULT_MEAN_GC, - 'penalty_black': const.DEFAULT_PENALTY_BLACK, - 'penalty_white': const.DEFAULT_PENALTY_WHITE, + "phigaro": { + "window_len": const.DEFAULT_WINDOW_SIZE, + "threshold_min_basic": const.DEFAULT_THRESHOLD_MIN_BASIC, + "threshold_max_basic": const.DEFAULT_THRESHOLD_MAX_BASIC, + "threshold_min_abs": const.DEFAULT_THRESHOLD_MIN_ABS, + "threshold_max_abs": const.DEFAULT_THRESHOLD_MAX_ABS, + "threshold_min_without_gc": const.DEFAULT_THRESHOLD_MIN_WITHOUT_GC, + "threshold_max_without_gc": const.DEFAULT_THRESHOLD_MAX_WITHOUT_GC, + "mean_gc": const.DEFAULT_MEAN_GC, + "penalty_black": const.DEFAULT_PENALTY_BLACK, + "penalty_white": const.DEFAULT_PENALTY_WHITE, }, } diff --git a/phigaro/misc/ranges.py b/phigaro/misc/ranges.py index 046e871..1242d66 100644 --- a/phigaro/misc/ranges.py +++ b/phigaro/misc/ranges.py @@ -74,7 +74,7 @@ def jakkard_index(ranges1, ranges2): if intersection_len != 0 and union_len == 0: print(ranges1, ranges2) - raise Exception('union error') + raise Exception("union error") if intersection_len == 0: return 0 @@ -92,17 +92,13 @@ def minus(ranges1, ranges2): max_len = max(ranges1[-1][1], ranges2[-1][1]) + 1 ranges2 = intersection(ranges1, ranges2) ranges2 = negate(ranges2, max_len) - ranges2 = [ - (begin + 1, end - 1) for (begin, end) in ranges2 if end - begin >= 2 - ] + ranges2 = [(begin + 1, end - 1) for (begin, end) in ranges2 if end - begin >= 2] for (begin, end) in intersection(ranges1, ranges2): yield (begin, end) def true_positives_rate(test_ranges, real_ranges): - return len_ranges(intersection(test_ranges, real_ranges)) / len_ranges( - real_ranges - ) + return len_ranges(intersection(test_ranges, real_ranges)) / len_ranges(real_ranges) def false_positives_rate(test_ranges, real_ranges, max_len=None): diff --git a/phigaro/misc/vis.py b/phigaro/misc/vis.py index f7f9951..8707e9e 100644 --- a/phigaro/misc/vis.py +++ b/phigaro/misc/vis.py @@ -21,7 +21,12 @@ def plot_scores(scores, title, real_phage_coords=None): if real_phage_coords is not None: colors = _make_coords_colors(len(scores), real_phage_coords) data = Bar( - x=indices, y=scores + 0.1, name=title, marker=dict(color=colors,) + x=indices, + y=scores + 0.1, + name=title, + marker=dict( + color=colors, + ), ) return data @@ -30,23 +35,30 @@ def plot_scores(scores, title, real_phage_coords=None): def plot_phage(phage, title): ind = np.arange(len(phage)) int_phage = [c + 0.1 for c in phage] - data = Bar(x=ind, y=int_phage, marker=dict(color='black',), name=title) + data = Bar( + x=ind, + y=int_phage, + marker=dict( + color="black", + ), + name=title, + ) return data def _make_rects(coords, ymin, ymax, fillcolor, opacity): return [ dict( - type='rect', - xref='x', - yref='y', + type="rect", + xref="x", + yref="y", x0=x_begin, y0=ymin, x1=x_end, y1=ymax, fillcolor=fillcolor, opacity=opacity, - line={'width': 0}, + line={"width": 0}, ) for (x_begin, x_end) in coords ] @@ -57,7 +69,7 @@ def plot_scores_and_phage( ): score_func = score_func or score_tri fig = tools.make_subplots(rows=2, cols=1, shared_xaxes=True) - title = 'Scores: window: {}'.format(window_len) + title = "Scores: window: {}".format(window_len) scores = np.array(calc_scores(phage, window_len, score_func)) ranges = [] @@ -65,17 +77,17 @@ def plot_scores_and_phage( ranges = scan_func(scores) score_fig = plot_scores(scores, title, real_phage_coords=None) - phage_fig = plot_phage(phage, 'Phage') + phage_fig = plot_phage(phage, "Phage") fig.append_trace(score_fig, 1, 1) fig.append_trace(phage_fig, 2, 1) ymax = window_len / 2 if real_phage_coords is not None or ranges: - fig['layout'].update( + fig["layout"].update( dict( - shapes=_make_rects(ranges, ymax, 'rgb(50, 171, 96)', 0.5) - + _make_rects(real_phage_coords or [], ymax, '#ff0000', 0.5) + shapes=_make_rects(ranges, ymax, "rgb(50, 171, 96)", 0.5) + + _make_rects(real_phage_coords or [], ymax, "#ff0000", 0.5) ) ) @@ -87,14 +99,14 @@ def plot_scores_and_phage2( scores, found_phage_coords, real_phage_coords=None, - filename='filename', + filename="filename", ): # real_phage_coords = real_phage_coords or [] fig = tools.make_subplots(rows=2, cols=1, shared_xaxes=True) - title = 'Scores' + title = "Scores" score_fig = plot_scores(scores, title, real_phage_coords=None) - phage_fig = plot_phage(phage, 'Phage') + phage_fig = plot_phage(phage, "Phage") fig.append_trace(score_fig, 1, 1) fig.append_trace(phage_fig, 2, 1) @@ -103,15 +115,13 @@ def plot_scores_and_phage2( # print(len(real_phage_coords), len(found_phage_coords)) if (len(real_phage_coords) + len(found_phage_coords)) != 0: # print('got real coords') - fig['layout'].update( + fig["layout"].update( dict( shapes=_make_rects( - found_phage_coords, ymax * 0.5, ymax * 0.75, '#0000ff', 0.5 - ) - + _make_rects( - real_phage_coords, ymax * 0.75, ymax, '#aaaa00', 0.5 + found_phage_coords, ymax * 0.5, ymax * 0.75, "#0000ff", 0.5 ) + + _make_rects(real_phage_coords, ymax * 0.75, ymax, "#aaaa00", 0.5) ) ) - py.plot(fig, filename=filename + '.html') + py.plot(fig, filename=filename + ".html") diff --git a/phigaro/pvogs_taxonomy.json b/phigaro/pvogs_taxonomy.json new file mode 100644 index 0000000..d9b5228 --- /dev/null +++ b/phigaro/pvogs_taxonomy.json @@ -0,0 +1 @@ +{"pvogs_taxonomy": {"VOG1544": 1, "VOG1547": 1, "VOG0819": 1, "VOG1543": 1, "VOG0816": 1, "VOG0817": 1, "VOG0367": 0, "VOG0364": 0, "VOG0813": 1, "VOG0568": 0, "VOG0569": 0, "VOG0564": 1, "VOG0566": 0, "VOG0567": 0, "VOG0562": 1, "VOG1540": 1, "VOG4699": 0, "VOG2706": 1, "VOG2704": 1, "VOG2702": 1, "VOG2703": 1, "VOG2700": 1, "VOG2701": 1, "VOG1112": 1, "VOG0811": 1, "VOG0709": 0, "VOG1386": 2, "VOG1383": 0, "VOG1141": 1, "VOG1143": 1, "VOG1142": 1, "VOG1145": 1, "VOG1144": 1, "VOG1147": 1, "VOG1146": 1, "VOG1149": 1, "VOG1148": 1, "VOG0493": 0, "VOG0495": 0, "VOG0497": 0, "VOG2663": 1, "VOG0142": 0, "VOG0143": 0, "VOG0141": 0, "VOG0144": 0, "VOG0145": 0, "VOG0639": 2, "VOG3140": 0, "VOG0384": 0, "VOG5288": 0, "VOG5289": 0, "VOG0382": 0, "VOG2669": 1, "VOG5281": 0, "VOG0388": 0, "VOG0389": 0, "VOG5284": 0, "VOG5285": 0, "VOG5518": 0, "VOG5512": 0, "VOG5513": 0, "VOG5510": 0, "VOG5516": 0, "VOG5517": 0, "VOG5514": 0, "VOG5515": 0, "VOG4649": 1, "VOG4648": 1, "VOG4399": 0, "VOG5267": 0, "VOG5260": 1, "VOG5261": 0, "VOG5263": 0, "VOG4641": 1, "VOG4390": 0, "VOG4397": 0, "VOG4644": 0, "VOG4647": 2, "VOG4646": 0, "VOG3083": 0, "VOG4248": 0, "VOG0038": 2, "VOG0037": 2, "VOG0034": 2, "VOG0035": 2, "VOG0030": 2, "VOG0031": 2, "VOG5604": 1, "VOG5605": 2, "VOG5602": 2, "VOG5603": 0, "VOG5600": 1, "VOG5601": 1, "VOG4802": 1, "VOG4801": 0, "VOG4800": 0, "VOG4805": 1, "VOG4804": 1, "VOG4808": 2, "VOG4944": 1, "VOG5869": 0, "VOG5866": 0, "VOG5867": 0, "VOG5865": 1, "VOG5862": 0, "VOG5863": 0, "VOG5860": 0, "VOG5861": 0, "VOG5462": 0, "VOG5466": 1, "VOG5467": 1, "VOG5464": 0, "VOG5465": 1, "VOG5468": 1, "VOG5469": 1, "VOG4733": 1, "VOG4735": 1, "VOG4734": 0, "VOG4737": 0, "VOG4736": 0, "VOG4739": 1, "VOG4738": 0, "VOG3423": 1, "VOG4126": 0, "VOG4025": 0, "VOG3048": 1, "VOG3049": 1, "VOG4021": 0, "VOG4020": 0, "VOG4022": 0, "VOG3042": 1, "VOG3731": 2, "VOG3044": 1, "VOG3045": 1, "VOG3557": 1, "VOG3559": 1, "VOG4667": 2, "VOG5128": 1, "VOG3136": 0, "VOG3137": 0, "VOG3130": 0, "VOG3138": 0, "VOG2553": 1, "VOG2552": 1, "VOG1609": 1, "VOG1979": 0, "VOG2555": 1, "VOG2554": 1, "VOG1602": 1, "VOG1975": 0, "VOG1600": 1, "VOG2558": 1, "VOG1607": 1, "VOG1604": 1, "VOG1605": 1, "VOG2390": 2, "VOG1775": 0, "VOG1987": 0, "VOG2171": 1, "VOG2170": 1, "VOG2173": 1, "VOG2172": 1, "VOG2174": 1, "VOG2177": 1, "VOG0701": 1, "VOG2178": 1, "VOG1636": 1, "VOG3958": 1, "VOG5893": 0, "VOG0704": 1, "VOG5327": 1, "VOG3957": 1, "VOG5326": 0, "VOG4627": 1, "VOG4626": 1, "VOG5323": 0, "VOG1803": 0, "VOG0821": 1, "VOG5322": 0, "VOG0558": 1, "VOG4895": 0, "VOG5486": 1, "VOG0557": 1, "VOG0556": 1, "VOG2778": 1, "VOG2773": 1, "VOG2771": 1, "VOG2770": 1, "VOG2774": 1, "VOG0953": 2, "VOG0952": 2, "VOG0731": 1, "VOG3390": 1, "VOG1396": 2, "VOG1391": 0, "VOG1392": 2, "VOG2607": 1, "VOG2606": 1, "VOG2602": 1, "VOG1158": 1, "VOG1159": 1, "VOG1156": 1, "VOG1157": 1, "VOG1154": 1, "VOG1152": 1, "VOG1153": 1, "VOG1150": 1, "VOG1151": 1, "VOG0603": 4, "VOG0609": 2, "VOG5643": 0, "VOG5253": 0, "VOG5252": 0, "VOG5255": 0, "VOG5254": 0, "VOG5257": 0, "VOG5256": 0, "VOG5259": 1, "VOG5706": 2, "VOG5705": 2, "VOG5704": 2, "VOG5703": 2, "VOG5702": 1, "VOG5700": 1, "VOG5383": 0, "VOG5381": 1, "VOG5380": 0, "VOG5387": 0, "VOG5386": 0, "VOG0043": 0, "VOG0041": 2, "VOG5388": 0, "VOG4254": 0, "VOG5673": 0, "VOG5672": 0, "VOG5671": 0, "VOG5670": 1, "VOG5677": 1, "VOG5676": 1, "VOG5675": 0, "VOG5674": 0, "VOG5679": 1, "VOG5678": 1, "VOG4810": 0, "VOG4811": 1, "VOG4812": 1, "VOG4815": 1, "VOG1100": 1, "VOG5811": 0, "VOG5810": 0, "VOG5817": 1, "VOG5816": 0, "VOG5815": 0, "VOG1103": 1, "VOG4656": 2, "VOG4657": 2, "VOG4654": 0, "VOG4655": 1, "VOG4653": 0, "VOG4651": 1, "VOG5497": 0, "VOG5496": 1, "VOG5495": 1, "VOG5493": 2, "VOG5492": 1, "VOG5490": 1, "VOG4728": 1, "VOG3382": 4, "VOG4726": 2, "VOG4727": 2, "VOG4724": 0, "VOG4725": 1, "VOG4722": 0, "VOG4723": 0, "VOG4721": 0, "VOG5927": 0, "VOG5926": 1, "VOG5924": 0, "VOG5922": 0, "VOG5921": 0, "VOG5920": 0, "VOG5929": 0, "VOG3709": 1, "VOG4030": 0, "VOG4031": 0, "VOG4036": 0, "VOG4037": 0, "VOG4034": 0, "VOG4038": 0, "VOG4039": 0, "VOG3569": 1, "VOG3090": 0, "VOG3094": 0, "VOG3099": 0, "VOG3654": 1, "VOG1313": 1, "VOG3143": 0, "VOG3142": 0, "VOG3141": 0, "VOG3416": 1, "VOG3411": 1, "VOG3410": 1, "VOG3413": 1, "VOG2945": 1, "VOG2940": 1, "VOG2943": 1, "VOG2540": 1, "VOG1948": 0, "VOG1683": 0, "VOG2543": 1, "VOG2544": 1, "VOG2545": 1, "VOG2547": 1, "VOG2548": 1, "VOG2549": 1, "VOG1944": 0, "VOG5287": 0, "VOG3899": 0, "VOG2383": 2, "VOG2380": 2, "VOG2381": 2, "VOG2386": 2, "VOG2384": 2, "VOG2385": 2, "VOG3891": 0, "VOG3890": 0, "VOG3892": 0, "VOG3894": 0, "VOG3921": 1, "VOG2439": 0, "VOG1708": 0, "VOG3964": 1, "VOG3967": 1, "VOG3966": 1, "VOG3961": 1, "VOG3960": 1, "VOG2168": 1, "VOG3962": 1, "VOG2167": 1, "VOG3969": 1, "VOG3968": 1, "VOG4881": 0, "VOG0546": 1, "VOG0547": 1, "VOG0544": 1, "VOG0542": 1, "VOG1836": 0, "VOG5266": 0, "VOG0548": 1, "VOG4398": 0, "VOG2768": 1, "VOG2761": 1, "VOG2763": 1, "VOG2764": 1, "VOG2765": 1, "VOG2766": 1, "VOG2767": 1, "VOG1493": 0, "VOG4393": 0, "VOG1491": 0, "VOG1490": 0, "VOG0946": 2, "VOG0947": 2, "VOG0723": 1, "VOG0720": 1, "VOG4642": 2, "VOG0727": 1, "VOG0724": 1, "VOG0725": 1, "VOG4645": 0, "VOG4395": 0, "VOG4394": 0, "VOG2616": 1, "VOG2617": 1, "VOG2610": 1, "VOG2612": 1, "VOG2613": 1, "VOG1123": 1, "VOG1122": 1, "VOG1121": 1, "VOG1120": 1, "VOG2618": 1, "VOG1126": 1, "VOG1125": 1, "VOG1124": 1, "VOG0832": 1, "VOG5451": 0, "VOG4299": 0, "VOG1237": 1, "VOG1236": 1, "VOG1234": 1, "VOG1233": 1, "VOG1232": 1, "VOG2978": 1, "VOG1238": 1, "VOG5718": 0, "VOG5719": 0, "VOG5248": 1, "VOG5249": 0, "VOG5714": 0, "VOG5247": 1, "VOG5244": 0, "VOG5717": 0, "VOG5710": 1, "VOG5711": 2, "VOG5240": 0, "VOG5713": 1, "VOG5390": 0, "VOG5391": 1, "VOG5392": 0, "VOG5393": 0, "VOG5394": 1, "VOG5396": 0, "VOG5397": 1, "VOG5398": 0, "VOG5399": 1, "VOG1446": 0, "VOG5660": 1, "VOG5664": 0, "VOG5667": 1, "VOG5669": 1, "VOG4282": 0, "VOG4284": 0, "VOG4536": 0, "VOG4535": 0, "VOG4533": 0, "VOG4530": 0, "VOG5808": 0, "VOG5809": 0, "VOG0460": 0, "VOG5800": 0, "VOG5801": 0, "VOG5802": 0, "VOG5803": 0, "VOG5804": 0, "VOG5805": 0, "VOG5806": 0, "VOG5807": 0, "VOG0462": 0, "VOG0920": 1, "VOG1448": 0, "VOG0204": 1, "VOG4622": 1, "VOG4621": 1, "VOG4620": 0, "VOG5488": 0, "VOG5489": 0, "VOG4625": 0, "VOG4624": 1, "VOG5484": 1, "VOG5485": 1, "VOG4629": 1, "VOG4628": 1, "VOG5481": 1, "VOG5482": 1, "VOG5483": 1, "VOG4759": 0, "VOG4758": 0, "VOG4753": 1, "VOG4751": 1, "VOG4750": 1, "VOG4757": 5, "VOG4754": 0, "VOG5930": 0, "VOG2573": 1, "VOG3717": 1, "VOG3714": 1, "VOG3715": 1, "VOG2644": 1, "VOG3710": 1, "VOG3711": 1, "VOG5947": 0, "VOG5414": 1, "VOG3088": 0, "VOG3086": 0, "VOG5941": 0, "VOG3085": 0, "VOG3082": 0, "VOG5487": 0, "VOG4419": 0, "VOG5286": 0, "VOG4148": 0, "VOG3150": 0, "VOG3151": 0, "VOG3153": 0, "VOG3155": 0, "VOG2971": 1, "VOG2977": 1, "VOG0868": 0, "VOG2579": 1, "VOG2574": 1, "VOG2577": 1, "VOG2576": 1, "VOG2571": 1, "VOG3888": 0, "VOG4412": 0, "VOG2379": 2, "VOG2378": 2, "VOG2377": 2, "VOG2375": 2, "VOG2371": 2, "VOG2370": 0, "VOG1714": 0, "VOG1719": 0, "VOG3972": 1, "VOG3973": 1, "VOG2119": 1, "VOG3971": 1, "VOG3976": 1, "VOG3974": 1, "VOG2113": 2, "VOG3978": 1, "VOG3979": 1, "VOG2117": 2, "VOG2116": 2, "VOG2115": 2, "VOG2114": 2, "VOG1956": 0, "VOG4128": 0, "VOG1952": 0, "VOG1953": 0, "VOG1950": 0, "VOG1951": 0, "VOG0532": 1, "VOG0534": 1, "VOG0539": 1, "VOG1821": 0, "VOG2027": 1, "VOG2025": 1, "VOG2024": 1, "VOG2023": 1, "VOG2021": 1, "VOG2020": 1, "VOG1005": 0, "VOG1006": 0, "VOG1001": 0, "VOG2029": 1, "VOG2596": 1, "VOG2595": 1, "VOG2594": 1, "VOG2593": 1, "VOG2592": 1, "VOG2591": 1, "VOG2590": 1, "VOG1483": 0, "VOG1487": 0, "VOG1489": 0, "VOG0997": 0, "VOG0448": 0, "VOG0447": 0, "VOG0445": 0, "VOG0444": 0, "VOG0443": 0, "VOG0441": 0, "VOG2621": 1, "VOG2620": 1, "VOG2622": 1, "VOG2624": 1, "VOG2626": 1, "VOG2629": 1, "VOG2628": 1, "VOG1133": 1, "VOG1137": 1, "VOG0843": 1, "VOG0842": 1, "VOG0840": 1, "VOG0847": 1, "VOG0848": 1, "VOG0668": 0, "VOG0661": 0, "VOG1348": 0, "VOG0195": 1, "VOG0194": 1, "VOG0196": 1, "VOG1224": 1, "VOG1225": 1, "VOG1227": 1, "VOG1222": 1, "VOG1223": 1, "VOG1229": 1, "VOG5728": 1, "VOG5239": 0, "VOG5238": 0, "VOG5233": 0, "VOG5232": 1, "VOG5723": 2, "VOG5230": 0, "VOG5237": 0, "VOG5236": 0, "VOG5727": 1, "VOG5726": 0, "VOG0065": 0, "VOG0064": 0, "VOG0067": 0, "VOG0066": 0, "VOG0061": 0, "VOG0069": 0, "VOG0068": 0, "VOG0265": 2, "VOG0264": 2, "VOG0263": 2, "VOG0261": 2, "VOG5659": 0, "VOG5658": 0, "VOG5129": 0, "VOG3036": 1, "VOG5127": 0, "VOG5654": 0, "VOG5125": 1, "VOG5656": 0, "VOG5651": 1, "VOG5650": 0, "VOG5653": 0, "VOG5652": 0, "VOG5835": 1, "VOG5834": 1, "VOG5345": 1, "VOG5836": 1, "VOG5831": 1, "VOG5342": 0, "VOG5341": 0, "VOG5832": 1, "VOG4524": 0, "VOG4525": 0, "VOG4294": 0, "VOG4295": 0, "VOG5839": 1, "VOG5838": 1, "VOG5349": 1, "VOG5348": 1, "VOG4630": 0, "VOG4631": 0, "VOG4632": 1, "VOG4635": 2, "VOG4636": 1, "VOG4637": 1, "VOG4638": 1, "VOG4639": 1, "VOG4748": 1, "VOG4749": 0, "VOG4740": 1, "VOG4742": 0, "VOG4744": 0, "VOG3362": 6, "VOG4747": 0, "VOG5900": 0, "VOG5902": 2, "VOG5904": 0, "VOG5907": 0, "VOG5909": 1, "VOG5908": 1, "VOG4788": 0, "VOG5196": 0, "VOG5625": 1, "VOG5195": 0, "VOG5193": 0, "VOG2963": 1, "VOG2961": 1, "VOG3167": 0, "VOG3162": 0, "VOG2921": 1, "VOG3212": 1, "VOG2560": 1, "VOG2561": 1, "VOG2566": 1, "VOG2567": 1, "VOG2565": 1, "VOG0439": 0, "VOG2364": 0, "VOG2361": 2, "VOG1829": 0, "VOG4027": 0, "VOG4026": 0, "VOG0925": 1, "VOG3738": 2, "VOG3739": 2, "VOG0436": 0, "VOG5430": 1, "VOG3989": 1, "VOG3988": 1, "VOG2100": 2, "VOG2101": 2, "VOG3985": 1, "VOG2103": 2, "VOG2104": 2, "VOG2105": 2, "VOG3981": 1, "VOG2107": 2, "VOG2290": 0, "VOG1921": 0, "VOG1920": 0, "VOG1924": 0, "VOG1589": 1, "VOG0521": 1, "VOG0523": 1, "VOG0524": 1, "VOG0525": 1, "VOG0526": 1, "VOG0528": 1, "VOG1580": 1, "VOG1583": 1, "VOG1857": 0, "VOG1584": 1, "VOG1587": 1, "VOG2036": 1, "VOG2033": 1, "VOG2038": 1, "VOG2039": 1, "VOG2585": 1, "VOG2587": 1, "VOG2580": 1, "VOG2581": 1, "VOG2582": 1, "VOG5435": 0, "VOG2588": 1, "VOG2589": 1, "VOG1105": 1, "VOG1456": 0, "VOG1107": 1, "VOG1101": 1, "VOG0459": 0, "VOG1451": 0, "VOG1102": 1, "VOG0454": 0, "VOG0456": 0, "VOG0457": 0, "VOG0450": 0, "VOG1108": 1, "VOG0452": 0, "VOG2639": 1, "VOG2634": 1, "VOG2632": 1, "VOG2633": 1, "VOG2631": 1, "VOG0850": 1, "VOG0183": 1, "VOG0181": 1, "VOG0679": 0, "VOG1210": 1, "VOG1213": 1, "VOG1212": 1, "VOG1215": 1, "VOG5440": 1, "VOG4917": 0, "VOG5228": 0, "VOG5229": 0, "VOG5220": 0, "VOG4911": 0, "VOG5223": 1, "VOG5224": 0, "VOG5225": 0, "VOG5226": 0, "VOG0079": 0, "VOG0273": 2, "VOG5648": 0, "VOG5649": 0, "VOG4729": 1, "VOG5139": 0, "VOG5134": 0, "VOG5135": 1, "VOG5641": 0, "VOG5130": 0, "VOG5131": 0, "VOG5132": 0, "VOG5645": 0, "VOG5354": 1, "VOG5823": 0, "VOG5356": 0, "VOG5357": 0, "VOG5826": 2, "VOG5827": 1, "VOG5352": 1, "VOG5825": 2, "VOG4510": 0, "VOG5828": 1, "VOG5358": 1, "VOG5359": 0, "VOG2819": 1, "VOG4199": 0, "VOG4195": 0, "VOG4194": 0, "VOG4191": 0, "VOG4190": 0, "VOG4193": 0, "VOG4192": 0, "VOG5737": 0, "VOG5735": 0, "VOG5732": 1, "VOG4608": 1, "VOG5730": 2, "VOG4605": 1, "VOG4604": 1, "VOG4607": 1, "VOG4601": 1, "VOG5738": 0, "VOG4602": 1, "VOG4177": 0, "VOG4176": 0, "VOG4173": 0, "VOG4172": 0, "VOG4171": 0, "VOG3374": 2, "VOG3371": 2, "VOG4179": 0, "VOG4178": 0, "VOG1981": 0, "VOG5919": 1, "VOG5916": 0, "VOG5914": 0, "VOG5915": 0, "VOG5912": 0, "VOG5913": 0, "VOG5910": 1, "VOG5911": 1, "VOG1505": 0, "VOG0449": 0, "VOG4137": 0, "VOG0996": 0, "VOG2550": 1, "VOG2913": 1, "VOG2912": 1, "VOG2910": 1, "VOG2917": 1, "VOG5742": 0, "VOG2919": 1, "VOG2918": 1, "VOG5741": 0, "VOG4775": 0, "VOG4774": 1, "VOG3179": 1, "VOG1603": 1, "VOG3172": 0, "VOG5747": 2, "VOG4778": 0, "VOG3174": 1, "VOG5210": 2, "VOG3206": 1, "VOG1601": 1, "VOG5213": 0, "VOG5212": 1, "VOG3196": 1, "VOG3193": 1, "VOG2350": 2, "VOG2355": 2, "VOG5749": 0, "VOG2357": 2, "VOG5748": 0, "VOG4617": 0, "VOG2829": 1, "VOG2828": 1, "VOG2827": 1, "VOG2825": 1, "VOG2824": 1, "VOG2823": 1, "VOG2822": 1, "VOG2821": 1, "VOG2820": 1, "VOG2131": 0, "VOG2130": 0, "VOG5404": 1, "VOG1930": 0, "VOG5331": 0, "VOG1849": 0, "VOG1024": 0, "VOG0514": 1, "VOG0511": 0, "VOG0510": 0, "VOG2001": 0, "VOG2000": 0, "VOG2002": 0, "VOG2005": 0, "VOG2004": 0, "VOG2006": 0, "VOG5406": 2, "VOG5844": 1, "VOG1400": 2, "VOG0469": 0, "VOG1113": 1, "VOG1110": 1, "VOG1447": 0, "VOG1443": 0, "VOG0461": 0, "VOG5334": 0, "VOG0463": 0, "VOG1119": 1, "VOG0465": 0, "VOG0464": 0, "VOG0466": 0, "VOG2649": 1, "VOG2648": 1, "VOG2643": 1, "VOG2642": 1, "VOG2641": 1, "VOG2645": 1, "VOG4864": 0, "VOG1596": 1, "VOG1597": 1, "VOG1594": 1, "VOG1595": 1, "VOG1593": 1, "VOG1590": 1, "VOG1591": 1, "VOG0861": 1, "VOG1598": 1, "VOG1599": 1, "VOG0645": 2, "VOG0644": 2, "VOG0643": 2, "VOG0642": 2, "VOG0887": 1, "VOG0889": 1, "VOG0888": 1, "VOG1208": 1, "VOG1209": 1, "VOG1206": 1, "VOG1207": 1, "VOG5585": 1, "VOG5584": 1, "VOG5587": 1, "VOG5586": 1, "VOG5581": 2, "VOG5580": 1, "VOG5583": 2, "VOG5582": 2, "VOG5589": 1, "VOG5588": 1, "VOG0080": 0, "VOG5361": 1, "VOG5360": 2, "VOG5362": 0, "VOG5365": 0, "VOG5364": 1, "VOG5367": 2, "VOG5366": 0, "VOG5368": 1, "VOG5691": 2, "VOG5690": 2, "VOG5693": 2, "VOG5692": 2, "VOG5695": 1, "VOG5694": 0, "VOG5697": 0, "VOG5696": 1, "VOG5699": 1, "VOG5698": 0, "VOG4188": 0, "VOG4189": 0, "VOG4181": 0, "VOG4186": 0, "VOG4184": 0, "VOG5743": 0, "VOG5214": 2, "VOG5217": 0, "VOG4619": 1, "VOG5211": 2, "VOG5746": 0, "VOG5745": 0, "VOG5744": 0, "VOG4612": 1, "VOG4613": 0, "VOG4610": 2, "VOG4611": 1, "VOG5219": 0, "VOG5218": 0, "VOG4164": 0, "VOG4165": 0, "VOG4166": 0, "VOG4167": 0, "VOG4161": 0, "VOG4162": 0, "VOG3340": 2, "VOG4168": 0, "VOG5969": 0, "VOG5968": 0, "VOG5963": 0, "VOG5962": 0, "VOG5961": 0, "VOG5960": 0, "VOG5967": 0, "VOG5966": 0, "VOG5964": 0, "VOG3741": 2, "VOG3740": 2, "VOG3742": 2, "VOG4507": 0, "VOG4504": 0, "VOG4505": 0, "VOG4503": 0, "VOG2900": 1, "VOG2901": 1, "VOG2902": 1, "VOG5201": 0, "VOG2906": 1, "VOG2907": 1, "VOG4762": 0, "VOG4760": 0, "VOG4761": 0, "VOG4766": 2, "VOG4764": 0, "VOG4765": 0, "VOG4768": 0, "VOG2344": 2, "VOG2341": 2, "VOG2349": 2, "VOG2838": 1, "VOG5720": 0, "VOG2834": 1, "VOG4488": 0, "VOG2830": 1, "VOG5231": 0, "VOG2120": 1, "VOG2121": 1, "VOG2127": 0, "VOG5725": 1, "VOG2128": 0, "VOG2129": 0, "VOG5724": 1, "VOG5234": 0, "VOG1909": 1, "VOG1907": 1, "VOG1901": 1, "VOG1900": 1, "VOG1903": 1, "VOG1902": 1, "VOG1053": 2, "VOG1052": 2, "VOG3685": 1, "VOG0509": 0, "VOG1057": 2, "VOG1055": 2, "VOG0506": 0, "VOG0507": 0, "VOG2018": 1, "VOG2012": 0, "VOG2011": 0, "VOG5265": 1, "VOG4296": 0, "VOG0476": 0, "VOG0477": 0, "VOG0474": 0, "VOG0475": 0, "VOG0473": 0, "VOG0471": 0, "VOG0479": 0, "VOG1472": 0, "VOG1474": 1, "VOG1478": 1, "VOG2659": 1, "VOG2651": 1, "VOG2652": 1, "VOG2653": 1, "VOG2655": 1, "VOG2656": 1, "VOG1418": 1, "VOG0870": 0, "VOG4704": 1, "VOG0651": 1, "VOG0656": 1, "VOG0658": 1, "VOG0894": 1, "VOG0897": 1, "VOG0890": 1, "VOG0893": 1, "VOG1411": 0, "VOG1278": 1, "VOG5592": 0, "VOG5593": 1, "VOG5590": 8, "VOG5591": 0, "VOG5596": 2, "VOG5594": 0, "VOG5595": 1, "VOG5599": 0, "VOG0095": 0, "VOG5657": 0, "VOG5124": 1, "VOG1302": 1, "VOG0258": 2, "VOG0259": 2, "VOG0254": 2, "VOG5347": 1, "VOG5378": 1, "VOG5346": 1, "VOG5376": 2, "VOG5377": 0, "VOG5374": 1, "VOG5375": 1, "VOG5372": 1, "VOG5371": 0, "VOG5344": 0, "VOG5688": 0, "VOG5689": 2, "VOG5686": 1, "VOG5687": 1, "VOG5684": 0, "VOG5685": 0, "VOG5682": 0, "VOG5683": 0, "VOG5680": 5, "VOG5681": 0, "VOG5428": 0, "VOG5429": 0, "VOG5750": 0, "VOG5203": 0, "VOG5200": 0, "VOG5753": 1, "VOG5206": 0, "VOG5755": 0, "VOG5756": 0, "VOG5205": 0, "VOG4371": 0, "VOG5759": 1, "VOG5208": 0, "VOG4372": 0, "VOG5424": 0, "VOG4151": 0, "VOG4150": 0, "VOG4938": 0, "VOG4154": 0, "VOG4409": 0, "VOG4408": 0, "VOG4159": 0, "VOG4406": 0, "VOG3682": 2, "VOG3683": 2, "VOG4403": 0, "VOG4402": 0, "VOG4401": 0, "VOG4521": 0, "VOG5978": 0, "VOG5979": 0, "VOG5970": 0, "VOG5971": 0, "VOG5972": 0, "VOG5973": 1, "VOG5974": 1, "VOG5975": 0, "VOG5976": 0, "VOG5977": 0, "VOG4083": 0, "VOG4080": 0, "VOG4086": 0, "VOG4085": 0, "VOG4084": 0, "VOG4088": 0, "VOG3756": 2, "VOG3754": 2, "VOG3755": 2, "VOG4576": 1, "VOG4575": 0, "VOG4574": 1, "VOG4578": 1, "VOG4889": 2, "VOG4888": 2, "VOG2935": 1, "VOG4882": 1, "VOG2937": 1, "VOG4880": 0, "VOG4887": 0, "VOG2930": 1, "VOG4885": 0, "VOG4884": 1, "VOG3356": 6, "VOG5419": 1, "VOG3355": 6, "VOG4799": 1, "VOG4798": 0, "VOG4794": 0, "VOG4793": 1, "VOG4792": 0, "VOG4790": 1, "VOG2332": 1, "VOG2803": 1, "VOG2802": 1, "VOG2804": 1, "VOG2489": 1, "VOG1993": 0, "VOG2485": 1, "VOG2484": 1, "VOG2487": 1, "VOG1520": 1, "VOG2481": 1, "VOG2482": 1, "VOG1996": 0, "VOG4208": 0, "VOG5330": 0, "VOG4946": 0, "VOG1919": 0, "VOG1629": 1, "VOG1916": 0, "VOG1917": 0, "VOG5885": 0, "VOG1044": 1, "VOG1045": 6, "VOG1049": 1, "VOG5887": 0, "VOG4201": 0, "VOG1681": 0, "VOG1684": 0, "VOG4200": 0, "VOG2791": 0, "VOG2793": 0, "VOG2792": 0, "VOG2795": 0, "VOG2794": 0, "VOG3824": 0, "VOG3822": 0, "VOG3843": 0, "VOG3847": 0, "VOG0403": 0, "VOG0402": 0, "VOG0401": 0, "VOG0400": 0, "VOG0407": 0, "VOG0404": 0, "VOG0409": 0, "VOG0408": 0, "VOG2665": 1, "VOG2661": 1, "VOG2660": 1, "VOG1468": 0, "VOG1467": 0, "VOG1462": 0, "VOG2668": 1, "VOG1460": 0, "VOG1461": 0, "VOG2463": 1, "VOG1860": 0, "VOG1861": 0, "VOG1867": 0, "VOG1864": 0, "VOG0315": 1, "VOG0311": 1, "VOG1261": 1, "VOG1262": 1, "VOG1263": 1, "VOG1266": 1, "VOG0793": 1, "VOG0792": 1, "VOG0791": 1, "VOG0790": 1, "VOG0797": 1, "VOG0795": 1, "VOG0794": 1, "VOG0799": 1, "VOG5569": 1, "VOG5565": 0, "VOG5564": 0, "VOG5561": 2, "VOG5560": 0, "VOG5162": 0, "VOG5161": 0, "VOG5167": 0, "VOG5166": 0, "VOG5165": 0, "VOG5164": 0, "VOG5169": 0, "VOG5309": 0, "VOG5308": 0, "VOG5303": 1, "VOG5302": 0, "VOG5307": 0, "VOG5305": 2, "VOG0134": 0, "VOG0133": 0, "VOG0131": 0, "VOG0139": 0, "VOG5768": 0, "VOG5765": 0, "VOG5766": 0, "VOG5761": 0, "VOG5760": 0, "VOG5763": 0, "VOG5945": 1, "VOG5416": 0, "VOG5415": 0, "VOG5946": 0, "VOG4418": 0, "VOG5940": 1, "VOG5943": 0, "VOG4149": 0, "VOG4146": 0, "VOG4416": 0, "VOG4417": 0, "VOG4410": 0, "VOG4411": 0, "VOG4140": 0, "VOG5784": 0, "VOG5783": 0, "VOG5780": 1, "VOG5789": 0, "VOG4090": 0, "VOG4093": 0, "VOG4094": 0, "VOG4097": 0, "VOG4099": 0, "VOG4560": 1, "VOG4569": 1, "VOG0238": 0, "VOG3785": 0, "VOG3789": 0, "VOG3788": 0, "VOG3034": 1, "VOG3313": 2, "VOG5984": 0, "VOG4898": 0, "VOG4899": 0, "VOG2928": 1, "VOG2929": 1, "VOG4891": 1, "VOG4892": 1, "VOG4893": 0, "VOG4894": 0, "VOG2927": 1, "VOG4896": 0, "VOG4897": 0, "VOG1329": 1, "VOG3327": 0, "VOG4789": 2, "VOG4784": 0, "VOG4785": 0, "VOG4786": 0, "VOG4787": 0, "VOG4781": 0, "VOG4783": 1, "VOG2320": 2, "VOG2323": 2, "VOG2325": 2, "VOG2326": 2, "VOG3251": 0, "VOG2998": 1, "VOG0117": 0, "VOG2499": 1, "VOG2492": 1, "VOG2493": 1, "VOG2490": 1, "VOG2491": 1, "VOG2497": 1, "VOG2494": 1, "VOG2785": 1, "VOG2783": 1, "VOG2780": 1, "VOG1074": 2, "VOG1076": 2, "VOG1073": 2, "VOG2078": 1, "VOG2072": 0, "VOG1673": 1, "VOG2075": 1, "VOG1670": 1, "VOG5258": 1, "VOG0410": 0, "VOG0411": 0, "VOG0412": 0, "VOG0413": 0, "VOG0414": 0, "VOG0415": 0, "VOG0416": 0, "VOG0417": 0, "VOG0418": 0, "VOG2672": 1, "VOG2673": 1, "VOG1419": 1, "VOG2671": 1, "VOG2676": 1, "VOG2674": 1, "VOG2678": 1, "VOG1416": 0, "VOG2474": 1, "VOG4040": 0, "VOG1899": 1, "VOG1898": 1, "VOG1897": 1, "VOG1895": 1, "VOG1893": 1, "VOG1892": 1, "VOG1890": 1, "VOG0374": 0, "VOG1527": 1, "VOG1525": 1, "VOG1256": 1, "VOG1251": 1, "VOG1250": 1, "VOG1252": 1, "VOG1259": 1, "VOG1258": 1, "VOG0302": 2, "VOG1528": 1, "VOG1095": 1, "VOG1094": 1, "VOG1092": 1, "VOG1099": 1, "VOG0784": 1, "VOG0787": 1, "VOG0789": 1, "VOG5578": 1, "VOG5579": 1, "VOG5574": 1, "VOG5575": 1, "VOG5576": 1, "VOG5577": 1, "VOG5570": 1, "VOG5571": 0, "VOG5572": 1, "VOG5573": 1, "VOG5170": 2, "VOG5171": 0, "VOG5172": 0, "VOG5173": 0, "VOG5174": 1, "VOG5175": 0, "VOG5176": 1, "VOG5177": 0, "VOG5178": 0, "VOG5179": 0, "VOG0237": 0, "VOG5389": 0, "VOG5319": 0, "VOG0040": 2, "VOG5310": 0, "VOG5312": 1, "VOG5313": 1, "VOG5314": 0, "VOG5315": 2, "VOG5317": 1, "VOG4526": 0, "VOG0125": 0, "VOG0126": 0, "VOG0127": 0, "VOG0122": 0, "VOG0573": 0, "VOG4319": 1, "VOG0128": 0, "VOG0129": 0, "VOG5778": 0, "VOG5779": 0, "VOG5772": 0, "VOG5770": 0, "VOG5771": 0, "VOG5952": 1, "VOG5405": 0, "VOG4139": 0, "VOG4138": 0, "VOG5400": 1, "VOG5401": 0, "VOG5402": 1, "VOG5403": 1, "VOG4133": 0, "VOG4420": 0, "VOG5958": 1, "VOG4130": 0, "VOG4425": 0, "VOG4136": 0, "VOG4135": 0, "VOG5794": 1, "VOG5795": 1, "VOG5796": 1, "VOG5797": 1, "VOG5791": 0, "VOG5792": 0, "VOG5793": 1, "VOG4951": 0, "VOG4950": 0, "VOG5798": 0, "VOG5799": 0, "VOG4558": 1, "VOG4228": 1, "VOG4555": 1, "VOG4554": 1, "VOG4557": 1, "VOG4553": 1, "VOG4046": 0, "VOG4045": 0, "VOG4044": 0, "VOG4043": 0, "VOG4042": 0, "VOG3798": 0, "VOG3799": 0, "VOG3796": 0, "VOG3797": 0, "VOG3794": 2, "VOG3027": 1, "VOG5950": 0, "VOG3790": 0, "VOG4048": 0, "VOG5957": 0, "VOG4421": 0, "VOG4132": 0, "VOG3339": 2, "VOG4423": 0, "VOG5959": 0, "VOG2318": 2, "VOG2315": 2, "VOG2314": 2, "VOG2317": 2, "VOG2310": 2, "VOG4424": 0, "VOG2861": 1, "VOG2860": 1, "VOG2866": 1, "VOG2864": 1, "VOG1831": 0, "VOG2044": 1, "VOG2041": 1, "VOG2040": 1, "VOG2042": 1, "VOG1063": 2, "VOG2049": 1, "VOG1668": 1, "VOG1666": 1, "VOG1661": 1, "VOG1662": 1, "VOG1663": 1, "VOG1445": 0, "VOG3804": 0, "VOG2312": 2, "VOG3803": 0, "VOG3801": 0, "VOG0429": 0, "VOG0428": 0, "VOG0939": 2, "VOG0425": 0, "VOG0936": 1, "VOG0427": 0, "VOG0426": 0, "VOG0421": 0, "VOG0930": 1, "VOG2689": 1, "VOG2688": 1, "VOG2687": 1, "VOG2686": 1, "VOG2685": 1, "VOG2684": 1, "VOG2683": 1, "VOG2682": 1, "VOG1406": 2, "VOG1407": 2, "VOG2441": 0, "VOG2440": 0, "VOG2444": 0, "VOG2447": 0, "VOG1790": 0, "VOG2448": 0, "VOG1796": 0, "VOG1888": 1, "VOG0689": 1, "VOG0681": 4, "VOG0686": 0, "VOG1242": 1, "VOG1243": 1, "VOG1241": 1, "VOG1246": 1, "VOG1248": 1, "VOG1249": 1, "VOG0337": 7, "VOG1085": 0, "VOG1080": 2, "VOG1088": 0, "VOG4659": 1, "VOG5549": 2, "VOG5548": 0, "VOG5541": 0, "VOG5540": 0, "VOG5543": 1, "VOG5545": 0, "VOG5547": 0, "VOG5546": 0, "VOG0205": 1, "VOG3987": 1, "VOG0207": 1, "VOG0202": 1, "VOG0209": 1, "VOG2102": 2, "VOG3984": 1, "VOG5149": 0, "VOG4041": 0, "VOG1336": 1, "VOG1337": 1, "VOG5147": 0, "VOG5146": 0, "VOG5141": 0, "VOG5140": 0, "VOG5143": 0, "VOG3982": 1, "VOG3024": 1, "VOG3025": 1, "VOG3793": 2, "VOG3791": 0, "VOG0113": 0, "VOG0115": 0, "VOG0114": 0, "VOG4306": 0, "VOG2959": 1, "VOG0118": 0, "VOG5431": 0, "VOG4947": 0, "VOG5433": 1, "VOG5432": 1, "VOG4942": 3, "VOG5434": 2, "VOG5437": 0, "VOG5436": 0, "VOG4120": 0, "VOG4121": 0, "VOG4122": 0, "VOG4123": 0, "VOG4124": 0, "VOG4125": 0, "VOG4948": 0, "VOG4949": 0, "VOG5325": 0, "VOG5892": 0, "VOG5891": 0, "VOG5890": 0, "VOG5897": 0, "VOG5896": 0, "VOG5895": 0, "VOG5894": 0, "VOG5899": 0, "VOG5898": 0, "VOG5329": 0, "VOG5328": 0, "VOG4232": 1, "VOG4054": 0, "VOG4055": 0, "VOG4056": 0, "VOG4050": 0, "VOG4051": 0, "VOG4052": 0, "VOG3010": 1, "VOG4058": 0, "VOG3017": 1, "VOG3016": 1, "VOG3491": 2, "VOG5647": 0, "VOG3653": 1, "VOG2306": 2, "VOG2870": 1, "VOG4032": 0, "VOG2873": 1, "VOG2876": 1, "VOG2877": 1, "VOG2878": 1, "VOG2879": 1, "VOG1581": 1, "VOG0529": 1, "VOG1630": 1, "VOG0913": 1, "VOG2278": 0, "VOG5712": 2, "VOG0393": 0, "VOG4422": 0, "VOG2052": 1, "VOG2053": 1, "VOG2051": 1, "VOG2056": 1, "VOG2057": 1, "VOG2054": 1, "VOG2059": 1, "VOG1659": 1, "VOG1658": 1, "VOG1651": 1, "VOG1650": 1, "VOG1652": 1, "VOG1655": 1, "VOG1654": 1, "VOG1657": 1, "VOG3870": 0, "VOG3986": 1, "VOG0438": 0, "VOG1436": 0, "VOG1433": 0, "VOG0924": 1, "VOG0433": 0, "VOG0926": 1, "VOG0927": 1, "VOG1439": 0, "VOG0437": 0, "VOG0922": 1, "VOG2698": 1, "VOG2696": 1, "VOG2697": 1, "VOG2690": 1, "VOG2691": 1, "VOG2692": 1, "VOG2456": 0, "VOG2457": 0, "VOG2454": 0, "VOG2452": 0, "VOG2453": 0, "VOG2451": 0, "VOG3983": 1, "VOG1508": 0, "VOG4696": 0, "VOG5379": 0, "VOG1801": 0, "VOG5953": 0, "VOG4670": 1, "VOG4671": 0, "VOG0740": 1, "VOG4673": 1, "VOG0749": 1, "VOG5159": 0, "VOG5152": 0, "VOG5153": 0, "VOG5150": 0, "VOG5621": 0, "VOG5157": 1, "VOG5154": 1, "VOG5155": 1, "VOG0697": 1, "VOG0695": 1, "VOG0692": 1, "VOG0691": 1, "VOG0108": 0, "VOG0109": 0, "VOG0106": 0, "VOG4334": 1, "VOG0104": 0, "VOG0105": 0, "VOG5555": 0, "VOG5552": 1, "VOG5550": 2, "VOG2948": 1, "VOG5559": 0, "VOG4933": 0, "VOG4932": 0, "VOG4930": 0, "VOG4937": 0, "VOG4936": 1, "VOG4935": 0, "VOG4934": 1, "VOG5426": 1, "VOG5427": 0, "VOG4939": 1, "VOG5425": 1, "VOG5422": 0, "VOG5423": 0, "VOG5420": 0, "VOG5421": 0, "VOG1457": 0, "VOG1104": 1, "VOG4277": 0, "VOG5880": 0, "VOG5881": 0, "VOG5882": 0, "VOG5883": 0, "VOG5884": 0, "VOG5337": 0, "VOG5886": 0, "VOG5335": 0, "VOG5888": 0, "VOG5889": 0, "VOG4203": 0, "VOG5339": 0, "VOG4205": 0, "VOG4204": 0, "VOG4207": 0, "VOG4206": 0, "VOG4062": 0, "VOG4065": 0, "VOG4064": 0, "VOG4067": 0, "VOG4066": 0, "VOG4068": 0, "VOG4591": 0, "VOG4592": 2, "VOG4595": 0, "VOG4594": 0, "VOG4599": 1, "VOG5202": 0, "VOG1109": 1, "VOG3480": 1, "VOG4441": 2, "VOG4116": 0, "VOG5754": 1, "VOG4119": 0, "VOG5207": 1, "VOG0116": 0, "VOG2999": 1, "VOG3467": 1, "VOG3461": 1, "VOG3462": 1, "VOG3463": 1, "VOG2992": 1, "VOG2994": 1, "VOG3970": 1, "VOG2382": 2, "VOG5209": 0, "VOG2849": 1, "VOG2848": 1, "VOG3898": 0, "VOG2845": 1, "VOG2844": 1, "VOG2847": 1, "VOG2846": 1, "VOG2842": 1, "VOG3002": 1, "VOG3000": 1, "VOG3001": 1, "VOG4414": 0, "VOG4018": 0, "VOG2201": 0, "VOG2200": 0, "VOG2389": 2, "VOG3680": 2, "VOG3681": 2, "VOG4405": 0, "VOG1646": 1, "VOG1647": 1, "VOG1644": 1, "VOG1642": 1, "VOG1643": 1, "VOG1641": 1, "VOG1648": 1, "VOG1649": 1, "VOG4016": 0, "VOG2515": 1, "VOG4400": 0, "VOG2513": 1, "VOG2512": 1, "VOG2192": 0, "VOG2191": 0, "VOG2190": 0, "VOG2196": 0, "VOG2195": 0, "VOG2194": 0, "VOG2199": 0, "VOG2198": 0, "VOG0919": 1, "VOG0918": 1, "VOG1426": 0, "VOG1427": 0, "VOG1424": 0, "VOG0911": 1, "VOG0910": 1, "VOG1428": 0, "VOG1429": 0, "VOG0914": 1, "VOG0917": 1, "VOG3916": 0, "VOG2428": 0, "VOG5638": 0, "VOG2423": 0, "VOG2422": 0, "VOG2421": 0, "VOG3918": 1, "VOG2424": 0, "VOG0351": 0, "VOG0356": 0, "VOG1518": 1, "VOG1519": 1, "VOG0598": 1, "VOG1510": 0, "VOG3751": 2, "VOG3124": 0, "VOG0776": 1, "VOG1350": 0, "VOG1352": 0, "VOG1353": 0, "VOG1355": 0, "VOG5181": 0, "VOG5180": 0, "VOG5183": 0, "VOG5182": 0, "VOG5185": 0, "VOG5184": 0, "VOG5187": 0, "VOG5186": 0, "VOG5189": 0, "VOG5188": 0, "VOG5635": 0, "VOG5634": 0, "VOG0178": 4, "VOG0173": 4, "VOG0172": 4, "VOG4320": 1, "VOG0170": 4, "VOG0177": 4, "VOG0176": 4, "VOG0175": 4, "VOG0174": 4, "VOG5523": 1, "VOG5522": 1, "VOG5521": 0, "VOG5527": 1, "VOG5526": 1, "VOG5525": 0, "VOG5524": 1, "VOG5528": 2, "VOG4692": 1, "VOG4921": 0, "VOG4922": 0, "VOG5458": 0, "VOG4924": 0, "VOG4697": 0, "VOG4927": 0, "VOG4928": 2, "VOG5980": 1, "VOG4698": 0, "VOG5450": 0, "VOG5457": 0, "VOG5456": 0, "VOG5455": 0, "VOG5454": 1, "VOG3438": 1, "VOG0006": 5, "VOG4214": 0, "VOG4212": 0, "VOG4213": 0, "VOG4210": 0, "VOG4520": 0, "VOG2681": 1, "VOG4078": 0, "VOG4079": 0, "VOG4077": 0, "VOG4074": 0, "VOG4072": 0, "VOG4070": 0, "VOG4071": 0, "VOG5856": 1, "VOG5855": 1, "VOG5854": 0, "VOG5853": 1, "VOG5852": 1, "VOG5851": 2, "VOG5850": 0, "VOG4586": 1, "VOG4584": 0, "VOG4857": 0, "VOG4582": 1, "VOG4583": 1, "VOG5858": 0, "VOG3679": 2, "VOG3678": 2, "VOG4100": 0, "VOG4101": 0, "VOG4106": 0, "VOG4104": 0, "VOG4105": 0, "VOG4458": 0, "VOG4108": 0, "VOG4109": 0, "VOG3675": 2, "VOG3677": 2, "VOG2988": 1, "VOG3453": 1, "VOG3452": 1, "VOG4523": 0, "VOG2980": 1, "VOG2981": 1, "VOG3105": 0, "VOG3102": 0, "VOG3101": 0, "VOG2858": 1, "VOG2859": 1, "VOG5639": 0, "VOG2852": 1, "VOG2853": 1, "VOG2850": 1, "VOG2851": 1, "VOG2856": 1, "VOG2857": 1, "VOG2854": 1, "VOG2855": 1, "VOG3077": 0, "VOG3074": 0, "VOG2212": 0, "VOG2215": 0, "VOG2217": 0, "VOG2219": 1, "VOG5740": 0, "VOG5949": 0, "VOG3292": 0, "VOG3291": 0, "VOG1985": 0, "VOG1632": 1, "VOG1631": 1, "VOG1986": 0, "VOG1637": 1, "VOG1980": 0, "VOG1635": 1, "VOG1982": 0, "VOG1638": 1, "VOG1989": 0, "VOG1988": 0, "VOG4886": 0, "VOG3854": 0, "VOG3857": 0, "VOG2508": 1, "VOG2505": 1, "VOG2506": 1, "VOG2507": 1, "VOG3859": 0, "VOG2501": 1, "VOG2502": 1, "VOG2503": 1, "VOG0541": 1, "VOG2180": 1, "VOG0937": 1, "VOG2183": 1, "VOG2184": 1, "VOG2185": 1, "VOG0424": 0, "VOG3963": 1, "VOG0933": 1, "VOG1186": 1, "VOG4329": 1, "VOG1743": 0, "VOG1741": 0, "VOG5145": 0, "VOG2438": 0, "VOG3920": 1, "VOG3923": 1, "VOG3922": 1, "VOG3925": 1, "VOG3924": 1, "VOG3927": 1, "VOG3926": 1, "VOG3929": 1, "VOG3928": 1, "VOG2432": 0, "VOG2434": 0, "VOG2436": 0, "VOG0171": 4, "VOG0582": 0, "VOG0583": 0, "VOG0584": 0, "VOG1563": 1, "VOG0588": 0, "VOG1403": 0, "VOG1405": 0, "VOG0906": 1, "VOG0907": 1, "VOG0904": 1, "VOG0905": 1, "VOG0902": 1, "VOG0903": 1, "VOG0900": 1, "VOG0901": 1, "VOG5138": 0, "VOG2680": 1, "VOG0908": 1, "VOG0909": 1, "VOG1799": 0, "VOG5642": 0, "VOG2234": 4, "VOG1362": 0, "VOG0766": 0, "VOG0764": 0, "VOG2235": 4, "VOG1369": 0, "VOG1167": 1, "VOG1166": 1, "VOG1165": 1, "VOG5137": 0, "VOG1160": 1, "VOG5646": 0, "VOG1168": 1, "VOG5644": 0, "VOG5133": 0, "VOG4920": 0, "VOG5628": 1, "VOG5629": 1, "VOG5198": 0, "VOG5199": 0, "VOG5624": 2, "VOG5197": 0, "VOG5194": 0, "VOG5627": 1, "VOG5192": 0, "VOG5459": 0, "VOG5190": 0, "VOG5191": 0, "VOG4923": 1, "VOG5350": 1, "VOG5351": 0, "VOG0168": 4, "VOG0169": 4, "VOG0162": 0, "VOG4695": 0, "VOG0167": 8, "VOG5981": 1, "VOG5533": 0, "VOG5537": 2, "VOG5538": 2, "VOG5539": 1, "VOG5983": 0, "VOG5449": 1, "VOG5982": 0, "VOG4918": 0, "VOG4668": 5, "VOG4915": 0, "VOG4666": 1, "VOG5442": 0, "VOG4664": 2, "VOG4663": 1, "VOG4662": 1, "VOG4913": 0, "VOG4912": 0, "VOG5986": 1, "VOG0014": 5, "VOG0016": 2, "VOG0017": 2, "VOG0013": 5, "VOG0019": 2, "VOG4869": 0, "VOG5845": 1, "VOG5846": 1, "VOG5840": 3, "VOG5841": 1, "VOG5842": 2, "VOG5843": 1, "VOG4860": 0, "VOG4862": 0, "VOG4865": 0, "VOG5849": 1, "VOG4867": 0, "VOG4866": 1, "VOG4469": 0, "VOG4468": 0, "VOG4464": 0, "VOG4460": 0, "VOG4463": 0, "VOG4462": 0, "VOG4717": 0, "VOG4716": 1, "VOG4715": 0, "VOG4713": 1, "VOG4712": 0, "VOG4217": 1, "VOG0005": 5, "VOG4719": 0, "VOG4718": 1, "VOG0002": 5, "VOG3594": 0, "VOG3064": 0, "VOG3066": 0, "VOG2881": 1, "VOG2880": 1, "VOG2883": 1, "VOG2887": 1, "VOG2889": 1, "VOG2888": 1, "VOG2897": 1, "VOG2222": 1, "VOG1967": 0, "VOG3285": 1, "VOG3287": 1, "VOG1992": 0, "VOG1621": 1, "VOG1622": 1, "VOG1623": 1, "VOG1624": 1, "VOG1625": 1, "VOG1626": 1, "VOG1627": 1, "VOG1628": 1, "VOG2080": 1, "VOG1998": 0, "VOG2086": 2, "VOG2539": 1, "VOG2538": 1, "VOG2528": 1, "VOG3844": 0, "VOG2531": 1, "VOG2533": 1, "VOG2534": 1, "VOG2537": 1, "VOG4603": 1, "VOG5739": 0, "VOG1190": 0, "VOG1191": 0, "VOG2405": 2, "VOG2404": 2, "VOG2401": 2, "VOG2152": 1, "VOG2403": 2, "VOG2409": 2, "VOG3938": 1, "VOG3939": 1, "VOG3936": 1, "VOG3937": 1, "VOG3934": 1, "VOG3935": 1, "VOG3932": 1, "VOG3933": 1, "VOG3930": 1, "VOG0809": 1, "VOG0808": 1, "VOG0375": 0, "VOG0806": 1, "VOG0804": 1, "VOG0371": 0, "VOG0370": 0, "VOG0801": 1, "VOG0800": 1, "VOG0577": 0, "VOG0574": 0, "VOG1574": 1, "VOG1575": 1, "VOG0571": 0, "VOG1577": 1, "VOG0976": 0, "VOG4858": 0, "VOG4859": 0, "VOG1372": 0, "VOG1373": 0, "VOG1370": 0, "VOG1371": 0, "VOG1374": 0, "VOG1375": 0, "VOG0713": 1, "VOG0712": 1, "VOG0717": 1, "VOG0714": 1, "VOG1175": 1, "VOG1176": 1, "VOG0488": 0, "VOG1172": 1, "VOG1173": 1, "VOG0483": 0, "VOG0482": 0, "VOG0481": 0, "VOG0480": 0, "VOG0487": 0, "VOG0486": 0, "VOG0485": 0, "VOG0484": 0, "VOG5619": 0, "VOG5618": 0, "VOG5613": 4, "VOG5612": 0, "VOG5615": 2, "VOG0396": 0, "VOG0395": 0, "VOG0394": 0, "VOG5299": 1, "VOG5298": 0, "VOG0390": 0, "VOG5294": 0, "VOG5291": 0, "VOG5290": 0, "VOG5293": 1, "VOG0398": 0, "VOG5509": 0, "VOG5505": 0, "VOG5507": 0, "VOG5506": 2, "VOG5501": 0, "VOG5503": 0, "VOG5276": 1, "VOG5275": 2, "VOG5274": 1, "VOG5273": 1, "VOG5272": 0, "VOG5271": 1, "VOG4902": 0, "VOG4903": 0, "VOG4900": 0, "VOG4901": 0, "VOG4906": 0, "VOG4907": 0, "VOG4905": 0, "VOG4273": 0, "VOG4103": 0, "VOG0029": 2, "VOG4279": 0, "VOG4876": 0, "VOG4877": 0, "VOG4874": 0, "VOG4875": 1, "VOG4870": 0, "VOG4012": 0, "VOG4013": 0, "VOG4014": 0, "VOG4015": 0, "VOG4878": 0, "VOG4017": 0, "VOG5871": 0, "VOG5870": 0, "VOG5873": 1, "VOG5875": 0, "VOG5874": 1, "VOG5877": 0, "VOG5876": 0, "VOG3614": 0, "VOG5475": 1, "VOG5474": 1, "VOG5476": 0, "VOG5471": 1, "VOG5470": 1, "VOG5473": 0, "VOG5144": 0, "VOG1984b": 0, "VOG1984a": 0, "VOG5479": 2, "VOG5478": 1, "VOG3129": 0, "VOG4706": 0, "VOG4707": 1, "VOG4700": 0, "VOG4701": 1, "VOG4702": 0, "VOG4703": 0, "VOG1685": 0, "VOG3125": 0, "VOG4709": 0, "VOG2063": 0, "VOG2419": 0, "VOG4691": 0, "VOG3459": 1, "VOG3058": 0, "VOG3729": 2, "VOG3055": 0, "VOG3057": 0, "VOG3056": 0, "VOG3051": 1, "VOG3050": 1, "VOG2238": 0, "VOG2899": 1, "VOG2233": 4, "VOG2894": 1, "VOG2895": 1, "VOG2892": 1, "VOG2893": 1, "VOG2890": 1, "VOG2891": 1, "VOG2526": 1, "VOG2527": 1, "VOG2522": 1, "VOG2523": 1, "VOG1968": 0, "VOG1615": 1, "VOG1614": 1, "VOG1964": 0, "VOG1611": 1, "VOG1610": 1, "VOG1613": 1, "VOG2529": 1, "VOG5246": 0, "VOG5716": 1, "VOG5243": 0, "VOG2412": 0, "VOG2413": 0, "VOG2147": 1, "VOG2417": 0, "VOG2414": 0, "VOG2415": 0, "VOG2418": 0, "VOG5241": 0, "VOG3949": 1, "VOG3943": 1, "VOG3942": 1, "VOG3941": 1, "VOG3940": 1, "VOG3947": 1, "VOG3946": 1, "VOG3944": 1, "VOG2097": 2, "VOG2094": 2, "VOG2095": 2, "VOG2098": 2}, "taxonomy_codes": ["Myoviridae", "Siphoviridae", "Podoviridae", "Bicaudaviridae", "Microviridae", "Inoviridae", "Fuselloviridae", "Tectiviridae", "Leviviridae"]} \ No newline at end of file diff --git a/phigaro/pvogs_taxonomy.pickle b/phigaro/pvogs_taxonomy.pickle deleted file mode 100644 index 1f41b5a..0000000 --- a/phigaro/pvogs_taxonomy.pickle +++ /dev/null @@ -1,7127 +0,0 @@ -((dp0 -S'VOG1544' -p1 -I1 -sS'VOG1547' -p2 -I1 -sS'VOG0819' -p3 -I1 -sS'VOG1543' -p4 -I1 -sS'VOG0816' -p5 -I1 -sS'VOG0817' -p6 -I1 -sS'VOG0367' -p7 -I0 -sS'VOG0364' -p8 -I0 -sS'VOG0813' -p9 -I1 -sS'VOG0568' -p10 -I0 -sS'VOG0569' -p11 -I0 -sS'VOG0564' -p12 -I1 -sS'VOG0566' -p13 -I0 -sS'VOG0567' -p14 -I0 -sS'VOG0562' -p15 -I1 -sS'VOG1540' -p16 -I1 -sS'VOG4699' -p17 -I0 -sS'VOG2706' -p18 -I1 -sS'VOG2704' -p19 -I1 -sS'VOG2702' -p20 -I1 -sS'VOG2703' -p21 -I1 -sS'VOG2700' -p22 -I1 -sS'VOG2701' -p23 -I1 -sS'VOG1112' -p24 -I1 -sS'VOG0811' -p25 -I1 -sS'VOG0709' -p26 -I0 -sS'VOG1386' -p27 -I2 -sS'VOG1383' -p28 -I0 -sS'VOG1141' -p29 -I1 -sS'VOG1143' -p30 -I1 -sS'VOG1142' -p31 -I1 -sS'VOG1145' -p32 -I1 -sS'VOG1144' -p33 -I1 -sS'VOG1147' -p34 -I1 -sS'VOG1146' -p35 -I1 -sS'VOG1149' -p36 -I1 -sS'VOG1148' -p37 -I1 -sS'VOG0493' -p38 -I0 -sS'VOG0495' -p39 -I0 -sS'VOG0497' -p40 -I0 -sS'VOG2663' -p41 -I1 -sS'VOG0142' -p42 -I0 -sS'VOG0143' -p43 -I0 -sS'VOG0141' -p44 -I0 -sS'VOG0144' -p45 -I0 -sS'VOG0145' -p46 -I0 -sS'VOG0639' -p47 -I2 -sS'VOG3140' -p48 -I0 -sS'VOG0384' -p49 -I0 -sS'VOG5288' -p50 -I0 -sS'VOG5289' -p51 -I0 -sS'VOG0382' -p52 -I0 -sS'VOG2669' -p53 -I1 -sS'VOG5281' -p54 -I0 -sS'VOG0388' -p55 -I0 -sS'VOG0389' -p56 -I0 -sS'VOG5284' -p57 -I0 -sS'VOG5285' -p58 -I0 -sS'VOG5518' -p59 -I0 -sS'VOG5512' -p60 -I0 -sS'VOG5513' -p61 -I0 -sS'VOG5510' -p62 -I0 -sS'VOG5516' -p63 -I0 -sS'VOG5517' -p64 -I0 -sS'VOG5514' -p65 -I0 -sS'VOG5515' -p66 -I0 -sS'VOG4649' -p67 -I1 -sS'VOG4648' -p68 -I1 -sS'VOG4399' -p69 -I0 -sS'VOG5267' -p70 -I0 -sS'VOG5260' -p71 -I1 -sS'VOG5261' -p72 -I0 -sS'VOG5263' -p73 -I0 -sS'VOG4641' -p74 -I1 -sS'VOG4390' -p75 -I0 -sS'VOG4397' -p76 -I0 -sS'VOG4644' -p77 -I0 -sS'VOG4647' -p78 -I2 -sS'VOG4646' -p79 -I0 -sS'VOG3083' -p80 -I0 -sS'VOG4248' -p81 -I0 -sS'VOG0038' -p82 -I2 -sS'VOG0037' -p83 -I2 -sS'VOG0034' -p84 -I2 -sS'VOG0035' -p85 -I2 -sS'VOG0030' -p86 -I2 -sS'VOG0031' -p87 -I2 -sS'VOG5604' -p88 -I1 -sS'VOG5605' -p89 -I2 -sS'VOG5602' -p90 -I2 -sS'VOG5603' -p91 -I0 -sS'VOG5600' -p92 -I1 -sS'VOG5601' -p93 -I1 -sS'VOG4802' -p94 -I1 -sS'VOG4801' -p95 -I0 -sS'VOG4800' -p96 -I0 -sS'VOG4805' -p97 -I1 -sS'VOG4804' -p98 -I1 -sS'VOG4808' -p99 -I2 -sS'VOG4944' -p100 -I1 -sS'VOG5869' -p101 -I0 -sS'VOG5866' -p102 -I0 -sS'VOG5867' -p103 -I0 -sS'VOG5865' -p104 -I1 -sS'VOG5862' -p105 -I0 -sS'VOG5863' -p106 -I0 -sS'VOG5860' -p107 -I0 -sS'VOG5861' -p108 -I0 -sS'VOG5462' -p109 -I0 -sS'VOG5466' -p110 -I1 -sS'VOG5467' -p111 -I1 -sS'VOG5464' -p112 -I0 -sS'VOG5465' -p113 -I1 -sS'VOG5468' -p114 -I1 -sS'VOG5469' -p115 -I1 -sS'VOG4733' -p116 -I1 -sS'VOG4735' -p117 -I1 -sS'VOG4734' -p118 -I0 -sS'VOG4737' -p119 -I0 -sS'VOG4736' -p120 -I0 -sS'VOG4739' -p121 -I1 -sS'VOG4738' -p122 -I0 -sS'VOG3423' -p123 -I1 -sS'VOG4126' -p124 -I0 -sS'VOG4025' -p125 -I0 -sS'VOG3048' -p126 -I1 -sS'VOG3049' -p127 -I1 -sS'VOG4021' -p128 -I0 -sS'VOG4020' -p129 -I0 -sS'VOG4022' -p130 -I0 -sS'VOG3042' -p131 -I1 -sS'VOG3731' -p132 -I2 -sS'VOG3044' -p133 -I1 -sS'VOG3045' -p134 -I1 -sS'VOG3557' -p135 -I1 -sS'VOG3559' -p136 -I1 -sS'VOG4667' -p137 -I2 -sS'VOG5128' -p138 -I1 -sS'VOG3136' -p139 -I0 -sS'VOG3137' -p140 -I0 -sS'VOG3130' -p141 -I0 -sS'VOG3138' -p142 -I0 -sS'VOG2553' -p143 -I1 -sS'VOG2552' -p144 -I1 -sS'VOG1609' -p145 -I1 -sS'VOG1979' -p146 -I0 -sS'VOG2555' -p147 -I1 -sS'VOG2554' -p148 -I1 -sS'VOG1602' -p149 -I1 -sS'VOG1975' -p150 -I0 -sS'VOG1600' -p151 -I1 -sS'VOG2558' -p152 -I1 -sS'VOG1607' -p153 -I1 -sS'VOG1604' -p154 -I1 -sS'VOG1605' -p155 -I1 -sS'VOG2390' -p156 -I2 -sS'VOG1775' -p157 -I0 -sS'VOG1987' -p158 -I0 -sS'VOG2171' -p159 -I1 -sS'VOG2170' -p160 -I1 -sS'VOG2173' -p161 -I1 -sS'VOG2172' -p162 -I1 -sS'VOG2174' -p163 -I1 -sS'VOG2177' -p164 -I1 -sS'VOG0701' -p165 -I1 -sS'VOG2178' -p166 -I1 -sS'VOG1636' -p167 -I1 -sS'VOG3958' -p168 -I1 -sS'VOG5893' -p169 -I0 -sS'VOG0704' -p170 -I1 -sS'VOG5327' -p171 -I1 -sS'VOG3957' -p172 -I1 -sS'VOG5326' -p173 -I0 -sS'VOG4627' -p174 -I1 -sS'VOG4626' -p175 -I1 -sS'VOG5323' -p176 -I0 -sS'VOG1803' -p177 -I0 -sS'VOG0821' -p178 -I1 -sS'VOG5322' -p179 -I0 -sS'VOG0558' -p180 -I1 -sS'VOG4895' -p181 -I0 -sS'VOG5486' -p182 -I1 -sS'VOG0557' -p183 -I1 -sS'VOG0556' -p184 -I1 -sS'VOG2778' -p185 -I1 -sS'VOG2773' -p186 -I1 -sS'VOG2771' -p187 -I1 -sS'VOG2770' -p188 -I1 -sS'VOG2774' -p189 -I1 -sS'VOG0953' -p190 -I2 -sS'VOG0952' -p191 -I2 -sS'VOG0731' -p192 -I1 -sS'VOG3390' -p193 -I1 -sS'VOG1396' -p194 -I2 -sS'VOG1391' -p195 -I0 -sS'VOG1392' -p196 -I2 -sS'VOG2607' -p197 -I1 -sS'VOG2606' -p198 -I1 -sS'VOG2602' -p199 -I1 -sS'VOG1158' -p200 -I1 -sS'VOG1159' -p201 -I1 -sS'VOG1156' -p202 -I1 -sS'VOG1157' -p203 -I1 -sS'VOG1154' -p204 -I1 -sS'VOG1152' -p205 -I1 -sS'VOG1153' -p206 -I1 -sS'VOG1150' -p207 -I1 -sS'VOG1151' -p208 -I1 -sS'VOG0603' -p209 -I4 -sS'VOG0609' -p210 -I2 -sS'VOG5643' -p211 -I0 -sS'VOG5253' -p212 -I0 -sS'VOG5252' -p213 -I0 -sS'VOG5255' -p214 -I0 -sS'VOG5254' -p215 -I0 -sS'VOG5257' -p216 -I0 -sS'VOG5256' -p217 -I0 -sS'VOG5259' -p218 -I1 -sS'VOG5706' -p219 -I2 -sS'VOG5705' -p220 -I2 -sS'VOG5704' -p221 -I2 -sS'VOG5703' -p222 -I2 -sS'VOG5702' -p223 -I1 -sS'VOG5700' -p224 -I1 -sS'VOG5383' -p225 -I0 -sS'VOG5381' -p226 -I1 -sS'VOG5380' -p227 -I0 -sS'VOG5387' -p228 -I0 -sS'VOG5386' -p229 -I0 -sS'VOG0043' -p230 -I0 -sS'VOG0041' -p231 -I2 -sS'VOG5388' -p232 -I0 -sS'VOG4254' -p233 -I0 -sS'VOG5673' -p234 -I0 -sS'VOG5672' -p235 -I0 -sS'VOG5671' -p236 -I0 -sS'VOG5670' -p237 -I1 -sS'VOG5677' -p238 -I1 -sS'VOG5676' -p239 -I1 -sS'VOG5675' -p240 -I0 -sS'VOG5674' -p241 -I0 -sS'VOG5679' -p242 -I1 -sS'VOG5678' -p243 -I1 -sS'VOG4810' -p244 -I0 -sS'VOG4811' -p245 -I1 -sS'VOG4812' -p246 -I1 -sS'VOG4815' -p247 -I1 -sS'VOG1100' -p248 -I1 -sS'VOG5811' -p249 -I0 -sS'VOG5810' -p250 -I0 -sS'VOG5817' -p251 -I1 -sS'VOG5816' -p252 -I0 -sS'VOG5815' -p253 -I0 -sS'VOG1103' -p254 -I1 -sS'VOG4656' -p255 -I2 -sS'VOG4657' -p256 -I2 -sS'VOG4654' -p257 -I0 -sS'VOG4655' -p258 -I1 -sS'VOG4653' -p259 -I0 -sS'VOG4651' -p260 -I1 -sS'VOG5497' -p261 -I0 -sS'VOG5496' -p262 -I1 -sS'VOG5495' -p263 -I1 -sS'VOG5493' -p264 -I2 -sS'VOG5492' -p265 -I1 -sS'VOG5490' -p266 -I1 -sS'VOG4728' -p267 -I1 -sS'VOG3382' -p268 -I4 -sS'VOG4726' -p269 -I2 -sS'VOG4727' -p270 -I2 -sS'VOG4724' -p271 -I0 -sS'VOG4725' -p272 -I1 -sS'VOG4722' -p273 -I0 -sS'VOG4723' -p274 -I0 -sS'VOG4721' -p275 -I0 -sS'VOG5927' -p276 -I0 -sS'VOG5926' -p277 -I1 -sS'VOG5924' -p278 -I0 -sS'VOG5922' -p279 -I0 -sS'VOG5921' -p280 -I0 -sS'VOG5920' -p281 -I0 -sS'VOG5929' -p282 -I0 -sS'VOG3709' -p283 -I1 -sS'VOG4030' -p284 -I0 -sS'VOG4031' -p285 -I0 -sS'VOG4036' -p286 -I0 -sS'VOG4037' -p287 -I0 -sS'VOG4034' -p288 -I0 -sS'VOG4038' -p289 -I0 -sS'VOG4039' -p290 -I0 -sS'VOG3569' -p291 -I1 -sS'VOG3090' -p292 -I0 -sS'VOG3094' -p293 -I0 -sS'VOG3099' -p294 -I0 -sS'VOG3654' -p295 -I1 -sS'VOG1313' -p296 -I1 -sS'VOG3143' -p297 -I0 -sS'VOG3142' -p298 -I0 -sS'VOG3141' -p299 -I0 -sS'VOG3416' -p300 -I1 -sS'VOG3411' -p301 -I1 -sS'VOG3410' -p302 -I1 -sS'VOG3413' -p303 -I1 -sS'VOG2945' -p304 -I1 -sS'VOG2940' -p305 -I1 -sS'VOG2943' -p306 -I1 -sS'VOG2540' -p307 -I1 -sS'VOG1948' -p308 -I0 -sS'VOG1683' -p309 -I0 -sS'VOG2543' -p310 -I1 -sS'VOG2544' -p311 -I1 -sS'VOG2545' -p312 -I1 -sS'VOG2547' -p313 -I1 -sS'VOG2548' -p314 -I1 -sS'VOG2549' -p315 -I1 -sS'VOG1944' -p316 -I0 -sS'VOG5287' -p317 -I0 -sS'VOG3899' -p318 -I0 -sS'VOG2383' -p319 -I2 -sS'VOG2380' -p320 -I2 -sS'VOG2381' -p321 -I2 -sS'VOG2386' -p322 -I2 -sS'VOG2384' -p323 -I2 -sS'VOG2385' -p324 -I2 -sS'VOG3891' -p325 -I0 -sS'VOG3890' -p326 -I0 -sS'VOG3892' -p327 -I0 -sS'VOG3894' -p328 -I0 -sS'VOG3921' -p329 -I1 -sS'VOG2439' -p330 -I0 -sS'VOG1708' -p331 -I0 -sS'VOG3964' -p332 -I1 -sS'VOG3967' -p333 -I1 -sS'VOG3966' -p334 -I1 -sS'VOG3961' -p335 -I1 -sS'VOG3960' -p336 -I1 -sS'VOG2168' -p337 -I1 -sS'VOG3962' -p338 -I1 -sS'VOG2167' -p339 -I1 -sS'VOG3969' -p340 -I1 -sS'VOG3968' -p341 -I1 -sS'VOG4881' -p342 -I0 -sS'VOG0546' -p343 -I1 -sS'VOG0547' -p344 -I1 -sS'VOG0544' -p345 -I1 -sS'VOG0542' -p346 -I1 -sS'VOG1836' -p347 -I0 -sS'VOG5266' -p348 -I0 -sS'VOG0548' -p349 -I1 -sS'VOG4398' -p350 -I0 -sS'VOG2768' -p351 -I1 -sS'VOG2761' -p352 -I1 -sS'VOG2763' -p353 -I1 -sS'VOG2764' -p354 -I1 -sS'VOG2765' -p355 -I1 -sS'VOG2766' -p356 -I1 -sS'VOG2767' -p357 -I1 -sS'VOG1493' -p358 -I0 -sS'VOG4393' -p359 -I0 -sS'VOG1491' -p360 -I0 -sS'VOG1490' -p361 -I0 -sS'VOG0946' -p362 -I2 -sS'VOG0947' -p363 -I2 -sS'VOG0723' -p364 -I1 -sS'VOG0720' -p365 -I1 -sS'VOG4642' -p366 -I2 -sS'VOG0727' -p367 -I1 -sS'VOG0724' -p368 -I1 -sS'VOG0725' -p369 -I1 -sS'VOG4645' -p370 -I0 -sS'VOG4395' -p371 -I0 -sS'VOG4394' -p372 -I0 -sS'VOG2616' -p373 -I1 -sS'VOG2617' -p374 -I1 -sS'VOG2610' -p375 -I1 -sS'VOG2612' -p376 -I1 -sS'VOG2613' -p377 -I1 -sS'VOG1123' -p378 -I1 -sS'VOG1122' -p379 -I1 -sS'VOG1121' -p380 -I1 -sS'VOG1120' -p381 -I1 -sS'VOG2618' -p382 -I1 -sS'VOG1126' -p383 -I1 -sS'VOG1125' -p384 -I1 -sS'VOG1124' -p385 -I1 -sS'VOG0832' -p386 -I1 -sS'VOG5451' -p387 -I0 -sS'VOG4299' -p388 -I0 -sS'VOG1237' -p389 -I1 -sS'VOG1236' -p390 -I1 -sS'VOG1234' -p391 -I1 -sS'VOG1233' -p392 -I1 -sS'VOG1232' -p393 -I1 -sS'VOG2978' -p394 -I1 -sS'VOG1238' -p395 -I1 -sS'VOG5718' -p396 -I0 -sS'VOG5719' -p397 -I0 -sS'VOG5248' -p398 -I1 -sS'VOG5249' -p399 -I0 -sS'VOG5714' -p400 -I0 -sS'VOG5247' -p401 -I1 -sS'VOG5244' -p402 -I0 -sS'VOG5717' -p403 -I0 -sS'VOG5710' -p404 -I1 -sS'VOG5711' -p405 -I2 -sS'VOG5240' -p406 -I0 -sS'VOG5713' -p407 -I1 -sS'VOG5390' -p408 -I0 -sS'VOG5391' -p409 -I1 -sS'VOG5392' -p410 -I0 -sS'VOG5393' -p411 -I0 -sS'VOG5394' -p412 -I1 -sS'VOG5396' -p413 -I0 -sS'VOG5397' -p414 -I1 -sS'VOG5398' -p415 -I0 -sS'VOG5399' -p416 -I1 -sS'VOG1446' -p417 -I0 -sS'VOG5660' -p418 -I1 -sS'VOG5664' -p419 -I0 -sS'VOG5667' -p420 -I1 -sS'VOG5669' -p421 -I1 -sS'VOG4282' -p422 -I0 -sS'VOG4284' -p423 -I0 -sS'VOG4536' -p424 -I0 -sS'VOG4535' -p425 -I0 -sS'VOG4533' -p426 -I0 -sS'VOG4530' -p427 -I0 -sS'VOG5808' -p428 -I0 -sS'VOG5809' -p429 -I0 -sS'VOG0460' -p430 -I0 -sS'VOG5800' -p431 -I0 -sS'VOG5801' -p432 -I0 -sS'VOG5802' -p433 -I0 -sS'VOG5803' -p434 -I0 -sS'VOG5804' -p435 -I0 -sS'VOG5805' -p436 -I0 -sS'VOG5806' -p437 -I0 -sS'VOG5807' -p438 -I0 -sS'VOG0462' -p439 -I0 -sS'VOG0920' -p440 -I1 -sS'VOG1448' -p441 -I0 -sS'VOG0204' -p442 -I1 -sS'VOG4622' -p443 -I1 -sS'VOG4621' -p444 -I1 -sS'VOG4620' -p445 -I0 -sS'VOG5488' -p446 -I0 -sS'VOG5489' -p447 -I0 -sS'VOG4625' -p448 -I0 -sS'VOG4624' -p449 -I1 -sS'VOG5484' -p450 -I1 -sS'VOG5485' -p451 -I1 -sS'VOG4629' -p452 -I1 -sS'VOG4628' -p453 -I1 -sS'VOG5481' -p454 -I1 -sS'VOG5482' -p455 -I1 -sS'VOG5483' -p456 -I1 -sS'VOG4759' -p457 -I0 -sS'VOG4758' -p458 -I0 -sS'VOG4753' -p459 -I1 -sS'VOG4751' -p460 -I1 -sS'VOG4750' -p461 -I1 -sS'VOG4757' -p462 -I5 -sS'VOG4754' -p463 -I0 -sS'VOG5930' -p464 -I0 -sS'VOG2573' -p465 -I1 -sS'VOG3717' -p466 -I1 -sS'VOG3714' -p467 -I1 -sS'VOG3715' -p468 -I1 -sS'VOG2644' -p469 -I1 -sS'VOG3710' -p470 -I1 -sS'VOG3711' -p471 -I1 -sS'VOG5947' -p472 -I0 -sS'VOG5414' -p473 -I1 -sS'VOG3088' -p474 -I0 -sS'VOG3086' -p475 -I0 -sS'VOG5941' -p476 -I0 -sS'VOG3085' -p477 -I0 -sS'VOG3082' -p478 -I0 -sS'VOG5487' -p479 -I0 -sS'VOG4419' -p480 -I0 -sS'VOG5286' -p481 -I0 -sS'VOG4148' -p482 -I0 -sS'VOG3150' -p483 -I0 -sS'VOG3151' -p484 -I0 -sS'VOG3153' -p485 -I0 -sS'VOG3155' -p486 -I0 -sS'VOG2971' -p487 -I1 -sS'VOG2977' -p488 -I1 -sS'VOG0868' -p489 -I0 -sS'VOG2579' -p490 -I1 -sS'VOG2574' -p491 -I1 -sS'VOG2577' -p492 -I1 -sS'VOG2576' -p493 -I1 -sS'VOG2571' -p494 -I1 -sS'VOG3888' -p495 -I0 -sS'VOG4412' -p496 -I0 -sS'VOG2379' -p497 -I2 -sS'VOG2378' -p498 -I2 -sS'VOG2377' -p499 -I2 -sS'VOG2375' -p500 -I2 -sS'VOG2371' -p501 -I2 -sS'VOG2370' -p502 -I0 -sS'VOG1714' -p503 -I0 -sS'VOG1719' -p504 -I0 -sS'VOG3972' -p505 -I1 -sS'VOG3973' -p506 -I1 -sS'VOG2119' -p507 -I1 -sS'VOG3971' -p508 -I1 -sS'VOG3976' -p509 -I1 -sS'VOG3974' -p510 -I1 -sS'VOG2113' -p511 -I2 -sS'VOG3978' -p512 -I1 -sS'VOG3979' -p513 -I1 -sS'VOG2117' -p514 -I2 -sS'VOG2116' -p515 -I2 -sS'VOG2115' -p516 -I2 -sS'VOG2114' -p517 -I2 -sS'VOG1956' -p518 -I0 -sS'VOG4128' -p519 -I0 -sS'VOG1952' -p520 -I0 -sS'VOG1953' -p521 -I0 -sS'VOG1950' -p522 -I0 -sS'VOG1951' -p523 -I0 -sS'VOG0532' -p524 -I1 -sS'VOG0534' -p525 -I1 -sS'VOG0539' -p526 -I1 -sS'VOG1821' -p527 -I0 -sS'VOG2027' -p528 -I1 -sS'VOG2025' -p529 -I1 -sS'VOG2024' -p530 -I1 -sS'VOG2023' -p531 -I1 -sS'VOG2021' -p532 -I1 -sS'VOG2020' -p533 -I1 -sS'VOG1005' -p534 -I0 -sS'VOG1006' -p535 -I0 -sS'VOG1001' -p536 -I0 -sS'VOG2029' -p537 -I1 -sS'VOG2596' -p538 -I1 -sS'VOG2595' -p539 -I1 -sS'VOG2594' -p540 -I1 -sS'VOG2593' -p541 -I1 -sS'VOG2592' -p542 -I1 -sS'VOG2591' -p543 -I1 -sS'VOG2590' -p544 -I1 -sS'VOG1483' -p545 -I0 -sS'VOG1487' -p546 -I0 -sS'VOG1489' -p547 -I0 -sS'VOG0997' -p548 -I0 -sS'VOG0448' -p549 -I0 -sS'VOG0447' -p550 -I0 -sS'VOG0445' -p551 -I0 -sS'VOG0444' -p552 -I0 -sS'VOG0443' -p553 -I0 -sS'VOG0441' -p554 -I0 -sS'VOG2621' -p555 -I1 -sS'VOG2620' -p556 -I1 -sS'VOG2622' -p557 -I1 -sS'VOG2624' -p558 -I1 -sS'VOG2626' -p559 -I1 -sS'VOG2629' -p560 -I1 -sS'VOG2628' -p561 -I1 -sS'VOG1133' -p562 -I1 -sS'VOG1137' -p563 -I1 -sS'VOG0843' -p564 -I1 -sS'VOG0842' -p565 -I1 -sS'VOG0840' -p566 -I1 -sS'VOG0847' -p567 -I1 -sS'VOG0848' -p568 -I1 -sS'VOG0668' -p569 -I0 -sS'VOG0661' -p570 -I0 -sS'VOG1348' -p571 -I0 -sS'VOG0195' -p572 -I1 -sS'VOG0194' -p573 -I1 -sS'VOG0196' -p574 -I1 -sS'VOG1224' -p575 -I1 -sS'VOG1225' -p576 -I1 -sS'VOG1227' -p577 -I1 -sS'VOG1222' -p578 -I1 -sS'VOG1223' -p579 -I1 -sS'VOG1229' -p580 -I1 -sS'VOG5728' -p581 -I1 -sS'VOG5239' -p582 -I0 -sS'VOG5238' -p583 -I0 -sS'VOG5233' -p584 -I0 -sS'VOG5232' -p585 -I1 -sS'VOG5723' -p586 -I2 -sS'VOG5230' -p587 -I0 -sS'VOG5237' -p588 -I0 -sS'VOG5236' -p589 -I0 -sS'VOG5727' -p590 -I1 -sS'VOG5726' -p591 -I0 -sS'VOG0065' -p592 -I0 -sS'VOG0064' -p593 -I0 -sS'VOG0067' -p594 -I0 -sS'VOG0066' -p595 -I0 -sS'VOG0061' -p596 -I0 -sS'VOG0069' -p597 -I0 -sS'VOG0068' -p598 -I0 -sS'VOG0265' -p599 -I2 -sS'VOG0264' -p600 -I2 -sS'VOG0263' -p601 -I2 -sS'VOG0261' -p602 -I2 -sS'VOG5659' -p603 -I0 -sS'VOG5658' -p604 -I0 -sS'VOG5129' -p605 -I0 -sS'VOG3036' -p606 -I1 -sS'VOG5127' -p607 -I0 -sS'VOG5654' -p608 -I0 -sS'VOG5125' -p609 -I1 -sS'VOG5656' -p610 -I0 -sS'VOG5651' -p611 -I1 -sS'VOG5650' -p612 -I0 -sS'VOG5653' -p613 -I0 -sS'VOG5652' -p614 -I0 -sS'VOG5835' -p615 -I1 -sS'VOG5834' -p616 -I1 -sS'VOG5345' -p617 -I1 -sS'VOG5836' -p618 -I1 -sS'VOG5831' -p619 -I1 -sS'VOG5342' -p620 -I0 -sS'VOG5341' -p621 -I0 -sS'VOG5832' -p622 -I1 -sS'VOG4524' -p623 -I0 -sS'VOG4525' -p624 -I0 -sS'VOG4294' -p625 -I0 -sS'VOG4295' -p626 -I0 -sS'VOG5839' -p627 -I1 -sS'VOG5838' -p628 -I1 -sS'VOG5349' -p629 -I1 -sS'VOG5348' -p630 -I1 -sS'VOG4630' -p631 -I0 -sS'VOG4631' -p632 -I0 -sS'VOG4632' -p633 -I1 -sS'VOG4635' -p634 -I2 -sS'VOG4636' -p635 -I1 -sS'VOG4637' -p636 -I1 -sS'VOG4638' -p637 -I1 -sS'VOG4639' -p638 -I1 -sS'VOG4748' -p639 -I1 -sS'VOG4749' -p640 -I0 -sS'VOG4740' -p641 -I1 -sS'VOG4742' -p642 -I0 -sS'VOG4744' -p643 -I0 -sS'VOG3362' -p644 -I6 -sS'VOG4747' -p645 -I0 -sS'VOG5900' -p646 -I0 -sS'VOG5902' -p647 -I2 -sS'VOG5904' -p648 -I0 -sS'VOG5907' -p649 -I0 -sS'VOG5909' -p650 -I1 -sS'VOG5908' -p651 -I1 -sS'VOG4788' -p652 -I0 -sS'VOG5196' -p653 -I0 -sS'VOG5625' -p654 -I1 -sS'VOG5195' -p655 -I0 -sS'VOG5193' -p656 -I0 -sS'VOG2963' -p657 -I1 -sS'VOG2961' -p658 -I1 -sS'VOG3167' -p659 -I0 -sS'VOG3162' -p660 -I0 -sS'VOG2921' -p661 -I1 -sS'VOG3212' -p662 -I1 -sS'VOG2560' -p663 -I1 -sS'VOG2561' -p664 -I1 -sS'VOG2566' -p665 -I1 -sS'VOG2567' -p666 -I1 -sS'VOG2565' -p667 -I1 -sS'VOG0439' -p668 -I0 -sS'VOG2364' -p669 -I0 -sS'VOG2361' -p670 -I2 -sS'VOG1829' -p671 -I0 -sS'VOG4027' -p672 -I0 -sS'VOG4026' -p673 -I0 -sS'VOG0925' -p674 -I1 -sS'VOG3738' -p675 -I2 -sS'VOG3739' -p676 -I2 -sS'VOG0436' -p677 -I0 -sS'VOG5430' -p678 -I1 -sS'VOG3989' -p679 -I1 -sS'VOG3988' -p680 -I1 -sS'VOG2100' -p681 -I2 -sS'VOG2101' -p682 -I2 -sS'VOG3985' -p683 -I1 -sS'VOG2103' -p684 -I2 -sS'VOG2104' -p685 -I2 -sS'VOG2105' -p686 -I2 -sS'VOG3981' -p687 -I1 -sS'VOG2107' -p688 -I2 -sS'VOG2290' -p689 -I0 -sS'VOG1921' -p690 -I0 -sS'VOG1920' -p691 -I0 -sS'VOG1924' -p692 -I0 -sS'VOG1589' -p693 -I1 -sS'VOG0521' -p694 -I1 -sS'VOG0523' -p695 -I1 -sS'VOG0524' -p696 -I1 -sS'VOG0525' -p697 -I1 -sS'VOG0526' -p698 -I1 -sS'VOG0528' -p699 -I1 -sS'VOG1580' -p700 -I1 -sS'VOG1583' -p701 -I1 -sS'VOG1857' -p702 -I0 -sS'VOG1584' -p703 -I1 -sS'VOG1587' -p704 -I1 -sS'VOG2036' -p705 -I1 -sS'VOG2033' -p706 -I1 -sS'VOG2038' -p707 -I1 -sS'VOG2039' -p708 -I1 -sS'VOG2585' -p709 -I1 -sS'VOG2587' -p710 -I1 -sS'VOG2580' -p711 -I1 -sS'VOG2581' -p712 -I1 -sS'VOG2582' -p713 -I1 -sS'VOG5435' -p714 -I0 -sS'VOG2588' -p715 -I1 -sS'VOG2589' -p716 -I1 -sS'VOG1105' -p717 -I1 -sS'VOG1456' -p718 -I0 -sS'VOG1107' -p719 -I1 -sS'VOG1101' -p720 -I1 -sS'VOG0459' -p721 -I0 -sS'VOG1451' -p722 -I0 -sS'VOG1102' -p723 -I1 -sS'VOG0454' -p724 -I0 -sS'VOG0456' -p725 -I0 -sS'VOG0457' -p726 -I0 -sS'VOG0450' -p727 -I0 -sS'VOG1108' -p728 -I1 -sS'VOG0452' -p729 -I0 -sS'VOG2639' -p730 -I1 -sS'VOG2634' -p731 -I1 -sS'VOG2632' -p732 -I1 -sS'VOG2633' -p733 -I1 -sS'VOG2631' -p734 -I1 -sS'VOG0850' -p735 -I1 -sS'VOG0183' -p736 -I1 -sS'VOG0181' -p737 -I1 -sS'VOG0679' -p738 -I0 -sS'VOG1210' -p739 -I1 -sS'VOG1213' -p740 -I1 -sS'VOG1212' -p741 -I1 -sS'VOG1215' -p742 -I1 -sS'VOG5440' -p743 -I1 -sS'VOG4917' -p744 -I0 -sS'VOG5228' -p745 -I0 -sS'VOG5229' -p746 -I0 -sS'VOG5220' -p747 -I0 -sS'VOG4911' -p748 -I0 -sS'VOG5223' -p749 -I1 -sS'VOG5224' -p750 -I0 -sS'VOG5225' -p751 -I0 -sS'VOG5226' -p752 -I0 -sS'VOG0079' -p753 -I0 -sS'VOG0273' -p754 -I2 -sS'VOG5648' -p755 -I0 -sS'VOG5649' -p756 -I0 -sS'VOG4729' -p757 -I1 -sS'VOG5139' -p758 -I0 -sS'VOG5134' -p759 -I0 -sS'VOG5135' -p760 -I1 -sS'VOG5641' -p761 -I0 -sS'VOG5130' -p762 -I0 -sS'VOG5131' -p763 -I0 -sS'VOG5132' -p764 -I0 -sS'VOG5645' -p765 -I0 -sS'VOG5354' -p766 -I1 -sS'VOG5823' -p767 -I0 -sS'VOG5356' -p768 -I0 -sS'VOG5357' -p769 -I0 -sS'VOG5826' -p770 -I2 -sS'VOG5827' -p771 -I1 -sS'VOG5352' -p772 -I1 -sS'VOG5825' -p773 -I2 -sS'VOG4510' -p774 -I0 -sS'VOG5828' -p775 -I1 -sS'VOG5358' -p776 -I1 -sS'VOG5359' -p777 -I0 -sS'VOG2819' -p778 -I1 -sS'VOG4199' -p779 -I0 -sS'VOG4195' -p780 -I0 -sS'VOG4194' -p781 -I0 -sS'VOG4191' -p782 -I0 -sS'VOG4190' -p783 -I0 -sS'VOG4193' -p784 -I0 -sS'VOG4192' -p785 -I0 -sS'VOG5737' -p786 -I0 -sS'VOG5735' -p787 -I0 -sS'VOG5732' -p788 -I1 -sS'VOG4608' -p789 -I1 -sS'VOG5730' -p790 -I2 -sS'VOG4605' -p791 -I1 -sS'VOG4604' -p792 -I1 -sS'VOG4607' -p793 -I1 -sS'VOG4601' -p794 -I1 -sS'VOG5738' -p795 -I0 -sS'VOG4602' -p796 -I1 -sS'VOG4177' -p797 -I0 -sS'VOG4176' -p798 -I0 -sS'VOG4173' -p799 -I0 -sS'VOG4172' -p800 -I0 -sS'VOG4171' -p801 -I0 -sS'VOG3374' -p802 -I2 -sS'VOG3371' -p803 -I2 -sS'VOG4179' -p804 -I0 -sS'VOG4178' -p805 -I0 -sS'VOG1981' -p806 -I0 -sS'VOG5919' -p807 -I1 -sS'VOG5916' -p808 -I0 -sS'VOG5914' -p809 -I0 -sS'VOG5915' -p810 -I0 -sS'VOG5912' -p811 -I0 -sS'VOG5913' -p812 -I0 -sS'VOG5910' -p813 -I1 -sS'VOG5911' -p814 -I1 -sS'VOG1505' -p815 -I0 -sS'VOG0449' -p816 -I0 -sS'VOG4137' -p817 -I0 -sS'VOG0996' -p818 -I0 -sS'VOG2550' -p819 -I1 -sS'VOG2913' -p820 -I1 -sS'VOG2912' -p821 -I1 -sS'VOG2910' -p822 -I1 -sS'VOG2917' -p823 -I1 -sS'VOG5742' -p824 -I0 -sS'VOG2919' -p825 -I1 -sS'VOG2918' -p826 -I1 -sS'VOG5741' -p827 -I0 -sS'VOG4775' -p828 -I0 -sS'VOG4774' -p829 -I1 -sS'VOG3179' -p830 -I1 -sS'VOG1603' -p831 -I1 -sS'VOG3172' -p832 -I0 -sS'VOG5747' -p833 -I2 -sS'VOG4778' -p834 -I0 -sS'VOG3174' -p835 -I1 -sS'VOG5210' -p836 -I2 -sS'VOG3206' -p837 -I1 -sS'VOG1601' -p838 -I1 -sS'VOG5213' -p839 -I0 -sS'VOG5212' -p840 -I1 -sS'VOG3196' -p841 -I1 -sS'VOG3193' -p842 -I1 -sS'VOG2350' -p843 -I2 -sS'VOG2355' -p844 -I2 -sS'VOG5749' -p845 -I0 -sS'VOG2357' -p846 -I2 -sS'VOG5748' -p847 -I0 -sS'VOG4617' -p848 -I0 -sS'VOG2829' -p849 -I1 -sS'VOG2828' -p850 -I1 -sS'VOG2827' -p851 -I1 -sS'VOG2825' -p852 -I1 -sS'VOG2824' -p853 -I1 -sS'VOG2823' -p854 -I1 -sS'VOG2822' -p855 -I1 -sS'VOG2821' -p856 -I1 -sS'VOG2820' -p857 -I1 -sS'VOG2131' -p858 -I0 -sS'VOG2130' -p859 -I0 -sS'VOG5404' -p860 -I1 -sS'VOG1930' -p861 -I0 -sS'VOG5331' -p862 -I0 -sS'VOG1849' -p863 -I0 -sS'VOG1024' -p864 -I0 -sS'VOG0514' -p865 -I1 -sS'VOG0511' -p866 -I0 -sS'VOG0510' -p867 -I0 -sS'VOG2001' -p868 -I0 -sS'VOG2000' -p869 -I0 -sS'VOG2002' -p870 -I0 -sS'VOG2005' -p871 -I0 -sS'VOG2004' -p872 -I0 -sS'VOG2006' -p873 -I0 -sS'VOG5406' -p874 -I2 -sS'VOG5844' -p875 -I1 -sS'VOG1400' -p876 -I2 -sS'VOG0469' -p877 -I0 -sS'VOG1113' -p878 -I1 -sS'VOG1110' -p879 -I1 -sS'VOG1447' -p880 -I0 -sS'VOG1443' -p881 -I0 -sS'VOG0461' -p882 -I0 -sS'VOG5334' -p883 -I0 -sS'VOG0463' -p884 -I0 -sS'VOG1119' -p885 -I1 -sS'VOG0465' -p886 -I0 -sS'VOG0464' -p887 -I0 -sS'VOG0466' -p888 -I0 -sS'VOG2649' -p889 -I1 -sS'VOG2648' -p890 -I1 -sS'VOG2643' -p891 -I1 -sS'VOG2642' -p892 -I1 -sS'VOG2641' -p893 -I1 -sS'VOG2645' -p894 -I1 -sS'VOG4864' -p895 -I0 -sS'VOG1596' -p896 -I1 -sS'VOG1597' -p897 -I1 -sS'VOG1594' -p898 -I1 -sS'VOG1595' -p899 -I1 -sS'VOG1593' -p900 -I1 -sS'VOG1590' -p901 -I1 -sS'VOG1591' -p902 -I1 -sS'VOG0861' -p903 -I1 -sS'VOG1598' -p904 -I1 -sS'VOG1599' -p905 -I1 -sS'VOG0645' -p906 -I2 -sS'VOG0644' -p907 -I2 -sS'VOG0643' -p908 -I2 -sS'VOG0642' -p909 -I2 -sS'VOG0887' -p910 -I1 -sS'VOG0889' -p911 -I1 -sS'VOG0888' -p912 -I1 -sS'VOG1208' -p913 -I1 -sS'VOG1209' -p914 -I1 -sS'VOG1206' -p915 -I1 -sS'VOG1207' -p916 -I1 -sS'VOG5585' -p917 -I1 -sS'VOG5584' -p918 -I1 -sS'VOG5587' -p919 -I1 -sS'VOG5586' -p920 -I1 -sS'VOG5581' -p921 -I2 -sS'VOG5580' -p922 -I1 -sS'VOG5583' -p923 -I2 -sS'VOG5582' -p924 -I2 -sS'VOG5589' -p925 -I1 -sS'VOG5588' -p926 -I1 -sS'VOG0080' -p927 -I0 -sS'VOG5361' -p928 -I1 -sS'VOG5360' -p929 -I2 -sS'VOG5362' -p930 -I0 -sS'VOG5365' -p931 -I0 -sS'VOG5364' -p932 -I1 -sS'VOG5367' -p933 -I2 -sS'VOG5366' -p934 -I0 -sS'VOG5368' -p935 -I1 -sS'VOG5691' -p936 -I2 -sS'VOG5690' -p937 -I2 -sS'VOG5693' -p938 -I2 -sS'VOG5692' -p939 -I2 -sS'VOG5695' -p940 -I1 -sS'VOG5694' -p941 -I0 -sS'VOG5697' -p942 -I0 -sS'VOG5696' -p943 -I1 -sS'VOG5699' -p944 -I1 -sS'VOG5698' -p945 -I0 -sS'VOG4188' -p946 -I0 -sS'VOG4189' -p947 -I0 -sS'VOG4181' -p948 -I0 -sS'VOG4186' -p949 -I0 -sS'VOG4184' -p950 -I0 -sS'VOG5743' -p951 -I0 -sS'VOG5214' -p952 -I2 -sS'VOG5217' -p953 -I0 -sS'VOG4619' -p954 -I1 -sS'VOG5211' -p955 -I2 -sS'VOG5746' -p956 -I0 -sS'VOG5745' -p957 -I0 -sS'VOG5744' -p958 -I0 -sS'VOG4612' -p959 -I1 -sS'VOG4613' -p960 -I0 -sS'VOG4610' -p961 -I2 -sS'VOG4611' -p962 -I1 -sS'VOG5219' -p963 -I0 -sS'VOG5218' -p964 -I0 -sS'VOG4164' -p965 -I0 -sS'VOG4165' -p966 -I0 -sS'VOG4166' -p967 -I0 -sS'VOG4167' -p968 -I0 -sS'VOG4161' -p969 -I0 -sS'VOG4162' -p970 -I0 -sS'VOG3340' -p971 -I2 -sS'VOG4168' -p972 -I0 -sS'VOG5969' -p973 -I0 -sS'VOG5968' -p974 -I0 -sS'VOG5963' -p975 -I0 -sS'VOG5962' -p976 -I0 -sS'VOG5961' -p977 -I0 -sS'VOG5960' -p978 -I0 -sS'VOG5967' -p979 -I0 -sS'VOG5966' -p980 -I0 -sS'VOG5964' -p981 -I0 -sS'VOG3741' -p982 -I2 -sS'VOG3740' -p983 -I2 -sS'VOG3742' -p984 -I2 -sS'VOG4507' -p985 -I0 -sS'VOG4504' -p986 -I0 -sS'VOG4505' -p987 -I0 -sS'VOG4503' -p988 -I0 -sS'VOG2900' -p989 -I1 -sS'VOG2901' -p990 -I1 -sS'VOG2902' -p991 -I1 -sS'VOG5201' -p992 -I0 -sS'VOG2906' -p993 -I1 -sS'VOG2907' -p994 -I1 -sS'VOG4762' -p995 -I0 -sS'VOG4760' -p996 -I0 -sS'VOG4761' -p997 -I0 -sS'VOG4766' -p998 -I2 -sS'VOG4764' -p999 -I0 -sS'VOG4765' -p1000 -I0 -sS'VOG4768' -p1001 -I0 -sS'VOG2344' -p1002 -I2 -sS'VOG2341' -p1003 -I2 -sS'VOG2349' -p1004 -I2 -sS'VOG2838' -p1005 -I1 -sS'VOG5720' -p1006 -I0 -sS'VOG2834' -p1007 -I1 -sS'VOG4488' -p1008 -I0 -sS'VOG2830' -p1009 -I1 -sS'VOG5231' -p1010 -I0 -sS'VOG2120' -p1011 -I1 -sS'VOG2121' -p1012 -I1 -sS'VOG2127' -p1013 -I0 -sS'VOG5725' -p1014 -I1 -sS'VOG2128' -p1015 -I0 -sS'VOG2129' -p1016 -I0 -sS'VOG5724' -p1017 -I1 -sS'VOG5234' -p1018 -I0 -sS'VOG1909' -p1019 -I1 -sS'VOG1907' -p1020 -I1 -sS'VOG1901' -p1021 -I1 -sS'VOG1900' -p1022 -I1 -sS'VOG1903' -p1023 -I1 -sS'VOG1902' -p1024 -I1 -sS'VOG1053' -p1025 -I2 -sS'VOG1052' -p1026 -I2 -sS'VOG3685' -p1027 -I1 -sS'VOG0509' -p1028 -I0 -sS'VOG1057' -p1029 -I2 -sS'VOG1055' -p1030 -I2 -sS'VOG0506' -p1031 -I0 -sS'VOG0507' -p1032 -I0 -sS'VOG2018' -p1033 -I1 -sS'VOG2012' -p1034 -I0 -sS'VOG2011' -p1035 -I0 -sS'VOG5265' -p1036 -I1 -sS'VOG4296' -p1037 -I0 -sS'VOG0476' -p1038 -I0 -sS'VOG0477' -p1039 -I0 -sS'VOG0474' -p1040 -I0 -sS'VOG0475' -p1041 -I0 -sS'VOG0473' -p1042 -I0 -sS'VOG0471' -p1043 -I0 -sS'VOG0479' -p1044 -I0 -sS'VOG1472' -p1045 -I0 -sS'VOG1474' -p1046 -I1 -sS'VOG1478' -p1047 -I1 -sS'VOG2659' -p1048 -I1 -sS'VOG2651' -p1049 -I1 -sS'VOG2652' -p1050 -I1 -sS'VOG2653' -p1051 -I1 -sS'VOG2655' -p1052 -I1 -sS'VOG2656' -p1053 -I1 -sS'VOG1418' -p1054 -I1 -sS'VOG0870' -p1055 -I0 -sS'VOG4704' -p1056 -I1 -sS'VOG0651' -p1057 -I1 -sS'VOG0656' -p1058 -I1 -sS'VOG0658' -p1059 -I1 -sS'VOG0894' -p1060 -I1 -sS'VOG0897' -p1061 -I1 -sS'VOG0890' -p1062 -I1 -sS'VOG0893' -p1063 -I1 -sS'VOG1411' -p1064 -I0 -sS'VOG1278' -p1065 -I1 -sS'VOG5592' -p1066 -I0 -sS'VOG5593' -p1067 -I1 -sS'VOG5590' -p1068 -I8 -sS'VOG5591' -p1069 -I0 -sS'VOG5596' -p1070 -I2 -sS'VOG5594' -p1071 -I0 -sS'VOG5595' -p1072 -I1 -sS'VOG5599' -p1073 -I0 -sS'VOG0095' -p1074 -I0 -sS'VOG5657' -p1075 -I0 -sS'VOG5124' -p1076 -I1 -sS'VOG1302' -p1077 -I1 -sS'VOG0258' -p1078 -I2 -sS'VOG0259' -p1079 -I2 -sS'VOG0254' -p1080 -I2 -sS'VOG5347' -p1081 -I1 -sS'VOG5378' -p1082 -I1 -sS'VOG5346' -p1083 -I1 -sS'VOG5376' -p1084 -I2 -sS'VOG5377' -p1085 -I0 -sS'VOG5374' -p1086 -I1 -sS'VOG5375' -p1087 -I1 -sS'VOG5372' -p1088 -I1 -sS'VOG5371' -p1089 -I0 -sS'VOG5344' -p1090 -I0 -sS'VOG5688' -p1091 -I0 -sS'VOG5689' -p1092 -I2 -sS'VOG5686' -p1093 -I1 -sS'VOG5687' -p1094 -I1 -sS'VOG5684' -p1095 -I0 -sS'VOG5685' -p1096 -I0 -sS'VOG5682' -p1097 -I0 -sS'VOG5683' -p1098 -I0 -sS'VOG5680' -p1099 -I5 -sS'VOG5681' -p1100 -I0 -sS'VOG5428' -p1101 -I0 -sS'VOG5429' -p1102 -I0 -sS'VOG5750' -p1103 -I0 -sS'VOG5203' -p1104 -I0 -sS'VOG5200' -p1105 -I0 -sS'VOG5753' -p1106 -I1 -sS'VOG5206' -p1107 -I0 -sS'VOG5755' -p1108 -I0 -sS'VOG5756' -p1109 -I0 -sS'VOG5205' -p1110 -I0 -sS'VOG4371' -p1111 -I0 -sS'VOG5759' -p1112 -I1 -sS'VOG5208' -p1113 -I0 -sS'VOG4372' -p1114 -I0 -sS'VOG5424' -p1115 -I0 -sS'VOG4151' -p1116 -I0 -sS'VOG4150' -p1117 -I0 -sS'VOG4938' -p1118 -I0 -sS'VOG4154' -p1119 -I0 -sS'VOG4409' -p1120 -I0 -sS'VOG4408' -p1121 -I0 -sS'VOG4159' -p1122 -I0 -sS'VOG4406' -p1123 -I0 -sS'VOG3682' -p1124 -I2 -sS'VOG3683' -p1125 -I2 -sS'VOG4403' -p1126 -I0 -sS'VOG4402' -p1127 -I0 -sS'VOG4401' -p1128 -I0 -sS'VOG4521' -p1129 -I0 -sS'VOG5978' -p1130 -I0 -sS'VOG5979' -p1131 -I0 -sS'VOG5970' -p1132 -I0 -sS'VOG5971' -p1133 -I0 -sS'VOG5972' -p1134 -I0 -sS'VOG5973' -p1135 -I1 -sS'VOG5974' -p1136 -I1 -sS'VOG5975' -p1137 -I0 -sS'VOG5976' -p1138 -I0 -sS'VOG5977' -p1139 -I0 -sS'VOG4083' -p1140 -I0 -sS'VOG4080' -p1141 -I0 -sS'VOG4086' -p1142 -I0 -sS'VOG4085' -p1143 -I0 -sS'VOG4084' -p1144 -I0 -sS'VOG4088' -p1145 -I0 -sS'VOG3756' -p1146 -I2 -sS'VOG3754' -p1147 -I2 -sS'VOG3755' -p1148 -I2 -sS'VOG4576' -p1149 -I1 -sS'VOG4575' -p1150 -I0 -sS'VOG4574' -p1151 -I1 -sS'VOG4578' -p1152 -I1 -sS'VOG4889' -p1153 -I2 -sS'VOG4888' -p1154 -I2 -sS'VOG2935' -p1155 -I1 -sS'VOG4882' -p1156 -I1 -sS'VOG2937' -p1157 -I1 -sS'VOG4880' -p1158 -I0 -sS'VOG4887' -p1159 -I0 -sS'VOG2930' -p1160 -I1 -sS'VOG4885' -p1161 -I0 -sS'VOG4884' -p1162 -I1 -sS'VOG3356' -p1163 -I6 -sS'VOG5419' -p1164 -I1 -sS'VOG3355' -p1165 -I6 -sS'VOG4799' -p1166 -I1 -sS'VOG4798' -p1167 -I0 -sS'VOG4794' -p1168 -I0 -sS'VOG4793' -p1169 -I1 -sS'VOG4792' -p1170 -I0 -sS'VOG4790' -p1171 -I1 -sS'VOG2332' -p1172 -I1 -sS'VOG2803' -p1173 -I1 -sS'VOG2802' -p1174 -I1 -sS'VOG2804' -p1175 -I1 -sS'VOG2489' -p1176 -I1 -sS'VOG1993' -p1177 -I0 -sS'VOG2485' -p1178 -I1 -sS'VOG2484' -p1179 -I1 -sS'VOG2487' -p1180 -I1 -sS'VOG1520' -p1181 -I1 -sS'VOG2481' -p1182 -I1 -sS'VOG2482' -p1183 -I1 -sS'VOG1996' -p1184 -I0 -sS'VOG4208' -p1185 -I0 -sS'VOG5330' -p1186 -I0 -sS'VOG4946' -p1187 -I0 -sS'VOG1919' -p1188 -I0 -sS'VOG1629' -p1189 -I1 -sS'VOG1916' -p1190 -I0 -sS'VOG1917' -p1191 -I0 -sS'VOG5885' -p1192 -I0 -sS'VOG1044' -p1193 -I1 -sS'VOG1045' -p1194 -I6 -sS'VOG1049' -p1195 -I1 -sS'VOG5887' -p1196 -I0 -sS'VOG4201' -p1197 -I0 -sS'VOG1681' -p1198 -I0 -sS'VOG1684' -p1199 -I0 -sS'VOG4200' -p1200 -I0 -sS'VOG2791' -p1201 -I0 -sS'VOG2793' -p1202 -I0 -sS'VOG2792' -p1203 -I0 -sS'VOG2795' -p1204 -I0 -sS'VOG2794' -p1205 -I0 -sS'VOG3824' -p1206 -I0 -sS'VOG3822' -p1207 -I0 -sS'VOG3843' -p1208 -I0 -sS'VOG3847' -p1209 -I0 -sS'VOG0403' -p1210 -I0 -sS'VOG0402' -p1211 -I0 -sS'VOG0401' -p1212 -I0 -sS'VOG0400' -p1213 -I0 -sS'VOG0407' -p1214 -I0 -sS'VOG0404' -p1215 -I0 -sS'VOG0409' -p1216 -I0 -sS'VOG0408' -p1217 -I0 -sS'VOG2665' -p1218 -I1 -sS'VOG2661' -p1219 -I1 -sS'VOG2660' -p1220 -I1 -sS'VOG1468' -p1221 -I0 -sS'VOG1467' -p1222 -I0 -sS'VOG1462' -p1223 -I0 -sS'VOG2668' -p1224 -I1 -sS'VOG1460' -p1225 -I0 -sS'VOG1461' -p1226 -I0 -sS'VOG2463' -p1227 -I1 -sS'VOG1860' -p1228 -I0 -sS'VOG1861' -p1229 -I0 -sS'VOG1867' -p1230 -I0 -sS'VOG1864' -p1231 -I0 -sS'VOG0315' -p1232 -I1 -sS'VOG0311' -p1233 -I1 -sS'VOG1261' -p1234 -I1 -sS'VOG1262' -p1235 -I1 -sS'VOG1263' -p1236 -I1 -sS'VOG1266' -p1237 -I1 -sS'VOG0793' -p1238 -I1 -sS'VOG0792' -p1239 -I1 -sS'VOG0791' -p1240 -I1 -sS'VOG0790' -p1241 -I1 -sS'VOG0797' -p1242 -I1 -sS'VOG0795' -p1243 -I1 -sS'VOG0794' -p1244 -I1 -sS'VOG0799' -p1245 -I1 -sS'VOG5569' -p1246 -I1 -sS'VOG5565' -p1247 -I0 -sS'VOG5564' -p1248 -I0 -sS'VOG5561' -p1249 -I2 -sS'VOG5560' -p1250 -I0 -sS'VOG5162' -p1251 -I0 -sS'VOG5161' -p1252 -I0 -sS'VOG5167' -p1253 -I0 -sS'VOG5166' -p1254 -I0 -sS'VOG5165' -p1255 -I0 -sS'VOG5164' -p1256 -I0 -sS'VOG5169' -p1257 -I0 -sS'VOG5309' -p1258 -I0 -sS'VOG5308' -p1259 -I0 -sS'VOG5303' -p1260 -I1 -sS'VOG5302' -p1261 -I0 -sS'VOG5307' -p1262 -I0 -sS'VOG5305' -p1263 -I2 -sS'VOG0134' -p1264 -I0 -sS'VOG0133' -p1265 -I0 -sS'VOG0131' -p1266 -I0 -sS'VOG0139' -p1267 -I0 -sS'VOG5768' -p1268 -I0 -sS'VOG5765' -p1269 -I0 -sS'VOG5766' -p1270 -I0 -sS'VOG5761' -p1271 -I0 -sS'VOG5760' -p1272 -I0 -sS'VOG5763' -p1273 -I0 -sS'VOG5945' -p1274 -I1 -sS'VOG5416' -p1275 -I0 -sS'VOG5415' -p1276 -I0 -sS'VOG5946' -p1277 -I0 -sS'VOG4418' -p1278 -I0 -sS'VOG5940' -p1279 -I1 -sS'VOG5943' -p1280 -I0 -sS'VOG4149' -p1281 -I0 -sS'VOG4146' -p1282 -I0 -sS'VOG4416' -p1283 -I0 -sS'VOG4417' -p1284 -I0 -sS'VOG4410' -p1285 -I0 -sS'VOG4411' -p1286 -I0 -sS'VOG4140' -p1287 -I0 -sS'VOG5784' -p1288 -I0 -sS'VOG5783' -p1289 -I0 -sS'VOG5780' -p1290 -I1 -sS'VOG5789' -p1291 -I0 -sS'VOG4090' -p1292 -I0 -sS'VOG4093' -p1293 -I0 -sS'VOG4094' -p1294 -I0 -sS'VOG4097' -p1295 -I0 -sS'VOG4099' -p1296 -I0 -sS'VOG4560' -p1297 -I1 -sS'VOG4569' -p1298 -I1 -sS'VOG0238' -p1299 -I0 -sS'VOG3785' -p1300 -I0 -sS'VOG3789' -p1301 -I0 -sS'VOG3788' -p1302 -I0 -sS'VOG3034' -p1303 -I1 -sS'VOG3313' -p1304 -I2 -sS'VOG5984' -p1305 -I0 -sS'VOG4898' -p1306 -I0 -sS'VOG4899' -p1307 -I0 -sS'VOG2928' -p1308 -I1 -sS'VOG2929' -p1309 -I1 -sS'VOG4891' -p1310 -I1 -sS'VOG4892' -p1311 -I1 -sS'VOG4893' -p1312 -I0 -sS'VOG4894' -p1313 -I0 -sS'VOG2927' -p1314 -I1 -sS'VOG4896' -p1315 -I0 -sS'VOG4897' -p1316 -I0 -sS'VOG1329' -p1317 -I1 -sS'VOG3327' -p1318 -I0 -sS'VOG4789' -p1319 -I2 -sS'VOG4784' -p1320 -I0 -sS'VOG4785' -p1321 -I0 -sS'VOG4786' -p1322 -I0 -sS'VOG4787' -p1323 -I0 -sS'VOG4781' -p1324 -I0 -sS'VOG4783' -p1325 -I1 -sS'VOG2320' -p1326 -I2 -sS'VOG2323' -p1327 -I2 -sS'VOG2325' -p1328 -I2 -sS'VOG2326' -p1329 -I2 -sS'VOG3251' -p1330 -I0 -sS'VOG2998' -p1331 -I1 -sS'VOG0117' -p1332 -I0 -sS'VOG2499' -p1333 -I1 -sS'VOG2492' -p1334 -I1 -sS'VOG2493' -p1335 -I1 -sS'VOG2490' -p1336 -I1 -sS'VOG2491' -p1337 -I1 -sS'VOG2497' -p1338 -I1 -sS'VOG2494' -p1339 -I1 -sS'VOG2785' -p1340 -I1 -sS'VOG2783' -p1341 -I1 -sS'VOG2780' -p1342 -I1 -sS'VOG1074' -p1343 -I2 -sS'VOG1076' -p1344 -I2 -sS'VOG1073' -p1345 -I2 -sS'VOG2078' -p1346 -I1 -sS'VOG2072' -p1347 -I0 -sS'VOG1673' -p1348 -I1 -sS'VOG2075' -p1349 -I1 -sS'VOG1670' -p1350 -I1 -sS'VOG5258' -p1351 -I1 -sS'VOG0410' -p1352 -I0 -sS'VOG0411' -p1353 -I0 -sS'VOG0412' -p1354 -I0 -sS'VOG0413' -p1355 -I0 -sS'VOG0414' -p1356 -I0 -sS'VOG0415' -p1357 -I0 -sS'VOG0416' -p1358 -I0 -sS'VOG0417' -p1359 -I0 -sS'VOG0418' -p1360 -I0 -sS'VOG2672' -p1361 -I1 -sS'VOG2673' -p1362 -I1 -sS'VOG1419' -p1363 -I1 -sS'VOG2671' -p1364 -I1 -sS'VOG2676' -p1365 -I1 -sS'VOG2674' -p1366 -I1 -sS'VOG2678' -p1367 -I1 -sS'VOG1416' -p1368 -I0 -sS'VOG2474' -p1369 -I1 -sS'VOG4040' -p1370 -I0 -sS'VOG1899' -p1371 -I1 -sS'VOG1898' -p1372 -I1 -sS'VOG1897' -p1373 -I1 -sS'VOG1895' -p1374 -I1 -sS'VOG1893' -p1375 -I1 -sS'VOG1892' -p1376 -I1 -sS'VOG1890' -p1377 -I1 -sS'VOG0374' -p1378 -I0 -sS'VOG1527' -p1379 -I1 -sS'VOG1525' -p1380 -I1 -sS'VOG1256' -p1381 -I1 -sS'VOG1251' -p1382 -I1 -sS'VOG1250' -p1383 -I1 -sS'VOG1252' -p1384 -I1 -sS'VOG1259' -p1385 -I1 -sS'VOG1258' -p1386 -I1 -sS'VOG0302' -p1387 -I2 -sS'VOG1528' -p1388 -I1 -sS'VOG1095' -p1389 -I1 -sS'VOG1094' -p1390 -I1 -sS'VOG1092' -p1391 -I1 -sS'VOG1099' -p1392 -I1 -sS'VOG0784' -p1393 -I1 -sS'VOG0787' -p1394 -I1 -sS'VOG0789' -p1395 -I1 -sS'VOG5578' -p1396 -I1 -sS'VOG5579' -p1397 -I1 -sS'VOG5574' -p1398 -I1 -sS'VOG5575' -p1399 -I1 -sS'VOG5576' -p1400 -I1 -sS'VOG5577' -p1401 -I1 -sS'VOG5570' -p1402 -I1 -sS'VOG5571' -p1403 -I0 -sS'VOG5572' -p1404 -I1 -sS'VOG5573' -p1405 -I1 -sS'VOG5170' -p1406 -I2 -sS'VOG5171' -p1407 -I0 -sS'VOG5172' -p1408 -I0 -sS'VOG5173' -p1409 -I0 -sS'VOG5174' -p1410 -I1 -sS'VOG5175' -p1411 -I0 -sS'VOG5176' -p1412 -I1 -sS'VOG5177' -p1413 -I0 -sS'VOG5178' -p1414 -I0 -sS'VOG5179' -p1415 -I0 -sS'VOG0237' -p1416 -I0 -sS'VOG5389' -p1417 -I0 -sS'VOG5319' -p1418 -I0 -sS'VOG0040' -p1419 -I2 -sS'VOG5310' -p1420 -I0 -sS'VOG5312' -p1421 -I1 -sS'VOG5313' -p1422 -I1 -sS'VOG5314' -p1423 -I0 -sS'VOG5315' -p1424 -I2 -sS'VOG5317' -p1425 -I1 -sS'VOG4526' -p1426 -I0 -sS'VOG0125' -p1427 -I0 -sS'VOG0126' -p1428 -I0 -sS'VOG0127' -p1429 -I0 -sS'VOG0122' -p1430 -I0 -sS'VOG0573' -p1431 -I0 -sS'VOG4319' -p1432 -I1 -sS'VOG0128' -p1433 -I0 -sS'VOG0129' -p1434 -I0 -sS'VOG5778' -p1435 -I0 -sS'VOG5779' -p1436 -I0 -sS'VOG5772' -p1437 -I0 -sS'VOG5770' -p1438 -I0 -sS'VOG5771' -p1439 -I0 -sS'VOG5952' -p1440 -I1 -sS'VOG5405' -p1441 -I0 -sS'VOG4139' -p1442 -I0 -sS'VOG4138' -p1443 -I0 -sS'VOG5400' -p1444 -I1 -sS'VOG5401' -p1445 -I0 -sS'VOG5402' -p1446 -I1 -sS'VOG5403' -p1447 -I1 -sS'VOG4133' -p1448 -I0 -sS'VOG4420' -p1449 -I0 -sS'VOG5958' -p1450 -I1 -sS'VOG4130' -p1451 -I0 -sS'VOG4425' -p1452 -I0 -sS'VOG4136' -p1453 -I0 -sS'VOG4135' -p1454 -I0 -sS'VOG5794' -p1455 -I1 -sS'VOG5795' -p1456 -I1 -sS'VOG5796' -p1457 -I1 -sS'VOG5797' -p1458 -I1 -sS'VOG5791' -p1459 -I0 -sS'VOG5792' -p1460 -I0 -sS'VOG5793' -p1461 -I1 -sS'VOG4951' -p1462 -I0 -sS'VOG4950' -p1463 -I0 -sS'VOG5798' -p1464 -I0 -sS'VOG5799' -p1465 -I0 -sS'VOG4558' -p1466 -I1 -sS'VOG4228' -p1467 -I1 -sS'VOG4555' -p1468 -I1 -sS'VOG4554' -p1469 -I1 -sS'VOG4557' -p1470 -I1 -sS'VOG4553' -p1471 -I1 -sS'VOG4046' -p1472 -I0 -sS'VOG4045' -p1473 -I0 -sS'VOG4044' -p1474 -I0 -sS'VOG4043' -p1475 -I0 -sS'VOG4042' -p1476 -I0 -sS'VOG3798' -p1477 -I0 -sS'VOG3799' -p1478 -I0 -sS'VOG3796' -p1479 -I0 -sS'VOG3797' -p1480 -I0 -sS'VOG3794' -p1481 -I2 -sS'VOG3027' -p1482 -I1 -sS'VOG5950' -p1483 -I0 -sS'VOG3790' -p1484 -I0 -sS'VOG4048' -p1485 -I0 -sS'VOG5957' -p1486 -I0 -sS'VOG4421' -p1487 -I0 -sS'VOG4132' -p1488 -I0 -sS'VOG3339' -p1489 -I2 -sS'VOG4423' -p1490 -I0 -sS'VOG5959' -p1491 -I0 -sS'VOG2318' -p1492 -I2 -sS'VOG2315' -p1493 -I2 -sS'VOG2314' -p1494 -I2 -sS'VOG2317' -p1495 -I2 -sS'VOG2310' -p1496 -I2 -sS'VOG4424' -p1497 -I0 -sS'VOG2861' -p1498 -I1 -sS'VOG2860' -p1499 -I1 -sS'VOG2866' -p1500 -I1 -sS'VOG2864' -p1501 -I1 -sS'VOG1831' -p1502 -I0 -sS'VOG2044' -p1503 -I1 -sS'VOG2041' -p1504 -I1 -sS'VOG2040' -p1505 -I1 -sS'VOG2042' -p1506 -I1 -sS'VOG1063' -p1507 -I2 -sS'VOG2049' -p1508 -I1 -sS'VOG1668' -p1509 -I1 -sS'VOG1666' -p1510 -I1 -sS'VOG1661' -p1511 -I1 -sS'VOG1662' -p1512 -I1 -sS'VOG1663' -p1513 -I1 -sS'VOG1445' -p1514 -I0 -sS'VOG3804' -p1515 -I0 -sS'VOG2312' -p1516 -I2 -sS'VOG3803' -p1517 -I0 -sS'VOG3801' -p1518 -I0 -sS'VOG0429' -p1519 -I0 -sS'VOG0428' -p1520 -I0 -sS'VOG0939' -p1521 -I2 -sS'VOG0425' -p1522 -I0 -sS'VOG0936' -p1523 -I1 -sS'VOG0427' -p1524 -I0 -sS'VOG0426' -p1525 -I0 -sS'VOG0421' -p1526 -I0 -sS'VOG0930' -p1527 -I1 -sS'VOG2689' -p1528 -I1 -sS'VOG2688' -p1529 -I1 -sS'VOG2687' -p1530 -I1 -sS'VOG2686' -p1531 -I1 -sS'VOG2685' -p1532 -I1 -sS'VOG2684' -p1533 -I1 -sS'VOG2683' -p1534 -I1 -sS'VOG2682' -p1535 -I1 -sS'VOG1406' -p1536 -I2 -sS'VOG1407' -p1537 -I2 -sS'VOG2441' -p1538 -I0 -sS'VOG2440' -p1539 -I0 -sS'VOG2444' -p1540 -I0 -sS'VOG2447' -p1541 -I0 -sS'VOG1790' -p1542 -I0 -sS'VOG2448' -p1543 -I0 -sS'VOG1796' -p1544 -I0 -sS'VOG1888' -p1545 -I1 -sS'VOG0689' -p1546 -I1 -sS'VOG0681' -p1547 -I4 -sS'VOG0686' -p1548 -I0 -sS'VOG1242' -p1549 -I1 -sS'VOG1243' -p1550 -I1 -sS'VOG1241' -p1551 -I1 -sS'VOG1246' -p1552 -I1 -sS'VOG1248' -p1553 -I1 -sS'VOG1249' -p1554 -I1 -sS'VOG0337' -p1555 -I7 -sS'VOG1085' -p1556 -I0 -sS'VOG1080' -p1557 -I2 -sS'VOG1088' -p1558 -I0 -sS'VOG4659' -p1559 -I1 -sS'VOG5549' -p1560 -I2 -sS'VOG5548' -p1561 -I0 -sS'VOG5541' -p1562 -I0 -sS'VOG5540' -p1563 -I0 -sS'VOG5543' -p1564 -I1 -sS'VOG5545' -p1565 -I0 -sS'VOG5547' -p1566 -I0 -sS'VOG5546' -p1567 -I0 -sS'VOG0205' -p1568 -I1 -sS'VOG3987' -p1569 -I1 -sS'VOG0207' -p1570 -I1 -sS'VOG0202' -p1571 -I1 -sS'VOG0209' -p1572 -I1 -sS'VOG2102' -p1573 -I2 -sS'VOG3984' -p1574 -I1 -sS'VOG5149' -p1575 -I0 -sS'VOG4041' -p1576 -I0 -sS'VOG1336' -p1577 -I1 -sS'VOG1337' -p1578 -I1 -sS'VOG5147' -p1579 -I0 -sS'VOG5146' -p1580 -I0 -sS'VOG5141' -p1581 -I0 -sS'VOG5140' -p1582 -I0 -sS'VOG5143' -p1583 -I0 -sS'VOG3982' -p1584 -I1 -sS'VOG3024' -p1585 -I1 -sS'VOG3025' -p1586 -I1 -sS'VOG3793' -p1587 -I2 -sS'VOG3791' -p1588 -I0 -sS'VOG0113' -p1589 -I0 -sS'VOG0115' -p1590 -I0 -sS'VOG0114' -p1591 -I0 -sS'VOG4306' -p1592 -I0 -sS'VOG2959' -p1593 -I1 -sS'VOG0118' -p1594 -I0 -sS'VOG5431' -p1595 -I0 -sS'VOG4947' -p1596 -I0 -sS'VOG5433' -p1597 -I1 -sS'VOG5432' -p1598 -I1 -sS'VOG4942' -p1599 -I3 -sS'VOG5434' -p1600 -I2 -sS'VOG5437' -p1601 -I0 -sS'VOG5436' -p1602 -I0 -sS'VOG4120' -p1603 -I0 -sS'VOG4121' -p1604 -I0 -sS'VOG4122' -p1605 -I0 -sS'VOG4123' -p1606 -I0 -sS'VOG4124' -p1607 -I0 -sS'VOG4125' -p1608 -I0 -sS'VOG4948' -p1609 -I0 -sS'VOG4949' -p1610 -I0 -sS'VOG5325' -p1611 -I0 -sS'VOG5892' -p1612 -I0 -sS'VOG5891' -p1613 -I0 -sS'VOG5890' -p1614 -I0 -sS'VOG5897' -p1615 -I0 -sS'VOG5896' -p1616 -I0 -sS'VOG5895' -p1617 -I0 -sS'VOG5894' -p1618 -I0 -sS'VOG5899' -p1619 -I0 -sS'VOG5898' -p1620 -I0 -sS'VOG5329' -p1621 -I0 -sS'VOG5328' -p1622 -I0 -sS'VOG4232' -p1623 -I1 -sS'VOG4054' -p1624 -I0 -sS'VOG4055' -p1625 -I0 -sS'VOG4056' -p1626 -I0 -sS'VOG4050' -p1627 -I0 -sS'VOG4051' -p1628 -I0 -sS'VOG4052' -p1629 -I0 -sS'VOG3010' -p1630 -I1 -sS'VOG4058' -p1631 -I0 -sS'VOG3017' -p1632 -I1 -sS'VOG3016' -p1633 -I1 -sS'VOG3491' -p1634 -I2 -sS'VOG5647' -p1635 -I0 -sS'VOG3653' -p1636 -I1 -sS'VOG2306' -p1637 -I2 -sS'VOG2870' -p1638 -I1 -sS'VOG4032' -p1639 -I0 -sS'VOG2873' -p1640 -I1 -sS'VOG2876' -p1641 -I1 -sS'VOG2877' -p1642 -I1 -sS'VOG2878' -p1643 -I1 -sS'VOG2879' -p1644 -I1 -sS'VOG1581' -p1645 -I1 -sS'VOG0529' -p1646 -I1 -sS'VOG1630' -p1647 -I1 -sS'VOG0913' -p1648 -I1 -sS'VOG2278' -p1649 -I0 -sS'VOG5712' -p1650 -I2 -sS'VOG0393' -p1651 -I0 -sS'VOG4422' -p1652 -I0 -sS'VOG2052' -p1653 -I1 -sS'VOG2053' -p1654 -I1 -sS'VOG2051' -p1655 -I1 -sS'VOG2056' -p1656 -I1 -sS'VOG2057' -p1657 -I1 -sS'VOG2054' -p1658 -I1 -sS'VOG2059' -p1659 -I1 -sS'VOG1659' -p1660 -I1 -sS'VOG1658' -p1661 -I1 -sS'VOG1651' -p1662 -I1 -sS'VOG1650' -p1663 -I1 -sS'VOG1652' -p1664 -I1 -sS'VOG1655' -p1665 -I1 -sS'VOG1654' -p1666 -I1 -sS'VOG1657' -p1667 -I1 -sS'VOG3870' -p1668 -I0 -sS'VOG3986' -p1669 -I1 -sS'VOG0438' -p1670 -I0 -sS'VOG1436' -p1671 -I0 -sS'VOG1433' -p1672 -I0 -sS'VOG0924' -p1673 -I1 -sS'VOG0433' -p1674 -I0 -sS'VOG0926' -p1675 -I1 -sS'VOG0927' -p1676 -I1 -sS'VOG1439' -p1677 -I0 -sS'VOG0437' -p1678 -I0 -sS'VOG0922' -p1679 -I1 -sS'VOG2698' -p1680 -I1 -sS'VOG2696' -p1681 -I1 -sS'VOG2697' -p1682 -I1 -sS'VOG2690' -p1683 -I1 -sS'VOG2691' -p1684 -I1 -sS'VOG2692' -p1685 -I1 -sS'VOG2456' -p1686 -I0 -sS'VOG2457' -p1687 -I0 -sS'VOG2454' -p1688 -I0 -sS'VOG2452' -p1689 -I0 -sS'VOG2453' -p1690 -I0 -sS'VOG2451' -p1691 -I0 -sS'VOG3983' -p1692 -I1 -sS'VOG1508' -p1693 -I0 -sS'VOG4696' -p1694 -I0 -sS'VOG5379' -p1695 -I0 -sS'VOG1801' -p1696 -I0 -sS'VOG5953' -p1697 -I0 -sS'VOG4670' -p1698 -I1 -sS'VOG4671' -p1699 -I0 -sS'VOG0740' -p1700 -I1 -sS'VOG4673' -p1701 -I1 -sS'VOG0749' -p1702 -I1 -sS'VOG5159' -p1703 -I0 -sS'VOG5152' -p1704 -I0 -sS'VOG5153' -p1705 -I0 -sS'VOG5150' -p1706 -I0 -sS'VOG5621' -p1707 -I0 -sS'VOG5157' -p1708 -I1 -sS'VOG5154' -p1709 -I1 -sS'VOG5155' -p1710 -I1 -sS'VOG0697' -p1711 -I1 -sS'VOG0695' -p1712 -I1 -sS'VOG0692' -p1713 -I1 -sS'VOG0691' -p1714 -I1 -sS'VOG0108' -p1715 -I0 -sS'VOG0109' -p1716 -I0 -sS'VOG0106' -p1717 -I0 -sS'VOG4334' -p1718 -I1 -sS'VOG0104' -p1719 -I0 -sS'VOG0105' -p1720 -I0 -sS'VOG5555' -p1721 -I0 -sS'VOG5552' -p1722 -I1 -sS'VOG5550' -p1723 -I2 -sS'VOG2948' -p1724 -I1 -sS'VOG5559' -p1725 -I0 -sS'VOG4933' -p1726 -I0 -sS'VOG4932' -p1727 -I0 -sS'VOG4930' -p1728 -I0 -sS'VOG4937' -p1729 -I0 -sS'VOG4936' -p1730 -I1 -sS'VOG4935' -p1731 -I0 -sS'VOG4934' -p1732 -I1 -sS'VOG5426' -p1733 -I1 -sS'VOG5427' -p1734 -I0 -sS'VOG4939' -p1735 -I1 -sS'VOG5425' -p1736 -I1 -sS'VOG5422' -p1737 -I0 -sS'VOG5423' -p1738 -I0 -sS'VOG5420' -p1739 -I0 -sS'VOG5421' -p1740 -I0 -sS'VOG1457' -p1741 -I0 -sS'VOG1104' -p1742 -I1 -sS'VOG4277' -p1743 -I0 -sS'VOG5880' -p1744 -I0 -sS'VOG5881' -p1745 -I0 -sS'VOG5882' -p1746 -I0 -sS'VOG5883' -p1747 -I0 -sS'VOG5884' -p1748 -I0 -sS'VOG5337' -p1749 -I0 -sS'VOG5886' -p1750 -I0 -sS'VOG5335' -p1751 -I0 -sS'VOG5888' -p1752 -I0 -sS'VOG5889' -p1753 -I0 -sS'VOG4203' -p1754 -I0 -sS'VOG5339' -p1755 -I0 -sS'VOG4205' -p1756 -I0 -sS'VOG4204' -p1757 -I0 -sS'VOG4207' -p1758 -I0 -sS'VOG4206' -p1759 -I0 -sS'VOG4062' -p1760 -I0 -sS'VOG4065' -p1761 -I0 -sS'VOG4064' -p1762 -I0 -sS'VOG4067' -p1763 -I0 -sS'VOG4066' -p1764 -I0 -sS'VOG4068' -p1765 -I0 -sS'VOG4591' -p1766 -I0 -sS'VOG4592' -p1767 -I2 -sS'VOG4595' -p1768 -I0 -sS'VOG4594' -p1769 -I0 -sS'VOG4599' -p1770 -I1 -sS'VOG5202' -p1771 -I0 -sS'VOG1109' -p1772 -I1 -sS'VOG3480' -p1773 -I1 -sS'VOG4441' -p1774 -I2 -sS'VOG4116' -p1775 -I0 -sS'VOG5754' -p1776 -I1 -sS'VOG4119' -p1777 -I0 -sS'VOG5207' -p1778 -I1 -sS'VOG0116' -p1779 -I0 -sS'VOG2999' -p1780 -I1 -sS'VOG3467' -p1781 -I1 -sS'VOG3461' -p1782 -I1 -sS'VOG3462' -p1783 -I1 -sS'VOG3463' -p1784 -I1 -sS'VOG2992' -p1785 -I1 -sS'VOG2994' -p1786 -I1 -sS'VOG3970' -p1787 -I1 -sS'VOG2382' -p1788 -I2 -sS'VOG5209' -p1789 -I0 -sS'VOG2849' -p1790 -I1 -sS'VOG2848' -p1791 -I1 -sS'VOG3898' -p1792 -I0 -sS'VOG2845' -p1793 -I1 -sS'VOG2844' -p1794 -I1 -sS'VOG2847' -p1795 -I1 -sS'VOG2846' -p1796 -I1 -sS'VOG2842' -p1797 -I1 -sS'VOG3002' -p1798 -I1 -sS'VOG3000' -p1799 -I1 -sS'VOG3001' -p1800 -I1 -sS'VOG4414' -p1801 -I0 -sS'VOG4018' -p1802 -I0 -sS'VOG2201' -p1803 -I0 -sS'VOG2200' -p1804 -I0 -sS'VOG2389' -p1805 -I2 -sS'VOG3680' -p1806 -I2 -sS'VOG3681' -p1807 -I2 -sS'VOG4405' -p1808 -I0 -sS'VOG1646' -p1809 -I1 -sS'VOG1647' -p1810 -I1 -sS'VOG1644' -p1811 -I1 -sS'VOG1642' -p1812 -I1 -sS'VOG1643' -p1813 -I1 -sS'VOG1641' -p1814 -I1 -sS'VOG1648' -p1815 -I1 -sS'VOG1649' -p1816 -I1 -sS'VOG4016' -p1817 -I0 -sS'VOG2515' -p1818 -I1 -sS'VOG4400' -p1819 -I0 -sS'VOG2513' -p1820 -I1 -sS'VOG2512' -p1821 -I1 -sS'VOG2192' -p1822 -I0 -sS'VOG2191' -p1823 -I0 -sS'VOG2190' -p1824 -I0 -sS'VOG2196' -p1825 -I0 -sS'VOG2195' -p1826 -I0 -sS'VOG2194' -p1827 -I0 -sS'VOG2199' -p1828 -I0 -sS'VOG2198' -p1829 -I0 -sS'VOG0919' -p1830 -I1 -sS'VOG0918' -p1831 -I1 -sS'VOG1426' -p1832 -I0 -sS'VOG1427' -p1833 -I0 -sS'VOG1424' -p1834 -I0 -sS'VOG0911' -p1835 -I1 -sS'VOG0910' -p1836 -I1 -sS'VOG1428' -p1837 -I0 -sS'VOG1429' -p1838 -I0 -sS'VOG0914' -p1839 -I1 -sS'VOG0917' -p1840 -I1 -sS'VOG3916' -p1841 -I0 -sS'VOG2428' -p1842 -I0 -sS'VOG5638' -p1843 -I0 -sS'VOG2423' -p1844 -I0 -sS'VOG2422' -p1845 -I0 -sS'VOG2421' -p1846 -I0 -sS'VOG3918' -p1847 -I1 -sS'VOG2424' -p1848 -I0 -sS'VOG0351' -p1849 -I0 -sS'VOG0356' -p1850 -I0 -sS'VOG1518' -p1851 -I1 -sS'VOG1519' -p1852 -I1 -sS'VOG0598' -p1853 -I1 -sS'VOG1510' -p1854 -I0 -sS'VOG3751' -p1855 -I2 -sS'VOG3124' -p1856 -I0 -sS'VOG0776' -p1857 -I1 -sS'VOG1350' -p1858 -I0 -sS'VOG1352' -p1859 -I0 -sS'VOG1353' -p1860 -I0 -sS'VOG1355' -p1861 -I0 -sS'VOG5181' -p1862 -I0 -sS'VOG5180' -p1863 -I0 -sS'VOG5183' -p1864 -I0 -sS'VOG5182' -p1865 -I0 -sS'VOG5185' -p1866 -I0 -sS'VOG5184' -p1867 -I0 -sS'VOG5187' -p1868 -I0 -sS'VOG5186' -p1869 -I0 -sS'VOG5189' -p1870 -I0 -sS'VOG5188' -p1871 -I0 -sS'VOG5635' -p1872 -I0 -sS'VOG5634' -p1873 -I0 -sS'VOG0178' -p1874 -I4 -sS'VOG0173' -p1875 -I4 -sS'VOG0172' -p1876 -I4 -sS'VOG4320' -p1877 -I1 -sS'VOG0170' -p1878 -I4 -sS'VOG0177' -p1879 -I4 -sS'VOG0176' -p1880 -I4 -sS'VOG0175' -p1881 -I4 -sS'VOG0174' -p1882 -I4 -sS'VOG5523' -p1883 -I1 -sS'VOG5522' -p1884 -I1 -sS'VOG5521' -p1885 -I0 -sS'VOG5527' -p1886 -I1 -sS'VOG5526' -p1887 -I1 -sS'VOG5525' -p1888 -I0 -sS'VOG5524' -p1889 -I1 -sS'VOG5528' -p1890 -I2 -sS'VOG4692' -p1891 -I1 -sS'VOG4921' -p1892 -I0 -sS'VOG4922' -p1893 -I0 -sS'VOG5458' -p1894 -I0 -sS'VOG4924' -p1895 -I0 -sS'VOG4697' -p1896 -I0 -sS'VOG4927' -p1897 -I0 -sS'VOG4928' -p1898 -I2 -sS'VOG5980' -p1899 -I1 -sS'VOG4698' -p1900 -I0 -sS'VOG5450' -p1901 -I0 -sS'VOG5457' -p1902 -I0 -sS'VOG5456' -p1903 -I0 -sS'VOG5455' -p1904 -I0 -sS'VOG5454' -p1905 -I1 -sS'VOG3438' -p1906 -I1 -sS'VOG0006' -p1907 -I5 -sS'VOG4214' -p1908 -I0 -sS'VOG4212' -p1909 -I0 -sS'VOG4213' -p1910 -I0 -sS'VOG4210' -p1911 -I0 -sS'VOG4520' -p1912 -I0 -sS'VOG2681' -p1913 -I1 -sS'VOG4078' -p1914 -I0 -sS'VOG4079' -p1915 -I0 -sS'VOG4077' -p1916 -I0 -sS'VOG4074' -p1917 -I0 -sS'VOG4072' -p1918 -I0 -sS'VOG4070' -p1919 -I0 -sS'VOG4071' -p1920 -I0 -sS'VOG5856' -p1921 -I1 -sS'VOG5855' -p1922 -I1 -sS'VOG5854' -p1923 -I0 -sS'VOG5853' -p1924 -I1 -sS'VOG5852' -p1925 -I1 -sS'VOG5851' -p1926 -I2 -sS'VOG5850' -p1927 -I0 -sS'VOG4586' -p1928 -I1 -sS'VOG4584' -p1929 -I0 -sS'VOG4857' -p1930 -I0 -sS'VOG4582' -p1931 -I1 -sS'VOG4583' -p1932 -I1 -sS'VOG5858' -p1933 -I0 -sS'VOG3679' -p1934 -I2 -sS'VOG3678' -p1935 -I2 -sS'VOG4100' -p1936 -I0 -sS'VOG4101' -p1937 -I0 -sS'VOG4106' -p1938 -I0 -sS'VOG4104' -p1939 -I0 -sS'VOG4105' -p1940 -I0 -sS'VOG4458' -p1941 -I0 -sS'VOG4108' -p1942 -I0 -sS'VOG4109' -p1943 -I0 -sS'VOG3675' -p1944 -I2 -sS'VOG3677' -p1945 -I2 -sS'VOG2988' -p1946 -I1 -sS'VOG3453' -p1947 -I1 -sS'VOG3452' -p1948 -I1 -sS'VOG4523' -p1949 -I0 -sS'VOG2980' -p1950 -I1 -sS'VOG2981' -p1951 -I1 -sS'VOG3105' -p1952 -I0 -sS'VOG3102' -p1953 -I0 -sS'VOG3101' -p1954 -I0 -sS'VOG2858' -p1955 -I1 -sS'VOG2859' -p1956 -I1 -sS'VOG5639' -p1957 -I0 -sS'VOG2852' -p1958 -I1 -sS'VOG2853' -p1959 -I1 -sS'VOG2850' -p1960 -I1 -sS'VOG2851' -p1961 -I1 -sS'VOG2856' -p1962 -I1 -sS'VOG2857' -p1963 -I1 -sS'VOG2854' -p1964 -I1 -sS'VOG2855' -p1965 -I1 -sS'VOG3077' -p1966 -I0 -sS'VOG3074' -p1967 -I0 -sS'VOG2212' -p1968 -I0 -sS'VOG2215' -p1969 -I0 -sS'VOG2217' -p1970 -I0 -sS'VOG2219' -p1971 -I1 -sS'VOG5740' -p1972 -I0 -sS'VOG5949' -p1973 -I0 -sS'VOG3292' -p1974 -I0 -sS'VOG3291' -p1975 -I0 -sS'VOG1985' -p1976 -I0 -sS'VOG1632' -p1977 -I1 -sS'VOG1631' -p1978 -I1 -sS'VOG1986' -p1979 -I0 -sS'VOG1637' -p1980 -I1 -sS'VOG1980' -p1981 -I0 -sS'VOG1635' -p1982 -I1 -sS'VOG1982' -p1983 -I0 -sS'VOG1638' -p1984 -I1 -sS'VOG1989' -p1985 -I0 -sS'VOG1988' -p1986 -I0 -sS'VOG4886' -p1987 -I0 -sS'VOG3854' -p1988 -I0 -sS'VOG3857' -p1989 -I0 -sS'VOG2508' -p1990 -I1 -sS'VOG2505' -p1991 -I1 -sS'VOG2506' -p1992 -I1 -sS'VOG2507' -p1993 -I1 -sS'VOG3859' -p1994 -I0 -sS'VOG2501' -p1995 -I1 -sS'VOG2502' -p1996 -I1 -sS'VOG2503' -p1997 -I1 -sS'VOG0541' -p1998 -I1 -sS'VOG2180' -p1999 -I1 -sS'VOG0937' -p2000 -I1 -sS'VOG2183' -p2001 -I1 -sS'VOG2184' -p2002 -I1 -sS'VOG2185' -p2003 -I1 -sS'VOG0424' -p2004 -I0 -sS'VOG3963' -p2005 -I1 -sS'VOG0933' -p2006 -I1 -sS'VOG1186' -p2007 -I1 -sS'VOG4329' -p2008 -I1 -sS'VOG1743' -p2009 -I0 -sS'VOG1741' -p2010 -I0 -sS'VOG5145' -p2011 -I0 -sS'VOG2438' -p2012 -I0 -sS'VOG3920' -p2013 -I1 -sS'VOG3923' -p2014 -I1 -sS'VOG3922' -p2015 -I1 -sS'VOG3925' -p2016 -I1 -sS'VOG3924' -p2017 -I1 -sS'VOG3927' -p2018 -I1 -sS'VOG3926' -p2019 -I1 -sS'VOG3929' -p2020 -I1 -sS'VOG3928' -p2021 -I1 -sS'VOG2432' -p2022 -I0 -sS'VOG2434' -p2023 -I0 -sS'VOG2436' -p2024 -I0 -sS'VOG0171' -p2025 -I4 -sS'VOG0582' -p2026 -I0 -sS'VOG0583' -p2027 -I0 -sS'VOG0584' -p2028 -I0 -sS'VOG1563' -p2029 -I1 -sS'VOG0588' -p2030 -I0 -sS'VOG1403' -p2031 -I0 -sS'VOG1405' -p2032 -I0 -sS'VOG0906' -p2033 -I1 -sS'VOG0907' -p2034 -I1 -sS'VOG0904' -p2035 -I1 -sS'VOG0905' -p2036 -I1 -sS'VOG0902' -p2037 -I1 -sS'VOG0903' -p2038 -I1 -sS'VOG0900' -p2039 -I1 -sS'VOG0901' -p2040 -I1 -sS'VOG5138' -p2041 -I0 -sS'VOG2680' -p2042 -I1 -sS'VOG0908' -p2043 -I1 -sS'VOG0909' -p2044 -I1 -sS'VOG1799' -p2045 -I0 -sS'VOG5642' -p2046 -I0 -sS'VOG2234' -p2047 -I4 -sS'VOG1362' -p2048 -I0 -sS'VOG0766' -p2049 -I0 -sS'VOG0764' -p2050 -I0 -sS'VOG2235' -p2051 -I4 -sS'VOG1369' -p2052 -I0 -sS'VOG1167' -p2053 -I1 -sS'VOG1166' -p2054 -I1 -sS'VOG1165' -p2055 -I1 -sS'VOG5137' -p2056 -I0 -sS'VOG1160' -p2057 -I1 -sS'VOG5646' -p2058 -I0 -sS'VOG1168' -p2059 -I1 -sS'VOG5644' -p2060 -I0 -sS'VOG5133' -p2061 -I0 -sS'VOG4920' -p2062 -I0 -sS'VOG5628' -p2063 -I1 -sS'VOG5629' -p2064 -I1 -sS'VOG5198' -p2065 -I0 -sS'VOG5199' -p2066 -I0 -sS'VOG5624' -p2067 -I2 -sS'VOG5197' -p2068 -I0 -sS'VOG5194' -p2069 -I0 -sS'VOG5627' -p2070 -I1 -sS'VOG5192' -p2071 -I0 -sS'VOG5459' -p2072 -I0 -sS'VOG5190' -p2073 -I0 -sS'VOG5191' -p2074 -I0 -sS'VOG4923' -p2075 -I1 -sS'VOG5350' -p2076 -I1 -sS'VOG5351' -p2077 -I0 -sS'VOG0168' -p2078 -I4 -sS'VOG0169' -p2079 -I4 -sS'VOG0162' -p2080 -I0 -sS'VOG4695' -p2081 -I0 -sS'VOG0167' -p2082 -I8 -sS'VOG5981' -p2083 -I1 -sS'VOG5533' -p2084 -I0 -sS'VOG5537' -p2085 -I2 -sS'VOG5538' -p2086 -I2 -sS'VOG5539' -p2087 -I1 -sS'VOG5983' -p2088 -I0 -sS'VOG5449' -p2089 -I1 -sS'VOG5982' -p2090 -I0 -sS'VOG4918' -p2091 -I0 -sS'VOG4668' -p2092 -I5 -sS'VOG4915' -p2093 -I0 -sS'VOG4666' -p2094 -I1 -sS'VOG5442' -p2095 -I0 -sS'VOG4664' -p2096 -I2 -sS'VOG4663' -p2097 -I1 -sS'VOG4662' -p2098 -I1 -sS'VOG4913' -p2099 -I0 -sS'VOG4912' -p2100 -I0 -sS'VOG5986' -p2101 -I1 -sS'VOG0014' -p2102 -I5 -sS'VOG0016' -p2103 -I2 -sS'VOG0017' -p2104 -I2 -sS'VOG0013' -p2105 -I5 -sS'VOG0019' -p2106 -I2 -sS'VOG4869' -p2107 -I0 -sS'VOG5845' -p2108 -I1 -sS'VOG5846' -p2109 -I1 -sS'VOG5840' -p2110 -I3 -sS'VOG5841' -p2111 -I1 -sS'VOG5842' -p2112 -I2 -sS'VOG5843' -p2113 -I1 -sS'VOG4860' -p2114 -I0 -sS'VOG4862' -p2115 -I0 -sS'VOG4865' -p2116 -I0 -sS'VOG5849' -p2117 -I1 -sS'VOG4867' -p2118 -I0 -sS'VOG4866' -p2119 -I1 -sS'VOG4469' -p2120 -I0 -sS'VOG4468' -p2121 -I0 -sS'VOG4464' -p2122 -I0 -sS'VOG4460' -p2123 -I0 -sS'VOG4463' -p2124 -I0 -sS'VOG4462' -p2125 -I0 -sS'VOG4717' -p2126 -I0 -sS'VOG4716' -p2127 -I1 -sS'VOG4715' -p2128 -I0 -sS'VOG4713' -p2129 -I1 -sS'VOG4712' -p2130 -I0 -sS'VOG4217' -p2131 -I1 -sS'VOG0005' -p2132 -I5 -sS'VOG4719' -p2133 -I0 -sS'VOG4718' -p2134 -I1 -sS'VOG0002' -p2135 -I5 -sS'VOG3594' -p2136 -I0 -sS'VOG3064' -p2137 -I0 -sS'VOG3066' -p2138 -I0 -sS'VOG2881' -p2139 -I1 -sS'VOG2880' -p2140 -I1 -sS'VOG2883' -p2141 -I1 -sS'VOG2887' -p2142 -I1 -sS'VOG2889' -p2143 -I1 -sS'VOG2888' -p2144 -I1 -sS'VOG2897' -p2145 -I1 -sS'VOG2222' -p2146 -I1 -sS'VOG1967' -p2147 -I0 -sS'VOG3285' -p2148 -I1 -sS'VOG3287' -p2149 -I1 -sS'VOG1992' -p2150 -I0 -sS'VOG1621' -p2151 -I1 -sS'VOG1622' -p2152 -I1 -sS'VOG1623' -p2153 -I1 -sS'VOG1624' -p2154 -I1 -sS'VOG1625' -p2155 -I1 -sS'VOG1626' -p2156 -I1 -sS'VOG1627' -p2157 -I1 -sS'VOG1628' -p2158 -I1 -sS'VOG2080' -p2159 -I1 -sS'VOG1998' -p2160 -I0 -sS'VOG2086' -p2161 -I2 -sS'VOG2539' -p2162 -I1 -sS'VOG2538' -p2163 -I1 -sS'VOG2528' -p2164 -I1 -sS'VOG3844' -p2165 -I0 -sS'VOG2531' -p2166 -I1 -sS'VOG2533' -p2167 -I1 -sS'VOG2534' -p2168 -I1 -sS'VOG2537' -p2169 -I1 -sS'VOG4603' -p2170 -I1 -sS'VOG5739' -p2171 -I0 -sS'VOG1190' -p2172 -I0 -sS'VOG1191' -p2173 -I0 -sS'VOG2405' -p2174 -I2 -sS'VOG2404' -p2175 -I2 -sS'VOG2401' -p2176 -I2 -sS'VOG2152' -p2177 -I1 -sS'VOG2403' -p2178 -I2 -sS'VOG2409' -p2179 -I2 -sS'VOG3938' -p2180 -I1 -sS'VOG3939' -p2181 -I1 -sS'VOG3936' -p2182 -I1 -sS'VOG3937' -p2183 -I1 -sS'VOG3934' -p2184 -I1 -sS'VOG3935' -p2185 -I1 -sS'VOG3932' -p2186 -I1 -sS'VOG3933' -p2187 -I1 -sS'VOG3930' -p2188 -I1 -sS'VOG0809' -p2189 -I1 -sS'VOG0808' -p2190 -I1 -sS'VOG0375' -p2191 -I0 -sS'VOG0806' -p2192 -I1 -sS'VOG0804' -p2193 -I1 -sS'VOG0371' -p2194 -I0 -sS'VOG0370' -p2195 -I0 -sS'VOG0801' -p2196 -I1 -sS'VOG0800' -p2197 -I1 -sS'VOG0577' -p2198 -I0 -sS'VOG0574' -p2199 -I0 -sS'VOG1574' -p2200 -I1 -sS'VOG1575' -p2201 -I1 -sS'VOG0571' -p2202 -I0 -sS'VOG1577' -p2203 -I1 -sS'VOG0976' -p2204 -I0 -sS'VOG4858' -p2205 -I0 -sS'VOG4859' -p2206 -I0 -sS'VOG1372' -p2207 -I0 -sS'VOG1373' -p2208 -I0 -sS'VOG1370' -p2209 -I0 -sS'VOG1371' -p2210 -I0 -sS'VOG1374' -p2211 -I0 -sS'VOG1375' -p2212 -I0 -sS'VOG0713' -p2213 -I1 -sS'VOG0712' -p2214 -I1 -sS'VOG0717' -p2215 -I1 -sS'VOG0714' -p2216 -I1 -sS'VOG1175' -p2217 -I1 -sS'VOG1176' -p2218 -I1 -sS'VOG0488' -p2219 -I0 -sS'VOG1172' -p2220 -I1 -sS'VOG1173' -p2221 -I1 -sS'VOG0483' -p2222 -I0 -sS'VOG0482' -p2223 -I0 -sS'VOG0481' -p2224 -I0 -sS'VOG0480' -p2225 -I0 -sS'VOG0487' -p2226 -I0 -sS'VOG0486' -p2227 -I0 -sS'VOG0485' -p2228 -I0 -sS'VOG0484' -p2229 -I0 -sS'VOG5619' -p2230 -I0 -sS'VOG5618' -p2231 -I0 -sS'VOG5613' -p2232 -I4 -sS'VOG5612' -p2233 -I0 -sS'VOG5615' -p2234 -I2 -sS'VOG0396' -p2235 -I0 -sS'VOG0395' -p2236 -I0 -sS'VOG0394' -p2237 -I0 -sS'VOG5299' -p2238 -I1 -sS'VOG5298' -p2239 -I0 -sS'VOG0390' -p2240 -I0 -sS'VOG5294' -p2241 -I0 -sS'VOG5291' -p2242 -I0 -sS'VOG5290' -p2243 -I0 -sS'VOG5293' -p2244 -I1 -sS'VOG0398' -p2245 -I0 -sS'VOG5509' -p2246 -I0 -sS'VOG5505' -p2247 -I0 -sS'VOG5507' -p2248 -I0 -sS'VOG5506' -p2249 -I2 -sS'VOG5501' -p2250 -I0 -sS'VOG5503' -p2251 -I0 -sS'VOG5276' -p2252 -I1 -sS'VOG5275' -p2253 -I2 -sS'VOG5274' -p2254 -I1 -sS'VOG5273' -p2255 -I1 -sS'VOG5272' -p2256 -I0 -sS'VOG5271' -p2257 -I1 -sS'VOG4902' -p2258 -I0 -sS'VOG4903' -p2259 -I0 -sS'VOG4900' -p2260 -I0 -sS'VOG4901' -p2261 -I0 -sS'VOG4906' -p2262 -I0 -sS'VOG4907' -p2263 -I0 -sS'VOG4905' -p2264 -I0 -sS'VOG4273' -p2265 -I0 -sS'VOG4103' -p2266 -I0 -sS'VOG0029' -p2267 -I2 -sS'VOG4279' -p2268 -I0 -sS'VOG4876' -p2269 -I0 -sS'VOG4877' -p2270 -I0 -sS'VOG4874' -p2271 -I0 -sS'VOG4875' -p2272 -I1 -sS'VOG4870' -p2273 -I0 -sS'VOG4012' -p2274 -I0 -sS'VOG4013' -p2275 -I0 -sS'VOG4014' -p2276 -I0 -sS'VOG4015' -p2277 -I0 -sS'VOG4878' -p2278 -I0 -sS'VOG4017' -p2279 -I0 -sS'VOG5871' -p2280 -I0 -sS'VOG5870' -p2281 -I0 -sS'VOG5873' -p2282 -I1 -sS'VOG5875' -p2283 -I0 -sS'VOG5874' -p2284 -I1 -sS'VOG5877' -p2285 -I0 -sS'VOG5876' -p2286 -I0 -sS'VOG3614' -p2287 -I0 -sS'VOG5475' -p2288 -I1 -sS'VOG5474' -p2289 -I1 -sS'VOG5476' -p2290 -I0 -sS'VOG5471' -p2291 -I1 -sS'VOG5470' -p2292 -I1 -sS'VOG5473' -p2293 -I0 -sS'VOG5144' -p2294 -I0 -sS'VOG1984b' -p2295 -I0 -sS'VOG1984a' -p2296 -I0 -sS'VOG5479' -p2297 -I2 -sS'VOG5478' -p2298 -I1 -sS'VOG3129' -p2299 -I0 -sS'VOG4706' -p2300 -I0 -sS'VOG4707' -p2301 -I1 -sS'VOG4700' -p2302 -I0 -sS'VOG4701' -p2303 -I1 -sS'VOG4702' -p2304 -I0 -sS'VOG4703' -p2305 -I0 -sS'VOG1685' -p2306 -I0 -sS'VOG3125' -p2307 -I0 -sS'VOG4709' -p2308 -I0 -sS'VOG2063' -p2309 -I0 -sS'VOG2419' -p2310 -I0 -sS'VOG4691' -p2311 -I0 -sS'VOG3459' -p2312 -I1 -sS'VOG3058' -p2313 -I0 -sS'VOG3729' -p2314 -I2 -sS'VOG3055' -p2315 -I0 -sS'VOG3057' -p2316 -I0 -sS'VOG3056' -p2317 -I0 -sS'VOG3051' -p2318 -I1 -sS'VOG3050' -p2319 -I1 -sS'VOG2238' -p2320 -I0 -sS'VOG2899' -p2321 -I1 -sS'VOG2233' -p2322 -I4 -sS'VOG2894' -p2323 -I1 -sS'VOG2895' -p2324 -I1 -sS'VOG2892' -p2325 -I1 -sS'VOG2893' -p2326 -I1 -sS'VOG2890' -p2327 -I1 -sS'VOG2891' -p2328 -I1 -sS'VOG2526' -p2329 -I1 -sS'VOG2527' -p2330 -I1 -sS'VOG2522' -p2331 -I1 -sS'VOG2523' -p2332 -I1 -sS'VOG1968' -p2333 -I0 -sS'VOG1615' -p2334 -I1 -sS'VOG1614' -p2335 -I1 -sS'VOG1964' -p2336 -I0 -sS'VOG1611' -p2337 -I1 -sS'VOG1610' -p2338 -I1 -sS'VOG1613' -p2339 -I1 -sS'VOG2529' -p2340 -I1 -sS'VOG5246' -p2341 -I0 -sS'VOG5716' -p2342 -I1 -sS'VOG5243' -p2343 -I0 -sS'VOG2412' -p2344 -I0 -sS'VOG2413' -p2345 -I0 -sS'VOG2147' -p2346 -I1 -sS'VOG2417' -p2347 -I0 -sS'VOG2414' -p2348 -I0 -sS'VOG2415' -p2349 -I0 -sS'VOG2418' -p2350 -I0 -sS'VOG5241' -p2351 -I0 -sS'VOG3949' -p2352 -I1 -sS'VOG3943' -p2353 -I1 -sS'VOG3942' -p2354 -I1 -sS'VOG3941' -p2355 -I1 -sS'VOG3940' -p2356 -I1 -sS'VOG3947' -p2357 -I1 -sS'VOG3946' -p2358 -I1 -sS'VOG3944' -p2359 -I1 -sS'VOG2097' -p2360 -I2 -sS'VOG2094' -p2361 -I2 -sS'VOG2095' -p2362 -I2 -sS'VOG2098' -p2363 -I2 -scnumpy.core.multiarray -_reconstruct -p2364 -(cnumpy -ndarray -p2365 -(I0 -tp2366 -S'b' -p2367 -tp2368 -Rp2369 -(I1 -(I9 -tp2370 -cnumpy -dtype -p2371 -(S'S14' -p2372 -I0 -I1 -tp2373 -Rp2374 -(I3 -S'|' -p2375 -NNNI14 -I1 -I0 -tp2376 -bI00 -S'Myoviridae\x00\x00\x00\x00Siphoviridae\x00\x00Podoviridae\x00\x00\x00BicaudaviridaeMicroviridae\x00\x00Inoviridae\x00\x00\x00\x00FuselloviridaeTectiviridae\x00\x00Leviviridae\x00\x00\x00' -p2377 -tp2378 -btp2379 -. \ No newline at end of file diff --git a/phigaro/to_html/html_formation.py b/phigaro/to_html/html_formation.py index 7854abd..579d406 100644 --- a/phigaro/to_html/html_formation.py +++ b/phigaro/to_html/html_formation.py @@ -7,38 +7,32 @@ def form_html_document( ): def form_tbody(data, transposables_data): prophage_index = 1 - tbody = BeautifulSoup(features="lxml").new_tag('tbody') + tbody = BeautifulSoup(features="lxml").new_tag("tbody") for scaffold, scaffold_info in data: tr = BeautifulSoup(features="lxml").new_tag( - 'tr', **{'class': 'scaffold-name'} - ) - th = BeautifulSoup(features="lxml").new_tag( - 'th', scope="row", colspan="4" + "tr", **{"class": "scaffold-name"} ) + th = BeautifulSoup(features="lxml").new_tag("th", scope="row", colspan="4") th.append(scaffold) tr.append(th) tbody.append(tr) for prophage_info in scaffold_info: index_to_paste = ( BeautifulSoup( - transposable_index.format(prophage_index), 'html.parser' + transposable_index.format(prophage_index), "html.parser" ) if transposables_data[prophage_index - 1] else prophage_index ) if prophage_index == 1: prophage_info = ( - [prophage_index] - + prophage_info - + ['active', index_to_paste] + [prophage_index] + prophage_info + ["active", index_to_paste] ) else: prophage_info = ( - [prophage_index] + prophage_info + ['', index_to_paste] + [prophage_index] + prophage_info + ["", index_to_paste] ) - tbody.append( - BeautifulSoup(row.format(*prophage_info), 'html.parser') - ) + tbody.append(BeautifulSoup(row.format(*prophage_info), "html.parser")) prophage_index += 1 return str(tbody) @@ -47,27 +41,27 @@ def form_plots_body(data): for prophage_index, plot in enumerate(data): if prophage_index == 0: div = BeautifulSoup(features="lxml").new_tag( - 'div', + "div", **{ "class": "tab-pane fade show active", "id": "phage-%d" % (prophage_index + 1), } ) inner_div = BeautifulSoup(features="lxml").new_tag( - 'div', **{"class": "prophage-plot"} + "div", **{"class": "prophage-plot"} ) else: div = BeautifulSoup(features="lxml").new_tag( - 'div', + "div", **{ "class": "tab-pane fade show", "id": "phage-%d" % (prophage_index + 1), } ) inner_div = BeautifulSoup(features="lxml").new_tag( - 'div', **{"class": "prophage-plot", "style": "display:none"} + "div", **{"class": "prophage-plot", "style": "display:none"} ) - inner_div.append(BeautifulSoup(plot, 'html.parser')) + inner_div.append(BeautifulSoup(plot, "html.parser")) div.append(inner_div) plots_body.append(div) return str(plots_body) diff --git a/phigaro/to_html/html_templates.py b/phigaro/to_html/html_templates.py index 0fd9e45..3e04eb8 100644 --- a/phigaro/to_html/html_templates.py +++ b/phigaro/to_html/html_templates.py @@ -1,4 +1,4 @@ -header = ''' +header = """
{7} | {1} - {2}
@@ -534,9 +534,9 @@
|
---|