Skip to content
Commits on Source (6)
cd test
git clone https://github.com/neherlab/treetime_examples.git
bash command_line_tests.sh
OUT=$?
if [ "$OUT" != 0 ]; then
......
This diff is collapsed.
import datetime
from treetime.treeanc import TreeAnc
from treetime.clock_tree import ClockTree
from treetime.treetime import TreeTime
......@@ -5,8 +6,7 @@ from treetime.treetime import ttconf as treetime_conf
from treetime.gtr import GTR
from treetime.treetime import plot_vs_years
from treetime.treetime import treetime_to_newick
from treetime import seq_utils
from treetime.tree_regression import TreeRegression
from treetime.merger_models import Coalescent
import datetime
import treetime.seq_utils as seq_utils
from treetime.utils import numeric_date
#!/usr/bin/env python
from __future__ import print_function, division
import numpy as np
from treetime import TreeAnc, GTR
from Bio import Phylo, AlignIO
from Bio import __version__ as bioversion
import sys
if __name__=="__main__":
###########################################################################
### parameter parsing
###########################################################################
import argparse
parser = argparse.ArgumentParser(
description='Reconstructs ancestral sequences and maps mutations to the tree.'
' The output consists of a file ending with _ancestral.fasta with ancestral sequences'
' and a tree ending with _mutation.nexus with mutations added as comments'
' like _A45G_..., number in SNPs used 1-based index by default.'
' The inferred GTR model is written to stdout')
parser.add_argument('--aln', required = True, type = str, help ="fasta file with input sequences")
parser.add_argument('--tree', type = str, help ="newick file with tree, "
"will attempt to build tree if none given.")
parser.add_argument('--gtr', type = str, default='infer', help="GTR model to use. "
" Type 'infer' to infer the model from the data. Or, specify the model type. "
" If the specified model requires additional options, use '--gtr_args' to specify those")
parser.add_argument('--gtr_params', type=str, nargs='+', help="GTR parameters for the model "
"specified by the --gtr argument. The parameters should be feed as 'key=value' list of parameters. "
"Example: '--gtr K80 --gtr_params kappa=0.2 pis=0.25,0.25,0.25,0.25'. See the exact definitions of "
" the parameters in the GTR creation methods in treetime/nuc_models.py or treetime/aa_models.py")
parser.add_argument('--prot', default = False, action="store_true", help ="protein alignment")
parser.add_argument('--marginal', default = False, action="store_true", help ="marginal reconstruction of ancestral sequences")
parser.add_argument('--zero_based', default = False, action='store_true', help='zero based SNP indexing')
parser.add_argument('--keep_overhangs', default = False, action='store_true', help='do not fill terminal gaps')
parser.add_argument('--verbose', default = 1, type=int, help='verbosity of output 0-6')
params = parser.parse_args()
###########################################################################
### CHECK FOR TREE, build if not in place
###########################################################################
if params.tree is None:
from treetime.utils import tree_inference
import os,shutil
params.tree = os.path.basename(params.aln)+'.nwk'
print("No tree given: inferring tree")
tmp_dir = 'ancestral_reconstruction_tmp_files'
tree_inference(params.aln, params.tree, tmp_dir = tmp_dir)
if os.path.isdir(tmp_dir):
shutil.rmtree(tmp_dir)
###########################################################################
### GTR SET-UP
###########################################################################
model = params.gtr
gtr_params = params.gtr_params
if model == 'infer':
gtr = GTR.standard('jc')
infer_gtr = True
else:
try:
kwargs = {}
if gtr_params is not None:
for param in gtr_params:
keyval = param.split('=')
if len(keyval)!=2: continue
if keyval[0] in ['pis', 'pi', 'Pi', 'Pis']:
keyval[1] = map(float, keyval[1].split(','))
elif keyval[0] not in ['alphabet']:
keyval[1] = float(keyval[1])
kwargs[keyval[0]] = keyval[1]
else:
print ("GTR params are not specified. Creating GTR model with default parameters")
gtr = GTR.standard(model, **kwargs)
infer_gtr = False
except:
print ("Could not create GTR model from input arguments. Using default (Jukes-Cantor 1969)")
gtr = GTR.standard('jc')
infer_gtr = False
###########################################################################
### ANCESTRAL RECONSTRUCTION
###########################################################################
treeanc = TreeAnc(params.tree, aln=params.aln, gtr=gtr, verbose=4,
fill_overhangs=not params.keep_overhangs)
treeanc.infer_ancestral_sequences('ml', infer_gtr=infer_gtr,
marginal=params.marginal)
###########################################################################
### OUTPUT and saving of results
###########################################################################
model = 'aa' if params.prot else 'Jukes-Cantor'
if infer_gtr:
print('\nInferred GTR model:')
print(treeanc.gtr)
outaln_name = '.'.join(params.aln.split('/')[-1].split('.')[:-1])+'_ancestral.fasta'
AlignIO.write(treeanc.get_reconstructed_alignment(), outaln_name, 'fasta')
print("--- alignment including ancestral nodes saved as \n\t %s\n"%outaln_name)
# decorate tree with inferred mutations
terminal_count = 0
offset = 0 if params.zero_based else 1
for n in treeanc.tree.find_clades():
if n.up is None:
continue
n.confidence=None
# due to a bug in older versions of biopython that truncated filenames in nexus export
# we truncate them by hand and make them unique.
if n.is_terminal() and len(n.name)>40 and bioversion<"1.69":
n.name = n.name[:35]+'_%03d'%terminal_count
terminal_count+=1
if len(n.mutations):
n.comment= '&mutations="' + '_'.join([a+str(pos + offset)+d for (a,pos, d) in n.mutations])+'"'
# write tree to file
outtree_name = '.'.join(params.tree.split('/')[-1].split('.')[:-1])+'_mutation.nexus'
Phylo.write(treeanc.tree, outtree_name, 'nexus')
print("--- tree saved in nexus format as \n\t %s\n"%outtree_name)
sys.exit(0)
#!/usr/bin/env python
from __future__ import print_function, division
import numpy as np
from treetime import TreeAnc, GTR
from Bio import Phylo, AlignIO
from Bio import __version__ as bioversion
import os,shutil, sys
if __name__=="__main__":
###########################################################################
### parameter parsing
###########################################################################
import argparse
parser = argparse.ArgumentParser(
description='Reconstructs ancestral sequences and maps mutations to the tree.'
' The tree is then scanned for homoplasies. An excess number of homoplasies'
' might suggest contamination, recombination, culture adaptation or similar. ')
parser.add_argument('--aln', required = True, type = str, help ="fasta file with input nucleotide sequences")
parser.add_argument('--tree', type = str, help ="newick file with tree (optional if tree builders installed)")
parser.add_argument('--const', type = int, default=0, help ="number of constant sites not included in alignment")
parser.add_argument('--rescale', type = float, default=1.0, help ="rescale branch lengths")
parser.add_argument('--detailed', required = False, action="store_true", help ="generate a more detailed report")
parser.add_argument('--gtr', required=False, type = str, default='infer', help="GTR model to use. "
" Type 'infer' to infer the model from the data. Or, specify the model type. "
" If the specified model requires additional options, use '--gtr_args' to specify those")
parser.add_argument('--gtr_params', type=str, nargs='+', help="GTR parameters for the model "
"specified by the --gtr argument. The parameters should be feed as 'key=value' list of parameters. "
"Example: '--gtr K80 --gtr_params kappa=0.2 pis=0.25,0.25,0.25,0.25'. See the exact definitions of "
" the parameters in the GTR creation methods in treetime/nuc_models.py. Only nucleotide models supported at present")
parser.add_argument('--zero_based', default = False, action='store_true', help='zero based SNP indexing')
parser.add_argument('-n', default = 10, type=int, help='number of mutations/nodes that are printed to screen')
parser.add_argument('--verbose', default = 1, type=int, help='verbosity of output 0-6')
params = parser.parse_args()
###########################################################################
### CHECK FOR TREE, build if not in place
###########################################################################
if params.tree is None:
from treetime.utils import tree_inference
params.tree = os.path.basename(params.aln)+'.nwk'
print("No tree given: inferring tree")
tmp_dir = 'homoplasy_scanner_tmp_files'
tree_inference(params.aln, params.tree, tmp_dir = tmp_dir)
if os.path.isdir(tmp_dir):
shutil.rmtree(tmp_dir)
elif not os.path.isfile(params.tree):
print("Input tree file does not exist:", params.tree)
exit(1)
###########################################################################
### GTR SET-UP
###########################################################################
model = params.gtr
gtr_params = params.gtr_params
if model == 'infer':
gtr = GTR.standard('jc')
infer_gtr = True
else:
infer_gtr = False
try:
kwargs = {}
if gtr_params is not None:
for param in gtr_params:
keyval = param.split('=')
if len(keyval)!=2: continue
if keyval[0] in ['pis', 'pi', 'Pi', 'Pis']:
keyval[1] = map(float, keyval[1].split(','))
elif keyval[0] not in ['alphabet']:
keyval[1] = float(keyval[1])
kwargs[keyval[0]] = keyval[1]
else:
print ("GTR params are not specified. Creating GTR model with default parameters")
gtr = GTR.standard(model, **kwargs)
except:
print ("Could not create GTR model from input arguments. Using default (Jukes-Cantor 1969)")
gtr = GTR.standard('jc')
###########################################################################
### ANCESTRAL RECONSTRUCTION
###########################################################################
treeanc = TreeAnc(params.tree, aln=params.aln, gtr=gtr, verbose=1,
fill_overhangs=True)
L = treeanc.aln.get_alignment_length() + params.const
N_seq = len(treeanc.aln)
N_tree = treeanc.tree.count_terminals()
if params.rescale!=1.0:
for n in treeanc.tree.find_clades():
n.branch_length *= params.rescale
n.mutation_length = n.branch_length
print("read alignment from file %s with %d sequences of length %d"%(params.aln,N_seq,L))
print("read tree from file %s with %d leaves"%(params.tree,N_tree))
print("\ninferring ancestral sequences...")
treeanc.infer_ancestral_sequences('ml', infer_gtr=infer_gtr, marginal=False)
print("...done.")
###########################################################################
### analysis of reconstruction
###########################################################################
from collections import defaultdict
from scipy.stats import poisson
offset = 0 if params.zero_based else 1
# construct dictionaries gathering mutations and positions
mutations = defaultdict(list)
positions = defaultdict(list)
terminal_mutations = defaultdict(list)
for n in treeanc.tree.find_clades():
if n.up is None:
continue
if len(n.mutations):
for (a,pos, d) in n.mutations:
if '-' not in [a,d]:
mutations[(a,pos+offset,d)].append(n)
positions[pos+offset].append(n)
if n.is_terminal():
for (a,pos, d) in n.mutations:
if '-' not in [a,d]:
terminal_mutations[(a,pos+offset,d)].append(n)
# gather homoplasic mutations by strain
mutation_by_strain = defaultdict(list)
for n in treeanc.tree.get_terminals():
for a,pos,d in n.mutations:
if pos in positions and len(positions[pos])>1:
mutation_by_strain[n.name].append([(a,pos+offset,d), len(positions[pos])])
# total_branch_length is the expected number of substitutions
# corrected_branch_length is the expected number of observable substitutions
# (probability of an odd number of substitutions at a particular site)
total_branch_length = treeanc.tree.total_branch_length()
corrected_branch_length = np.sum([np.exp(-x.branch_length)*np.sinh(x.branch_length)
for x in treeanc.tree.find_clades()])
corrected_terminal_branch_length = np.sum([np.exp(-x.branch_length)*np.sinh(x.branch_length)
for x in treeanc.tree.get_terminals()])
expected_mutations = L*corrected_branch_length
expected_terminal_mutations = L*corrected_terminal_branch_length
# make histograms and sum mutations in different categories
multiplicities = np.bincount([len(x) for x in mutations.values()])
total_mutations = np.sum([len(x) for x in mutations.values()])
multiplicities_terminal = np.bincount([len(x) for x in terminal_mutations.values()])
terminal_mutation_count = np.sum([len(x) for x in terminal_mutations.values()])
multiplicities_positions = np.bincount([len(x) for x in positions.values()])
multiplicities_positions[0] = L - np.sum(multiplicities_positions)
###########################################################################
### Output the distribution of times particular mutations are observed
###########################################################################
print("\nThe TOTAL tree length is %1.3e, expecting %1.1f mutations vs an observed %d"
%(total_branch_length,expected_mutations,total_mutations))
print("Of these %d mutations,"%total_mutations
+"".join(['\n\t - %d occur %d times'%(n,mi)
for mi,n in enumerate(multiplicities) if n]))
# additional optional output this for terminal mutations only
if params.detailed:
print("\nThe TERMINAL branch length is %1.3e, expecting %1.1f mutations vs an observed %d"
%(corrected_terminal_branch_length,expected_terminal_mutations,terminal_mutation_count))
print("Of these %d mutations,"%terminal_mutation_count
+"".join(['\n\t - %d occur %d times'%(n,mi)
for mi,n in enumerate(multiplicities_terminal) if n]))
###########################################################################
### Output the distribution of times mutations at particular positions are observed
###########################################################################
print("\nOf the %d positions in the genome,"%L
+"".join(['\n\t - %d were hit %d times (expected %1.2f)'%(n,mi,L*poisson.pmf(mi,1.0*total_mutations/L))
for mi,n in enumerate(multiplicities_positions) if n]))
# compare that distribution to a Poisson distribution with the same mean
p = poisson.pmf(np.arange(10*multiplicities_positions.max()),1.0*total_mutations/L)
print("\nlog-likelihood difference to Poisson distribution with same mean: %1.3e"%(
- L*np.sum(p*np.log(p+1e-100))
+ np.sum(multiplicities_positions*np.log(p[:len(multiplicities_positions)]+1e-100))))
###########################################################################
### Output the mutations that are observed most often
###########################################################################
print("\n\nThe ten most homoplasic mutations are:\n\tmut\tmultiplicity")
mutations_sorted = sorted(mutations.items(), key=lambda x:len(x[1])-0.1*x[0][1]/L, reverse=True)
for mut, val in mutations_sorted[:params.n]:
if len(val)>1:
print("\t%s%d%s\t%d"%(mut[0], mut[1], mut[2], len(val)))
else:
break
# optional output specifically for mutations on terminal branches
if params.detailed:
print("\n\nThe ten most homoplasic mutation on terminal branches are:\n\tmut\tmultiplicity")
terminal_mutations_sorted = sorted(terminal_mutations.items(), key=lambda x:len(x[1])-0.1*x[0][1]/L, reverse=True)
for mut, val in terminal_mutations_sorted[:params.n]:
if len(val)>1:
print("\t%s%d%s\t%d"%(mut[0], mut[1], mut[2], len(val)))
else:
break
###########################################################################
### Output strains that have many homoplasic mutations
###########################################################################
# TODO: add statistical criterion
if params.detailed:
print("\n\nTaxons that carry positions that mutated elsewhere in the tree:\n\ttaxon name\t#of homoplasic mutations")
mutation_by_strain_sorted = sorted(mutation_by_strain.items(), key=lambda x:len(x[1]), reverse=True)
for name, val in mutation_by_strain_sorted[:params.n]:
if len(val):
print("\t%s\t%d"%(name, len(val)))
sys.exit(0)
#!/usr/bin/env python
from __future__ import print_function, division
import numpy as np
import pandas as pd
from treetime import TreeAnc, GTR
from Bio.SeqRecord import SeqRecord
from Bio.Seq import Seq
from Bio.Align import MultipleSeqAlignment
from Bio import Phylo, AlignIO
from Bio import __version__ as bioversion
import os,sys
if __name__=="__main__":
###########################################################################
### parameter parsing
###########################################################################
import argparse
parser = argparse.ArgumentParser(
description='Reconstructs discrete ancestral states, for example '
'geographic location, host, or similar.')
parser.add_argument('--tree', required = True, type=str, help ="newick file with tree")
parser.add_argument('--attribute', type=str, help ="attribute to reconstruct, e.g. country")
parser.add_argument('--states', required = True, type=str, help ="csv or tsv file with discrete characters."
"\n#name,country,continent\ntaxon1,micronesia,oceania\n...")
parser.add_argument('--weights', type=str, help="csv or tsv file with probabilities of that a randomly sampled "
"sequence at equilibrium has a particular state. E.g. population of different continents or countries. E.g.:"
"\n#country,weight\nmicronesia,0.1\n...")
# parser.add_argument('--migration', type=str, help="csv or tsv file with symmetric migration/transition rates "
# "between states. For example passenger flow.")
# parser.add_argument('--infer_gtr', action="store_true", help="infer GTR model from tree. "
# "Ignored when prop or migration is specified.")
parser.add_argument('--confidence', action="store_true", help="output confidence of mugration inference")
parser.add_argument('--pc', type=float, default=1.0, help ="pseudo-counts higher numbers will results in 'flatter' models")
parser.add_argument('--verbose', default = 1, type=int, help='verbosity of output 0-6')
params = parser.parse_args()
missing = "?"
###########################################################################
### Parse states
###########################################################################
if os.path.isfile(params.states):
states = pd.read_csv(params.states, sep='\t' if params.states[-3:]=='tsv' else ',',
skipinitialspace=True)
else:
print("file with states does not exist")
exit(1)
taxon_name = 'name' if 'name' in states.columns else states.columns[0]
if params.attribute and params.attribute in states.columns:
attr = params.attribute
else:
attr = states.columns[1]
leaf_to_attr = {x[taxon_name]:x[attr] for xi, x in states.iterrows()
if x[attr]!=missing}
unique_states = sorted(set(leaf_to_attr.values()))
nc = len(unique_states)
if nc>180:
print("mugration: can't have more than 180 states!")
exit(1)
elif nc<2:
print("mugration: only one or zero states found -- this doesn't make any sense")
exit(1)
###########################################################################
### make a single character alphabet that maps to discrete states
###########################################################################
alphabet = [chr(65+i) for i,state in enumerate(unique_states)]
missing_char = chr(65+nc)
letter_to_state = {a:unique_states[i] for i,a in enumerate(alphabet)}
letter_to_state[missing_char]=missing
reverse_alphabet = {v:k for k,v in letter_to_state.items()}
###########################################################################
### construct gtr model
###########################################################################
if params.weights:
params.infer_gtr = True
tmp_weights = pd.read_csv(params.weights, sep='\t' if params.states[-3:]=='tsv' else ',',
skipinitialspace=True)
weights = {row[0]:row[1] for ri,row in tmp_weights.iterrows()}
mean_weight = np.mean(list(weights.values()))
weights = np.array([weights[c] if c in weights else mean_weight for c in unique_states], dtype=float)
weights/=weights.sum()
else:
weights = np.ones(nc, dtype=float)/nc
# set up dummy matrix
W = np.ones((nc,nc), dtype=float)
mugration_GTR = GTR.custom(pi = weights, W=W, alphabet = np.array(alphabet))
mugration_GTR.profile_map[missing_char] = np.ones(nc)
mugration_GTR.ambiguous=missing_char
###########################################################################
### set up treeanc
###########################################################################
treeanc = TreeAnc(params.tree, gtr=mugration_GTR, verbose=params.verbose)
pseudo_seqs = [SeqRecord(id=n.name,name=n.name,
seq=Seq(reverse_alphabet[leaf_to_attr[n.name]] if n.name in leaf_to_attr else missing))
for n in treeanc.tree.get_terminals()]
treeanc.aln = MultipleSeqAlignment(pseudo_seqs)
treeanc.infer_ancestral_sequences(method='ml', infer_gtr=True,
store_compressed=False, pc=params.pc, marginal=True, normalized_rate=False,
fixed_pi=weights if params.weights else None)
###########################################################################
### output
###########################################################################
print("\nCompleted mugration model inference of attribute '%s' for"%attr,params.tree)
bname = './'+os.path.basename(params.tree)
gtr_name = bname + '.GTR.txt'
with open(gtr_name, 'w') as ofile:
ofile.write('Character to attribute mapping:\n')
for state in unique_states:
ofile.write(' %s: %s\n'%(reverse_alphabet[state], state))
ofile.write('\n\n'+str(treeanc.gtr)+'\n')
print("\nSaved inferred mugration model as:", gtr_name)
terminal_count = 0
for n in treeanc.tree.find_clades():
if n.up is None:
continue
n.confidence=None
# due to a bug in older versions of biopython that truncated filenames in nexus export
# we truncate them by hand and make them unique.
if n.is_terminal() and len(n.name)>40 and bioversion<"1.69":
n.name = n.name[:35]+'_%03d'%terminal_count
terminal_count+=1
n.comment= '&%s="'%attr + letter_to_state[n.sequence[0]] +'"'
if params.confidence:
conf_name = bname+'.confidence.csv'
with open(conf_name, 'w') as ofile:
ofile.write('#name, '+', '.join(unique_states)+'\n')
for n in treeanc.tree.find_clades():
ofile.write(n.name + ', '+', '.join([str(x) for x in n.marginal_profile[0]])+'\n')
print("Saved table with ancestral state confidences as:", conf_name)
# write tree to file
outtree_name = bname+'.mugration.nexus'
Phylo.write(treeanc.tree, outtree_name, 'nexus')
print("Saved annotated tree as:",outtree_name)
sys.exit(0)
#!/usr/bin/env python
from __future__ import print_function, division
import numpy as np
from treetime import TreeTime
from treetime.utils import DateConversion
from Bio import Phylo, AlignIO
import sys
if __name__=="__main__":
###########################################################################
### parameter parsing
###########################################################################
import argparse
parser = argparse.ArgumentParser(
description="Calculates the root-to-tip regression and quantifies the 'clock-i-ness' of the tree. "
"It will reroot the tree to maximize the clock-like "
"signal and recalculate branch length unless run with --keep_root.")
parser.add_argument('--tree', required = True, type = str, help ="newick file with tree")
parser.add_argument('--dates', required = True, type = str,
help ="csv with dates for nodes with 'node_name, date' where date is float (as in 2012.15)")
parser.add_argument('--infer_gtr', default = False, action='store_true', help='infer substitution model')
parser.add_argument('--keep_root', required = False, action="store_true", default=False,
help ="don't reroot the tree. Otherwise, reroot to minimize the "
"the residual of the regression of root-to-tip distance and sampling time")
parser.add_argument('--plot', required = False, action="store_true", default=False,
help = "save the root-to-tip regression as a pdf")
parser.add_argument('--verbose', default = 0, type=int,
help='verbosity of output 0-6')
params = parser.parse_args()
###########################################################################
### PARSING DATES
###########################################################################
with open(params.dates) as date_file:
dates = {}
failed_dates = 0
for line in date_file:
try:
name, date = line.strip().split(',')[:2]
dates[name] = float(date)
except:
failed_dates+=1
if len(dates)<failed_dates:
print("\n\nDATE PARSING FAILED, ABORTING...")
import sys
sys.exit(1)
###########################################################################
### FAKING ALIGMENT TO APPEASE TREETIME
###########################################################################
from Bio import Seq, SeqRecord, Align
aln = Align.MultipleSeqAlignment([SeqRecord.SeqRecord(Seq.Seq("AAA"), id=node, name=node)
for node in dates])
###########################################################################
### ESTIMATE ROOT (if requested) AND DETERMINE TEMPORAL SIGNAL
###########################################################################
base_name = '.'.join(params.tree.split('/')[-1].split('.')[:-1])
myTree = TreeTime(dates=dates, tree=params.tree,
aln=aln, gtr='JC69', verbose=params.verbose)
if not params.keep_root:
myTree.reroot('best')
d2d = DateConversion.from_tree(myTree.tree)
print('\n',d2d)
print('The R^2 value indicates the fraction of variation in'
'\nroot-to-tip distance explained by the sampling times.'
'\nHigher values corresponds more clock-like behavior (max 1.0).')
print('\nThe rate is the slope of the best fit of the date to'
'\nthe root-to-tip distance and provides an estimate of'
'\nthe substitution rate. The rate needs to be positive!'
'\nNegative rates suggest an inappropriate root.\n\n')
print('\nThe estimated rate and tree correspond to a root date:\n')
print('\n--root-date:\t %3.2f\n\n'%(-d2d.intercept/d2d.clock_rate))
if not params.keep_root:
# write rerooted tree to file
outtree_name = base_name+'_rerooted.newick'
Phylo.write(myTree.tree, outtree_name, 'newick')
print("--- re-rooted tree written to \n\t %s\n"%outtree_name)
table_fname = base_name+'_rtt.csv'
with open(table_fname, 'w') as ofile:
ofile.write("#name, date, root-to-tip distance\n")
ofile.write("#Dates of nodes that didn't have a specified date are inferred from the root-to-tip regression.\n")
for n in myTree.tree.get_terminals():
if hasattr(n, "numdate_given"):
ofile.write("%s, %f, %f\n"%(n.name, n.numdate_given, n.dist2root))
else:
ofile.write("%s, %f, %f\n"%(n.name, d2d.numdate_from_dist2root(n.dist2root), n.dist2root))
for n in myTree.tree.get_nonterminals(order='preorder'):
ofile.write("%s, %f, %f\n"%(n.name, d2d.numdate_from_dist2root(n.dist2root), n.dist2root))
print("--- wrote dates and root-to-tip distances to \n\t %s\n"%table_fname)
###########################################################################
### PLOT AND SAVE RESULT
###########################################################################
if params.plot:
import matplotlib.pyplot as plt
myTree.plot_root_to_tip(label=False)
t = np.array([np.min(dates.values()), np.max(dates.values())])
plt.plot(t, t*d2d.clock_rate+d2d.intercept,
label='y=%1.4f+%1.5ft, r^2=%1.2f'%(d2d.intercept, d2d.clock_rate, d2d.r_val**2))
plt.legend(loc=2)
plt.savefig(base_name+'_root_to_tip_regression.pdf')
print("--- root-to-tip plot saved to \n\t %s_root_to_tip_regression.pdf\n"%base_name)
sys.exit(0)
#!/usr/bin/env python
from __future__ import print_function, division
import numpy as np
from treetime import TreeTime, GTR
from Bio import Phylo, AlignIO
from Bio import __version__ as bioversion
import sys
if __name__=="__main__":
###########################################################################
### parameter parsing
###########################################################################
import argparse
parser = argparse.ArgumentParser(
description=\
"Reconstructs ancestral sequences and infers a molecular clock tree. The"\
" script produces an alignment file ending on _ancestral.fasta which contains"\
" the inferred ancestral sequences and a tree file ending on _timetree.nexus."\
" Inferred mutations are included as comments. The molecular clock, along with the inferred"\
" GTR model, is written to stdout)")
parser.add_argument('--aln', required = True, type = str, help ="fasta file with input sequences")
parser.add_argument('--dates', required = True, type = str,
help ="csv with dates for nodes with 'node_name, date' where date is float (as in 2012.15)")
# parser.add_argument('--infer_gtr', default = True, action='store_true', help='infer substitution model')
parser.add_argument('--tree', type = str, help ="newick file with tree")
parser.add_argument('--gtr', default='infer', type = str, help="GTR model to use. "
" Type 'infer' to infer the model from the data. Or, specify the model type. "
"Optionally, feed the arguments with the '--gtr_args' option")
parser.add_argument('--gtr_params', type=str, nargs='+', help="GTR parameters for the model "
"specified by the --gtr argument. The parameters should be feed as 'key=value' list of parameters. "
"Example: '--gtr K80 --gtr_params kappa=0.2 pis=0.25,0.25,0.25,0.25'. See the exact definitions of "
" the parameters in the GTR creation methods.")
parser.add_argument('--reroot', required = False, type = str, default='best',
help ="reroot the tree. Valid arguments are 'best', 'midpoint', or a node name")
parser.add_argument('--optimize_branch_length', default = False, action='store_true',
help="Reoptimize branch length. Note that branch length optimized by treetime are only accurate at short evolutionary distances.")
parser.add_argument('--keep_polytomies', default = False, action='store_true',
help="Don't resolve polytomies using temporal information.")
parser.add_argument('--relax',nargs='*', default = False,
help='use an autocorrelated molecular clock. Prior strength and coupling of parent '
'and offspring rates can be specified e.g. as --relax 1.0 0.5')
parser.add_argument('--max_iter', default = 2, type=int,
help='maximal number of iterations the inference cycle is run. Note that for polytomy resolution and coalescence models max_iter should be at least 2')
parser.add_argument('--verbose', default = 1, type=int,
help='verbosity of output 0-6')
parser.add_argument('--Tc', default = "0.0", type=str,
help='coalescent time scale -- sensible values are on the order of the average '
'hamming distance of contemporaneous sequences. In addition, "opt" '
'"skyline" are valid options and estimate a constant coalescent rate'
'or a piecewise linear coalescent rate history')
parser.add_argument('--plot', default = False, action='store_true',
help='plot the tree on a time axis and save as pdf')
params = parser.parse_args()
if params.relax==[]:
params.relax=True
###########################################################################
### PARSING DATES
###########################################################################
with open(params.dates) as date_file:
dates = {}
for line in date_file:
try:
name, date = line.strip().split(',')[:2]
dates[name] = float(date)
except:
continue
###########################################################################
### CHECK FOR TREE, build if not in place
###########################################################################
if params.tree is None:
from treetime.utils import tree_inference
import os,shutil
params.tree = os.path.basename(params.aln)+'.nwk'
print("No tree given: inferring tree")
tmp_dir = 'timetree_inference_tmp_files'
tree_inference(params.aln, params.tree, tmp_dir = tmp_dir)
if os.path.isdir(tmp_dir):
shutil.rmtree(tmp_dir)
###########################################################################
### GTR SET-UP
###########################################################################
model = params.gtr
gtr_params = params.gtr_params
if model == 'infer':
gtr = GTR.standard('jc')
infer_gtr = True
else:
try:
kwargs = {}
if gtr_params is not None:
for param in gtr_params:
keyval = param.split('=')
if len(keyval)!=2: continue
if keyval[0] in ['pis', 'pi', 'Pi', 'Pis']:
keyval[1] = map(float, keyval[1].split(','))
elif keyval[0] not in ['alphabet']:
keyval[1] = float(keyval[1])
kwargs[keyval[0]] = keyval[1]
else:
print ("GTR params are not specified. Creating GTR model with default parameters")
gtr = GTR.standard(model, **kwargs)
infer_gtr = False
except:
print ("Could not create GTR model from input arguments. Using default (Jukes-Cantor 1969)")
gtr = GTR.standard('jc')
infer_gtr = False
###########################################################################
# PARSING OPTIONS
###########################################################################
try:
Tc = float(params.Tc)
if Tc<1e-5:
Tc = None
except:
if params.Tc in ['opt', 'skyline']:
Tc = params.Tc
else:
Tc = None
###########################################################################
### SET-UP and RUN
###########################################################################
myTree = TreeTime(dates=dates, tree=params.tree,
aln=params.aln, gtr=gtr, verbose=params.verbose)
myTree.run(root=params.reroot, relaxed_clock=params.relax,
resolve_polytomies=(not params.keep_polytomies),
Tc=Tc, max_iter=params.max_iter,
branch_lengths = 'joint' if params.optimize_branch_length else 'input')
###########################################################################
### OUTPUT and saving of results
###########################################################################
if infer_gtr:
print('\nInferred GTR model:')
print(myTree.gtr)
print(myTree.date2dist)
if Tc=='skyline':
skyline = myTree.merger_model.skyline_inferred(gen=50)
print("inferred skyline assuming 50 generations per year:")
for (x,y) in zip(skyline.x, skyline.y):
print("%1.3f\t%1.3f"%(x,y))
base_name = '.'.join(params.aln.split('/')[-1].split('.')[:-1])
# plot
if params.plot:
from treetime.treetime import plot_vs_years
import matplotlib.pyplot as plt
plt.ion()
leaf_count = myTree.tree.count_terminals()
label_func = lambda x: x.name[:20] if (leaf_count<30 & x.is_terminal()) else ''
branch_label_func = lambda x: (','.join([a+str(pos)+d for a,pos, d in x.mutations[:10]])
+('...' if len(x.mutations)>10 else '')) if leaf_count<30 else ''
plot_vs_years(myTree, show_confidence=False, label_func = label_func) #, branch_labels=branch_label_func)
plt.savefig(base_name+'_tree.pdf')
print("--- saved tree as pdf in \n\t %s\n"%(base_name+'_tree.pdf'))
else:
# convert branch length to years (this is implicit in the above plot)
myTree.branch_length_to_years()
# decorate tree with inferred mutations
outaln_name = base_name+'_ancestral.fasta'
AlignIO.write(myTree.get_reconstructed_alignment(), outaln_name, 'fasta')
print("--- alignment including ancestral nodes saved as \n\t %s\n"%outaln_name)
terminal_count = 0
for n in myTree.tree.find_clades():
if n.up is None:
continue
n.confidence=None
# due to a bug in older versions of biopython that truncated filenames in nexus export
# we truncate them by hand and make them unique.
if n.is_terminal() and len(n.name)>40 and bioversion<"1.69":
n.name = n.name[:35]+'_%03d'%terminal_count
terminal_count+=1
if len(n.mutations):
n.comment= '&mutations="' + '_'.join([a+str(pos)+d for (a,pos, d) in n.mutations])+'"'
# write tree to file
outtree_name = '.'.join(params.tree.split('/')[-1].split('.')[:-1])+'_timetree.nexus'
Phylo.write(myTree.tree, outtree_name, 'nexus')
print("--- tree saved in nexus format as \n\t %s\n"%outtree_name)
sys.exit(0)
#!/usr/bin/env python
from __future__ import print_function, division, absolute_import
import sys, argparse, os
from treetime import version
from treetime.wrappers import ancestral_reconstruction, mugration, scan_homoplasies, timetree, estimate_clock_model
import matplotlib
matplotlib.use('AGG')
py2 = sys.version_info.major==2
def set_default_subparser(self, name, args=None, positional_args=0):
"""default subparser selection. Call after setup, just before parse_args()
name: is the name of the subparser to call by default
args: if set is the argument list handed to parse_args()
https://stackoverflow.com/questions/6365601/default-sub-command-or-handling-no-sub-command-with-argparse
"""
subparser_found = False
if len(sys.argv)==1:
sys.argv.append('-h')
else:
for x in self._subparsers._actions:
if not isinstance(x, argparse._SubParsersAction):
continue
for sp_name in x._name_parser_map.keys():
if sp_name in sys.argv[1:]:
subparser_found = True
if not subparser_found:
# insert default subcommand in first position
if args is None:
sys.argv.insert(1, name)
else:
args.insert(1, name)
if py2:
argparse.ArgumentParser.set_default_subparser = set_default_subparser
treetime_description = \
"TreeTime: Maximum Likelihood Phylodynamics\n\n"
subcommand_description = \
"In addition, TreeTime implements several sub-commands:\n\n"\
"\t ancestral\tinfer ancestral sequences maximizing the joint or marginal likelihood.\n"\
"\t homoplasy\tanalyze patterns of recurrent mutations aka homoplasies.\n"\
"\t clock\t\testimate molecular clock parameters and reroot the tree.\n"\
"\t mugration\tmap discrete character such as host or country to the tree.\n\n"\
"(note that 'tt' is a default subcommand in python2 that doesn't need to be specified).\n"\
"To print a description and argument list of the individual sub-commands, type:\n\n"\
"\t treetime <subcommand> -h\n\n"
ref_msg = \
"If you use results from treetime in a publication, please cite:"\
"\n\n\tSagulenko et al. TreeTime: Maximum-likelihood phylodynamic analysis"\
"\n\tVirus Evolution, vol 4, https://academic.oup.com/ve/article/4/1/vex042/4794731\n"
timetree_description=\
"TreeTime infers a time scaled phylogeny given a tree topology, an alignment, "\
"and tip dates. Reconstructs ancestral sequences and infers a molecular clock tree. "\
"TreeTime will reroot the tree and resolve polytomies by default. "\
"In addition, treetime will infer ancestral sequences and a GTR substitution model. "\
"Inferred mutations are included as comments in the output tree.\n\n"
gtr_description = "GTR model to use. '--gtr infer' will infer a model "\
"from the data. Alternatively, specify the model type. If the specified model "\
"requires additional options, use '--gtr-params' to specify those."
gtr_params_description = "GTR parameters for the model specified by "\
"the --gtr argument. The parameters should be feed as 'key=value' "\
"list of parameters. Example: '--gtr K80 --gtr-params kappa=0.2 "\
"pis=0.25,0.25,0.25,0.25'. See the exact definitions of the "\
"parameters in the GTR creation methods in treetime/nuc_models.py "\
"or treetime/aa_models.py"
reroot_description = "reroot the tree. Valid choices are "\
"'ML', 'ML-rough', 'least-squares', 'min_dev', 'midpoint' or a node name "\
" to be used as outgroup. Use --keep-root to keep the current root."
tree_description = "Name of file containing the tree in "\
"newick, nexus, or phylip format. If none is provided, "\
"treetime will attempt to build a tree from the alignment "\
"using fasttree, iqtree, or raxml (assuming they are installed)"
aln_description = "alignment file (fasta)"
dates_description = "csv file with dates for nodes with 'node_name, date' where date is float (as in 2012.15)"
coalescent_description = \
"coalescent time scale -- sensible values are on the order of the average "\
"hamming distance of contemporaneous sequences. In addition, 'opt' "\
"'skyline' are valid options and estimate a constant coalescent rate "\
"or a piecewise linear coalescent rate history"
ancestral_description = \
"Reconstructs ancestral sequences and maps mutations to the tree. "\
"The output consists of a file 'ancestral.fasta' with ancestral sequences "\
"and a tree 'annotated_tree.nexus' with mutations added as comments "\
"like A45G,G136T,..., number in SNPs used 1-based index by default. "\
"The inferred GTR model is written to stdout."
homoplasy_description = \
"Reconstructs ancestral sequences and maps mutations to the tree. "\
"The tree is then scanned for homoplasies. An excess number of homoplasies "\
"might suggest contamination, recombination, culture adaptation or similar."
mugration_description = \
"Reconstructs discrete ancestral states, for example "\
"geographic location, host, or similar. In addition to ancestral states, "\
"a GTR model of state transitions is inferred."
def add_seq_len_aln_group(parser):
parser.add_argument('--sequence-length', type=int, help="length of the sequence, "
"used to calculate expected variation in branch length. "
"Not required if alignment is provided.")
add_aln_group(parser, required=False)
# seq_group_ex.add_argument('--aln', type=str, help=aln_description)
def add_aln_group(parser, required=True):
parser.add_argument('--aln', required=required, type=str, help=aln_description)
parser.add_argument('--vcf-reference', type=str, help='only for vcf input: fasta file of the sequence the VCF was mapped to.')
def add_reroot_group(parser):
parser.add_argument('--clock-filter', type=float, default=3,
help="ignore tips that don't follow a loose clock, "
"'clock-filter=number of interquartile ranges from regression'")
reroot_group = parser.add_mutually_exclusive_group()
reroot_group.add_argument('--reroot', type=str, default='best', help=reroot_description)
reroot_group.add_argument('--keep-root', required = False, action="store_true", default=False,
help ="don't reroot the tree. Otherwise, reroot to minimize the "
"the residual of the regression of root-to-tip distance and sampling time")
def add_gtr_arguments(parser):
parser.add_argument('--gtr', default='infer', help=gtr_description)
parser.add_argument('--gtr-params', nargs='+', help=gtr_params_description)
def add_anc_arguments(parser):
parser.add_argument('--keep-overhangs', default = False, action='store_true', help='do not fill terminal gaps')
parser.add_argument('--zero-based', default = False, action='store_true', help='zero based mutation indexing')
parser.add_argument('--report-ambiguous', default=False, action="store_true", help='include transitions involving ambiguous states')
def add_common_args(parser):
parser.add_argument('--verbose', default=1, type=int, help='verbosity of output 0-6')
parser.add_argument('--outdir', type=str, help='directory to write the output to')
if __name__ == '__main__':
## TIMETREE
parser = argparse.ArgumentParser(description = "",
usage=treetime_description)
subparsers = parser.add_subparsers()
if py2:
t_parser = subparsers.add_parser('tt', description=timetree_description)
else:
t_parser = parser
t_parser.add_argument('--tree', type=str, help=tree_description)
add_seq_len_aln_group(t_parser)
t_parser.add_argument('--dates', type=str, help=dates_description)
add_reroot_group(t_parser)
add_gtr_arguments(t_parser)
t_parser.add_argument('--clock-rate', type=float, help="if specified, the rate of the molecular clock won't be optimized.")
t_parser.add_argument('--branch-length-mode', default='auto', type=str, choices=['auto', 'input', 'joint', 'marginal'],
help="If set to 'input', the provided branch length will be used without modification. "
"Note that branch lengths optimized by treetime are only accurate at short evolutionary distances.")
t_parser.add_argument('--confidence', action='store_true', help="estimate confidence intervals of divergence times.")
t_parser.add_argument('--keep-polytomies', default=False, action='store_true',
help="Don't resolve polytomies using temporal information.")
t_parser.add_argument('--relax',nargs='*', default=False,
help='use an autocorrelated molecular clock. Prior strength and coupling of parent '
'and offspring rates can be specified e.g. as --relax 1.0 0.5')
t_parser.add_argument('--max-iter', default=2, type=int,
help='maximal number of iterations the inference cycle is run. Note that for polytomy resolution and coalescence models max_iter should be at least 2')
t_parser.add_argument('--coalescent', default="0.0", type=str,
help=coalescent_description)
t_parser.add_argument('--plot-tree', default="timetree.pdf",
help = "filename to save the plot to. Suffix will determine format"
" (choices pdf, png, svg, default=pdf)")
t_parser.add_argument('--plot-rtt', default="root_to_tip_regression.pdf",
help = "filename to save the plot to. Suffix will determine format"
" (choices pdf, png, svg, default=pdf)")
add_anc_arguments(t_parser)
add_common_args(t_parser)
def toplevel(params):
if (params.aln or params.tree) and params.dates:
timetree(params)
else:
print(treetime_description+timetree_description+subcommand_description+
"'--dates' and '--aln' or '--tree' are REQUIRED inputs, type 'treetime -h' for a full list of arguments.\n")
t_parser.set_defaults(func=toplevel)
## HOMOPLASY SCANNER
h_parser = subparsers.add_parser('homoplasy', description=homoplasy_description)
add_aln_group(h_parser)
h_parser.add_argument('--tree', type = str, help=tree_description)
h_parser.add_argument('--const', type = int, default=0, help ="number of constant sites not included in alignment")
h_parser.add_argument('--rescale', type = float, default=1.0, help ="rescale branch lengths")
h_parser.add_argument('--detailed', required = False, action="store_true", help ="generate a more detailed report")
add_gtr_arguments(h_parser)
h_parser.add_argument('--zero-based', default = False, action='store_true', help='zero based mutation indexing')
h_parser.add_argument('-n', default = 10, type=int, help='number of mutations/nodes that are printed to screen')
h_parser.add_argument('--drms', type=str, help='TSV file containing DRM info. columns headers: GENOMIC_POSITION, ALT_BASE, DRUG, GENE, SUBSTITUTION')
add_common_args(h_parser)
h_parser.set_defaults(func=scan_homoplasies)
## ANCESTRAL RECONSTRUCTION
a_parser = subparsers.add_parser('ancestral', description=ancestral_description)
add_aln_group(a_parser)
a_parser.add_argument('--tree', type = str, help =tree_description)
add_gtr_arguments(a_parser)
a_parser.add_argument('--marginal', default = False, action="store_true", help ="marginal reconstruction of ancestral sequences")
add_anc_arguments(a_parser)
add_common_args(a_parser)
a_parser.set_defaults(func=ancestral_reconstruction)
## MUGRATION
m_parser = subparsers.add_parser('mugration', description=mugration_description)
m_parser.add_argument('--tree', required = True, type=str, help=tree_description)
m_parser.add_argument('--attribute', type=str, help ="attribute to reconstruct, e.g. country")
m_parser.add_argument('--states', required = True, type=str, help ="csv or tsv file with discrete characters."
"\n#name,country,continent\ntaxon1,micronesia,oceania\n...")
m_parser.add_argument('--weights', type=str, help="csv or tsv file with probabilities of that a randomly sampled "
"sequence at equilibrium has a particular state. E.g. population of different continents or countries. E.g.:"
"\n#country,weight\nmicronesia,0.1\n...")
m_parser.add_argument('--confidence', action="store_true", help="output confidence of mugration inference")
m_parser.add_argument('--pc', type=float, default=1.0, help ="pseudo-counts higher numbers will results in 'flatter' models")
m_parser.add_argument('--missing-data', type=str, default='?', help ="string indicating missing data")
add_common_args(m_parser)
m_parser.set_defaults(func=mugration)
## CLOCKSIGNAL
c_parser = subparsers.add_parser('clock',
description="Calculates the root-to-tip regression and quantifies the 'clock-i-ness' of the tree. "
"It will reroot the tree to maximize the clock-like "
"signal and recalculate branch length unless run with --keep_root.")
c_parser.add_argument('--tree', required=True, type=str, help=tree_description)
c_parser.add_argument('--dates', required=True, type=str, help=dates_description)
add_seq_len_aln_group(c_parser)
add_reroot_group(c_parser)
c_parser.add_argument('--allow-negative-rate', required = False, action="store_true", default=False,
help="By default, rates are forced to be positive. For trees with little temporal "
"signal it is advisable to remove this restriction to achieve essentially mid-point rooting.")
c_parser.add_argument('--plot-rtt', default="root_to_tip_regression.pdf",
help = "filename to save the plot to. Suffix will determine format"
" (choices pdf, png, svg, default=pdf)")
add_common_args(c_parser)
c_parser.set_defaults(func=estimate_clock_model)
# make a version subcommand
v_parser = subparsers.add_parser('version', description='print version')
v_parser.set_defaults(func=lambda x: print(version))
## call the relevant function and return
if py2:
parser.set_default_subparser('tt')
params = parser.parse_args()
return_code = params.func(params)
sys.exit(return_code)
This diff is collapsed.
name, date
A/Hawaii/02/2013|KF789866|05/28/2013|USA|12_13|H3N2/1-1409,2013.40520192
A/Boston/DOA2_107/2012|CY148382|11/01/2012|USA|12_13|H3N2/1-1409,2012.83778234
A/Oregon/15/2009|GQ895004|06/25/2009|USA|08_09|H3N2/1-1409,2009.48186174
A/Hong_Kong/H090_695_V10/2009|CY115546|07/10/2009|Hong_Kong||H3N2/8-1416,2009.5229295
A/New_York/182/2000|CY001279|02/18/2000|USA|99_00|H3N2/1-1409,2000.13415469
A/Canterbury/58/2000|CY009150|09/05/2000|New_Zealand||H3N2/8-1416,2000.68172485
A/Minab/797/2011|KC865620|12/24/2011|Iran||H3N2/20-1428,2011.98015058
A/Nebraska/15/2011|KC892583|12/15/2011|USA|11_12|H3N2/1-1409,2011.95550992
A/New_Hampshire/12/2012|KF790252|11/08/2012|USA|12_13|H3N2/1-1409,2012.8569473
A/Scotland/76/2003|CY088128|11/03/2003|United_Kingdom|03_04|H3N2/1-1409,2003.84052019
A/Managua/25/2007|CY032439|06/27/2007|Nicaragua||H3N2/1-1409,2007.48733744
A/Boston/57/2008|CY044710|02/24/2008|USA|07_08|H3N2/1-1409,2008.15058179
A/DaNang/DN434/2008|CY104616|11/11/2008|Viet_Nam||H3N2/4-1412,2008.86516085
A/Mexico/InDRE940/2003|CY100628|2003|Mexico||H3N2/15-1423,2003.00273785
A/Indiana/03/2012|KC892731|04/03/2012|USA|11_12|H3N2/1-1409,2012.25735797
A/Maryland/21/2011|KC892695|12/26/2011|USA|11_12|H3N2/1-1409,2011.98562628
A/Denmark/107/2003|EU103941|2003|Denmark||H3N2/1-1409,2003.00273785
A/Peru/PER247/2011|CY162234|08/26/2011|Peru||H3N2/8-1416,2011.65160849
A/Maryland/03/2013|KF789621|02/10/2013|USA|12_13|H3N2/1-1409,2013.11225188
((A/Indiana/03/2012|KC892731|04/03/2012|USA|11_12|H3N2/1-1409:0.00285,((A/Peru/PER247/2011|CY162234|08/26/2011|Peru||H3N2/8-1416:0.00517,(A/Minab/797/2011|KC865620|12/24/2011|Iran||H3N2/20-1428:0.00761,((A/Oregon/15/2009|GQ895004|06/25/2009|USA|08_09|H3N2/1-1409:0.00214,A/Hong_Kong/H090_695_V10/2009|CY115546|07/10/2009|Hong_Kong||H3N2/8-1416:0.00357)0.977:0.00426,(A/Boston/57/2008|CY044710|02/24/2008|USA|07_08|H3N2/1-1409:0.00214,(A/DaNang/DN434/2008|CY104616|11/11/2008|Viet_Nam||H3N2/4-1412:0.00428,(A/Managua/25/2007|CY032439|06/27/2007|Nicaragua||H3N2/1-1409:0.00350,(A/Mexico/InDRE940/2003|CY100628|2003|Mexico||H3N2/15-1423:0.00578,(A/New_York/182/2000|CY001279|02/18/2000|USA|99_00|H3N2/1-1409:0.00210,((A/Scotland/76/2003|CY088128|11/03/2003|United_Kingdom|03_04|H3N2/1-1409:0.00143,A/Denmark/107/2003|EU103941|2003|Denmark||H3N2/1-1409:0.00070)1.000:0.02186,A/Canterbury/58/2000|CY009150|09/05/2000|New_Zealand||H3N2/8-1416:0.00647)0.731:0.00066)1.000:0.01010)0.999:0.01374)0.872:0.00055)0.803:0.00071)0.813:0.00074)0.813:0.00199)0.785:0.00184)0.983:0.00486,(A/Nebraska/15/2011|KC892583|12/15/2011|USA|11_12|H3N2/1-1409:0.00142,A/Maryland/21/2011|KC892695|12/26/2011|USA|11_12|H3N2/1-1409:0.00214)0.931:0.00214)0.959:0.00286)0.810:0.00071,(A/Maryland/03/2013|KF789621|02/10/2013|USA|12_13|H3N2/1-1409:0.00500,A/New_Hampshire/12/2012|KF790252|11/08/2012|USA|12_13|H3N2/1-1409:0.00071)0.472:0.00055,(A/Hawaii/02/2013|KF789866|05/28/2013|USA|12_13|H3N2/1-1409:0.00357,A/Boston/DOA2_107/2012|CY148382|11/01/2012|USA|12_13|H3N2/1-1409:0.00142)0.450:0.00055);
This diff is collapsed.
name, date
A/Texas/UR06_0358/2007|CY027565|02/20/2007|USA|06_07|H3N2/5-1413, 2007.13963039
A/Western_Australia/8/2000|CY015662|10/17/2000|Australia||H3N2/1-1409, 2000.79671458
A/Australia/NHRC0008/2003|CY091279|07/08/2003|Australia||H3N2/4-1412, 2003.5174538
A/Canterbury/404/2003|CY007045|07/05/2003|New_Zealand||H3N2/8-1416, 2003.50924025
A/California/VRDL183/2009|CY068696|04/27/2009|USA|08_09|H3N2/4-1412, 2009.32032854
A/Denmark/120/2003|EU103940|2003|Denmark||H3N2/1-1409, 2003.00273785
A/New_York/407/2002|CY003426|01/08/2002|USA|01_02|H3N2/8-1416, 2002.02190281
A/South_Australia/72/2000|CY021775|2000|Australia||H3N2/1-1409, 2000.00273785
A/South_Carolina/07/2008|GQ385873|12/31/2008|USA|08_09|H3N2/1-1409, 2009.00205339
A/North_Carolina/10/2011|KC892419|12/01/2011|USA|11_12|H3N2/1-1409, 2011.91718001
A/Hong_Kong/CUHK40210/2005|EU857280|06/06/2005|Hong_Kong||H3N2/1-1409, 2005.42984257
A/Bilthoven/628/1976|CY113191|1976|Netherlands||H3N2/4-1412, 1976.00273785
A/Malaysia/1681079/2006|CY118940|11/24/2006|Malaysia||H3N2/4-1412, 2006.89801506
A/Mississippi/01/2013|KF790359|01/08/2013|USA|12_13|H3N2/1-1409, 2013.02190281
A/Novosibirsk/707/2009|CY053673|03/2009|Russia|08_09|H3N2/16-1424, 2009.16427105
A/Boston/DOA2_104/2012|CY148358|12/22/2012|USA|12_13|H3N2/1-1409, 2012.97741273
A/Boston/DOA01/2011|CY111128|01/03/2011|USA|10_11|H3N2/4-1412, 2011.00821355
A/Saint_Petersburg/RII03/2012|CY114550|02/06/2012|Russia|11_12|H3N2/9-1417, 2012.10130048
A/New_South_Wales/21/1999|CY016557|1999|Australia||H3N2/5-1413, 1999.00273785
A/HaNoi/Q638/2007|CY105736|08/29/2007|Viet_Nam||H3N2/4-1412, 2007.65982204
A/Texas/40/2009|GQ895023|02/24/2009|USA|08_09|H3N2/1-1409, 2009.15058179
A/Iowa/14/2012|KF790285|10/18/2012|USA|12_13|H3N2/1-1409, 2012.79945243
A/Boston/DOA24/2011|CY116709|02/01/2011|USA|10_11|H3N2/4-1412, 2011.08761123
A/New_York/UR07_0080/2008|CY036969|02/25/2008|USA|07_08|H3N2/1-1409, 2008.15331964
A/Nanchang/0074/94|CY003754|1994|China||H3N2/8-1416, 1994.00273785
A/Nebraska/02/2013|KF790067|01/02/2013|USA|12_13|H3N2/1-1409, 2013.0054757
A/Peru/PER251/2010|CY162258|10/12/2010|Peru||H3N2/8-1416, 2010.78028747
A/Hong_Kong/CUHK51424/2001|EU857312|12/26/2001|Hong_Kong||H3N2/1-1409, 2001.98562628
A/Kentucky/11/2010|KC883205|10/18/2010|USA|10_11|H3N2/1-1409, 2010.79671458
A/Colorado/07/2011|KC892191|10/23/2011|USA|11_12|H3N2/1-1409, 2011.81040383
A/Cambodia/V1013305/2011|KC118547|10/10/2011|Cambodia||H3N2/1-1409, 2011.77481177
A/Peru/PER389/2012|CY163314|04/02/2012|Peru||H3N2/8-1416, 2012.25462012
A/Port_chalmers/1/1973|CY009350|1973|New_Zealand||H3N2/8-1416, 1973.00273785
A/Kentucky/UR07_0148/2008|CY038857|03/10/2008|USA|07_08|H3N2/1-1409, 2008.19164956
A/Hong_Kong/CUHK71313/2003|EU857364|09/21/2003|Hong_Kong||H3N2/1-1409, 2003.72279261
A/Pennsylvania/04/2007|EU516043|03/03/2007|USA|06_07|H3N2/1-1409, 2007.16974675
A/Singapore/GP1797/2011|CY124274|11/29/2011|Singapore||H3N2/20-1428, 2011.91170431
A/New_York/665/1994|CY011522|12/16/1994|USA|94_95|H3N2/8-1416, 1994.95824778
A/Fujian/445/2003|CY121450|2003|China||H3N2/1-1409, 2003.00273785
A/Hong_Kong/CUHK12794/1997|EU857131|06/11/1997|Hong_Kong||H3N2/1-1409, 1997.44353183
A/Kentucky/UR06_0158/2007|CY026885|02/05/2007|USA|06_07|H3N2/5-1413, 2007.09856263
A/Hong_Kong/H090_763_V2|JN256790|08/03/2009|Hong_Kong||H3N2/1-1409, 2009.58863792
A/Lyon/672/1993|CY113983|02/22/1993|France|92_93|H3N2/4-1412, 1993.14510609
A/Wellington/55/2004|CY020343|09/27/2004|New_Zealand||H3N2/5-1413, 2004.74195756
A/Memphis/3/80|CY008470|1980|USA||H3N2/8-1416, 1980.00273785
A/Singapore/C2011.641/2011|KF014491|08/22/2011|Singapore||H3N2/20-1428, 2011.64065708
A/California/14/2013|KF789566|01/29/2013|USA|12_13|H3N2/1-1409, 2013.07939767
A/Boston/DOA2_158/2013|CY148766|01/03/2013|USA|12_13|H3N2/1-1409, 2013.00821355
A/TayNguyen/TN348/2005|CY105376|08/01/2005|Viet_Nam||H3N2/5-1413, 2005.58316222
A/Singapore/GP1382/2011|CY124208|08/03/2011|Singapore||H3N2/20-1428, 2011.58863792
A/England/460/2003|CY088088|11/11/2003|United_Kingdom|03_04|H3N2/1-1409, 2003.862423
A/Singapore/C2009.515/2009|KF014467|07/07/2009|Singapore||H3N2/20-1428, 2009.51471595
A/New_York/381/2004|CY002250|12/28/2004|USA|04_05|H3N2/18-1426, 2004.99383984
A/Guangdong/460/2010|CY091846|10/22/2010|China||H3N2/20-1428, 2010.80766598
A/Moscow/02/2012|JQ988034|02/01/2012|Russia|11_12|H3N2/22-1430, 2012.08761123
A/Peru/PER388/2011|CY163306|09/14/2011|Peru||H3N2/8-1416, 2011.70362765
A/Singapore/GP1583/2011|CY124238|10/07/2011|Singapore||H3N2/20-1428, 2011.76659822
A/Waikato/51/2002|CY012058|08/12/2002|New_Zealand||H3N2/8-1416, 2002.61327858
A/New_York/320/1999|CY001858|03/26/1999|USA|98_99|H3N2/17-1425, 1999.23271732
A/England/492/2003|CY088288|11/21/2003|United_Kingdom|03_04|H3N2/1-1409, 2003.88980151
A/Denmark/72/2003|EU103942|2003|Denmark||H3N2/1-1409, 2003.00273785
A/New_York/517/1998|CY006285|01/03/1998|USA|97_98|H3N2/4-1412, 1998.00821355
A/Singapore/H2011.507/2011|KF014518|07/04/2011|Singapore||H3N2/20-1428, 2011.5065024
A/Waikato/1/2001|CY011970|04/25/2001|New_Zealand||H3N2/2-1410, 2001.31485284
A/Netherlands/357/1993|CY114071|12/06/1993|Netherlands|93_94|H3N2/4-1412, 1993.93086927
A/Peru/PER395/2011|CY163362|10/24/2011|Peru||H3N2/8-1416, 2011.81314168
A/Boston/DOA2_110/2012|CY148406|12/07/2012|USA|12_13|H3N2/1-1409, 2012.93634497
A/Alaska/16/2012|KC892528|07/13/2012|USA||H3N2/1-1409, 2012.5338809
A/Auckland/608/2002|CY022551|06/08/2002|New_Zealand||H3N2/5-1413, 2002.43531828
A/Colorado/17/2012|KC892646|06/21/2012|USA||H3N2/1-1409, 2012.47364819
A/Memphis/103/74|CY006829|1974|USA||H3N2/8-1416, 1974.00273785
A/HaNoi/BT251/2007|CY105504|07/26/2007|Viet_Nam||H3N2/5-1413, 2007.56673511
A/Managua/3587.02/2010|CY098075|06/03/2010|Nicaragua||H3N2/4-1412, 2010.42162902
A/HaNoi/Q492/2007|CY105704|07/10/2007|Viet_Nam||H3N2/4-1412, 2007.5229295
A/Canterbury/233/2005|CY008582|07/24/2005|New_Zealand||H3N2/8-1416, 2005.56125941
A/Stockholm/12/1988|CY113399|1988|Sweden||H3N2/4-1412, 1988.00273785
A/Ohio/UR07_0005/2008|CY037481|02/12/2008|USA|07_08|H3N2/1-1409, 2008.11772758
A/Pennsylvania/08/2010|KC535483|07/27/2010|USA||H3N2/1-1409, 2010.56947296
A/Memphis/4/77|CY008125|1977|USA||H3N2/8-1416, 1977.00273785
A/Pennsylvania/13/2008|GQ369891|12/11/2008|USA|08_09|H3N2/1-1409, 2008.94729637
A/Singapore/C2011.496/2011|KF014483|06/30/2011|Singapore||H3N2/20-1428, 2011.49555099
A/Hong_Kong/H090_739_V3|JN256779|07/29/2009|Hong_Kong||H3N2/1-1409, 2009.57494867
A/Memphis/1/1971|AB101675|1971|USA||H3N2/1-1409, 1971.00273785
A/Utah/11/2011|KC883015|03/10/2011|USA|10_11|H3N2/1-1409, 2011.1889117
A/Peru/PER354/2012|CY163050|05/21/2012|Peru||H3N2/8-1416, 2012.38877481
A/Boston/DOA2_115/2012|CY148446|12/05/2012|USA|12_13|H3N2/1-1409, 2012.93086927
A/New_York/716/1994|CY011890|01/17/1994|USA|93_94|H3N2/2-1410, 1994.04654346
A/Singapore/H2011.751/2011|KF014459|10/01/2011|Singapore||H3N2/20-1428, 2011.75017112
A/Canterbury/418/2003|CY007117|07/15/2003|New_Zealand||H3N2/8-1416, 2003.53661875
A/Peru/PER273/2011|CY162426|08/19/2011|Peru||H3N2/8-1416, 2011.63244353
A/Singapore/H2009.332C/2009|KF014421|05/01/2009|Singapore||H3N2/20-1428, 2009.33127995
A/Western_Australia/42/2003|CY015814|09/17/2003|Australia||H3N2/5-1413, 2003.7118412
A/New_York/674/1995|CY011554|01/19/1995|USA|94_95|H3N2/8-1416, 1995.05201916
A/Hong_Kong/CUHK41757/1997|EU857287|12/30/1997|Hong_Kong||H3N2/1-1409, 1997.99657769
A/Dunedin/10/2002|CY011402|07/09/2002|New_Zealand||H3N2/1-1409, 2002.52019165
A/California/VRDL335/2009|CY068611|05/03/2009|USA||H3N2/4-1412, 2009.33675565
A/North_Carolina/01/2008|EU852002|02/11/2008|USA|07_08|H3N2/1-1409, 2008.11498973
A/California/VRDL233/2009|CY068275|04/29/2009|USA|08_09|H3N2/4-1412, 2009.32580424
A/Texas/JMM_39/2012|CY135014|11/30/2012|USA|12_13|H3N2/8-1416, 2012.91718001
A/New_York/3139/2009|CY050630|04/29/2009|USA|08_09|H3N2/1-1409, 2009.32580424
A/Waikato/6/2000|CY013050|09/08/2000|New_Zealand||H3N2/3-1411, 2000.6899384
A/Peru/PER333/2011|CY162890|09/30/2011|Peru||H3N2/8-1416, 2011.74743326
A/Peru/PER077/2010|CY160898|11/16/2010|Peru||H3N2/8-1416, 2010.87611225
A/Singapore/GP1541/2011|CY124232|09/29/2011|Singapore||H3N2/16-1424, 2011.74469541
A/Mexico/24014/2008|CY147669|12/01/2008|Mexico||H3N2/1-1409, 2008.91991786
A/Texas/03/2008|EU716515|01/17/2008|USA|07_08|H3N2/1-1409, 2008.04654346
A/Nebraska/02/2011|KC883200|01/07/2011|USA|10_11|H3N2/1-1409, 2011.01916496
A/Denmark/54/2006|EU103858|2006|Denmark||H3N2/1-1409, 2006.00273785
A/New_York/712/1993|CY011874|12/02/1993|USA|93_94|H3N2/8-1416, 1993.91991786
A/Hawaii/16/2012|KC892663|08/04/2012|USA||H3N2/1-1409, 2012.59411362
A/England/944/2003|CY088192|11/17/2003|United_Kingdom|03_04|H3N2/1-1409, 2003.8788501
A/Novosibirsk/22/2012|KC135507|02/20/2012|Russia|11_12|H3N2/1-1409, 2012.13963039
A/Alaska/21/2012|KC892659|08/01/2012|USA||H3N2/1-1409, 2012.58590007
A/Peru/PER238/2011|CY162170|08/22/2011|Peru||H3N2/8-1416, 2011.64065708
A/Memphis/2/77|CY008117|1977|USA||H3N2/8-1416, 1977.00273785
A/Managua/5806.01/2010|CY070929|06/08/2010|Nicaragua||H3N2/4-1412, 2010.43531828
A/New_Mexico/09/2012|KC892210|03/15/2012|USA|11_12|H3N2/1-1409, 2012.20533881
A/New_York/738/1994|CY012986|02/04/1994|USA|93_94|H3N2/8-1416, 1994.09582478
A/Texas/NHRC0001/2006|CY091039|02/13/2006|USA||H3N2/4-1412, 2006.12046543
A/Denmark/41/03|AY531015|2003|Denmark||H3N2/1-1409, 2003.00273785
A/Kentucky/UR07_0038/2008|CY039425|02/18/2008|USA|07_08|H3N2/1-1409, 2008.13415469
A/Singapore/GP1362/2011|CY124204|07/29/2011|Singapore||H3N2/16-1424, 2011.57494867
A/Missouri/NHRC0001/2002|CY091095|01/09/2002|USA|01_02|H3N2/4-1412, 2002.02464066
A/Canterbury/417/2003|CY007109|07/15/2003|New_Zealand||H3N2/8-1416, 2003.53661875
A/Hong_Kong/CUHK75994/2003|EU857370|12/20/2003|Hong_Kong||H3N2/1-1409, 2003.96919918
A/Mississippi/UR07_0024/2008|CY039417|02/14/2008|USA|07_08|H3N2/1-1409, 2008.12320329
A/Bilthoven/5930/1974|CY113119|1974|Netherlands||H3N2/4-1412, 1974.00273785
A/Hong_Kong/CUHK53005/2006|EU857330|03/04/2006|Hong_Kong||H3N2/1-1409, 2006.1724846
A/California/VRDL317/2009|CY068515|05/06/2009|USA||H3N2/4-1412, 2009.3449692
A/Peru/PER244/2011|CY162210|08/26/2011|Peru||H3N2/8-1416, 2011.65160849
A/Georgia/NHRC0001/2002|CY091111|02/02/2002|USA|01_02|H3N2/4-1412, 2002.09034908
A/California/04/2013|KF790154|01/06/2013|USA|12_13|H3N2/1-1409, 2013.0164271
A/Australia/19/2009|CY061900|07/21/2009|Australia||H3N2/1-1409, 2009.55304586
A/Delaware/04/2010|KC535490|08/17/2010|USA||H3N2/1-1409, 2010.62696783
A/California/VRDL261/2009|CY068339|05/02/2009|USA||H3N2/4-1412, 2009.3340178
A/Oregon/14/2009|KC535305|06/07/2009|USA|08_09|H3N2/1-1409, 2009.43258042
A/Wisconsin/13/2012|KC892595|05/05/2012|USA|11_12|H3N2/1-1409, 2012.3449692
A/Singapore/GP1810/2011|CY124276|12/01/2011|Singapore||H3N2/20-1428, 2011.91718001
A/Hong_Kong/JY2/1968|CY147440|1968|Hong_Kong||H3N2/8-1416, 1968.00273785
A/Utah/15/2012|KC892709|05/16/2012|USA|11_12|H3N2/1-1409, 2012.37508556
A/Netherlands/414/1998|CY112895|05/12/1998|Netherlands|97_98|H3N2/4-1412, 1998.3613963
A/Nebraska/15/2011|KC892583|12/15/2011|USA|11_12|H3N2/1-1409, 2011.95550992
A/England/531/2003|CY088232|11/20/2003|United_Kingdom|03_04|H3N2/1-1409, 2003.88706366
A/Wyoming/18/2012|KF790094|10/05/2012|USA|12_13|H3N2/1-1409, 2012.76386037
A/Hong_Kong/H090_674_V1|JN256747|07/07/2009|Hong_Kong||H3N2/1-1409, 2009.51471595
A/Delaware/06/2010|KC882831|11/30/2010|USA|10_11|H3N2/1-1409, 2010.91444216
A/Maine/02/2010|KC882540|12/28/2010|USA|10_11|H3N2/1-1409, 2010.99110198
A/New_York/463/2005|CY003642|02/09/2005|USA|04_05|H3N2/18-1426, 2005.10951403
A/Singapore/H2009.518/2009|KF014425|07/08/2009|Singapore||H3N2/20-1428, 2009.5174538
A/Netherlands/165/1993|CY114063|03/05/1993|Netherlands|92_93|H3N2/4-1412, 1993.17522245
A/Hong_Kong/HKU28/2004|CY043746|07/17/2004|Hong_Kong||H3N2/1-1409, 2004.54483231
A/Missouri/NHRC0001/2006|CY091079|04/05/2006|USA|05_06|H3N2/4-1412, 2006.26009582
A/New_York/384/2005|CY002466|01/06/2005|USA|04_05|H3N2/18-1426, 2005.0164271
A/Malaysia/1965896/2008|CY119044|03/19/2008|Malaysia||H3N2/4-1412, 2008.21629021
A/Boston/DOA2_175/2013|CY148878|01/06/2013|USA|12_13|H3N2/1-1409, 2013.0164271
A/Wellington/27/2004|CY013479|09/11/2004|New_Zealand||H3N2/5-1413, 2004.69815195
A/Hong_Kong/H090_763_V23/2009|CY115802|08/03/2009|Hong_Kong||H3N2/8-1416, 2009.58863792
A/New_York/448/1998|CY003562|11/23/1998|USA|98_99|H3N2/20-1428, 1998.89527721
A/California/UR06_0565/2007|CY026789|03/07/2007|USA|06_07|H3N2/5-1413, 2007.18069815
A/Vermont/UR06_0471/2007|CY025605|02/28/2007|USA|06_07|H3N2/5-1413, 2007.1615332
A/Malaysia/25920/2003|CY118676|09/30/2003|Malaysia||H3N2/4-1412, 2003.74743326
A/New_York/785/1993|CY013210|03/26/1993|USA|92_93|H3N2/5-1413, 1993.23271732
A/Brisbane/10/2007|CY035024|02/06/2007|Australia||H3N2/1-1409, 2007.10130048
A/Hong_Kong/CUHK22163/2000|EU857207|03/05/2000|Hong_Kong||H3N2/1-1409, 2000.1779603
A/Boston/DOA2_189/2013|CY148982|01/14/2013|USA|12_13|H3N2/1-1409, 2013.03832991
A/North_Carolina/01/2011|KC882594|02/01/2011|USA|10_11|H3N2/1-1409, 2011.08761123
A/Peru/PER380/2010|CY163242|10/13/2010|Peru||H3N2/8-1416, 2010.78302533
A/Texas/JMM_57/2012|CY135142|12/07/2012|USA|12_13|H3N2/1-1409, 2012.93634497
A/Peru/PER067/2011|CY160818|10/31/2011|Peru||H3N2/8-1416, 2011.83230664
A/Queensland/50/2004|CY020047|10/27/2004|Australia||H3N2/5-1413, 2004.82409309
A/Memphis/1/80|CY008662|1980|USA||H3N2/8-1416, 1980.00273785
A/Bogota/WRAIR3457N/2010|CY093409|12/01/2010|Colombia||H3N2/4-1412, 2010.91718001
A/Canterbury/16/2004|CY007357|08/06/2004|New_Zealand||H3N2/8-1416, 2004.59958932
A/New_York/352/2005|CY002722|01/04/2005|USA|04_05|H3N2/1-1409, 2005.0109514
A/New_York/433/2000|CY003250|01/05/2000|USA|99_00|H3N2/20-1428, 2000.01368925
A/Denmark/116/2003|EU103879|2003|Denmark||H3N2/1-1409, 2003.00273785
A/Ontario/C37332/2011|JQ658965|01/12/2011|Canada|10_11|H3N2/1-1409, 2011.03285421
A/Indiana/09/2011|KC892993|10/03/2011|USA|11_12|H3N2/1-1409, 2011.75564682
A/Hong_Kong/H090_734_V3|JN256773|07/27/2009|Hong_Kong||H3N2/1-1409, 2009.56947296
A/Bilthoven/6545/1976|CY113223|1976|Netherlands||H3N2/4-1412, 1976.00273785
A/Hong_Kong/CUHK16614/1998|EU857152|07/13/1998|Hong_Kong||H3N2/1-1409, 1998.53114305
A/Canterbury/440/2003|CY007237|08/05/2003|New_Zealand||H3N2/8-1416, 2003.59411362
A/Malaysia/33386/2005|CY118868|12/30/2005|Malaysia||H3N2/4-1412, 2005.99657769
A/New_Mexico/02/2012|KC892371|01/24/2012|USA|11_12|H3N2/1-1409, 2012.06570842
A/New_York/3148/2009|CY050654|2009|USA||H3N2/1-1409, 2009.00273785
A/New_York/698/1995|CY011354|01/31/1995|USA|94_95|H3N2/8-1416, 1995.08487337
A/New_York/23/2003|CY000195|12/16/2003|USA|03_04|H3N2/20-1428, 2003.95824778
A/Hong_Kong/CUHK35435/2004|EU857276|06/10/2004|Hong_Kong||H3N2/1-1409, 2004.44353183
A/Maryland/21/2011|KC892695|12/26/2011|USA|11_12|H3N2/1-1409, 2011.98562628
A/Hong_Kong/CUHK4542/1997|EU857296|04/02/1997|Hong_Kong||H3N2/1-1409, 1997.25188227
A/New_York/778/1993|CY012770|02/02/1993|USA|92_93|H3N2/5-1413, 1993.09034908
A/Queensland/24/2002|CY017549|07/25/2002|Australia||H3N2/5-1413, 2002.56399726
A/Boston/DOA2_244/2013|CY149310|01/28/2013|USA|12_13|H3N2/1-1409, 2013.07665982
A/Hue/H521/2007|CY105552|12/07/2007|Viet_Nam||H3N2/4-1412, 2007.93360712
A/Peru/PER036/2011|CY160570|08/29/2011|Peru||H3N2/8-1416, 2011.65982204
A/Peru/PER030/2010|CY160522|11/20/2010|Peru||H3N2/8-1416, 2010.88706366
A/New_York/761/1993|CY012154|03/03/1993|USA|92_93|H3N2/8-1416, 1993.16974675
A/Singapore/C2011.573/2011|KF014488|07/28/2011|Singapore||H3N2/20-1428, 2011.57221081
(A/California/UR06_0565/2007|CY026789|03/07/2007|USA|06_07|H3N2/5-1413:0.00071,(((A/Pennsylvania/04/2007|EU516043|03/03/2007|USA|06_07|H3N2/1-1409:0.00142,A/Vermont/UR06_0471/2007|CY025605|02/28/2007|USA|06_07|H3N2/5-1413:0.00214)0.829:0.00071,(((A/Australia/19/2009|CY061900|07/21/2009|Australia||H3N2/1-1409:0.00644,(((A/California/VRDL317/2009|CY068515|05/06/2009|USA||H3N2/4-1412:0.00143,((((A/New_York/3139/2009|CY050630|04/29/2009|USA|08_09|H3N2/1-1409:0.00142,A/New_York/3148/2009|CY050654|2009|USA||H3N2/1-1409:0.00071)0.835:0.00071,((A/Hong_Kong/H090_763_V2|JN256790|08/03/2009|Hong_Kong||H3N2/1-1409:0.0,A/Hong_Kong/H090_763_V23/2009|CY115802|08/03/2009|Hong_Kong||H3N2/8-1416:0.0):0.00055,(A/Hong_Kong/H090_739_V3|JN256779|07/29/2009|Hong_Kong||H3N2/1-1409:0.00142,A/Hong_Kong/H090_734_V3|JN256773|07/27/2009|Hong_Kong||H3N2/1-1409:0.00142)0.904:0.00142)0.812:0.00071)0.927:0.00055,((A/Singapore/C2009.515/2009|KF014467|07/07/2009|Singapore||H3N2/20-1428:0.00142,A/Singapore/H2009.518/2009|KF014425|07/08/2009|Singapore||H3N2/20-1428:0.00071)0.892:0.00055,A/Singapore/H2009.332C/2009|KF014421|05/01/2009|Singapore||H3N2/20-1428:0.00055)0.000:0.00055)0.000:0.00055,(A/Oregon/14/2009|KC535305|06/07/2009|USA|08_09|H3N2/1-1409:0.00214,A/Texas/40/2009|GQ895023|02/24/2009|USA|08_09|H3N2/1-1409:0.00071)0.462:0.00055)0.840:0.00071)0.981:0.00357,A/Kentucky/UR07_0148/2008|CY038857|03/10/2008|USA|07_08|H3N2/1-1409:0.00214)0.990:0.00055,((A/Novosibirsk/707/2009|CY053673|03/2009|Russia|08_09|H3N2/16-1424:0.00214,(A/California/VRDL183/2009|CY068696|04/27/2009|USA|08_09|H3N2/4-1412:0.00143,A/California/VRDL261/2009|CY068339|05/02/2009|USA||H3N2/4-1412:0.00214)0.821:0.00071)0.896:0.00142,((A/California/VRDL233/2009|CY068275|04/29/2009|USA|08_09|H3N2/4-1412:0.00142,(A/Pennsylvania/13/2008|GQ369891|12/11/2008|USA|08_09|H3N2/1-1409:0.00055,A/South_Carolina/07/2008|GQ385873|12/31/2008|USA|08_09|H3N2/1-1409:0.00055)0.957:0.00055)0.891:0.00142,((((A/Boston/DOA24/2011|CY116709|02/01/2011|USA|10_11|H3N2/4-1412:0.00214,A/Maine/02/2010|KC882540|12/28/2010|USA|10_11|H3N2/1-1409:0.00214)0.818:0.00071,((A/Kentucky/11/2010|KC883205|10/18/2010|USA|10_11|H3N2/1-1409:0.0,A/Delaware/04/2010|KC535490|08/17/2010|USA||H3N2/1-1409:0.0):0.00055,A/North_Carolina/01/2011|KC882594|02/01/2011|USA|10_11|H3N2/1-1409:0.00071)0.407:0.00055)0.984:0.00357,(((A/North_Carolina/10/2011|KC892419|12/01/2011|USA|11_12|H3N2/1-1409:0.00428,((A/Singapore/C2011.641/2011|KF014491|08/22/2011|Singapore||H3N2/20-1428:0.00142,A/Singapore/H2011.507/2011|KF014518|07/04/2011|Singapore||H3N2/20-1428:0.00071)0.903:0.00055,((A/Singapore/GP1583/2011|CY124238|10/07/2011|Singapore||H3N2/20-1428:0.00071,A/Cambodia/V1013305/2011|KC118547|10/10/2011|Cambodia||H3N2/1-1409:0.00142)0.909:0.00055,A/Singapore/GP1382/2011|CY124208|08/03/2011|Singapore||H3N2/20-1428:0.00055)0.000:0.00055)0.977:0.00055)0.999:0.00572,((A/Moscow/02/2012|JQ988034|02/01/2012|Russia|11_12|H3N2/22-1430:0.00429,(A/Singapore/GP1810/2011|CY124276|12/01/2011|Singapore||H3N2/20-1428:0.00071,(A/Novosibirsk/22/2012|KC135507|02/20/2012|Russia|11_12|H3N2/1-1409:0.00055,(A/Hawaii/16/2012|KC892663|08/04/2012|USA||H3N2/1-1409:0.00071,(((A/Boston/DOA2_110/2012|CY148406|12/07/2012|USA|12_13|H3N2/1-1409:0.00071,(A/Nebraska/02/2013|KF790067|01/02/2013|USA|12_13|H3N2/1-1409:0.00143,A/Boston/DOA2_158/2013|CY148766|01/03/2013|USA|12_13|H3N2/1-1409:0.00071)0.984:0.00357)0.938:0.00055,(A/Alaska/21/2012|KC892659|08/01/2012|USA||H3N2/1-1409:0.00142,(A/California/04/2013|KF790154|01/06/2013|USA|12_13|H3N2/1-1409:0.00214,A/Texas/JMM_57/2012|CY135142|12/07/2012|USA|12_13|H3N2/1-1409:0.00142)0.899:0.00142)0.967:0.00055)0.000:0.00055,(((A/Colorado/17/2012|KC892646|06/21/2012|USA||H3N2/1-1409:0.00055,A/Wyoming/18/2012|KF790094|10/05/2012|USA|12_13|H3N2/1-1409:0.00214)0.435:0.00055,A/Boston/DOA2_115/2012|CY148446|12/05/2012|USA|12_13|H3N2/1-1409:0.00071)0.000:0.00055,((A/Iowa/14/2012|KF790285|10/18/2012|USA|12_13|H3N2/1-1409:0.00071,(A/Boston/DOA2_104/2012|CY148358|12/22/2012|USA|12_13|H3N2/1-1409:0.00285,(A/Boston/DOA2_244/2013|CY149310|01/28/2013|USA|12_13|H3N2/1-1409:0.00142,(A/Mississippi/01/2013|KF790359|01/08/2013|USA|12_13|H3N2/1-1409:0.00055,A/California/14/2013|KF789566|01/29/2013|USA|12_13|H3N2/1-1409:0.00055)0.889:0.00055)0.807:0.00071)0.818:0.00071)0.940:0.00055,(A/Boston/DOA2_175/2013|CY148878|01/06/2013|USA|12_13|H3N2/1-1409:0.00428,A/Boston/DOA2_189/2013|CY148982|01/14/2013|USA|12_13|H3N2/1-1409:0.00142)1.000:0.00055)0.000:0.00055)0.000:0.00055)0.953:0.00055)0.786:0.00071)0.928:0.00055)0.772:0.00071)0.941:0.00214,(A/Saint_Petersburg/RII03/2012|CY114550|02/06/2012|Russia|11_12|H3N2/9-1417:0.00214,((A/Alaska/16/2012|KC892528|07/13/2012|USA||H3N2/1-1409:0.00055,(A/Peru/PER354/2012|CY163050|05/21/2012|Peru||H3N2/8-1416:0.00142,(A/Wisconsin/13/2012|KC892595|05/05/2012|USA|11_12|H3N2/1-1409:0.00071,A/Nebraska/15/2011|KC892583|12/15/2011|USA|11_12|H3N2/1-1409:0.00055)0.922:0.00142)0.970:0.00055)0.000:0.00055,(((A/Singapore/C2011.496/2011|KF014483|06/30/2011|Singapore||H3N2/20-1428:0.00055,(A/Singapore/GP1362/2011|CY124204|07/29/2011|Singapore||H3N2/16-1424:0.00055,A/Singapore/C2011.573/2011|KF014488|07/28/2011|Singapore||H3N2/20-1428:0.00055)0.780:0.00071)0.816:0.00071,A/Singapore/GP1797/2011|CY124274|11/29/2011|Singapore||H3N2/20-1428:0.00071)0.944:0.00055,(A/Singapore/GP1541/2011|CY124232|09/29/2011|Singapore||H3N2/16-1424:0.00214,A/Maryland/21/2011|KC892695|12/26/2011|USA|11_12|H3N2/1-1409:0.00214)0.990:0.00055)0.000:0.00055)0.984:0.00055)0.945:0.00214)0.138:0.00055)0.942:0.00214,(A/Managua/3587.02/2010|CY098075|06/03/2010|Nicaragua||H3N2/4-1412:0.00055,A/Managua/5806.01/2010|CY070929|06/08/2010|Nicaragua||H3N2/4-1412:0.00071)0.982:0.00285)0.000:0.00055)0.972:0.00285,((A/California/VRDL335/2009|CY068611|05/03/2009|USA||H3N2/4-1412:0.00569,(A/Peru/PER251/2010|CY162258|10/12/2010|Peru||H3N2/8-1416:0.00055,A/Peru/PER030/2010|CY160522|11/20/2010|Peru||H3N2/8-1416:0.00140)0.966:0.00357)0.846:0.00055,((A/Nebraska/02/2011|KC883200|01/07/2011|USA|10_11|H3N2/1-1409:0.00050,(A/Texas/JMM_39/2012|CY135014|11/30/2012|USA|12_13|H3N2/8-1416:0.00552,A/New_Mexico/02/2012|KC892371|01/24/2012|USA|11_12|H3N2/1-1409:0.00234)0.832:0.00214)0.930:0.00055,(((((A/Delaware/06/2010|KC882831|11/30/2010|USA|10_11|H3N2/1-1409:0.00214,A/Pennsylvania/08/2010|KC535483|07/27/2010|USA||H3N2/1-1409:0.00142)0.679:0.00055,A/Peru/PER380/2010|CY163242|10/13/2010|Peru||H3N2/8-1416:0.00055)0.000:0.00055,((A/Utah/11/2011|KC883015|03/10/2011|USA|10_11|H3N2/1-1409:0.00354,((A/Peru/PER388/2011|CY163306|09/14/2011|Peru||H3N2/8-1416:0.00142,(A/Peru/PER333/2011|CY162890|09/30/2011|Peru||H3N2/8-1416:0.00055,A/Peru/PER244/2011|CY162210|08/26/2011|Peru||H3N2/8-1416:0.00071)0.170:0.00055)0.946:0.00214,((A/Peru/PER395/2011|CY163362|10/24/2011|Peru||H3N2/8-1416:0.00142,(((A/Peru/PER238/2011|CY162170|08/22/2011|Peru||H3N2/8-1416:0.0,A/Peru/PER036/2011|CY160570|08/29/2011|Peru||H3N2/8-1416:0.0):0.00055,A/Peru/PER067/2011|CY160818|10/31/2011|Peru||H3N2/8-1416:0.00071)0.799:0.00071,(A/Peru/PER273/2011|CY162426|08/19/2011|Peru||H3N2/8-1416:0.00071,(A/Peru/PER389/2012|CY163314|04/02/2012|Peru||H3N2/8-1416:0.00055,A/Peru/PER077/2010|CY160898|11/16/2010|Peru||H3N2/8-1416:0.00071)0.969:0.00285)0.869:0.00055)0.375:0.00055)0.945:0.00214,A/Boston/DOA01/2011|CY111128|01/03/2011|USA|10_11|H3N2/4-1412:0.00357)0.241:0.00055)0.842:0.00055)0.381:0.00071,A/Bogota/WRAIR3457N/2010|CY093409|12/01/2010|Colombia||H3N2/4-1412:0.00211)0.901:0.00055)0.000:0.00055,(A/Singapore/H2011.751/2011|KF014459|10/01/2011|Singapore||H3N2/20-1428:0.00285,A/Ontario/C37332/2011|JQ658965|01/12/2011|Canada|10_11|H3N2/1-1409:0.00055)0.807:0.00071)0.000:0.00055,(A/Guangdong/460/2010|CY091846|10/22/2010|China||H3N2/20-1428:0.00142,(A/Indiana/09/2011|KC892993|10/03/2011|USA|11_12|H3N2/1-1409:0.00071,(A/Colorado/07/2011|KC892191|10/23/2011|USA|11_12|H3N2/1-1409:0.00055,(A/Utah/15/2012|KC892709|05/16/2012|USA|11_12|H3N2/1-1409:0.00214,A/New_Mexico/09/2012|KC892210|03/15/2012|USA|11_12|H3N2/1-1409:0.00143)0.340:0.00055)0.826:0.00071)0.974:0.00285)0.953:0.00055)0.750:0.00055)0.773:0.00071)0.194:0.00055)0.886:0.00142)0.935:0.00214)0.950:0.00055)0.736:0.00055)0.728:0.00055,(A/Texas/03/2008|EU716515|01/17/2008|USA|07_08|H3N2/1-1409:0.00251,(A/Hong_Kong/H090_674_V1|JN256747|07/07/2009|Hong_Kong||H3N2/1-1409:0.00679,A/Malaysia/1965896/2008|CY119044|03/19/2008|Malaysia||H3N2/4-1412:0.00324)0.675:0.00142)0.711:0.00055)0.406:0.00071,(A/North_Carolina/01/2008|EU852002|02/11/2008|USA|07_08|H3N2/1-1409:0.00071,((A/Kentucky/UR07_0038/2008|CY039425|02/18/2008|USA|07_08|H3N2/1-1409:0.00071,A/Hue/H521/2007|CY105552|12/07/2007|Viet_Nam||H3N2/4-1412:0.00142)0.919:0.00055,((A/Mississippi/UR07_0024/2008|CY039417|02/14/2008|USA|07_08|H3N2/1-1409:0.00071,A/Ohio/UR07_0005/2008|CY037481|02/12/2008|USA|07_08|H3N2/1-1409:0.00142)0.276:0.00055,A/HaNoi/BT251/2007|CY105504|07/26/2007|Viet_Nam||H3N2/5-1413:0.00071)0.000:0.00055)0.728:0.00055)1.000:0.00055)0.909:0.00055)0.867:0.00055,(A/Kentucky/UR06_0158/2007|CY026885|02/05/2007|USA|06_07|H3N2/5-1413:0.00055,((A/Texas/UR06_0358/2007|CY027565|02/20/2007|USA|06_07|H3N2/5-1413:0.00071,(A/New_York/UR07_0080/2008|CY036969|02/25/2008|USA|07_08|H3N2/1-1409:0.00142,A/Mexico/24014/2008|CY147669|12/01/2008|Mexico||H3N2/1-1409:0.00285)0.829:0.00071)0.830:0.00071,(A/Brisbane/10/2007|CY035024|02/06/2007|Australia||H3N2/1-1409:0.00142,(A/Malaysia/1681079/2006|CY118940|11/24/2006|Malaysia||H3N2/4-1412:0.00214,((A/New_York/352/2005|CY002722|01/04/2005|USA|04_05|H3N2/1-1409:0.00430,(A/Texas/NHRC0001/2006|CY091039|02/13/2006|USA||H3N2/4-1412:0.00071,A/Missouri/NHRC0001/2006|CY091079|04/05/2006|USA|05_06|H3N2/4-1412:0.00286)0.985:0.00430)0.892:0.00141,((A/New_York/381/2004|CY002250|12/28/2004|USA|04_05|H3N2/18-1426:0.00430,A/New_York/463/2005|CY003642|02/09/2005|USA|04_05|H3N2/18-1426:0.00142)0.783:0.00071,(((((((A/Hong_Kong/CUHK22163/2000|EU857207|03/05/2000|Hong_Kong||H3N2/1-1409:0.00214,(A/New_York/433/2000|CY003250|01/05/2000|USA|99_00|H3N2/20-1428:0.00071,A/Waikato/6/2000|CY013050|09/08/2000|New_Zealand||H3N2/3-1411:0.00142)0.048:0.00055)0.941:0.00223,(((((A/Georgia/NHRC0001/2002|CY091111|02/02/2002|USA|01_02|H3N2/4-1412:0.00214,((A/Malaysia/25920/2003|CY118676|09/30/2003|Malaysia||H3N2/4-1412:0.00071,((A/Canterbury/417/2003|CY007109|07/15/2003|New_Zealand||H3N2/8-1416:0.00071,((A/Australia/NHRC0008/2003|CY091279|07/08/2003|Australia||H3N2/4-1412:0.0,A/Canterbury/418/2003|CY007117|07/15/2003|New_Zealand||H3N2/8-1416:0.0):0.00055,(A/Canterbury/404/2003|CY007045|07/05/2003|New_Zealand||H3N2/8-1416:0.00071,A/Canterbury/440/2003|CY007237|08/05/2003|New_Zealand||H3N2/8-1416:0.00071)0.952:0.00055)0.949:0.00055)0.837:0.00071,(A/Hong_Kong/CUHK75994/2003|EU857370|12/20/2003|Hong_Kong||H3N2/1-1409:0.00142,(((A/England/492/2003|CY088288|11/21/2003|United_Kingdom|03_04|H3N2/1-1409:0.00071,A/England/944/2003|CY088192|11/17/2003|United_Kingdom|03_04|H3N2/1-1409:0.00055)0.000:0.00055,(A/Denmark/72/2003|EU103942|2003|Denmark||H3N2/1-1409:0.00142,A/Denmark/120/2003|EU103940|2003|Denmark||H3N2/1-1409:0.00071)0.648:0.00055)0.678:0.00055,A/England/531/2003|CY088232|11/20/2003|United_Kingdom|03_04|H3N2/1-1409:0.00071)0.949:0.00214)0.826:0.00071)0.458:0.00055)0.521:0.00055,(A/Western_Australia/42/2003|CY015814|09/17/2003|Australia||H3N2/5-1413:0.00143,A/New_York/23/2003|CY000195|12/16/2003|USA|03_04|H3N2/20-1428:0.00142)0.902:0.00142)0.970:0.00285)0.272:0.00055,A/Missouri/NHRC0001/2002|CY091095|01/09/2002|USA|01_02|H3N2/4-1412:0.00142)0.956:0.00053,(((A/Waikato/51/2002|CY012058|08/12/2002|New_Zealand||H3N2/8-1416:0.00071,(A/Dunedin/10/2002|CY011402|07/09/2002|New_Zealand||H3N2/1-1409:0.00071,A/Queensland/24/2002|CY017549|07/25/2002|Australia||H3N2/5-1413:0.00071)0.724:0.00055)0.797:0.00071,(A/England/460/2003|CY088088|11/11/2003|United_Kingdom|03_04|H3N2/1-1409:0.00644,A/Auckland/608/2002|CY022551|06/08/2002|New_Zealand||H3N2/5-1413:0.00071)0.899:0.00143)0.930:0.00055,A/New_York/407/2002|CY003426|01/08/2002|USA|01_02|H3N2/8-1416:0.00500)0.441:0.00070)1.000:0.01401,((((A/Hong_Kong/CUHK12794/1997|EU857131|06/11/1997|Hong_Kong||H3N2/1-1409:0.00071,A/Hong_Kong/CUHK4542/1997|EU857296|04/02/1997|Hong_Kong||H3N2/1-1409:0.00071)0.919:0.00230,(A/New_South_Wales/21/1999|CY016557|1999|Australia||H3N2/5-1413:0.00270,A/Hong_Kong/CUHK16614/1998|EU857152|07/13/1998|Hong_Kong||H3N2/1-1409:0.00055)0.998:0.00718)0.859:0.00174,(A/New_York/517/1998|CY006285|01/03/1998|USA|97_98|H3N2/4-1412:0.00814,((A/New_York/320/1999|CY001858|03/26/1999|USA|98_99|H3N2/17-1425:0.00356,A/Netherlands/414/1998|CY112895|05/12/1998|Netherlands|97_98|H3N2/4-1412:0.00055)0.851:0.00055,(A/New_York/448/1998|CY003562|11/23/1998|USA|98_99|H3N2/20-1428:0.00292,A/Hong_Kong/CUHK41757/1997|EU857287|12/30/1997|Hong_Kong||H3N2/1-1409:0.00279)0.211:0.00071)0.987:0.00542)0.505:0.00142)0.868:0.00053,(A/New_York/674/1995|CY011554|01/19/1995|USA|94_95|H3N2/8-1416:0.00357,((((((A/Stockholm/12/1988|CY113399|1988|Sweden||H3N2/4-1412:0.01015,((A/Memphis/3/80|CY008470|1980|USA||H3N2/8-1416:0.0,A/Memphis/1/80|CY008662|1980|USA||H3N2/8-1416:0.0):0.00145,((A/Memphis/4/77|CY008125|1977|USA||H3N2/8-1416:0.0,A/Memphis/2/77|CY008117|1977|USA||H3N2/8-1416:0.0):0.00240,(A/Bilthoven/628/1976|CY113191|1976|Netherlands||H3N2/4-1412:0.00502,((A/Memphis/1/1971|AB101675|1971|USA||H3N2/1-1409:0.00422,A/Hong_Kong/JY2/1968|CY147440|1968|Hong_Kong||H3N2/8-1416:0.02859)0.999:0.00871,((A/Port_chalmers/1/1973|CY009350|1973|New_Zealand||H3N2/8-1416:0.00142,A/Bilthoven/5930/1974|CY113119|1974|Netherlands||H3N2/4-1412:0.00285)0.886:0.00143,(A/Memphis/103/74|CY006829|1974|USA||H3N2/8-1416:0.00718,A/Bilthoven/6545/1976|CY113223|1976|Netherlands||H3N2/4-1412:0.01080)0.794:0.00069)0.888:0.00142)0.917:0.00213)0.994:0.00778)0.997:0.00923)1.000:0.02124)1.000:0.01444,(A/Netherlands/357/1993|CY114071|12/06/1993|Netherlands|93_94|H3N2/4-1412:0.00214,(A/New_York/712/1993|CY011874|12/02/1993|USA|93_94|H3N2/8-1416:0.00055,A/New_York/738/1994|CY012986|02/04/1994|USA|93_94|H3N2/8-1416:0.00142)0.950:0.00214)0.881:0.00143)0.879:0.00143,A/Netherlands/165/1993|CY114063|03/05/1993|Netherlands|92_93|H3N2/4-1412:0.00357)0.823:0.00071,A/New_York/761/1993|CY012154|03/03/1993|USA|92_93|H3N2/8-1416:0.00142)0.188:0.00055,(((A/New_York/716/1994|CY011890|01/17/1994|USA|93_94|H3N2/2-1410:0.00428,(A/New_York/785/1993|CY013210|03/26/1993|USA|92_93|H3N2/5-1413:0.00055,A/New_York/778/1993|CY012770|02/02/1993|USA|92_93|H3N2/5-1413:0.00071)0.659:0.00055)0.787:0.00071,A/Lyon/672/1993|CY113983|02/22/1993|France|92_93|H3N2/4-1412:0.00285)0.000:0.00055,A/Nanchang/0074/94|CY003754|1994|China||H3N2/8-1416:0.00142)0.812:0.00071)0.822:0.00071,(A/New_York/665/1994|CY011522|12/16/1994|USA|94_95|H3N2/8-1416:0.00055,A/New_York/698/1995|CY011354|01/31/1995|USA|94_95|H3N2/8-1416:0.00071)0.978:0.00357)0.955:0.00286)0.999:0.00863)0.997:0.00769)0.941:0.00430,(A/Hong_Kong/CUHK51424/2001|EU857312|12/26/2001|Hong_Kong||H3N2/1-1409:0.00573,((A/Western_Australia/8/2000|CY015662|10/17/2000|Australia||H3N2/1-1409:0.0,A/South_Australia/72/2000|CY021775|2000|Australia||H3N2/1-1409:0.0):0.00055,A/Waikato/1/2001|CY011970|04/25/2001|New_Zealand||H3N2/2-1410:0.00428)0.971:0.00286)0.776:0.00106)0.554:0.00051)1.000:0.01072,(A/Denmark/41/03|AY531015|2003|Denmark||H3N2/1-1409:0.00285,(A/Fujian/445/2003|CY121450|2003|China||H3N2/1-1409:0.00286,(A/Hong_Kong/CUHK71313/2003|EU857364|09/21/2003|Hong_Kong||H3N2/1-1409:0.00142,A/Hong_Kong/HKU28/2004|CY043746|07/17/2004|Hong_Kong||H3N2/1-1409:0.00357)0.976:0.00357)0.782:0.00071)0.789:0.00069)0.998:0.00575,A/Hong_Kong/CUHK35435/2004|EU857276|06/10/2004|Hong_Kong||H3N2/1-1409:0.00429)0.844:0.00070,A/Denmark/116/2003|EU103879|2003|Denmark||H3N2/1-1409:0.00071)0.839:0.00071,((A/Wellington/55/2004|CY020343|09/27/2004|New_Zealand||H3N2/5-1413:0.00071,((A/New_York/384/2005|CY002466|01/06/2005|USA|04_05|H3N2/18-1426:0.0,A/Canterbury/16/2004|CY007357|08/06/2004|New_Zealand||H3N2/8-1416:0.0):0.00055,A/Queensland/50/2004|CY020047|10/27/2004|Australia||H3N2/5-1413:0.00071)0.096:0.00055)0.978:0.00357,A/Wellington/27/2004|CY013479|09/11/2004|New_Zealand||H3N2/5-1413:0.00142)0.327:0.00055)0.873:0.00055,(((A/Malaysia/33386/2005|CY118868|12/30/2005|Malaysia||H3N2/4-1412:0.00214,A/Canterbury/233/2005|CY008582|07/24/2005|New_Zealand||H3N2/8-1416:0.00214)0.984:0.00055,(A/Hong_Kong/CUHK40210/2005|EU857280|06/06/2005|Hong_Kong||H3N2/1-1409:0.00142,A/TayNguyen/TN348/2005|CY105376|08/01/2005|Viet_Nam||H3N2/5-1413:0.00142)0.963:0.00055)0.743:0.00055,(A/Denmark/54/2006|EU103858|2006|Denmark||H3N2/1-1409:0.00502,A/Hong_Kong/CUHK53005/2006|EU857330|03/04/2006|Hong_Kong||H3N2/1-1409:0.00502)0.823:0.00069)0.915:0.00142)0.709:0.00055)0.788:0.00071)0.989:0.00502)0.876:0.00142)0.364:0.00055)0.980:0.00055)0.000:0.00055)0.000:0.00055,(A/HaNoi/Q492/2007|CY105704|07/10/2007|Viet_Nam||H3N2/4-1412:0.00142,A/HaNoi/Q638/2007|CY105736|08/29/2007|Viet_Nam||H3N2/4-1412:0.00142)0.706:0.00055);
This diff is collapsed.
This diff is collapsed.
#country,weight
american_samoa,55
brazil,200000
china,1000000
colombia,50000
cuba,12000
dominican_republic,10000
ecuador,16000
french_guiana,280
french_polynesia,276
guadeloupe,400
guatemala,17000
haiti,10000
honduras,9000
martinique,385
mexico,124000
panama,4000
puerto_rico,3400
suriname,558
\ No newline at end of file
#name,date,country
PuertoRico/ZF8/2016|PuertoRico/ZF8/2016|2016-06-13|puerto_rico,2016-06-13,puerto_rico
PRVABC59|KX601168|2015-12-01|puerto_rico,2015-12-01,puerto_rico
Martinique/ZF1/2016|Martinique/ZF1/2016|2016-03-07|martinique,2016-03-07,martinique
NL00013|KU937936|2016-02-11|suriname,2016-02-11,suriname
V17271|KU758877|2015-12-15|french_guiana,2015-12-15,french_guiana
BeH819015|KU365778|2015-07-01|brazil,2015-07-01,brazil
GZ01|KU820898|2016-02-14|china,2016-02-14,china
GD01|KU740184|2016-02-15|china,2016-02-15,china
GDZ16001|KU761564|2016-02-12|china,2016-02-12,china
Z16019|KU955590|2016-02-26|china,2016-02-26,china
GZ02/2016|KX056898|2016-02-25|china,2016-02-25,china
Z1106033|KU312312|2015-10-02|suriname,2015-10-02,suriname
BeH815744|KU365780|2015-07-01|brazil,2015-07-01,brazil
BeH818995|KU365777|2015-07-01|brazil,2015-07-01,brazil
BeH819966|KU365779|2015-07-01|brazil,2015-07-01,brazil
SSABR1|KU707826|2015-07-01|brazil,2015-07-01,brazil
Aedessp/MEX/MEX_2_81/2016|KX446950|2016-01-01|mexico,2016-01-01,mexico
Aedessp/MEX/MEX_I_7/2016|KX446951|2016-01-01|mexico,2016-01-01,mexico
MEX_I_7|KX247632|2015-11-15|mexico,2015-11-15,mexico
FB_GWUH_2016|KU870645|2016-02-02|guatemala,2016-02-02,guatemala
V103344|KU501216|2015-12-01|guatemala,2015-12-01,guatemala
V8375|KU501217|2015-11-01|guatemala,2015-11-01,guatemala
HND/R103451/2015|KX694534|2016-07-01|honduras,2016-07-01,honduras
V103451|KX262887|2016-01-06|honduras,2016-01-06,honduras
Rio_U1|KU926309|2016-01-14|brazil,2016-01-14,brazil
PAN/CDC_259249_V1_V3/2015|KX156775|2015-12-11|panama,2015-12-11,panama
PAN/CDC_259359_V1_V3/2015|KX156774|2015-12-18|panama,2015-12-18,panama
PAN/CDC_259364_V1_V2/2015|KX156776|2015-12-18|panama,2015-12-18,panama
FLR|KU820897|2015-12-15|colombia,2015-12-15,colombia
COL/FLR/2015|KX087102|2015-12-15|colombia,2015-12-15,colombia
COL/UF_1/2016|KX247646|2016-02-09|colombia,2016-02-09,colombia
PAN/BEI_259634_V4/2016|KX198135|2016-07-01|panama,2016-07-01,panama
COL/FCC00093/2015|KX548902|2015-10-07|colombia,2015-10-07,colombia
MEX/InDRE/Sm/2016|KU922960|2016-02-25|mexico,2016-02-25,mexico
MRS_OPY_Martinique_PaRi_2015|KU647676|2015-12-15|martinique,2015-12-15,martinique
Brazil/PE243/2015|KX197192|2015-07-01|brazil,2015-07-01,brazil
SPH2015|KU321639|2015-03-15|brazil,2015-03-15,brazil
Haiti/1225/2014|KU509998|2014-12-12|haiti,2014-12-12,haiti
Haiti/1/2016|KX051563|2016-02-05|haiti,2016-02-05,haiti
Brazil_ZKV2015|KU497555|2015-11-30|brazil,2015-11-30,brazil
Brazil/2016/INMI1|KU991811|2016-03-06|brazil,2016-03-06,brazil
PHE_semen_Guadeloupe|KX673530|2016-04-21|guadeloupe,2016-04-21,guadeloupe
Cuba/ZF10/2016|Cuba/ZF10/2016|2016-06-02|cuba,2016-06-02,cuba
Dominican_Republic/2016/PD1|KU853012|2016-02-01|dominican_republic,2016-02-01,dominican_republic
BeH823339|KU729217|2015-07-01|brazil,2015-07-01,brazil
Rio_S1|KU926310|2016-01-29|brazil,2016-01-29,brazil
Natal_RGN|KU527068|2015-07-01|brazil,2015-07-01,brazil
Ecuador/EC062/2016|Ecuador/EC062/2016|2016-04-15|ecuador,2016-04-15,ecuador
Ecuador/EC089/2016|Ecuador/EC089/2016|2016-04-15|ecuador,2016-04-15,ecuador
Paraiba_01|KX280026|2015-07-01|brazil,2015-07-01,brazil
Bahia04|KX101062|2015-06-15|brazil,2015-06-15,brazil
Bahia08|KU940227|2015-07-15|brazil,2015-07-15,brazil
Bahia05|KX101063|2015-12-15|brazil,2015-12-15,brazil
HS_2015_BA_01|KX520666|2015-07-01|brazil,2015-07-01,brazil
Bahia09|KU940224|2015-08-01|brazil,2015-08-01,brazil
Bahia12|KX101067|2015-05-15|brazil,2015-05-15,brazil
Bahia07|KU940228|2015-07-01|brazil,2015-07-01,brazil
Bahia03|KX101061|2015-05-15|brazil,2015-05-15,brazil
Bahia11|KX101064|2015-04-15|brazil,2015-04-15,brazil
Bahia15|KX101065|2016-01-15|brazil,2016-01-15,brazil
Bahia01|KX101066|2015-05-15|brazil,2015-05-15,brazil
Bahia02|KX101060|2015-05-15|brazil,2015-05-15,brazil
BeH828305|KU729218|2015-07-01|brazil,2015-07-01,brazil
1_0049_PF|KX447510|2013-12-15|french_polynesia,2013-12-15,french_polynesia
1_0117_PF|KX447518|2013-12-15|french_polynesia,2013-12-15,french_polynesia
1_0016_PF|KX447520|2014-01-15|french_polynesia,2014-01-15,french_polynesia
PF13/251013_18|KX369547|2013-10-25|french_polynesia,2013-10-25,french_polynesia
1_0181_PF|KX447512|2013-12-15|french_polynesia,2013-12-15,french_polynesia
1_0134_PF|KX447513|2013-12-15|french_polynesia,2013-12-15,french_polynesia
1_0199_PF|KX447519|2013-11-15|french_polynesia,2013-11-15,french_polynesia
1_0015_PF|KX447511|2014-01-15|french_polynesia,2014-01-15,french_polynesia
SZ01/2016/China|KU866423|2016-07-01|american_samoa,2016-07-01,american_samoa
Zhejiang04|KX117076|2016-02-17|china,2016-02-17,china
SZ_WIV01|KU963796|2016-07-01|american_samoa,2016-07-01,american_samoa
ZJ03|KU820899|2016-02-17|china,2016-02-17,china
CN/SZ02/2016|KX185891|2016-02-17|american_samoa,2016-02-17,american_samoa
ZKC2/2016|KX253996|2016-02-16|china,2016-02-16,china
Z16006|KU955589|2016-02-16|china,2016-02-16,china
SMGC_1|KX266255|2016-02-14|china,2016-02-14,china
1_0035_PF|KX447514|2014-01-15|french_polynesia,2014-01-15,french_polynesia
1_0080_PF|KX447521|2014-02-15|french_polynesia,2014-02-15,french_polynesia
H/PF/2013|KJ776791|2013-11-28|french_polynesia,2013-11-28,french_polynesia
1_0087_PF|KX447509|2013-12-15|french_polynesia,2013-12-15,french_polynesia
1_0111_PF|KX447516|2014-01-15|french_polynesia,2014-01-15,french_polynesia
1_0030_PF|KX447515|2013-11-15|french_polynesia,2013-11-15,french_polynesia
1_0038_PF|KX447517|2014-01-15|french_polynesia,2014-01-15,french_polynesia
(((((((((((('PuertoRico/ZF8/2016|PuertoRico/ZF8/2016|2016-06-13|puerto_rico':0.00087,'PRVABC59|KX601168|2015-12-01|puerto_rico':0.0):0.00028,'Martinique/ZF1/2016|Martinique/ZF1/2016|2016-03-07|martinique':0.00068):0.00095,('NL00013|KU937936|2016-02-11|suriname':0.00096,'V17271|KU758877|2015-12-15|french_guiana':0.00058):0.00019,'BeH819015|KU365778|2015-07-01|brazil':0.00113):0.00019,(('GZ01|KU820898|2016-02-14|china':0.00023,('GD01|KU740184|2016-02-15|china':0.0,'GDZ16001|KU761564|2016-02-12|china':0.0):0.00015):0.00067,('Z16019|KU955590|2016-02-26|china':0.00019,'GZ02/2016|KX056898|2016-02-25|china':0.0):0.00073):0.00109):9e-05,'Z1106033|KU312312|2015-10-02|suriname':0.00127):0.00019,(('BeH815744|KU365780|2015-07-01|brazil':0.00019,'BeH818995|KU365777|2015-07-01|brazil':0.0):0.00038,'BeH819966|KU365779|2015-07-01|brazil':0.0,'SSABR1|KU707826|2015-07-01|brazil':0.0):0.00085):0.00047,((('Aedessp/MEX/MEX_2_81/2016|KX446950|2016-01-01|mexico':0.00056,('Aedessp/MEX/MEX_I_7/2016|KX446951|2016-01-01|mexico':0.00019,'MEX_I_7|KX247632|2015-11-15|mexico':0.0):0.00037):0.00075,'FB_GWUH_2016|KU870645|2016-02-02|guatemala':0.00178,('V103344|KU501216|2015-12-01|guatemala':0.0001,'V8375|KU501217|2015-11-01|guatemala':0.0):0.00088,('HND/R103451/2015|KX694534|2016-07-01|honduras':0.00028,'V103451|KX262887|2016-01-06|honduras':9e-05):0.00047):0.00075,'Rio_U1|KU926309|2016-01-14|brazil':0.00141):9e-05):9e-05,(((((('PAN/CDC_259249_V1_V3/2015|KX156775|2015-12-11|panama':0.00028,'PAN/CDC_259359_V1_V3/2015|KX156774|2015-12-18|panama':0.00024,'PAN/CDC_259364_V1_V2/2015|KX156776|2015-12-18|panama':9e-05):0.00061,(('FLR|KU820897|2015-12-15|colombia':0.0,'COL/FLR/2015|KX087102|2015-12-15|colombia':0.0):0.00022,'COL/UF_1/2016|KX247646|2016-02-09|colombia':0.00015):0.00056):0.00018,'PAN/BEI_259634_V4/2016|KX198135|2016-07-01|panama':0.00057):0.00019,('COL/FCC00093/2015|KX548902|2015-10-07|colombia':0.00124,('MEX/InDRE/Sm/2016|KU922960|2016-02-25|mexico':0.00038,'MRS_OPY_Martinique_PaRi_2015|KU647676|2015-12-15|martinique':0.0):0.00067):0.0001):0.0008,((('Brazil/PE243/2015|KX197192|2015-07-01|brazil':0.00093,'SPH2015|KU321639|2015-03-15|brazil':0.0):0.00046,'Haiti/1225/2014|KU509998|2014-12-12|haiti':0.0):0.00028,'Haiti/1/2016|KX051563|2016-02-05|haiti':0.00075):0.00075):0.00027,('Brazil_ZKV2015|KU497555|2015-11-30|brazil':0.00212,'Brazil/2016/INMI1|KU991811|2016-03-06|brazil':0.00095):0.00017):0.00049,((((('PHE_semen_Guadeloupe|KX673530|2016-04-21|guadeloupe':0.00114,'Cuba/ZF10/2016|Cuba/ZF10/2016|2016-06-02|cuba':0.00087):9e-05,'Dominican_Republic/2016/PD1|KU853012|2016-02-01|dominican_republic':0.00048):0.00133,'BeH823339|KU729217|2015-07-01|brazil':0.00144):0.00018,('Rio_S1|KU926310|2016-01-29|brazil':0.00188,'Natal_RGN|KU527068|2015-07-01|brazil':0.00159):9e-05):9e-05,(('Ecuador/EC062/2016|Ecuador/EC062/2016|2016-04-15|ecuador':0.0002,'Ecuador/EC089/2016|Ecuador/EC089/2016|2016-04-15|ecuador':0.0001):0.00134,'Paraiba_01|KX280026|2015-07-01|brazil':0.00084):9e-05):0.00019,(((((('Bahia04|KX101062|2015-06-15|brazil':0.00068,'Bahia08|KU940227|2015-07-15|brazil':0.0,'Bahia05|KX101063|2015-12-15|brazil':0.0):0.00033,(('HS_2015_BA_01|KX520666|2015-07-01|brazil':0.00048,'Bahia09|KU940224|2015-08-01|brazil':0.0):0.00016,'Bahia12|KX101067|2015-05-15|brazil':0.0,'Bahia07|KU940228|2015-07-01|brazil':0.0):0.00016,'Bahia03|KX101061|2015-05-15|brazil':0.00067):0.00021,'Bahia11|KX101064|2015-04-15|brazil':0.00029,'Bahia15|KX101065|2016-01-15|brazil':0.0):0.00021,'Bahia01|KX101066|2015-05-15|brazil':0.00115):0.00026,'Bahia02|KX101060|2015-05-15|brazil':0.00046):0.00115,'BeH828305|KU729218|2015-07-01|brazil':0.00123):9e-05):0.00037,'1_0049_PF|KX447510|2013-12-15|french_polynesia':0.00038,'1_0117_PF|KX447518|2013-12-15|french_polynesia':0.00033):0.00028,'1_0016_PF|KX447520|2014-01-15|french_polynesia':0.00102,('PF13/251013_18|KX369547|2013-10-25|french_polynesia':0.00056,'1_0181_PF|KX447512|2013-12-15|french_polynesia':0.00019):9e-05,('1_0134_PF|KX447513|2013-12-15|french_polynesia':0.00038,'1_0199_PF|KX447519|2013-11-15|french_polynesia':0.00011):9e-05,'1_0015_PF|KX447511|2014-01-15|french_polynesia':0.00057):9e-05,(('SZ01/2016/China|KU866423|2016-07-01|american_samoa':0.0002,'Zhejiang04|KX117076|2016-02-17|china':0.00019,'SZ_WIV01|KU963796|2016-07-01|american_samoa':0.00019,'ZJ03|KU820899|2016-02-17|china':9e-05,'CN/SZ02/2016|KX185891|2016-02-17|american_samoa':0.0):0.00047,('ZKC2/2016|KX253996|2016-02-16|china':0.0,'Z16006|KU955589|2016-02-16|china':0.0,'SMGC_1|KX266255|2016-02-14|china':0.0):0.00018):0.00235,('1_0035_PF|KX447514|2014-01-15|french_polynesia':0.00048,'1_0080_PF|KX447521|2014-02-15|french_polynesia':0.00047,'H/PF/2013|KJ776791|2013-11-28|french_polynesia':0.00028,'1_0087_PF|KX447509|2013-12-15|french_polynesia':0.00019):9e-05,'1_0111_PF|KX447516|2014-01-15|french_polynesia':0.00066,'1_0030_PF|KX447515|2013-11-15|french_polynesia':0.00048):0.00015,'1_0038_PF|KX447517|2014-01-15|french_polynesia':0.00118):0.001;