Attempting a Bayesian Workflow for RNA-Seq (Part 1)

Notebook

Intro

A Principled Bayesian Workflow

Among his other work, Michael Betancourt has a fantastically clear exposition on how a Bayesian might approach a modeling problem -- “Towards a Principled Bayesian Workflow”. Even if you don’t use Bayesian inference, this article contains a useful and thoughtful framework to think about whether the model you’re using to tackle a problem is good enough. It discusses more than the typical "Data Science 101" recipe of creating a training/test/validation set, from sklearn import ..., cross-validation, etc. While those are essential, the framework rests on instead four foundational questions to be answered in a modeling exercise:

Question One... Is our model consistent with our domain expertise?

Models built upon assumptions that conflict with our domain expertise will give rise to inferences and predictions that also conflict with our domain expertise. While we don't need our model to capture every last detail of our knowledge, at the very least our models should not be in outright conflict with that knowledge.

Question Two... Will our computational tools be sufficient to accurately fit our posteriors?

Question Three... Will our inferences provide enough information to answer our questions?

Question Four... Is our model rich enough to capture the relevant structure of the true data generating process?

Question two aside, the answers to these questions are relevant whether you are using a Bayesian approach in Stan, using the workhorse that is XGBoost, fitting a billion parameter NLP model with PyTorch, etc. Furthermore, these questions are more than academic exercises -- answering these questions can help us catch failure modes as well as quantify the business impact of our models.

What does this have to do with RNA-Seq?

RNA-Seq and other assays based on high-throughput sequencing (HTS) data are powerful tools for interrogating biological systems: from characterizing gene expression to the 3-dimensional structure of the genome. While powerful, studies that leverage HTS data often suffer the following fates:

  1. HTS data will often reflect the experimental conditions (e.g. library preparation) or artifacts (e.g. GC-bias) as much as the biological condition (e.g. treatment versus control).

  2. While HTS data gives us data on many loci, we often have far fewer samples -- reducing our ability to identify differences between biological conditions.

For both cases, it is paramount to develop an expressive model that captures aspects of the data you as a modeler think are important and understand how well it recapitulates those features. This is where the Bayesian workflow described above comes in. We can adapt it for the purposes of analyzing RNA-seq data (let's limit ourselves to differential gene expression analysis):

  1. Is our model consistent with known features of RNA-seq data (e.g. variation in read depth across genes) as well as the design of the experiment?

  2. (Verbatim) Will our computational tools be sufficient to accurately fit our posteriors?

  3. Will our inferences provide enough information to identify genes (pathways?) differentially expressed between conditions?

In [1]:
import warnings
from itertools import chain

import nest_asyncio
import numpy as np
import pandas as pd
import seaborn as sns
import stan
from matplotlib import pyplot as plt
from scipy.stats import pearsonr

nest_asyncio.apply()
del nest_asyncio

warnings.filterwarnings('ignore')
warnings.simplefilter(action='ignore', category=FutureWarning)
In [2]:
RNASEQ_DATA_URL = "https://raw.githubusercontent.com/ucdavis-bioinformatics-training/2018-June-RNA-Seq-Workshop/master/thursday/all_counts.txt"
In [3]:
rnaseq_df = (
    pd.read_csv(RNASEQ_DATA_URL, sep="\t").
        transpose().
        astype("int64").
        reset_index().
        rename(columns={"index": "sample_id"})
)
In [4]:
rnaseq_df["cultivar"] = [s[0:1] if s.startswith("C") else s[0:2] for s in rnaseq_df["sample_id"]]
rnaseq_df["replicate"] = rnaseq_df["sample_id"].str[-1]
rnaseq_df["time"] = [s[1:-1] if s.startswith("C") else s[2:-1] for s in rnaseq_df["sample_id"]]

metadata_cols = ["sample_id", "cultivar", "replicate", "time"]
gene_cols = [col for col in rnaseq_df if not col in metadata_cols]
In [5]:
print(rnaseq_df.shape)
rnaseq_df.iloc[0:5,][metadata_cols + gene_cols[0:5]]
(24, 34266)
Out[5]:
sample_id cultivar replicate time AT1G01010 AT1G01020 AT1G03987 AT1G01030 AT1G01040
0 C61 C 1 6 289 127 0 17 605
1 C62 C 2 6 317 78 0 25 415
2 C63 C 3 6 225 142 0 32 506
3 C64 C 4 6 343 130 0 24 565
4 C91 C 1 9 325 156 0 22 762

Probing with our Domain Expertise

What are somethings we think should be true? Do they hold?

Reads depth will vary across samples and on a per gene basis

  • Due to library prep differences some samples will just get higher coverage
  • Due to differences in gene length, GC bias, mapping artifacts, and sheer sampling, a large chunk of genes will get 0 reads and a few genes will have very high read depth
In [6]:
plt.figure(figsize=(10, 12))

plt.subplot(2, 1, 1)
plt.hist(rnaseq_df[gene_cols].sum(axis=1), density=True)
plt.grid(linestyle="--", color="lightgray", alpha=0.5)
plt.title("Total read depth per sample")

plt.subplot(2, 1, 2)
plt.hist(np.log10(1 + rnaseq_df[gene_cols]).mean(axis=0), bins=35, density=True)
plt.grid(linestyle="--", color="lightgray", alpha=0.5)
plt.title("Average read depth per gne")
Out[6]:
Text(0.5, 1.0, 'Average read depth per gne')

The shape of gene-level read depth variation should be the same across samples

  • Even if the total magnitude is the same, we shoulnd't expect there to be a sample-specific impact on the shape (e.g. quantiles or modes) of the distribution of read depth across genes
In [7]:
fig, axes = plt.subplots(3, 2, figsize=(10, 12), sharey=True, sharex=True)
fig.suptitle("Read depth distribution across samples")

samples_to_plot = np.random.choice(rnaseq_df["sample_id"], size=6)

for idx, ax in enumerate(chain(*axes)):
    sample = samples_to_plot[idx]
    log_read_depth = np.log10(1 + rnaseq_df.query("sample_id == @sample")[gene_cols].values.flatten())
    ax.hist(log_read_depth, density=False, bins=20)
    ax.axvline(log_read_depth.mean(), linewidth=2, color="red")
    for iqr in np.quantile(log_read_depth, [0.25, 0.75]):
        ax.axvline(iqr, linewidth=2, color="red", linestyle="--")
    ax.grid(alpha=0.5, linestyle="-.")
    ax.set_title(sample)
    ax.set_ylabel("Counts")
    ax.set_xlabel("# of reads / gene")
plt.tight_layout()

Technical replicates should look more similar to each other than other samples

In [8]:
plt.figure(figsize=(15, 6))
plt.subplot(1, 2, 1)
plt.scatter(
    x=np.log10(1 + rnaseq_df[rnaseq_df["sample_id"] == "C61"][gene_cols].values),
    y=np.log10(1 + rnaseq_df[rnaseq_df["sample_id"] == "C62"][gene_cols].values),
    alpha=0.2
)
plt.grid(linestyle="--", color="lightgray")
plt.plot(np.linspace(0, 5, 25), np.linspace(0, 5, 25), color="yellow", linewidth=2)
plt.xlabel("Read depth (cultivar C @ T=6, rep 1)")
plt.ylabel("Read depth (cultivar C @ T=6, rep 2)")

plt.subplot(1, 2, 2)
plt.scatter(
    x=np.log10(1 + rnaseq_df[rnaseq_df["sample_id"] == "C61"][gene_cols].values),
    y=np.log10(1 + rnaseq_df[rnaseq_df["sample_id"] == "C91"][gene_cols].values),
    alpha=0.2
)
plt.grid(linestyle="--", color="lightgray")
plt.plot(np.linspace(0, 5, 25), np.linspace(0, 5, 25), color="yellow", linewidth=2)
plt.xlabel("Read depth (cultivar C @ T=6, rep 1)")
plt.ylabel("Read depth (cultivar C @ T=9, rep 1)")

plt.suptitle("Read depth comparison of samples");

Mean versus variance of read depth will be non-linear

In [9]:
plt.figure(figsize=(10, 6))

plt.scatter(
    x=np.log10(1 + rnaseq_df[gene_cols]).mean(axis=0),
    y=np.log10(1 + rnaseq_df[gene_cols]).std(axis=0),
    alpha=0.2
)
plt.grid(linestyle="--", color="lightgray", alpha=0.5)

A Basic Model

Here we introduc a basic model for the read counts observed at each gene for reach sample. We assume that count $c_{ij}$ for sample $i$ at gene $j$ is drawn from a Poisson:

$$c_{ij} \sim Pois(\lambda)$$$$\lambda = exp(\mu^{samp}_i + \mu^{gene}_j)$$$$ \mu_{samp} \sim Normal(0, 5) $$$$ \mu_{gene} \sim Normal(0, 5) $$

This model explicitly accounts for some of the features of the data generating process that we interrogated above:

  • Sample-specific variation in read depth
  • Gene-specific variation in read depth

Also worth noting that the motivation for the Poisson is that this distribution corresponds to the number of successes with the number of shots on goal is large but probability of success is low for each shot. This is analogous to RNA-Seq: lots of reads, but small chance that each read will align to a given gene.

In [10]:
basic_poisson_model_code = """
data {
  int<lower=0> num_genes;  // number of genes
  int<lower=0> num_samps;  // number of samples
  int<lower=0> counts[num_samps, num_genes]; // read counts
}
parameters {
  vector[num_genes] mu_gene;
  vector[num_samps] mu_samp; 
}
model {
  mu_gene ~ normal(0, 10);
  mu_samp ~ normal(0, 10);
  for(s in 1:num_samps) {
    counts[s] ~ poisson(exp(mu_samp[s] + mu_gene));
  }
}
"""
In [11]:
SUBSAMP = True
SUBSAMPSIZE = 100

cols = np.random.choice(gene_cols, SUBSAMPSIZE) if SUBSAMP else gene_cols

stan_data = {
    "num_genes": len(cols),
    "num_samps": rnaseq_df.shape[0],
    "counts": rnaseq_df[cols].values
}

Prior Predictive Check

Instead of going right to the fitting the model, we are going to start with step 1 of seeing how well our model is with consistent with our domain expertise i.e. can it even generate data that captures aspects of the data that we think are important?

To do this we will start with a prior predictive check. The idea is simple:

  1. Define a summary statistic that describes some germane aspect of the data
  2. Draw parameters from the prior of your model
  3. Simulate data from the parameters
  4. Calculate the chosen summary statistic for each simulated realization of the data
  5. Compare the distribution of the simulated summary statistic to the observed data

The result of the final step should be that the observed data should fall within the range of the simulated. It does not need to match as the prior did not take the data into account. But it should be at least possible for the model to generate data that is similar.

In [12]:
def sample_basic_poisson_prior_pred(stat, num_genes, num_samps, num_draws=1000, **kw_args):
    mu_samp_prior = np.random.normal(loc=0, scale=5, size=(num_draws, num_samps))
    mu_gene_prior = np.random.normal(loc=0, scale=5, size=(num_draws, num_genes))
    counts_prior_pred = np.zeros((num_samps, num_genes))
    prior_pred_check = []
    
    for mu_samps, mu_genes in zip(mu_samp_prior, mu_gene_prior):
        for samp in range(num_samps):
            for gene in range(num_genes):
                mu = mu_samps[samp] + mu_genes[gene]
                counts_prior_pred[samp, gene] = np.random.poisson(lam=np.exp(mu))
        prior_pred_check.append(stat(counts_prior_pred, **kw_args))
        
    return np.array(prior_pred_check)

A simple, not informative check: the median of the generated data

Looks good -- low bar though! The observed data falls within the range of th prior predictive simulations.

In [13]:
median_prior_pred_check = sample_basic_poisson_prior_pred(np.median, stan_data["num_genes"], stan_data["num_samps"], axis=1)
In [38]:
plt.figure(figsize=(10, 6))

plt.hist(np.log10(1.0 + median_prior_pred_check.flatten()), density=True, label="prior predictive check", bins=35)
plt.hist(np.log10(1.0 + np.median(rnaseq_df[gene_cols], axis=1)), density=True, label="observed data")
plt.grid(linestyle="--", color="lightgray", alpha=0.5)
plt.legend();

Can we generate as many genes with 0 reads?

Again, looks good! The observed data falls within the range of th prior predictive simulations.

In [15]:
_calc_num_zeros = lambda x: (x == 0.0).sum()
calc_num_zero_genes = lambda gs: np.apply_along_axis(_calc_num_zeros, axis=0, arr=gs)
In [16]:
num_zero_genes_prior_pred_check = sample_basic_poisson_prior_pred(calc_num_zero_genes, stan_data["num_genes"], stan_data["num_samps"])
In [17]:
plt.figure(figsize=(10, 6))

plt.hist(num_zero_genes_prior_pred_check.flatten(), bins=30, density=True, label="prior predictive check")
plt.hist(calc_num_zero_genes(rnaseq_df[cols].values), density=True, alpha=0.5, label="observed data")
plt.grid(linestyle="--", color="lightgray", alpha=0.5)
plt.legend();

A more complicated check: the difference in pairwise correlation between replicates of the same cultivar versus random pairs of cultivars

Failure! We see the model has a hard time generating data where the replicates within the same cultivar are more correlated with each other than random pairs -- as is the case with observed data. This should not be surprising as we did not encode this in the model!

In [18]:
def _var_ttest_denom(v1, n1, v2, n2):
    vn1 = v1 / n1
    vn2 = v2 / n2
  
    # If df is undefined, variances are zero (assumes n1 > 0 & n2 > 0).
    # Hence it doesn't matter what df is as long as it's not NaN.
    denom = np.sqrt(vn1 + vn2)
    
    return denom

def _calc_t_stat(a, b):
    """Calculate the t statistic along the given dimension."""
    na = len(a)
    nb = len(b)
    avg_a = np.mean(a)
    avg_b = np.mean(b)
    var_a = np.var(a, ddof=1)
    var_b = np.var(b, ddof=1)
    
    denom = _var_ttest_denom(var_a, na, var_b, nb)

    return (avg_a-avg_b)/denom

def calc_pw_corr_diff(counts):
    pw_corr = np.corrcoef(counts)
    indices_1, indices_2 = np.tril_indices(n=pw_corr.shape[0], k=-1)
    pw_corr_flat = np.array([pw_corr[idx1, idx2] for idx1, idx2 in zip(indices_1, indices_2)])
    
    pw_reps = np.array([
        1 if rnaseq_df["cultivar"][idx1] == rnaseq_df["cultivar"][idx2] else 0
        for idx1, idx2 in zip(indices_1, indices_2)
    ])
    pw_corr_t = _calc_t_stat(pw_corr_flat[pw_reps == 0], pw_corr_flat[pw_reps == 1])
    
    return pw_corr_t
In [19]:
pw_corr_diff_prior_pred_check = sample_basic_poisson_prior_pred(calc_pw_corr_diff, stan_data["num_genes"], stan_data["num_samps"])
In [20]:
plt.figure(figsize=(10, 6))

plt.hist(pw_corr_diff_prior_pred_check.flatten(), bins=30, density=True, label="prior predictive check")
plt.hist(calc_pw_corr_diff(rnaseq_df[cols].values), density=True, alpha=0.5, label="observed data")
plt.grid(linestyle="--", color="lightgray", alpha=0.5)
plt.legend();
In [21]:
basic_poisson_model = stan.build(basic_poisson_model_code, data=stan_data)
Building: found in cache, done.
In [22]:
basic_poisson_model_fit = basic_poisson_model.sample(num_chains=1)
Sampling:   0%
Sampling:   0% (1/2000)
Sampling:   5% (100/2000)
Sampling:  10% (200/2000)
Sampling:  15% (300/2000)
Sampling:  20% (400/2000)
Sampling:  25% (500/2000)
Sampling:  30% (600/2000)
Sampling:  35% (700/2000)
Sampling:  40% (800/2000)
Sampling:  45% (900/2000)
Sampling:  50% (1000/2000)
Sampling:  50% (1001/2000)
Sampling:  55% (1100/2000)
Sampling:  60% (1200/2000)
Sampling:  65% (1300/2000)
Sampling:  70% (1400/2000)
Sampling:  75% (1500/2000)
Sampling:  80% (1600/2000)
Sampling:  85% (1700/2000)
Sampling:  90% (1800/2000)
Sampling:  95% (1900/2000)
Sampling: 100% (2000/2000)
Sampling: 100% (2000/2000), done.
Messages received during sampling:
  Gradient evaluation took 0.000692 seconds
  1000 transitions using 10 leapfrog steps per transition would take 6.92 seconds.
  Adjust your expectations accordingly!
In [43]:
def sample_basic_poisson_post_pred(stat, params, num_genes, num_samps, num_draws=1000, **kw_args):
    counts_post_pred = np.zeros((num_samps, num_genes))
    post_pred_check = []
    
    for mu_samps, mu_genes in zip(params["mu_samp"], params["mu_gene"]):
        for samp in range(num_samps):
            for gene in range(num_genes):
                mu = mu_samps[samp] + mu_genes[gene]
                counts_post_pred[samp, gene] = np.random.poisson(lam=np.exp(mu))
        post_pred_check.append(stat(counts_post_pred, **kw_args))
        
    return np.array(post_pred_check)
In [60]:
basic_poisson_post_params = {param: basic_poisson_model_fit[param].T for param in ("mu_samp", "mu_gene")}
In [61]:
median_post_pred_check = sample_basic_poisson_post_pred(np.median, basic_poisson_post_params, stan_data["num_genes"], stan_data["num_samps"], axis=1)
In [62]:
plt.figure(figsize=(10, 6))

plt.hist(np.log10(1.0 + median_post_pred_check.flatten()), density=True, label="posterior predictive check", bins=35)
plt.hist(np.log10(1.0 + np.median(rnaseq_df[gene_cols], axis=1)), density=True, label="observed data")
plt.grid(linestyle="--", color="lightgray", alpha=0.5)
plt.legend();
In [63]:
num_zero_genes_post_pred_check = sample_basic_poisson_post_pred(calc_num_zero_genes, basic_poisson_post_params, stan_data["num_genes"], stan_data["num_samps"])
In [64]:
plt.figure(figsize=(10, 6))

plt.hist(num_zero_genes_post_pred_check.flatten(), bins=30, density=True, label="posterior predictive check")
plt.hist(calc_num_zero_genes(rnaseq_df[cols].values), density=True, alpha=0.5, label="observed data")
plt.grid(linestyle="--", color="lightgray", alpha=0.5)
plt.legend();
In [65]:
pw_corr_diff_post_pred_check = sample_basic_poisson_post_pred(calc_pw_corr_diff, basic_poisson_post_params, stan_data["num_genes"], stan_data["num_samps"])
In [66]:
plt.figure(figsize=(10, 6))

plt.hist(pw_corr_diff_post_pred_check.flatten(), bins=30, density=True, label="posterior predictive check")
plt.hist(calc_pw_corr_diff(rnaseq_df[cols].values), density=True, alpha=0.5, label="observed data")
plt.grid(linestyle="--", color="lightgray", alpha=0.5)
plt.legend();
In [157]:
cultivar_poisson_model_code = """
data {
  int<lower=0> num_genes;  // number of genes
  int<lower=0> num_samps;  // number of samples
  int<lower=0> num_cultivars;  // number of cultivars
  int<lower=0> cultivars[num_samps];
  int<lower=0> counts[num_samps, num_genes]; // read counts
}
parameters { 
  vector[num_genes] mu_gene;
  vector[num_cultivars] mu_cultivar;
  vector<lower=0>[num_cultivars] sigma_cultivar;
  vector[num_samps] mu_samp;
}
model {
  mu_cultivar ~ normal(0, 10);
  mu_gene ~ normal(0, 10);
  for(s in 1:num_samps) {
      mu_samp[s] ~ normal(mu_cultivar[cultivars[s]], sigma_cultivar[cultivars[s]]);
      counts[s] ~ poisson(exp(mu_samp[s] + mu_gene));
  }
}
"""
In [146]:
unique_cultivars = rnaseq_df["cultivar"].unique()
stan_data["num_cultivars"] = unique_cultivars.shape[0]
stan_data["cultivars"] = np.array([np.where(unique_cultivars == cultivar)[0][0] + 1 for cultivar in rnaseq_df["cultivar"]])
In [158]:
cultivar_poisson_model = stan.build(cultivar_poisson_model_code, data=stan_data)
Building: 0.2s
Building: 0.3s
Building: 0.5s
Building: 0.6s
Building: 0.7s
Building: 0.8s
Building: 0.9s
Building: 1.0s
Building: 1.1s
Building: 1.2s
Building: 1.3s
Building: 1.4s
Building: 1.5s
Building: 1.6s
Building: 1.7s
Building: 1.8s
Building: 1.9s
Building: 2.0s
Building: 2.1s
Building: 2.2s
Building: 2.3s
Building: 2.4s
Building: 2.5s
Building: 2.7s
Building: 2.8s
Building: 2.9s
Building: 3.0s
Building: 3.1s
Building: 3.2s
Building: 3.3s
Building: 3.4s
Building: 3.5s
Building: 3.6s
Building: 3.7s
Building: 3.8s
Building: 3.9s
Building: 4.0s
Building: 4.1s
Building: 4.2s
Building: 4.3s
Building: 4.4s
Building: 4.5s
Building: 4.6s
Building: 4.7s
Building: 4.8s
Building: 4.9s
Building: 5.0s
Building: 5.2s
Building: 5.3s
Building: 5.4s
Building: 5.5s
Building: 5.6s
Building: 5.7s
Building: 5.8s
Building: 5.9s
Building: 6.0s
Building: 6.1s
Building: 6.2s
Building: 6.3s
Building: 6.4s
Building: 6.5s
Building: 6.6s
Building: 6.7s
Building: 6.8s
Building: 6.9s
Building: 7.0s
Building: 7.1s
Building: 7.2s
Building: 7.3s
Building: 7.4s
Building: 7.5s
Building: 7.6s
Building: 7.7s
Building: 7.9s
Building: 8.0s
Building: 8.1s
Building: 8.2s
Building: 8.3s
Building: 8.4s
Building: 8.5s
Building: 8.6s
Building: 8.7s
Building: 8.8s
Building: 8.9s
Building: 9.0s
Building: 9.1s
Building: 9.2s
Building: 9.3s
Building: 9.4s
Building: 9.5s
Building: 9.6s
Building: 9.7s
Building: 9.9s
Building: 10.0s
Building: 10.1s
Building: 10.2s
Building: 10.3s
Building: 10.4s
Building: 10.5s
Building: 10.6s
Building: 10.7s
Building: 10.9s
Building: 11.0s
Building: 11.1s
Building: 11.2s
Building: 11.3s
Building: 11.4s
Building: 11.5s
Building: 11.6s
Building: 11.7s
Building: 11.8s
Building: 11.9s
Building: 12.1s
Building: 12.2s
Building: 12.3s
Building: 12.4s
Building: 12.5s
Building: 12.6s
Building: 12.7s
Building: 12.8s
Building: 12.9s
Building: 13.1s
Building: 13.2s
Building: 13.3s
Building: 13.4s
Building: 13.5s
Building: 13.6s
Building: 13.7s
Building: 13.8s
Building: 13.9s
Building: 14.0s
Building: 14.2s
Building: 14.3s
Building: 14.4s
Building: 14.5s
Building: 14.6s
Building: 14.7s
Building: 14.8s
Building: 14.9s
Building: 15.0s
Building: 15.1s
Building: 15.2s
Building: 15.4s
Building: 15.5s
Building: 15.6s
Building: 15.7s
Building: 15.8s
Building: 15.9s
Building: 16.0s
Building: 16.1s
Building: 16.3s
Building: 16.4s
Building: 16.5s
Building: 16.6s
Building: 16.7s
Building: 16.8s
Building: 16.9s
Building: 17.0s
Building: 17.1s
Building: 17.2s
Building: 17.3s
Building: 17.4s
Building: 17.5s
Building: 17.6s
Building: 17.7s
Building: 17.8s
Building: 17.9s
Building: 18.0s
Building: 18.2s
Building: 18.3s
Building: 18.4s
Building: 18.5s
Building: 18.6s
Building: 18.7s
Building: 18.8s
Building: 18.9s
Building: 19.0s
Building: 19.1s
Building: 19.2s
Building: 19.3s
Building: 19.5s
Building: 19.6s
Building: 19.7s
Building: 19.8s
Building: 19.9s
Building: 20.0s
Building: 20.1s
Building: 20.2s
Building: 20.3s
Building: 20.4s
Building: 20.5s
Building: 20.6s
Building: 20.7s
Building: 20.8s
Building: 21.0s
Building: 21.1s
Building: 21.2s
Building: 21.3s
Building: 21.4s
Building: 21.5s
Building: 21.6s
Building: 21.7s
Building: 21.8s
Building: 21.9s
Building: 22.0s
Building: 22.1s
Building: 22.3s
Building: 22.4s
Building: 22.5s
Building: 22.6s
Building: 22.7s
Building: 22.8s
Building: 22.9s
Building: 23.0s
Building: 23.1s
Building: 23.2s
Building: 23.3s
Building: 23.5s
Building: 23.6s
Building: 23.7s
Building: 23.8s
Building: 23.9s
Building: 24.0s
Building: 24.1s
Building: 24.2s
Building: 24.3s
Building: 24.4s
Building: 24.6s
Building: 24.7s
Building: 24.8s
Building: 24.9s
Building: 25.0s
Building: 25.1s
Building: 25.2s
Building: 25.3s
Building: 25.4s
Building: 25.5s
Building: 25.6s
Building: 25.7s
Building: 25.8s
Building: 25.9s
Building: 26.0s
Building: 26.2s
Building: 26.3s
Building: 26.4s
Building: 26.5s
Building: 26.6s
Building: 26.7s
Building: 26.8s
Building: 26.9s
Building: 27.0s
Building: 27.1s
Building: 27.2s
Building: 27.3s
Building: 27.4s
Building: 27.5s
Building: 27.6s
Building: 27.8s
Building: 27.9s
Building: 28.0s
Building: 28.1s
Building: 28.2s
Building: 28.3s
Building: 28.4s
Building: 28.5s
Building: 28.6s
Building: 28.7s
Building: 28.8s
Building: 28.9s
Building: 29.0s
Building: 29.2s
Building: 29.3s
Building: 29.4s
Building: 29.5s
Building: 29.6s
Building: 29.7s
Building: 29.8s
Building: 29.9s
Building: 30.0s
Building: 30.1s
Building: 30.2s
Building: 30.4s
Building: 30.5s
Building: 30.6s
Building: 30.7s
Building: 30.8s
Building: 30.9s
Building: 31.0s
Building: 31.1s
Building: 31.2s
Building: 31.3s
Building: 31.4s
Building: 31.5s
Building: 31.6s
Building: 31.7s
Building: 31.9s
Building: 32.0s
Building: 32.1s
Building: 32.2s
Building: 32.3s
Building: 32.4s
Building: 32.5s
Building: 32.6s
Building: 32.7s
Building: 32.8s
Building: 32.9s
Building: 33.0s
Building: 33.2s
Building: 33.3s
Building: 33.4s
Building: 33.5s
Building: 33.6s
Building: 33.7s
Building: 33.8s
Building: 33.9s
Building: 34.0s
Building: 34.1s
Building: 34.2s
Building: 34.3s
Building: 34.4s
Building: 34.5s
Building: 34.7s
Building: 34.8s
Building: 34.9s
Building: 35.0s
Building: 35.1s
Building: 35.2s
Building: 35.3s
Building: 35.4s
Building: 35.5s
Building: 35.6s
Building: 35.7s
Building: 35.8s
Building: 36.0s
Building: 36.1s
Building: 36.2s
Building: 36.3s
Building: 36.4s
Building: 36.5s
Building: 36.6s
Building: 36.7s
Building: 36.8s
Building: 36.9s
Building: 37.0s
Building: 37.1s
Building: 37.3s
Building: 37.4s
Building: 37.5s
Building: 37.6s
Building: 37.7s
Building: 37.8s
Building: 37.9s
Building: 38.0s
Building: 38.1s
Building: 38.2s
Building: 38.4s
Building: 38.5s
Building: 38.6s
Building: 38.7s
Building: 38.8s
Building: 38.9s
Building: 39.0s
Building: 39.1s
Building: 39.2s
Building: 39.3s
Building: 39.5s
Building: 39.6s
Building: 39.7s
Building: 39.8s
Building: 39.9s
Building: 40.0s
Building: 40.1s
Building: 40.2s
Building: 40.3s
Building: 40.5s
Building: 40.6s
Building: 40.7s
Building: 40.8s
Building: 40.9s
Building: 41.0s
Building: 41.1s
Building: 41.2s
Building: 41.3s
Building: 41.4s
Building: 41.5s
Building: 41.7s
Building: 41.8s
Building: 41.9s
Building: 42.0s
Building: 42.1s
Building: 42.2s
Building: 42.3s
Building: 42.4s
Building: 42.5s
Building: 42.6s
Building: 42.7s
Building: 42.8s
Building: 42.9s
Building: 43.0s
Building: 43.1s
Building: 43.2s
Building: 43.3s
Building: 43.5s
Building: 43.6s
Building: 43.7s
Building: 43.8s
Building: 43.9s
Building: 44.0s
Building: 44.1s
Building: 44.2s
Building: 44.3s
Building: 44.4s
Building: 44.5s
Building: 44.6s
Building: 44.8s
Building: 44.9s
Building: 45.0s
Building: 45.1s
Building: 45.2s
Building: 45.3s
Building: 45.4s
Building: 45.5s
Building: 45.6s
Building: 45.8s
Building: 45.9s
Building: 46.0s
Building: 46.1s
Building: 46.2s
Building: 46.3s
Building: 46.4s
Building: 46.5s
Building: 46.6s
Building: 46.7s
Building: 46.8s
Building: 46.9s
Building: 47.0s
Building: 47.1s
Building: 47.3s
Building: 47.4s
Building: 47.5s
Building: 47.6s
Building: 47.7s
Building: 47.8s
Building: 47.9s
Building: 48.0s
Building: 48.1s
Building: 48.2s
Building: 48.3s
Building: 48.5s
Building: 48.6s
Building: 48.7s
Building: 48.8s
Building: 48.9s
Building: 49.0s
Building: 49.1s
Building: 49.2s
Building: 49.3s
Building: 49.4s
Building: 49.6s
Building: 49.7s
Building: 49.8s
Building: 49.9s
Building: 50.0s
Building: 50.1s
Building: 50.2s
Building: 50.3s
Building: 50.4s
Building: 50.5s
Building: 50.6s
Building: 50.8s
Building: 50.9s
Building: 51.0s
Building: 51.1s
Building: 51.2s
Building: 51.3s
Building: 51.4s
Building: 51.5s
Building: 51.6s
Building: 51.7s
Building: 51.8s
Building: 51.9s
Building: 52.0s
Building: 52.1s
Building: 52.2s
Building: 52.3s
Building: 52.4s
Building: 52.5s
Building: 52.6s
Building: 52.7s
Building: 52.9s
Building: 53.0s
Building: 53.1s
Building: 53.2s
Building: 53.3s
Building: 53.4s
Building: 53.5s
Building: 53.6s
Building: 53.7s
Building: 53.8s
Building: 53.9s
Building: 54.0s
Building: 54.1s
Building: 54.2s
Building: 54.3s
Building: 54.4s
Building: 54.5s
Building: 54.6s
Building: 54.7s
Building: 54.9s
Building: 55.0s
Building: 55.1s
Building: 55.2s
Building: 55.3s
Building: 55.4s
Building: 55.5s
Building: 55.6s
Building: 55.7s
Building: 55.8s
Building: 55.9s
Building: 56.0s
Building: 56.1s
Building: 56.2s
Building: 56.3s
Building: 56.5s
Building: 56.6s
Building: 56.7s
Building: 56.8s
Building: 56.9s
Building: 57.0s
Building: 57.1s
Building: 57.2s
Building: 57.3s
Building: 57.4s
Building: 57.5s
Building: 57.6s
Building: 57.7s
Building: 57.8s
Building: 57.9s
Building: 58.1s
Building: 58.2s
Building: 58.3s
Building: 58.4s
Building: 58.5s
Building: 58.6s
Building: 58.7s
Building: 58.8s
Building: 58.9s
Building: 59.0s
Building: 59.1s
Building: 59.2s
Building: 59.4s
Building: 59.5s
Building: 59.6s
Building: 59.7s
Building: 59.8s
Building: 59.9s
Building: 60.0s
Building: 60.1s
Building: 60.2s
Building: 60.3s
Building: 60.4s
Building: 60.5s
Building: 60.6s
Building: 60.7s
Building: 60.8s
Building: 61.0s
Building: 61.1s
Building: 61.2s
Building: 61.3s
Building: 61.4s
Building: 61.5s
Building: 61.6s
Building: 61.7s
Building: 61.8s
Building: 61.9s
Building: 62.0s
Building: 62.2s
Building: 62.3s
Building: 62.4s
Building: 62.5s
Building: 62.6s
Building: 62.7s
Building: 62.8s
Building: 62.9s
Building: 63.0s
Building: 63.1s
Building: 63.2s
Building: 63.3s
Building: 63.5s
Building: 63.6s
Building: 63.7s
Building: 63.8s
Building: 63.9s
Building: 64.0s
Building: 64.1s
Building: 64.2s
Building: 64.3s
Building: 64.5s
Building: 64.6s
Building: 64.7s
Building: 64.8s
Building: 64.9s
Building: 65.0s
Building: 65.1s
Building: 65.3s
Building: 65.4s
Building: 65.5s
Building: 65.6s
Building: 65.7s
Building: 65.8s
Building: 65.9s
Building: 66.0s
Building: 66.1s
Building: 66.2s
Building: 66.3s
Building: 66.5s
Building: 66.6s
Building: 66.7s
Building: 66.8s
Building: 66.9s
Building: 67.0s
Building: 67.1s
Building: 67.2s
Building: 67.3s
Building: 67.4s
Building: 67.6s
Building: 67.7s
Building: 67.8s
Building: 67.9s
Building: 68.0s
Building: 68.1s
Building: 68.2s
Building: 68.3s
Building: 68.4s
Building: 68.5s
Building: 68.7s
Building: 68.8s
Building: 68.9s
Building: 69.0s
Building: 69.1s
Building: 69.2s
Building: 69.3s
Building: 69.4s
Building: 69.5s
Building: 69.6s
Building: 69.8s
Building: 69.9s
Building: 70.0s
Building: 70.1s
Building: 70.2s
Building: 70.3s
Building: 70.4s
Building: 70.5s
Building: 70.6s
Building: 70.7s
Building: 70.9s
Building: 71.0s
Building: 71.1s
Building: 71.2s
Building: 71.3s
Building: 71.4s
Building: 71.5s
Building: 71.6s
Building: 71.7s
Building: 71.8s
Building: 72.0s
Building: 72.1s
Building: 72.2s
Building: 72.3s
Building: 72.4s
Building: 72.5s
Building: 72.6s
Building: 72.7s
Building: 72.8s
Building: 72.9s
Building: 73.1s
Building: 73.2s
Building: 73.3s
Building: 73.4s
Building: 73.5s
Building: 73.6s
Building: 73.7s
Building: 73.8s
Building: 73.9s
Building: 74.0s
Building: 74.2s
Building: 74.3s
Building: 74.4s
Building: 74.5s
Building: 74.6s
Building: 74.7s
Building: 74.8s
Building: 74.9s
Building: 75.0s
Building: 75.1s
Building: 75.3s
Building: 75.4s
Building: 75.5s
Building: 75.6s
Building: 75.7s
Building: 75.8s
Building: 75.9s
Building: 76.0s
Building: 76.1s
Building: 76.2s
Building: 76.4s
Building: 76.5s
Building: 76.6s
Building: 76.7s
Building: 76.8s
Building: 76.9s
Building: 77.0s
Building: 77.1s
Building: 77.2s
Building: 77.4s
Building: 77.5s
Building: 77.6s
Building: 77.7s
Building: 77.8s
Building: 77.9s
Building: 78.0s
Building: 78.1s
Building: 78.2s
Building: 78.3s
Building: 78.4s
Building: 78.6s
Building: 78.7s
Building: 78.8s
Building: 78.9s
Building: 79.0s
Building: 79.1s
Building: 79.2s
Building: 79.3s
Building: 79.4s
Building: 79.5s
Building: 79.7s
Building: 79.8s
Building: 79.9s
Building: 80.0s
Building: 80.1s
Building: 80.2s
Building: 80.3s
Building: 80.4s
Building: 80.5s
Building: 80.6s
Building: 80.7s
Building: 80.8s
Building: 81.0s
Building: 81.1s
Building: 81.2s
Building: 81.3s
Building: 81.4s
Building: 81.5s
Building: 81.6s
Building: 81.7s
Building: 81.8s
Building: 81.9s
Building: 82.0s
Building: 82.1s
Building: 82.2s
Building: 82.4s
Building: 82.5s
Building: 82.6s
Building: 82.7s
Building: 82.8s
Building: 82.9s
Building: 83.0s
Building: 83.1s
Building: 83.2s
Building: 83.3s
Building: 83.4s
Building: 83.5s
Building: 83.6s
Building: 83.8s
Building: 83.9s
Building: 84.0s
Building: 84.1s
Building: 84.2s
Building: 84.3s
Building: 84.4s
Building: 84.5s
Building: 84.6s
Building: 84.7s
Building: 84.8s
Building: 84.9s
Building: 85.0s
Building: 85.1s
Building: 85.3s
Building: 85.4s
Building: 85.5s
Building: 85.6s
Building: 85.7s
Building: 85.8s
Building: 85.9s
Building: 86.0s
Building: 86.1s
Building: 86.2s
Building: 86.3s
Building: 86.4s
Building: 86.5s
Building: 86.6s
Building: 86.8s
Building: 86.9s
Building: 87.0s
Building: 87.1s
Building: 87.2s
Building: 87.3s
Building: 87.4s
Building: 87.5s
Building: 87.6s
Building: 87.7s
Building: 87.8s
Building: 88.0s
Building: 88.1s
Building: 88.2s
Building: 88.3s
Building: 88.4s
Building: 88.5s
Building: 88.6s
Building: 88.7s
Building: 88.8s
Building: 88.9s
Building: 89.0s
Building: 89.1s
Building: 89.3s
Building: 89.4s
Building: 89.5s
Building: 89.6s
Building: 89.7s
Building: 89.8s
Building: 89.9s
Building: 90.0s
Building: 90.1s
Building: 90.2s
Building: 90.3s
Building: 90.4s
Building: 90.5s
Building: 90.7s
Building: 90.8s
Building: 90.9s
Building: 91.0s
Building: 91.1s
Building: 91.2s
Building: 91.3s
Building: 91.4s
Building: 91.5s
Building: 91.6s
Building: 91.7s
Building: 91.8s
Building: 92.0s
Building: 92.1s
Building: 92.2s
Building: 92.3s
Building: 92.4s
Building: 92.5s
Building: 92.6s
Building: 92.7s
Building: 92.8s
Building: 92.9s
Building: 93.0s
Building: 93.2s
Building: 93.3s
Building: 93.4s
Building: 93.5s
Building: 93.6s
Building: 93.7s
Building: 93.8s
Building: 93.9s
Building: 94.0s
Building: 94.1s
Building: 94.3s
Building: 94.4s
Building: 94.5s
Building: 94.6s
Building: 94.7s
Building: 94.8s
Building: 94.9s
Building: 95.0s
Building: 95.1s
Building: 95.2s
Building: 95.4s
Building: 95.5s
Building: 95.6s
Building: 95.7s
Building: 95.8s
Building: 95.9s
Building: 96.0s
Building: 96.1s
Building: 96.2s
Building: 96.3s
Building: 96.4s
Building: 96.6s
Building: 96.7s
Building: 96.8s
Building: 96.9s
Building: 97.0s
Building: 97.1s
Building: 97.2s
Building: 97.3s
Building: 97.4s
Building: 97.6s
Building: 97.7s
Building: 97.8s
Building: 97.9s
Building: 98.0s
Building: 98.1s
Building: 98.2s
Building: 98.3s
Building: 98.4s
Building: 98.5s
Building: 98.7s
Building: 98.8s
Building: 98.9s
Building: 99.0s
Building: 99.1s
Building: 99.2s
Building: 99.3s
Building: 99.4s
Building: 99.5s
Building: 99.6s
Building: 99.7s
Building: 99.8s
Building: 100.0s
Building: 100.1s
Building: 100.2s
Building: 100.3s
Building: 100.4s
Building: 100.5s
Building: 100.6s
Building: 100.7s
Building: 100.8s
Building: 100.9s
Building: 101.0s
Building: 101.2s
Building: 101.3s
Building: 101.4s
Building: 101.5s
Building: 101.6s
Building: 101.7s
Building: 101.8s
Building: 101.9s
Building: 102.0s
Building: 102.1s
Building: 102.2s
Building: 102.4s
Building: 102.5s
Building: 102.6s
Building: 102.7s
Building: 102.8s
Building: 102.9s
Building: 103.0s
Building: 103.1s
Building: 103.2s
Building: 103.3s
Building: 103.4s
Building: 103.6s
Building: 103.7s
Building: 103.8s
Building: 103.9s
Building: 104.0s
Building: 104.1s
Building: 104.2s
Building: 104.3s
Building: 104.4s
Building: 104.5s
Building: 104.7s
Building: 104.8s
Building: 104.9s
Building: 105.0s
Building: 105.1s
Building: 105.2s
Building: 105.3s
Building: 105.4s
Building: 105.6s
Building: 105.7s
Building: 105.8s
Building: 105.9s
Building: 106.0s
Building: 106.1s
Building: 106.2s
Building: 106.3s
Building: 106.4s
Building: 106.5s
Building: 106.6s
Building: 106.7s
Building: 106.8s
Building: 107.0s
Building: 107.1s
Building: 107.2s
Building: 107.3s
Building: 107.4s
Building: 107.5s
Building: 107.6s
Building: 107.7s
Building: 107.8s
Building: 107.9s
Building: 108.0s
Building: 108.1s
Building: 108.2s
Building: 108.4s
Building: 108.5s
Building: 108.6s
Building: 108.7s
Building: 108.8s
Building: 108.9s
Building: 109.0s
Building: 109.1s
Building: 109.2s
Building: 109.3s
Building: 109.4s
Building: 109.5s
Building: 109.6s
Building: 109.7s
Building: 109.8s
Building: 109.9s
Building: 110.0s
Building: 110.2s
Building: 110.3s
Building: 110.4s
Building: 110.5s
Building: 110.6s
Building: 110.7s
Building: 110.8s
Building: 110.9s
Building: 111.0s
Building: 111.1s
Building: 111.2s
Building: 111.4s
Building: 111.5s
Building: 111.6s
Building: 111.7s
Building: 111.8s
Building: 111.9s
Building: 112.0s
Building: 112.1s
Building: 112.2s
Building: 112.3s
Building: 112.4s
Building: 112.5s
Building: 112.7s
Building: 112.8s
Building: 112.9s
Building: 113.0s
Building: 113.1s
Building: 113.2s
Building: 113.3s
Building: 113.4s
Building: 113.5s
Building: 113.6s
Building: 113.7s
Building: 113.8s
Building: 113.9s
Building: 114.1s
Building: 114.2s
Building: 114.3s
Building: 114.4s
Building: 114.5s
Building: 114.6s
Building: 114.7s
Building: 114.8s
Building: 114.9s
Building: 115.0s
Building: 115.1s
Building: 115.2s
Building: 115.3s
Building: 115.5s
Building: 115.6s
Building: 115.7s
Building: 115.8s
Building: 115.9s
Building: 116.0s
Building: 116.1s
Building: 116.2s
Building: 116.3s
Building: 116.4s
Building: 116.5s
Building: 116.7s
Building: 116.8s
Building: 116.9s
Building: 117.0s
Building: 117.1s
Building: 117.2s
Building: 117.3s
Building: 117.4s
Building: 117.5s
Building: 117.6s
Building: 117.7s
Building: 117.9s
Building: 118.0s
Building: 118.1s
Building: 118.2s
Building: 118.3s
Building: 118.4s
Building: 118.5s
Building: 118.6s
Building: 118.7s
Building: 118.8s
Building: 118.9s
Building: 119.1s
Building: 119.2s
Building: 119.3s
Building: 119.4s
Building: 119.5s
Building: 119.6s
Building: 119.7s
Building: 119.8s
Building: 119.9s
Building: 120.0s
Building: 120.1s
Building: 120.3s
Building: 120.4s
Building: 120.5s
Building: 120.6s
Building: 120.7s
Building: 120.8s
Building: 120.9s
Building: 121.0s
Building: 121.1s
Building: 121.2s
Building: 121.4s
Building: 121.5s
Building: 121.6s
Building: 121.7s
Building: 121.8s
Building: 121.9s
Building: 122.0s
Building: 122.1s
Building: 122.2s
Building: 122.3s
Building: 122.4s
Building: 122.6s
Building: 122.7s
Building: 122.8s
Building: 122.9s
Building: 123.0s
Building: 123.1s
Building: 123.2s
Building: 123.3s
Building: 123.4s
Building: 123.5s
Building: 123.7s
Building: 123.8s
Building: 123.9s
Building: 124.0s
Building: 124.1s
Building: 124.2s
Building: 124.3s
Building: 124.4s
Building: 124.5s
Building: 124.6s
Building: 124.7s
Building: 124.8s
Building: 124.9s
Building: 125.1s
Building: 125.2s
Building: 125.3s
Building: 125.4s
Building: 125.5s
Building: 125.6s
Building: 125.7s
Building: 125.8s
Building: 125.9s
Building: 126.0s
Building: 126.1s
Building: 126.2s
Building: 126.4s
Building: 126.5s
Building: 126.6s
Building: 126.7s
Building: 126.8s
Building: 126.9s
Building: 127.0s
Building: 127.1s
Building: 127.2s
Building: 127.3s
Building: 127.5s
Building: 127.6s
Building: 127.7s
Building: 127.8s
Building: 127.9s
Building: 128.0s
Building: 128.1s
Building: 128.2s
Building: 128.3s
Building: 128.4s
Building: 128.5s
Building: 128.6s
Building: 128.8s
Building: 128.9s
Building: 129.0s
Building: 129.1s
Building: 129.2s
Building: 129.3s
Building: 129.4s
Building: 129.5s
Building: 129.6s
Building: 129.7s
Building: 129.8s
Building: 130.0s
Building: 130.1s
Building: 130.2s
Building: 130.3s
Building: 130.4s
Building: 130.5s
Building: 130.6s
Building: 130.7s
Building: 130.8s
Building: 131.0s
Building: 131.1s
Building: 131.2s
Building: 131.3s
Building: 131.4s
Building: 131.5s
Building: 131.6s
Building: 131.7s
Building: 131.8s
Building: 131.9s
Building: 132.1s
Building: 132.2s
Building: 132.3s
Building: 132.4s
Building: 132.5s
Building: 132.6s
Building: 132.7s
Building: 132.8s
Building: 132.9s
Building: 133.0s
Building: 133.2s
Building: 133.3s
Building: 133.4s
Building: 133.5s
Building: 133.6s
Building: 133.7s
Building: 133.8s
Building: 133.9s
Building: 134.0s
Building: 134.1s
Building: 134.2s
Building: 134.3s
Building: 134.4s
Building: 134.6s
Building: 134.7s
Building: 134.8s
Building: 134.9s
Building: 135.0s
Building: 135.1s
Building: 135.2s
Building: 135.3s
Building: 135.4s
Building: 135.5s
Building: 135.6s
Building: 135.8s
Building: 135.9s
Building: 136.0s
Building: 136.1s
Building: 136.2s
Building: 136.3s
Building: 136.4s
Building: 136.5s
Building: 136.6s
Building: 136.7s
Building: 136.8s
Building: 136.9s
Building: 137.1s
Building: 137.2s
Building: 137.3s
Building: 137.4s
Building: 137.5s
Building: 137.6s
Building: 137.7s
Building: 137.8s
Building: 137.9s
Building: 138.0s
Building: 138.1s
Building: 138.3s
Building: 138.4s
Building: 138.5s
Building: 138.6s
Building: 138.7s
Building: 138.8s
Building: 138.9s
Building: 139.0s
Building: 139.1s
Building: 139.2s
Building: 139.3s
Building: 139.4s
Building: 139.5s
Building: 139.7s
Building: 139.8s
Building: 139.9s
Building: 140.0s
Building: 140.1s
Building: 140.2s
Building: 140.3s
Building: 140.4s
Building: 140.5s
Building: 140.6s
Building: 140.7s
Building: 140.9s
Building: 141.0s
Building: 141.1s
Building: 141.2s
Building: 141.3s
Building: 141.4s
Building: 141.5s
Building: 141.6s
Building: 141.7s
Building: 141.8s
Building: 141.9s
Building: 142.0s
Building: 142.1s
Building: 142.3s
Building: 142.4s
Building: 142.5s
Building: 142.6s
Building: 142.7s
Building: 142.8s
Building: 142.9s
Building: 143.0s
Building: 143.1s
Building: 143.2s
Building: 143.3s
Building: 143.4s
Building: 143.5s
Building: 143.7s
Building: 143.8s
Building: 143.9s
Building: 144.0s
Building: 144.1s
Building: 144.2s
Building: 144.3s
Building: 144.4s
Building: 144.5s
Building: 144.6s
Building: 144.7s
Building: 144.9s
Building: 145.0s
Building: 145.1s
Building: 145.2s
Building: 145.3s
Building: 145.4s
Building: 145.5s
Building: 145.6s
Building: 145.7s
Building: 145.8s
Building: 145.9s
Building: 146.0s
Building: 146.2s
Building: 146.3s
Building: 146.4s
Building: 146.5s
Building: 146.6s
Building: 146.7s
Building: 146.8s
Building: 146.9s
Building: 147.0s
Building: 147.1s
Building: 147.3s
Building: 147.4s
Building: 147.5s
Building: 147.6s
Building: 147.7s
Building: 147.8s
Building: 147.9s
Building: 148.0s
Building: 148.1s
Building: 148.2s
Building: 148.3s
Building: 148.5s
Building: 148.6s
Building: 148.7s
Building: 148.8s
Building: 148.9s
Building: 149.0s
Building: 149.1s
Building: 149.2s
Building: 149.3s
Building: 149.4s
Building: 149.6s
Building: 149.7s
Building: 149.8s
Building: 149.9s
Building: 150.0s
Building: 150.1s
Building: 150.2s
Building: 150.3s
Building: 150.4s
Building: 150.6s
Building: 150.7s
Building: 150.8s
Building: 150.9s
Building: 151.0s
Building: 151.1s
Building: 151.2s
Building: 151.3s
Building: 151.4s
Building: 151.5s
Building: 151.6s
Building: 151.7s
Building: 151.9s
Building: 152.0s
Building: 152.1s
Building: 152.2s
Building: 152.3s
Building: 152.4s
Building: 152.5s
Building: 152.6s
Building: 152.7s
Building: 152.8s
Building: 153.0s
Building: 153.1s
Building: 153.2s
Building: 153.3s
Building: 153.4s
Building: 153.5s
Building: 153.6s
Building: 153.7s
Building: 153.8s
Building: 153.9s
Building: 154.0s
Building: 154.2s
Building: 154.3s
Building: 154.4s
Building: 154.5s
Building: 154.6s
Building: 154.7s
Building: 154.8s
Building: 154.9s
Building: 155.1s
Building: 155.2s
Building: 155.3s
Building: 155.4s
Building: 155.5s
Building: 155.6s
Building: 155.7s
Building: 155.8s
Building: 155.9s
Building: 156.0s
Building: 156.2s
Building: 156.3s
Building: 156.4s
Building: 156.5s
Building: 156.6s
Building: 156.7s
Building: 156.8s
Building: 156.9s
Building: 157.0s
Building: 157.2s
Building: 157.3s
Building: 157.4s
Building: 157.5s
Building: 157.6s
Building: 157.7s
Building: 157.8s
Building: 157.9s
Building: 158.0s
Building: 158.1s
Building: 158.2s
Building: 158.3s
Building: 158.4s
Building: 158.6s
Building: 158.7s
Building: 158.8s
Building: 158.9s
Building: 159.0s
Building: 159.1s
Building: 159.2s
Building: 159.3s
Building: 159.4s
Building: 159.5s
Building: 159.6s
Building: 159.8s
Building: 159.9s
Building: 160.0s
Building: 160.1s
Building: 160.2s
Building: 160.3s
Building: 160.4s
Building: 160.5s
Building: 160.6s
Building: 160.8s
Building: 160.9s
Building: 161.0s
Building: 161.1s
Building: 161.2s
Building: 161.3s
Building: 161.4s
Building: 161.5s
Building: 161.6s
Building: 161.7s
Building: 161.8s
Building: 161.9s
Building: 162.0s
Building: 162.1s
Building: 162.2s
Building: 162.3s
Building: 162.5s
Building: 162.6s
Building: 162.7s
Building: 162.8s
Building: 162.9s
Building: 163.0s
Building: 163.1s
Building: 163.2s
Building: 163.3s
Building: 163.4s
Building: 163.5s
Building: 163.6s
Building: 163.7s
Building: 163.8s
Building: 164.0s
Building: 164.1s
Building: 164.2s
Building: 164.3s
Building: 164.4s
Building: 164.5s
Building: 164.6s
Building: 164.7s
Building: 164.8s
Building: 164.9s
Building: 165.0s
Building: 165.1s
Building: 165.2s
Building: 165.3s
Building: 165.5s
Building: 165.6s
Building: 165.7s
Building: 165.8s
Building: 165.9s
Building: 166.0s
Building: 166.1s
Building: 166.2s
Building: 166.3s
Building: 166.4s
Building: 166.5s
Building: 166.6s
Building: 166.8s
Building: 166.9s
Building: 167.0s
Building: 167.1s
Building: 167.2s
Building: 167.3s
Building: 167.4s
Building: 167.5s
Building: 167.6s
Building: 167.7s
Building: 167.9s
Building: 168.0s
Building: 168.1s
Building: 168.2s
Building: 168.3s
Building: 168.4s
Building: 168.5s
Building: 168.6s
Building: 168.7s
Building: 168.8s
Building: 168.9s
Building: 169.0s
Building: 169.1s
Building: 169.2s
Building: 169.4s
Building: 169.5s
Building: 169.6s
Building: 169.7s
Building: 169.8s
Building: 169.9s
Building: 170.0s
Building: 170.1s
Building: 170.2s
Building: 170.3s
Building: 170.4s
Building: 170.5s
Building: 170.6s
Building: 170.8s
Building: 170.9s
Building: 171.0s
Building: 171.1s
Building: 171.2s
Building: 171.3s
Building: 171.4s
Building: 171.5s
Building: 171.6s
Building: 171.7s
Building: 171.8s
Building: 171.9s
Building: 172.1s
Building: 172.2s
Building: 172.3s
Building: 172.4s
Building: 172.5s
Building: 172.6s
Building: 172.7s
Building: 172.8s
Building: 172.9s
Building: 173.0s
Building: 173.1s
Building: 173.3s
Building: 173.4s
Building: 173.5s
Building: 173.6s
Building: 173.7s
Building: 173.8s
Building: 173.9s
Building: 174.0s
Building: 174.1s
Building: 174.2s
Building: 174.3s
Building: 174.5s
Building: 174.6s
Building: 174.7s
Building: 174.8s
Building: 174.9s
Building: 175.0s
Building: 175.1s
Building: 175.2s
Building: 175.3s
Building: 175.4s
Building: 175.5s
Building: 175.7s
Building: 175.8s
Building: 175.9s
Building: 176.0s
Building: 176.1s
Building: 176.2s
Building: 176.3s
Building: 176.4s
Building: 176.5s
Building: 176.7s
Building: 176.8s
Building: 176.9s
Building: 177.0s
Building: 177.1s
Building: 177.2s
Building: 177.3s
Building: 177.4s
Building: 177.5s
Building: 177.7s
Building: 177.8s
Building: 177.9s
Building: 178.0s
Building: 178.1s
Building: 178.2s
Building: 178.3s
Building: 178.4s
Building: 178.5s
Building: 178.6s
Building: 178.8s
Building: 178.9s
Building: 179.0s
Building: 179.1s
Building: 179.2s
Building: 179.3s
Building: 179.4s
Building: 179.5s
Building: 179.6s
Building: 179.8s
Building: 179.9s
Building: 180.0s
Building: 180.1s
Building: 180.2s
Building: 180.3s
Building: 180.4s
Building: 180.5s
Building: 180.6s
Building: 180.7s
Building: 180.9s
Building: 181.0s
Building: 181.1s
Building: 181.2s
Building: 181.3s
Building: 181.4s
Building: 181.5s
Building: 181.6s
Building: 181.7s
Building: 181.8s
Building: 182.0s
Building: 182.1s
Building: 182.2s
Building: 182.3s
Building: 182.4s
Building: 182.5s
Building: 182.6s
Building: 182.7s
Building: 182.8s
Building: 182.9s
Building: 183.0s
Building: 183.2s
Building: 183.3s
Building: 183.4s
Building: 183.5s
Building: 183.6s
Building: 183.7s
Building: 183.8s
Building: 183.9s
Building: 184.0s
Building: 184.1s
Building: 184.3s
Building: 184.4s
Building: 184.5s
Building: 184.6s
Building: 184.7s
Building: 184.8s
Building: 184.9s
Building: 185.0s
Building: 185.1s
Building: 185.2s
Building: 185.3s
Building: 185.4s
Building: 185.6s
Building: 185.7s
Building: 185.8s
Building: 185.9s
Building: 186.0s
Building: 186.1s
Building: 186.2s
Building: 186.3s
Building: 186.4s
Building: 186.5s
Building: 186.6s
Building: 186.7s
Building: 186.8s
Building: 186.9s
Building: 187.0s
Building: 187.2s
Building: 187.3s
Building: 187.4s
Building: 187.5s
Building: 187.6s
Building: 187.7s
Building: 187.8s
Building: 187.9s
Building: 188.0s
Building: 188.1s
Building: 188.2s
Building: 188.3s
Building: 188.4s
Building: 188.5s
Building: 188.7s
Building: 188.8s
Building: 188.9s
Building: 189.0s
Building: 189.1s
Building: 189.2s
Building: 189.3s
Building: 189.4s
Building: 189.5s
Building: 189.6s
Building: 189.7s
Building: 189.8s
Building: 189.9s
Building: 190.0s
Building: 190.2s
Building: 190.3s
Building: 190.4s
Building: 190.5s
Building: 190.6s
Building: 190.7s
Building: 190.8s
Building: 190.9s
Building: 191.0s
Building: 191.2s
Building: 191.3s
Building: 191.4s
Building: 191.5s
Building: 191.6s
Building: 191.7s
Building: 191.8s
Building: 191.9s
Building: 192.0s
Building: 192.1s
Building: 192.2s
Building: 192.3s
Building: 192.5s
Building: 192.6s
Building: 192.7s
Building: 192.8s
Building: 192.9s
Building: 193.0s
Building: 193.1s
Building: 193.2s
Building: 193.3s
Building: 193.4s
Building: 193.5s
Building: 193.6s
Building: 193.8s
Building: 193.9s
Building: 194.0s
Building: 194.1s
Building: 194.2s
Building: 194.3s
Building: 194.4s
Building: 194.5s
Building: 194.6s
Building: 194.7s
Building: 194.8s
Building: 194.9s
Building: 195.0s
Building: 195.2s
Building: 195.3s
Building: 195.4s
Building: 195.5s
Building: 195.6s
Building: 195.7s
Building: 195.8s
Building: 195.9s
Building: 196.0s
Building: 196.1s
Building: 196.2s
Building: 196.4s
Building: 196.5s
Building: 196.6s
Building: 196.7s
Building: 196.8s
Building: 196.9s
Building: 197.0s
Building: 197.1s
Building: 197.2s
Building: 197.3s
Building: 197.4s
Building: 197.5s
Building: 197.7s
Building: 197.8s
Building: 197.9s
Building: 198.0s
Building: 198.1s
Building: 198.2s
Building: 198.3s
Building: 198.4s
Building: 198.5s
Building: 198.6s
Building: 198.7s
Building: 198.8s
Building: 199.0s
Building: 199.1s
Building: 199.2s
Building: 199.3s
Building: 199.4s
Building: 199.5s
Building: 199.6s
Building: 199.7s
Building: 199.8s
Building: 199.9s
Building: 200.0s
Building: 200.1s
Building: 200.3s
Building: 200.4s
Building: 200.5s
Building: 200.6s
Building: 200.7s
Building: 200.8s
Building: 200.9s
Building: 201.0s
Building: 201.1s
Building: 201.2s
Building: 201.3s
Building: 201.4s
Building: 201.5s
Building: 201.6s
Building: 201.7s
Building: 201.8s
Building: 202.0s
Building: 202.1s
Building: 202.2s
Building: 202.3s
Building: 202.4s
Building: 202.5s
Building: 202.6s
Building: 202.7s
Building: 202.8s
Building: 202.9s
Building: 203.0s
Building: 203.2s
Building: 203.3s
Building: 203.4s
Building: 203.5s
Building: 203.6s
Building: 203.7s
Building: 203.8s
Building: 203.9s
Building: 204.0s
Building: 204.1s
Building: 204.3s
Building: 204.4s
Building: 204.5s
Building: 204.6s
Building: 204.7s
Building: 204.8s
Building: 204.9s
Building: 205.0s
Building: 205.1s
Building: 205.2s
Building: 205.3s
Building: 205.4s
Building: 205.5s
Building: 205.6s
Building: 205.7s
Building: 205.8s
Building: 205.9s
Building: 206.0s
Building: 206.1s
Building: 206.2s
Building: 206.4s
Building: 206.5s
Building: 206.6s
Building: 206.7s
Building: 206.8s
Building: 206.9s
Building: 207.0s
Building: 207.1s
Building: 207.2s
Building: 207.3s
Building: 207.4s
Building: 207.5s
Building: 207.6s
Building: 207.8s
Building: 207.9s
Building: 208.0s
Building: 208.1s
Building: 208.2s
Building: 208.3s
Building: 208.4s
Building: 208.5s
Building: 208.6s
Building: 208.7s
Building: 208.8s
Building: 208.9s
Building: 209.0s
Building: 209.2s
Building: 209.3s
Building: 209.4s
Building: 209.5s
Building: 209.6s
Building: 209.7s
Building: 209.8s
Building: 209.9s
Building: 210.0s
Building: 210.1s
Building: 210.2s
Building: 210.4s
Building: 210.5s
Building: 210.6s
Building: 210.7s
Building: 210.8s
Building: 210.9s
Building: 211.0s
Building: 211.1s
Building: 211.2s
Building: 211.3s
Building: 211.4s
Building: 211.6s
Building: 211.7s
Building: 211.8s
Building: 211.9s
Building: 212.0s
Building: 212.1s
Building: 212.2s
Building: 212.3s
Building: 212.4s
Building: 212.5s
Building: 212.6s
Building: 212.7s
Building: 212.9s
Building: 213.0s
Building: 213.1s
Building: 213.2s
Building: 213.3s
Building: 213.4s
Building: 213.5s
Building: 213.6s
Building: 213.7s
Building: 213.8s
Building: 213.9s
Building: 214.0s
Building: 214.1s
Building: 214.3s
Building: 214.4s
Building: 214.5s
Building: 214.6s
Building: 214.7s
Building: 214.8s
Building: 214.9s
Building: 215.0s
Building: 215.1s
Building: 215.2s
Building: 215.3s
Building: 215.5s
Building: 215.6s
Building: 215.7s
Building: 215.8s
Building: 215.9s
Building: 216.0s
Building: 216.1s
Building: 216.2s
Building: 216.3s
Building: 216.5s
Building: 216.6s
Building: 216.7s
Building: 216.8s
Building: 216.9s
Building: 217.0s
Building: 217.1s
Building: 217.2s
Building: 217.3s
Building: 217.4s
Building: 217.5s
Building: 217.7s
Building: 217.8s
Building: 217.9s
Building: 218.0s
Building: 218.1s
Building: 218.2s
Building: 218.3s
Building: 218.4s
Building: 218.5s
Building: 218.6s
Building: 218.7s
Building: 218.8s
Building: 219.0s
Building: 219.1s
Building: 219.2s
Building: 219.3s
Building: 219.4s
Building: 219.5s
Building: 219.6s
Building: 219.7s
Building: 219.8s
Building: 219.9s
Building: 220.0s
Building: 220.2s
Building: 220.3s
Building: 220.4s
Building: 220.5s
Building: 220.6s
Building: 220.7s
Building: 220.8s
Building: 220.9s
Building: 221.0s
Building: 221.1s
Building: 221.2s
Building: 221.3s
Building: 221.4s
Building: 221.6s
Building: 221.7s
Building: 221.8s
Building: 221.9s
Building: 222.0s
Building: 222.1s
Building: 222.2s
Building: 222.3s
Building: 222.4s
Building: 222.5s
Building: 222.6s
Building: 222.8s
Building: 222.9s
Building: 223.0s
Building: 223.1s
Building: 223.2s
Building: 223.3s
Building: 223.4s
Building: 223.5s
Building: 223.6s
Building: 223.7s
Building: 223.8s
Building: 223.9s
Building: 224.1s
Building: 224.2s
Building: 224.3s
Building: 224.4s
Building: 224.5s
Building: 224.6s
Building: 224.7s
Building: 224.8s
Building: 224.9s
Building: 225.0s
Building: 225.1s
Building: 225.3s
Building: 225.4s
Building: 225.5s
Building: 225.6s
Building: 225.7s
Building: 225.8s
Building: 225.9s
Building: 226.0s
Building: 226.1s
Building: 226.2s
Building: 226.3s
Building: 226.5s
Building: 226.6s
Building: 226.7s
Building: 226.8s
Building: 226.9s
Building: 227.0s
Building: 227.1s
Building: 227.2s
Building: 227.3s
Building: 227.4s
Building: 227.5s
Building: 227.7s
Building: 227.8s
Building: 227.9s
Building: 228.0s
Building: 228.1s
Building: 228.2s
Building: 228.3s
Building: 228.4s
Building: 228.5s
Building: 228.7s
Building: 228.8s
Building: 228.9s
Building: 229.0s
Building: 229.1s
Building: 229.2s
Building: 229.3s
Building: 229.4s
Building: 229.5s
Building: 229.6s
Building: 229.8s
Building: 229.9s
Building: 230.0s
Building: 230.1s
Building: 230.2s
Building: 230.3s
Building: 230.4s
Building: 230.5s
Building: 230.6s
Building: 230.7s
Building: 230.9s
Building: 231.0s
Building: 231.1s
Building: 231.2s
Building: 231.3s
Building: 231.4s
Building: 231.5s
Building: 231.6s
Building: 231.7s
Building: 231.8s
Building: 231.9s
Building: 232.1s
Building: 232.2s
Building: 232.3s
Building: 232.4s
Building: 232.5s
Building: 232.6s
Building: 232.7s
Building: 232.8s
Building: 232.9s
Building: 233.0s
Building: 233.1s
Building: 233.3s
Building: 233.4s
Building: 233.5s
Building: 233.6s
Building: 233.7s
Building: 233.8s
Building: 233.9s
Building: 234.0s
Building: 234.1s
Building: 234.2s
Building: 234.4s
Building: 234.5s
Building: 234.6s
Building: 234.7s
Building: 234.8s
Building: 234.9s
Building: 235.0s
Building: 235.1s
Building: 235.2s
Building: 235.4s
Building: 235.5s
Building: 235.6s
Building: 235.7s
Building: 235.8s
Building: 235.9s
Building: 236.0s
Building: 236.1s
Building: 236.2s
Building: 236.3s
Building: 236.5s
Building: 236.6s
Building: 236.7s
Building: 236.8s
Building: 236.9s
Building: 237.0s
Building: 237.1s
Building: 237.2s
Building: 237.3s
Building: 237.4s
Building: 237.6s
Building: 237.7s
Building: 237.8s
Building: 237.9s
Building: 238.0s
Building: 238.1s
Building: 238.2s
Building: 238.3s
Building: 238.4s
Building: 238.5s
Building: 238.7s
Building: 238.8s
Building: 238.9s
Building: 239.0s
Building: 239.1s
Building: 239.2s
Building: 239.3s
Building: 239.4s
Building: 239.5s
Building: 239.6s
Building: 239.8s
Building: 239.9s
Building: 240.0s
Building: 240.1s
Building: 240.2s
Building: 240.3s
Building: 240.4s
Building: 240.5s
Building: 240.6s
Building: 240.7s
Building: 240.8s
Building: 240.9s
Building: 241.0s
Building: 241.2s
Building: 241.3s
Building: 241.4s
Building: 241.5s
Building: 241.6s
Building: 241.7s
Building: 241.8s
Building: 241.9s
Building: 242.0s
Building: 242.1s
Building: 242.2s
Building: 242.3s
Building: 242.4s
Building: 242.6s
Building: 242.7s
Building: 242.8s
Building: 242.9s
Building: 243.0s
Building: 243.1s
Building: 243.2s
Building: 243.3s
Building: 243.4s
Building: 243.5s
Building: 243.6s
Building: 243.7s
Building: 243.8s
Building: 243.9s
Building: 244.1s
Building: 244.2s
Building: 244.3s
Building: 244.4s
Building: 244.5s
Building: 244.6s
Building: 244.7s
Building: 244.8s
Building: 244.9s
Building: 245.0s
Building: 245.1s
Building: 245.2s
Building: 245.3s
Building: 245.4s
Building: 245.6s
Building: 245.7s
Building: 245.8s
Building: 245.9s
Building: 246.0s
Building: 246.1s
Building: 246.2s
Building: 246.3s
Building: 246.4s
Building: 246.5s
Building: 246.6s
Building: 246.7s
Building: 246.8s
Building: 247.0s
Building: 247.1s
Building: 247.2s
Building: 247.3s
Building: 247.4s
Building: 247.5s
Building: 247.6s
Building: 247.7s
Building: 247.8s
Building: 247.9s
Building: 248.0s
Building: 248.1s
Building: 248.3s
Building: 248.4s
Building: 248.5s
Building: 248.6s
Building: 248.7s
Building: 248.8s
Building: 248.9s
Building: 249.0s
Building: 249.1s
Building: 249.2s
Building: 249.3s
Building: 249.5s
Building: 249.6s
Building: 249.7s
Building: 249.8s
Building: 249.9s
Building: 250.0s
Building: 250.1s
Building: 250.2s
Building: 250.3s
Building: 250.4s
Building: 250.5s
Building: 250.7s
Building: 250.8s
Building: 250.9s
Building: 251.0s
Building: 251.1s
Building: 251.2s
Building: 251.3s
Building: 251.4s
Building: 251.5s
Building: 251.6s
Building: 251.7s
Building: 251.9s
Building: 252.0s
Building: 252.1s
Building: 252.2s
Building: 252.3s
Building: 252.4s
Building: 252.5s
Building: 252.6s
Building: 252.7s
Building: 252.8s
Building: 252.9s
Building: 253.0s
Building: 253.1s
Building: 253.3s
Building: 253.4s
Building: 253.5s
Building: 253.6s
Building: 253.7s
Building: 253.8s
Building: 253.9s
Building: 254.0s
Building: 254.1s
Building: 254.2s
Building: 254.3s
Building: 254.4s
Building: 254.6s
Building: 254.7s
Building: 254.8s
Building: 254.9s
Building: 255.0s
Building: 255.1s
Building: 255.2s
Building: 255.3s
Building: 255.4s
Building: 255.5s
Building: 255.6s
Building: 255.8s
Building: 255.9s
Building: 256.0s
Building: 256.1s
Building: 256.2s
Building: 256.3s
Building: 256.4s
Building: 256.5s
Building: 256.6s
Building: 256.8s
Building: 256.9s
Building: 257.0s
Building: 257.1s
Building: 257.2s
Building: 257.3s
Building: 257.4s
Building: 257.5s
Building: 257.6s
Building: 257.7s
Building: 257.8s
Building: 258.0s
Building: 258.1s
Building: 258.2s
Building: 258.3s
Building: 258.4s
Building: 258.5s
Building: 258.6s
Building: 258.7s
Building: 258.8s
Building: 258.9s
Building: 259.0s
Building: 259.2s
Building: 259.3s
Building: 259.4s
Building: 259.5s
Building: 259.6s
Building: 259.7s
Building: 259.8s
Building: 259.9s
Building: 260.0s
Building: 260.1s
Building: 260.3s
Building: 260.4s
Building: 260.5s
Building: 260.6s
Building: 260.7s
Building: 260.8s
Building: 260.9s
Building: 261.0s
Building: 261.1s
Building: 261.2s
Building: 261.3s
Building: 261.5s
Building: 261.6s
Building: 261.7s
Building: 261.8s
Building: 261.9s
Building: 262.0s
Building: 262.1s
Building: 262.2s
Building: 262.3s
Building: 262.4s
Building: 262.5s
Building: 262.7s
Building: 262.8s
Building: 262.9s
Building: 263.0s
Building: 263.1s
Building: 263.2s
Building: 263.3s
Building: 263.4s
Building: 263.5s
Building: 263.6s
Building: 263.8s
Building: 263.9s
Building: 264.0s
Building: 264.1s
Building: 264.2s
Building: 264.3s
Building: 264.4s
Building: 264.5s
Building: 264.6s
Building: 264.7s
Building: 264.8s
Building: 264.9s
Building: 265.0s
Building: 265.2s
Building: 265.3s
Building: 265.4s
Building: 265.5s
Building: 265.6s
Building: 265.7s
Building: 265.8s
Building: 265.9s
Building: 266.0s
Building: 266.1s
Building: 266.2s
Building: 266.3s
Building: 266.4s
Building: 266.6s
Building: 266.7s
Building: 266.8s
Building: 266.9s
Building: 267.0s
Building: 267.1s
Building: 267.2s
Building: 267.3s
Building: 267.4s
Building: 267.5s
Building: 267.6s
Building: 267.7s
Building: 267.8s
Building: 268.0s
Building: 268.1s
Building: 268.2s
Building: 268.3s
Building: 268.4s
Building: 268.5s
Building: 268.6s
Building: 268.7s
Building: 268.8s
Building: 268.9s
Building: 269.0s
Building: 269.1s
Building: 269.2s
Building: 269.4s
Building: 269.5s
Building: 269.6s
Building: 269.7s
Building: 269.8s
Building: 269.9s
Building: 270.0s
Building: 270.1s
Building: 270.2s
Building: 270.3s
Building: 270.4s
Building: 270.5s
Building: 270.7s
Building: 270.8s
Building: 270.9s
Building: 271.0s
Building: 271.1s
Building: 271.2s
Building: 271.3s
Building: 271.4s
Building: 271.5s
Building: 271.6s
Building: 271.8s
Building: 271.9s
Building: 272.0s
Building: 272.1s
Building: 272.2s
Building: 272.3s
Building: 272.4s
Building: 272.5s
Building: 272.6s
Building: 272.7s
Building: 272.9s
Building: 273.0s
Building: 273.1s
Building: 273.2s
Building: 273.3s
Building: 273.4s
Building: 273.5s
Building: 273.6s
Building: 273.7s
Building: 273.8s
Building: 273.9s
Building: 274.1s
Building: 274.2s
Building: 274.3s
Building: 274.4s
Building: 274.5s
Building: 274.6s
Building: 274.7s
Building: 274.8s
Building: 274.9s
Building: 275.0s
Building: 275.2s
Building: 275.3s
Building: 275.4s
Building: 275.5s
Building: 275.6s
Building: 275.7s
Building: 275.8s
Building: 275.9s
Building: 276.0s
Building: 276.1s
Building: 276.2s
Building: 276.3s
Building: 276.5s
Building: 276.6s
Building: 276.7s
Building: 276.8s
Building: 276.9s
Building: 277.0s
Building: 277.1s
Building: 277.2s
Building: 277.3s
Building: 277.4s
Building: 277.5s
Building: 277.7s
Building: 277.8s
Building: 277.9s
Building: 278.0s
Building: 278.1s
Building: 278.2s
Building: 278.3s
Building: 278.4s
Building: 278.5s
Building: 278.6s
Building: 278.7s
Building: 278.9s
Building: 279.0s
Building: 279.1s
Building: 279.2s
Building: 279.3s
Building: 279.4s
Building: 279.5s
Building: 279.6s
Building: 279.7s
Building: 279.8s
Building: 279.9s
Building: 280.1s
Building: 280.2s
Building: 280.3s
Building: 280.4s
Building: 280.5s
Building: 280.6s
Building: 280.7s
Building: 280.8s
Building: 280.9s
Building: 281.0s
Building: 281.2s
Building: 281.3s
Building: 281.4s
Building: 281.5s
Building: 281.6s
Building: 281.7s
Building: 281.8s
Building: 281.9s
Building: 282.0s
Building: 282.1s
Building: 282.2s
Building: 282.4s
Building: 282.5s
Building: 282.6s
Building: 282.7s
Building: 282.8s
Building: 282.9s
Building: 283.0s
Building: 283.1s
Building: 283.2s
Building: 283.4s
Building: 283.5s
Building: 283.6s
Building: 283.7s
Building: 283.8s
Building: 283.9s
Building: 284.0s
Building: 284.1s
Building: 284.2s
Building: 284.3s
Building: 284.5s
Building: 284.6s
Building: 284.7s
Building: 284.8s
Building: 284.9s
Building: 285.0s
Building: 285.1s
Building: 285.2s
Building: 285.3s
Building: 285.4s
Building: 285.5s
Building: 285.7s
Building: 285.8s
Building: 285.9s
Building: 286.0s
Building: 286.1s
Building: 286.2s
Building: 286.3s
Building: 286.4s
Building: 286.5s
Building: 286.6s
Building: 286.7s
Building: 286.9s
Building: 287.0s
Building: 287.1s
Building: 287.2s
Building: 287.3s
Building: 287.4s
Building: 287.5s
Building: 287.6s
Building: 287.7s
Building: 287.8s
Building: 288.0s
Building: 288.1s
Building: 288.2s
Building: 288.3s
Building: 288.4s
Building: 288.5s
Building: 288.6s
Building: 288.7s
Building: 288.8s
Building: 288.9s
Building: 289.0s
Building: 289.1s
Building: 289.3s
Building: 289.4s
Building: 289.5s
Building: 289.6s
Building: 289.7s
Building: 289.8s
Building: 289.9s
Building: 290.0s
Building: 290.1s
Building: 290.2s
Building: 290.3s
Building: 290.4s
Building: 290.5s
Building: 290.6s
Building: 290.7s
Building: 290.8s
Building: 290.9s
Building: 291.0s
Building: 291.1s
Building: 291.3s
Building: 291.4s
Building: 291.5s
Building: 291.6s
Building: 291.7s
Building: 291.8s
Building: 291.9s
Building: 292.0s
Building: 292.1s
Building: 292.2s
Building: 292.3s
Building: 292.5s
Building: 292.6s
Building: 292.7s
Building: 292.8s
Building: 292.9s
Building: 293.0s
Building: 293.1s
Building: 293.2s
Building: 293.3s
Building: 293.4s
Building: 293.5s
Building: 293.7s
Building: 293.8s
Building: 293.9s
Building: 294.0s
Building: 294.1s
Building: 294.2s
Building: 294.3s
Building: 294.4s
Building: 294.5s
Building: 294.6s
Building: 294.7s
Building: 294.8s
Building: 294.9s
Building: 295.0s
Building: 295.2s
Building: 295.3s
Building: 295.4s
Building: 295.5s
Building: 295.6s
Building: 295.7s
Building: 295.8s
Building: 295.9s
Building: 296.0s
Building: 296.1s
Building: 296.2s
Building: 296.3s
Building: 296.4s
Building: 296.5s
Building: 296.7s
Building: 296.8s
Building: 296.9s
Building: 297.0s
Building: 297.1s
Building: 297.2s
Building: 297.3s
Building: 297.4s
Building: 297.5s
Building: 297.6s
Building: 297.7s
Building: 297.8s
Building: 298.0s
Building: 298.1s
Building: 298.2s
Building: 298.3s
Building: 298.4s
Building: 298.5s
Building: 298.6s
Building: 298.7s
Building: 298.8s
Building: 298.9s
Building: 299.0s
Building: 299.2s
Building: 299.3s
Building: 299.4s
Building: 299.5s
Building: 299.6s
Building: 299.7s
Building: 299.8s
Building: 299.9s
Building: 300.0s
Building: 300.1s
Building: 300.2s
Building: 300.4s
Building: 300.5s
---------------------------------------------------------------------------
TimeoutError                              Traceback (most recent call last)
/tmp/ipykernel_1299/1307802918.py in <module>
----> 1 cultivar_poisson_model = stan.build(cultivar_poisson_model_code, data=stan_data)

~/.local/share/virtualenvs/sameersoi.com-nJq6qf3l/lib/python3.7/site-packages/stan/model.py in build(program_code, data, random_seed)
    510 
    511     try:
--> 512         return asyncio.run(go())
    513     except KeyboardInterrupt:
    514         return  # type: ignore

~/.local/share/virtualenvs/sameersoi.com-nJq6qf3l/lib/python3.7/site-packages/nest_asyncio.py in run(future, debug)
     30         loop = asyncio.get_event_loop()
     31         loop.set_debug(debug)
---> 32         return loop.run_until_complete(future)
     33 
     34     if sys.version_info >= (3, 6, 0):

~/.local/share/virtualenvs/sameersoi.com-nJq6qf3l/lib/python3.7/site-packages/nest_asyncio.py in run_until_complete(self, future)
     68                 raise RuntimeError(
     69                     'Event loop stopped before Future completed.')
---> 70             return f.result()
     71 
     72     def _run_once(self):

~/.pyenv/versions/3.7.6/lib/python3.7/asyncio/futures.py in result(self)
    179         self.__log_traceback = False
    180         if self._exception is not None:
--> 181             raise self._exception
    182         return self._result
    183 

~/.pyenv/versions/3.7.6/lib/python3.7/asyncio/tasks.py in __step(***failed resolving arguments***)
    247                 # We use the `send` method directly, because coroutines
    248                 # don't have `__iter__` and `__next__` methods.
--> 249                 result = coro.send(None)
    250             else:
    251                 result = coro.throw(exc)

~/.local/share/virtualenvs/sameersoi.com-nJq6qf3l/lib/python3.7/site-packages/stan/model.py in go()
    474             # now that httpstan has released stderr, we can use error_output again
    475             building_output = io.section().error_output
--> 476             resp = task.result()
    477 
    478             if resp.status != 201:

~/.pyenv/versions/3.7.6/lib/python3.7/asyncio/futures.py in result(self)
    179         self.__log_traceback = False
    180         if self._exception is not None:
--> 181             raise self._exception
    182         return self._result
    183 

~/.pyenv/versions/3.7.6/lib/python3.7/asyncio/tasks.py in __step(***failed resolving arguments***)
    249                 result = coro.send(None)
    250             else:
--> 251                 result = coro.throw(exc)
    252         except StopIteration as exc:
    253             if self._must_cancel:

~/.local/share/virtualenvs/sameersoi.com-nJq6qf3l/lib/python3.7/site-packages/stan/common.py in post(self, path, json)
     48 
     49     async def post(self, path: str, json: dict) -> HTTPResponse:
---> 50         async with self.session.post(f"{self.base_url}{path}", json=json) as resp:
     51             return HTTPResponse(status=resp.status, content=await resp.read())
     52 

~/.local/share/virtualenvs/sameersoi.com-nJq6qf3l/lib/python3.7/site-packages/aiohttp/client.py in __aenter__(self)
   1115 
   1116     async def __aenter__(self) -> _RetType:
-> 1117         self._resp = await self._coro
   1118         return self._resp
   1119 

~/.local/share/virtualenvs/sameersoi.com-nJq6qf3l/lib/python3.7/site-packages/aiohttp/client.py in _request(self, method, str_or_url, params, data, json, cookies, headers, skip_auto_headers, auth, allow_redirects, max_redirects, compress, chunked, expect100, raise_for_status, read_until_eof, proxy, proxy_auth, timeout, verify_ssl, fingerprint, ssl_context, ssl, proxy_headers, trace_request_ctx, read_bufsize)
    542                             resp = await req.send(conn)
    543                             try:
--> 544                                 await resp.start(conn)
    545                             except BaseException:
    546                                 resp.close()

~/.local/share/virtualenvs/sameersoi.com-nJq6qf3l/lib/python3.7/site-packages/aiohttp/client_reqrep.py in start(self, connection)
    903                 if self._continue is not None:
    904                     set_result(self._continue, True)
--> 905                     self._continue = None
    906 
    907         # payload eof handler

~/.local/share/virtualenvs/sameersoi.com-nJq6qf3l/lib/python3.7/site-packages/aiohttp/helpers.py in __exit__(self, exc_type, exc_val, exc_tb)
    654 
    655         if exc_type is asyncio.CancelledError and self._cancelled:
--> 656             raise asyncio.TimeoutError from None
    657         return None
    658 

TimeoutError: 
In [ ]:
 
In [151]:
cultivar_poisson_model_fit = cultivar_poisson_model.sample(num_chains=1)
Sampling:   0%
Sampling:   0% (1/2000)
Sampling:   5% (100/2000)
Sampling:  10% (200/2000)
Sampling:  15% (300/2000)
Sampling:  20% (400/2000)
Sampling:  25% (500/2000)
Sampling:  30% (600/2000)
Sampling:  35% (700/2000)
Sampling:  40% (800/2000)
Sampling:  45% (900/2000)
Sampling:  50% (1001/2000)
Sampling:  55% (1100/2000)
Sampling:  60% (1200/2000)
Sampling:  65% (1300/2000)
Sampling:  70% (1400/2000)
Sampling:  75% (1500/2000)
Sampling:  80% (1600/2000)
Sampling:  85% (1700/2000)
Sampling:  90% (1800/2000)
Sampling:  95% (1900/2000)
Sampling: 100% (2000/2000)
Sampling: 100% (2000/2000), done.
Messages received during sampling:
  Gradient evaluation took 0.000543 seconds
  1000 transitions using 10 leapfrog steps per transition would take 5.43 seconds.
  Adjust your expectations accordingly!
In [141]:
cultivar_poisson_post_params = {param: cultivar_poisson_model_fit[param].T for param in ("mu_samp", "mu_gene", "mu_cultivar", "sigma_cultivar")}
In [144]:
plt.hist(cultivar_poisson_post_params["sigma_cultivar"])
Out[144]:
(array([ 71., 190., 313., 206., 118.,  67.,  15.,  10.,   5.,   5.]),
 array([0.15453388, 0.17721676, 0.19989963, 0.22258251, 0.24526538,
        0.26794826, 0.29063113, 0.31331401, 0.33599688, 0.35867976,
        0.38136264]),
 <BarContainer object of 10 artists>)
In [130]:
plt.figure(figsize=(10, 6))

plt.scatter(np.exp(cultivar_poisson_post_params["mu_samp"]).mean(axis=0), np.exp(cultivar_poisson_post_params["mu_samp"]).mean(axis=0))
plt.plot(np.linspace(0.5, 2.75, 20), np.linspace(0.5, 2.75, 20), color="red")
plt.grid(linestyle="--", color="lightgray", alpha=0.5)
In [119]:
pw_corr_diff_post_pred_check = sample_basic_poisson_post_pred(calc_pw_corr_diff, cultivar_poisson_post_params, stan_data["num_genes"], stan_data["num_samps"])
In [120]:
plt.figure(figsize=(10, 6))

plt.hist(pw_corr_diff_post_pred_check.flatten(), bins=30, density=True, label="posterior predictive check")
plt.hist(calc_pw_corr_diff(rnaseq_df[cols].values), density=True, alpha=0.5, label="observed data")
plt.grid(linestyle="--", color="lightgray", alpha=0.5)
plt.legend();
By @Sameer Soi in
Tags : #genomics,