diff --git a/.gitattributes b/.gitattributes index a6344aac8c09253b3b630fb776ae94478aa0275b..212c21d6c94a3adda0a0bc2dd800f72d6e422016 100644 --- a/.gitattributes +++ b/.gitattributes @@ -33,3 +33,10 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text *.zst filter=lfs diff=lfs merge=lfs -text *tfevents* filter=lfs diff=lfs merge=lfs -text +*.vocab filter=lfs diff=lfs merge=lfs -text +texts/*.txt filter=lfs diff=lfs merge=lfs -text +*.arpa* filter=lfs diff=lfs merge=lfs -text +kenlm/*.bin filter=lfs diff=lfs merge=lfs -text +kenlm/*.arpa filter=lfs diff=lfs merge=lfs -text +samples/*.jsonl filter=lfs diff=lfs merge=lfs -text +*.jsonl filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..9bbb8ec2cc9ba27a85312ab631b344968a13e606 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +tmp/ +__pycache__/ +*.pyc +.ipynb_checkpoints + + +samples/restricted* +samples/*.json* +kenlm/wikipedia/* +!kenlm/wikipedia/.keep +kenlm/harmful/* +!kenlm/harmful/.keep +spm/wikipedia/* +!spm/wikipedia/.keep +spm/*.txt +texts/* +!texts/.keep \ No newline at end of file diff --git a/README.md b/README.md index 154df8298fab5ecf322016157858e08cd1bccbe1..9ddeb9ef308bb6658c810301d89adbbc4cd1e764 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,39 @@ --- license: apache-2.0 --- + +# Perplexity tools + +## 1. Create samples from `clean_json_3` sources + +Between 1k and 1M documents. Read [samples/README.md](./samples/README.md). Output files must be prefixed by `doc_type` and suffixed by language code (2 letters). For example: + +```bash +$ cat /nfsmounts/datastore/ncc_corpus/mimir/jsonl_2/nrk/nrk-articles.jsonl | shuf -n 100000 > samples/restricted-newspapers_nrk_no.json +``` + +## 2. Create the perplexity scores for each file + +Example of how to create scores only for `doc_type` `restricted-newspapers_*` samples: + +```bash +$ ls samples/restricted-newspapers_* | parallel --lb --jobs 5 python samples_scores.py {} --output_path scores/ --jobs 15 +``` + +## 3. Create the quartiles CSV needed for segmenting and downsamplig + +The different `doc_type`s will be grouped together. By passing the flag `--group_by_prefix_lang`, the grouping will happen on the pair `doc_type` prefix and language code, e.g., `wikipedia_en`. + +Different downsampling ratios can be specified by using the `--sampling_ratio_per_lang` flag. For `mimir-base`, the downsampling by language is defined as follows: `"da:0.23,en:0.21,sv:0.08,is:0.50"`. + +```bash +$ python samples_quartiles.py scores/ --group_by_prefix_lang --sampling_ratio_per_lang "da:0.23,en:0.21,sv:0.08,is:0.50" --output_file csv/base-perplexity_quartiles_sampling.csv +``` + +For `mimir-extended`, the downsampling by language is defined as follows: `"da:0.43,en:0.81,sv:0.15,code:0.62"`. + +```bash +$ python samples_quartiles.py scores/ --group_by_prefix_lang --sampling_ratio_per_lang "da:0.43,en:0.81,sv:0.15,code:0.62" --output_file csv/extended-perplexity_quartiles_sampling.csv --overwrite_prefix_lang "starcoder_en:starcode_code" +``` + +More information in the [spreadsheet](https://docs.google.com/spreadsheets/d/108oGVVN-Ml-TDN59UXR96oeBBt2FbgT81zt8_1y9PUw/edit?usp=sharing). \ No newline at end of file diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/csv/base-perplexity_quartiles_sampling.csv b/csv/base-perplexity_quartiles_sampling.csv new file mode 100644 index 0000000000000000000000000000000000000000..16602387836aa08b82dd2eb0e5e60f233d06eb91 --- /dev/null +++ b/csv/base-perplexity_quartiles_sampling.csv @@ -0,0 +1,33 @@ +doc_type,model,language,reject,bad,medium,good,norm,mean,std +books,books,no,542.15,301.25,219.3,165.12,0.0032422660862847633,208.18464621605895,68.02897458931068 +culturax,wikipedia,nn,1113.2,753.4,559.9,387.7,0.001172357337862289,487.27059437715525,185.90322713836343 +culturax,wikipedia,sv,1118.6,772.2,606.9,479.8,0.01968171485234145,580.0945047395821,142.99911605358275 +culturax,wikipedia,da,1012.9,648.2,503.3,397.98,0.007997295965244292,488.615463864415,124.17368632962524 +digimanus,wikipedia,no,1991.88,1226.65,989.1,830.35,0.0011146154086008851,974.7133669943673,209.08555530030617 +culturax,wikipedia,no,1073.1,691.1,538.2,430.0,0.0017538216816248486,523.6960713940705,130.62730440702228 +culturax,wikipedia,is,1420.0,884.5,720.2,594.5,0.0030935154995326906,693.7606785221377,147.6241796866134 +evalueringsrapport,maalfrid,no,268.25,163.5,127.8,98.3,0.006540788722418088,117.29318501940242,34.47568292096079 +hplt,wikipedia,nn,1539.1,980.6,772.7,627.5,0.0012826369023540814,752.0725635933572,179.13196906762977 +lovdata,maalfrid,no,457.9,162.9,84.6,41.6,0.0038894207845140477,96.06375056993284,58.30277337274196 +maalfrid,maalfrid,no,686.5,286.9,164.8,87.3,0.0022814356724527207,164.0258389923656,101.07016579025363 +hplt,wikipedia,da,1445.5,829.3,616.3,493.5,0.00597386636355673,630.7049612170936,168.77191092534918 +book,books,no,636.48,302.58,187.4,67.0,0.002034229155801576,158.1210630456195,109.45691866057511 +hplt,wikipedia,sv,1398.0,910.9,715.8,578.5,0.0173199443667263,698.8065459625257,165.03293101814995 +hplt,wikipedia,no,1589.0,880.7,668.5,532.6,0.0013206924407238364,671.3073940020074,174.52833317000255 +newspapers,newspapers,nn,1685.4,1221.9,1005.4,825.2,0.0011282397163826917,951.0683339330576,197.39448542294457 +newspaper,newspapers,no,2308.6,792.3,475.2,307.9,0.0009454270671058767,526.1389696700705,244.38110894007406 +parlamint,maalfrid,no,129.23,104.0,93.8,84.6,0.02105587174354365,89.24246433500929,10.099393230392014 +newspapers,newspapers,no,782.3,466.7,336.0,243.5,0.002096701749929567,326.7656126928853,108.47162732564873 +wikipedia,wikipedia,da,1226.31,470.7,278.7,127.0,0.006116042100206995,272.5462428872027,159.55477781562297 +wikipedia,wikipedia,is,1893.3,740.7,449.1,174.5,0.001640993616891793,429.6854374438017,283.9768832443661 +wikipedia,wikipedia,nn,1159.86,494.45,283.1,123.6,0.0013200962342698906,280.91195392289364,167.82742834163992 +wikipedia,wikipedia,no,2058.62,612.2,324.6,139.3,0.0009966961122328344,363.387061861549,229.2323512781706 +slimpajama,wikipedia,en,2259.2,756.5,534.4,418.5,0.006212514831977225,569.5492667529695,179.9279253054439 +wikipedia,wikipedia,sv,1586.56,521.5,304.0,165.4,0.016951427796527165,325.8191384990417,163.13795554088844 +wikipedia,wikipedia,en,1815.4,671.6,455.7,331.2,0.006112968939492834,470.655891042871,184.96531992400435 +hplt,wikipedia,is,2310.06,1484.7,1160.3,921.3,0.001632796440658896,1119.008609637535,278.2396677657607 +pg19,wikipedia,en,865.84,540.3,473.2,419.1,0.017132607020012576,460.9763713901977,63.76307180686858 +starcoder,wikipedia,en,6898.5,2724.5,1603.4,972.4,0.0012712203723443047,1734.1527299358695,858.6110807589087 +slimpajama,wikipedia,no,2259.2,756.5,534.4,418.5,0.006212514831977225,569.5492667529695,179.9279253054439 +starcoder,wikipedia,no,6898.5,2724.5,1603.4,972.4,0.0012712203723443047,1734.1527299358695,858.6110807589087 +pg19,wikipedia,no,865.84,540.3,473.2,419.1,0.017132607020012576,460.9763713901977,63.76307180686858 \ No newline at end of file diff --git a/csv/extended-perplexity_quartiles_sampling.csv b/csv/extended-perplexity_quartiles_sampling.csv new file mode 100644 index 0000000000000000000000000000000000000000..438364d47d9618847a1cd42e8d6f54704995226c --- /dev/null +++ b/csv/extended-perplexity_quartiles_sampling.csv @@ -0,0 +1,37 @@ +doc_type,model,language,reject,bad,medium,good,norm,mean,std +books,books,no,542.15,301.25,219.3,165.12,0.0032422660862847633,208.18464621605895,68.02897458931068 +culturax,wikipedia,nn,1113.2,753.4,559.9,387.7,0.001172357337862289,487.27059437715525,185.90322713836343 +culturax,wikipedia,sv,1118.6,772.2,606.9,479.8,0.01049691458791544,580.0945047395821,142.99911605358275 +culturax,wikipedia,da,1012.9,648.2,503.3,397.98,0.004277623423270203,488.615463864415,124.17368632962524 +digimanus,wikipedia,no,1991.88,1226.65,989.1,830.35,0.0011146154086008851,974.7133669943673,209.08555530030617 +culturax,wikipedia,no,1073.1,691.1,538.2,430.0,0.0017538216816248486,523.6960713940705,130.62730440702228 +culturax,wikipedia,is,1420.0,884.5,720.2,594.5,0.0015467577497663453,693.7606785221377,147.6241796866134 +evalueringsrapport,maalfrid,no,268.25,163.5,127.8,98.3,0.006540788722418088,117.29318501940242,34.47568292096079 +hplt,wikipedia,nn,1539.1,980.6,772.7,627.5,0.0012826369023540814,752.0725635933572,179.13196906762977 +lovdata,maalfrid,no,457.9,162.9,84.6,41.6,0.0038894207845140477,96.06375056993284,58.30277337274196 +maalfrid,maalfrid,no,686.5,286.9,164.8,87.3,0.0022814356724527207,164.0258389923656,101.07016579025363 +hplt,wikipedia,da,1445.5,829.3,616.3,493.5,0.0031953238688791816,630.7049612170936,168.77191092534918 +book,books,no,636.48,302.58,187.4,67.0,0.002034229155801576,158.1210630456195,109.45691866057511 +hplt,wikipedia,sv,1398.0,910.9,715.8,578.5,0.009237303662254026,698.8065459625257,165.03293101814995 +hplt,wikipedia,no,1589.0,880.7,668.5,532.6,0.0013206924407238364,671.3073940020074,174.52833317000255 +newspapers,newspapers,nn,1685.4,1221.9,1005.4,825.2,0.0011282397163826917,951.0683339330576,197.39448542294457 +newspaper,newspapers,no,2308.6,792.3,475.2,307.9,0.0009454270671058767,526.1389696700705,244.38110894007406 +parlamint,maalfrid,no,129.23,104.0,93.8,84.6,0.02105587174354365,89.24246433500929,10.099393230392014 +newspapers,newspapers,no,782.3,466.7,336.0,243.5,0.002096701749929567,326.7656126928853,108.47162732564873 +wikipedia,wikipedia,da,1226.31,470.7,278.7,127.0,0.003271371355924672,272.5462428872027,159.55477781562297 +wikipedia,wikipedia,is,1893.3,740.7,449.1,174.5,0.0008204968084458965,429.6854374438017,283.9768832443661 +wikipedia,wikipedia,nn,1159.86,494.45,283.1,123.6,0.0013200962342698906,280.91195392289364,167.82742834163992 +wikipedia,wikipedia,no,2058.62,612.2,324.6,139.3,0.0009966961122328344,363.387061861549,229.2323512781706 +slimpajama,wikipedia,en,2259.2,756.5,534.4,418.5,0.0016106519934755766,569.5492667529695,179.9279253054439 +wikipedia,wikipedia,sv,1586.56,521.5,304.0,165.4,0.009040761491481156,325.8191384990417,163.13795554088844 +wikipedia,wikipedia,en,1815.4,671.6,455.7,331.2,0.0015848437991277716,470.655891042871,184.96531992400435 +hplt,wikipedia,is,2310.06,1484.7,1160.3,921.3,0.000816398220329448,1119.008609637535,278.2396677657607 +pg19,wikipedia,en,865.84,540.3,473.2,419.1,0.004441787005188445,460.9763713901977,63.76307180686858 +starcoder,wikipedia,code,6898.5,2724.5,1603.4,972.4,0.0004305746422456516,1734.1527299358695,858.6110807589087 +restricted-newspapers,newspapers,no,847.7,451.7,328.5,246.5,0.002248478883149024,325.7155732204811,102.50329419364242 +restricted-books,books,no,636.88,375.5,282.8,216.8,0.0028282201514638694,272.19155841413874,81.36986186892527 +restricted-book,books,no,569.8,365.9,281.7,218.6,0.0030429861768025046,267.8089800338991,74.79791679414626 +slimpajama,wikipedia,no,2259.2,756.5,534.4,418.5,0.0016106519934755766,569.5492667529695,179.9279253054439 +starcoder,wikipedia,no,6898.5,2724.5,1603.4,972.4,0.0004305746422456516,1734.1527299358695,858.6110807589087 +starcoder,wikipedia,code,6898.5,2724.5,1603.4,972.4,0.0004305746422456516,1734.1527299358695,858.6110807589087 +pg19,wikipedia,no,865.84,540.3,473.2,419.1,0.004441787005188445,460.9763713901977,63.76307180686858 diff --git a/download_all.sh b/download_all.sh new file mode 100644 index 0000000000000000000000000000000000000000..8e73bb5a79d8082ed9f9b405e3e81e1d5fc840b4 --- /dev/null +++ b/download_all.sh @@ -0,0 +1,40 @@ +mkdir kenlm +mv *arpa* kenlm/ + +mkdir spm +mv *.model spm/ +mv *.vocab spm/ + +mkdir kenlm/harmful +wget -O kenlm/harmful/da.arpa https://huggingface.co/oscar-corpus/harmful-kenlms/resolve/main/da.arpa +wget -O kenlm/harmful/da.bin https://huggingface.co/oscar-corpus/harmful-kenlms/resolve/main/da.binary +wget -O kenlm/harmful/sv.arpa https://huggingface.co/oscar-corpus/harmful-kenlms/resolve/main/sv.arpa +wget -O kenlm/harmful/sv.bin https://huggingface.co/oscar-corpus/harmful-kenlms/resolve/main/sv.binary +wget -O kenlm/harmful/is.arpa https://huggingface.co/oscar-corpus/harmful-kenlms/resolve/main/is.arpa +wget -O kenlm/harmful/is.bin https://huggingface.co/oscar-corpus/harmful-kenlms/resolve/main/is.binary +wget -O kenlm/harmful/no.arpa https://huggingface.co/oscar-corpus/harmful-kenlms/resolve/main/no.arpa +wget -O kenlm/harmful/no.bin https://huggingface.co/oscar-corpus/harmful-kenlms/resolve/main/no.binary +wget -O kenlm/harmful/en.arpa https://huggingface.co/oscar-corpus/harmful-kenlms/resolve/main/en.arpa +wget -O kenlm/harmful/en.bin https://huggingface.co/oscar-corpus/harmful-kenlms/resolve/main/en.binary + +mkdir kenlm/wikipedia +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O kenlm/wikipedia/da.arpa.bin https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/da.arpa.bin +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O kenlm/wikipedia/sv.arpa.bin https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/sv.arpa.bin +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O kenlm/wikipedia/is.arpa.bin https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/is.arpa.bin +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O kenlm/wikipedia/no.arpa.bin https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/no.arpa.bin +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O kenlm/wikipedia/nn.arpa.bin https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/nn.arpa.bin +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O kenlm/wikipedia/en.arpa.bin https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/en.arpa.bin + +mkdir spm/wikipedia +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O spm/wikipedia/da.sp.model https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/da.sp.model +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O spm/wikipedia/sv.sp.model https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/sv.sp.model +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O spm/wikipedia/is.sp.model https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/is.sp.model +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O spm/wikipedia/no.sp.model https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/no.sp.model +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O spm/wikipedia/nn.sp.model https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/nn.sp.model +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O spm/wikipedia/en.sp.model https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/en.sp.model +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O spm/wikipedia/da.sp.vocab https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/da.sp.vocab +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O spm/wikipedia/sv.sp.vocab https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/sv.sp.vocab +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O spm/wikipedia/is.sp.vocab https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/is.sp.vocab +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O spm/wikipedia/no.sp.vocab https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/no.sp.vocab +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O spm/wikipedia/nn.sp.vocab https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/nn.sp.vocab +wget --header="Authorization: Bearer $(cat $HOME/.cache/huggingface/token)" -O spm/wikipedia/en.sp.vocab https://huggingface.co/uonlp/kenlm/resolve/main/wikipedia_20230501/en.sp.vocab diff --git a/histograms.py b/histograms.py new file mode 100644 index 0000000000000000000000000000000000000000..4a4943df6b8b3de09460a4debd4622b803a780c0 --- /dev/null +++ b/histograms.py @@ -0,0 +1,104 @@ +import pandas as pd +import matplotlib.pyplot as plt +import seaborn as sns +import json +import argparse +import os +from scipy.stats import gaussian_kde +import numpy as np + +def get_model_for(doc_type: str, override_model: str) -> str: + """Returns model type or the override model if specified""" + if override_model: + return override_model + doc_type = doc_type.split("_", 1)[0] + if doc_type in ("book", "books", "pg19"): + return "books_pp" + elif doc_type in ("culturax", "slimpajama", "wikipedia", "digimanus"): + return "wikipedia_pp" + elif doc_type in ("newspaper", "newspapers"): + return "newspapers_pp" + elif doc_type in ("evalueringsrapport", "lovdata", "maalfrid", "parlamint"): + return "maalfrid_pp" + else: + return "wikipedia_pp" + +def load_data(files): + all_data = [] + for file_path in files: + with open(file_path, 'r') as file: + lines = file.readlines() + data = [json.loads(line) for line in lines] + all_data.extend(data) + return pd.DataFrame(all_data) + +def plot_histograms(files, output_folder, xlim, override_model): + df = load_data(files) + doc_types = df['doctype'].unique() + fig, axes = plt.subplots(len(doc_types), 1, figsize=(12, 4 * len(doc_types)), squeeze=False) + + # Set up a color palette + palette = sns.color_palette("husl", len(doc_types)) + + for i, doc_type in enumerate(doc_types): + ax = axes[i, 0] + group = df[df['doctype'] == doc_type] + languages = group['lang'].unique() + + # Prepare a unique color for each language within the document type + colors = sns.color_palette("husl", len(languages)) + + for j, lang in enumerate(languages): + lang_group = group[group['lang'] == lang] + perplexity_model = get_model_for(doc_type, override_model) + perplexity_values = lang_group['perplexities'].apply(lambda x: x[perplexity_model]).values + + series_color = colors[j] + + # Plot histogram with lighter color + sns.histplot(perplexity_values, ax=ax, color=series_color, alpha=0.3, element="step", fill=True, stat="density", binwidth=30) + + # Plot KDE without filling + sns.kdeplot(perplexity_values, ax=ax, bw_adjust=2, color=series_color, label=f"{lang} - {doc_type} ({perplexity_model})", linewidth=1.5) + + + kde = gaussian_kde(perplexity_values) + x_range = np.linspace(0, xlim, 1000) + y_values = kde.evaluate(x_range) + + quartiles = np.quantile(perplexity_values, [0.25, 0.5, 0.75]) + quartile_labels = ["Q1", "Q2", "Q3"] + for q, quartile in enumerate(quartiles): + idx = (np.abs(x_range-quartile)).argmin() + y_quartile = y_values[idx] + ax.plot([quartile, quartile], [0, y_quartile], color=series_color, linestyle='--', linewidth=1) + ax.text(quartile, y_quartile, f'{quartile_labels[q]}: {quartile:.2f}', verticalalignment='bottom', horizontalalignment='right', color=series_color, fontsize=6) + + ax.set_title(f'Document Type: {doc_type} ({perplexity_model})') + ax.set_xlabel('Perplexity Value') + ax.set_ylabel('Density') + ax.legend() + ax.set_xlim(left=0, right=xlim) + + plt.tight_layout() + output_filename = os.path.join(output_folder, "all_doc_types_plots.png") + plt.savefig(output_filename, dpi=300) + plt.close(fig) + print(f"All document type plots saved to {output_filename}") + +def main(): + parser = argparse.ArgumentParser(description="Plot histograms from JSON lines files.") + parser.add_argument('files', nargs='+', help="Path to the JSON lines files") + parser.add_argument('-o', '--output_folder', default=".", help="Output folder for the plots") + parser.add_argument('--xlim', type=int, default=2500, help="Maximum x-axis limit for the plots") + parser.add_argument('--model', default="", help="Override the perplexity model for all plots") + + args = parser.parse_args() + + if not os.path.exists(args.output_folder): + os.makedirs(args.output_folder, exist_ok=True) + + plot_histograms(args.files, args.output_folder, args.xlim, args.model) + +if __name__ == "__main__": + main() diff --git a/kenlm/books.norm.arpa.bin b/kenlm/books.norm.arpa.bin new file mode 100644 index 0000000000000000000000000000000000000000..a410aa485fbf0dd8bfd69bae3d4470a822b50f85 --- /dev/null +++ b/kenlm/books.norm.arpa.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc2058f3fe709dcdc9e02c3094d9dba6e1d9e2846e3064fd597b632bdda7424f +size 26787259332 diff --git a/kenlm/books.norm.arpa.zip b/kenlm/books.norm.arpa.zip new file mode 100644 index 0000000000000000000000000000000000000000..69e3d7d09db6d3ebddc0da518d8cb8edefd5d3b5 --- /dev/null +++ b/kenlm/books.norm.arpa.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16934f2f95c19d22bf681552c5b667483e80915a72ed559e954914f492513604 +size 14951532895 diff --git a/kenlm/books.norm.sp.arpa.bin b/kenlm/books.norm.sp.arpa.bin new file mode 100644 index 0000000000000000000000000000000000000000..bb4e9e18b51c2b721d53061daaec76d689e0155a --- /dev/null +++ b/kenlm/books.norm.sp.arpa.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:582210ccef9a44feb2dde5029e3b02986ba3bb50d06152e2850a863fee8df16d +size 27269792294 diff --git a/kenlm/books.norm.sp.arpa.zip b/kenlm/books.norm.sp.arpa.zip new file mode 100644 index 0000000000000000000000000000000000000000..05a3b1c59c36b1225eb044e5b7868c4404250816 --- /dev/null +++ b/kenlm/books.norm.sp.arpa.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c67bb924e8d2e0515037b1aca7c381267e7363d95ae4c5a773ae8517f9c34f81 +size 14081165146 diff --git a/kenlm/harmful/.keep b/kenlm/harmful/.keep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/kenlm/maalfrid.norm.arpa b/kenlm/maalfrid.norm.arpa new file mode 100644 index 0000000000000000000000000000000000000000..3be72a73edd467b7777bd8bb42408754f0a3613e --- /dev/null +++ b/kenlm/maalfrid.norm.arpa @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9964b5a0a25e8d8f352bd85ee3de5cea80cd56cb033f4831c83e450ef42ee9b2 +size 14095675125 diff --git a/kenlm/maalfrid.norm.arpa.bin b/kenlm/maalfrid.norm.arpa.bin new file mode 100644 index 0000000000000000000000000000000000000000..ae65a1c9a5df17c840a7010183ac98e35c93be1e --- /dev/null +++ b/kenlm/maalfrid.norm.arpa.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4468f452cd224c25a7ab125f930692d415ba9a44564b6d8590ae60a697021ff8 +size 6334870758 diff --git a/kenlm/maalfrid.norm.sp.arpa b/kenlm/maalfrid.norm.sp.arpa new file mode 100644 index 0000000000000000000000000000000000000000..6e8a0026876c1a95788a8c33fe10ed1e9277a541 --- /dev/null +++ b/kenlm/maalfrid.norm.sp.arpa @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12acfaf2360adec24e0456c0c9ab2a3199eda397dddb8c6b194ac7376d0811d5 +size 15096276243 diff --git a/kenlm/maalfrid.norm.sp.arpa.bin b/kenlm/maalfrid.norm.sp.arpa.bin new file mode 100644 index 0000000000000000000000000000000000000000..8466cd868b6d9662b46aa16dd60a2212f6277fcf --- /dev/null +++ b/kenlm/maalfrid.norm.sp.arpa.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05f2b5ee9ad6f953bcfb6ed31584706225d8390275fb78b4848b1dd697fbedb6 +size 5938309481 diff --git a/kenlm/newspapers.norm.arpa b/kenlm/newspapers.norm.arpa new file mode 100644 index 0000000000000000000000000000000000000000..77816213c75b7daad86dc45dd4757f0337158b15 --- /dev/null +++ b/kenlm/newspapers.norm.arpa @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d87f6044f5f3b58b94c23e556ef2fef1f2f5cee4f27f0bd81293e6d6bb2579ff +size 2151432996 diff --git a/kenlm/newspapers.norm.arpa.bin b/kenlm/newspapers.norm.arpa.bin new file mode 100644 index 0000000000000000000000000000000000000000..6f8e48a63b793fe813d534afb009f8d0555c727f --- /dev/null +++ b/kenlm/newspapers.norm.arpa.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e63eef20ccd2a4977f1cd314e3d42ec3c04fe68ec5fb3a5ff37e2af64d966c9a +size 1095860943 diff --git a/kenlm/newspapers.norm.sp.arpa b/kenlm/newspapers.norm.sp.arpa new file mode 100644 index 0000000000000000000000000000000000000000..f339371a6ae43ff8c677a29dd600dfdf239993a7 --- /dev/null +++ b/kenlm/newspapers.norm.sp.arpa @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65bb2007e807efcb548f51c18b9c7791606bd11807e292d250051efd4529ee7b +size 2660277943 diff --git a/kenlm/newspapers.norm.sp.arpa.bin b/kenlm/newspapers.norm.sp.arpa.bin new file mode 100644 index 0000000000000000000000000000000000000000..daa71a8aba09e9f5178ea5222637767f0ff2bb8d --- /dev/null +++ b/kenlm/newspapers.norm.sp.arpa.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50a79b25fc03c34278dc2cbb0b91119dfe3ba3d1e6c671b9a81127edf3746a67 +size 1217336194 diff --git a/kenlm/wikipedia/.keep b/kenlm/wikipedia/.keep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/normalization.py b/normalization.py new file mode 100644 index 0000000000000000000000000000000000000000..7f7c16432a0a48a448712328cfdc791e9b32e036 --- /dev/null +++ b/normalization.py @@ -0,0 +1,154 @@ +import argparse +import unicodedata +import re +from tqdm import tqdm + +# Copyright (c) Facebook, Inc. and its affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. +# + +import re +import unicodedata + +PUNCTS = '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~«»' +UNICODE_PUNCT = { + ",": ",", + "。": ".", + "、": ",", + "„": '"', + "”": '"', + "“": '"', + "«": '"', + "»": '"', + "1": '"', + "」": '"', + "「": '"', + "《": '"', + "》": '"', + "´": "'", + "∶": ":", + ":": ":", + "?": "?", + "!": "!", + "(": "(", + ")": ")", + ";": ";", + "–": "-", + "—": " - ", + ".": ". ", + "~": "~", + "’": "'", + "…": "...", + "━": "-", + "〈": "<", + "〉": ">", + "【": "[", + "】": "]", + "%": "%", + "►": "-", + "■": " ", # added for Mimir +} + +UNICODE_PUNCT_RE = re.compile(f"[{''.join(UNICODE_PUNCT.keys())}]") + + +def replace_unicode_punct(text: str) -> str: + return "".join(UNICODE_PUNCT.get(c, c) for c in text) + + +def remove_unicode_punct(text: str) -> str: + """More aggressive version of replace_unicode_punct but also faster.""" + return UNICODE_PUNCT_RE.sub("", text) + + +def strip_accents(line: str) -> str: + """Strips accents from a piece of text.""" + nfd = unicodedata.normalize("NFD", line) + output = [c for c in nfd if unicodedata.category(c) != "Mn"] + if len(output) == line: + return line + return "".join(output) + + +# Build a regex matching all control characters. +NON_PRINTING_CHARS_RE = re.compile( + f"[{''.join(map(chr, list(range(0,32)) + list(range(127,160))))}]" +) +DIGIT_RE = re.compile(r"\d") +PUNCT_OR_NON_PRINTING_CHARS_RE = re.compile( + (UNICODE_PUNCT_RE.pattern + NON_PRINTING_CHARS_RE.pattern).replace("][", "") +) + + +def remove_non_printing_char(text: str) -> str: + return NON_PRINTING_CHARS_RE.sub("", text) + + +def normalize(line: str, accent=True, case=True, numbers=True, punct=1) -> str: + line = line.strip() + if not line: + return line + if case: + line = line.lower() + if accent: + line = strip_accents(line) + if numbers: + line = DIGIT_RE.sub("0", line) + if punct == 1: + line = replace_unicode_punct(line) + elif punct == 2: + line = remove_unicode_punct(line) + line = remove_non_printing_char(line) + return line + + +def slow_normalize_for_dedup(line: str) -> str: + return normalize(line, accent=False, case=True, numbers=True, punct=2) + + +def normalize_for_dedup(line: str) -> str: + line = line.strip() + if not line: + return line + # case + line = line.lower() + # numbers + line = DIGIT_RE.sub("0", line) + line = PUNCT_OR_NON_PRINTING_CHARS_RE.sub("", line) + return line + +## START OF MIMIR CODE +def normalize_text(line): + normalized_line = unicodedata.normalize('NFKC', line).lower() + + # Add a trailing dot if the line does not end with a punctuation mark + normalized_line = normalized_line.rstrip() + if normalized_line and normalized_line[-1] not in PUNCTS: + normalized_line += '.' + + # Replace newline characters with spaces (if any remain) + # normalized_line = re.sub(r'\r\n|\r|\n', ' ', normalized_line) + normalized_line = normalize(normalized_line, accent=False, case=True, numbers=True, punct=1) + return normalized_line + + +def normalize_file(input_file, output_file, cutoff=None): + with (open(output_file, 'w', encoding='utf-8') as f, + open(input_file, 'r', encoding='utf-8') as lines): + for line_count, line in tqdm(enumerate(lines), desc="Processing"): + f.write(normalize_text(line) + "\n") + if cutoff and line_count >= cutoff: + break + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Normalize text file line by line, ensure trailing punctuation, replace newlines with spaces, and show progress.') + parser.add_argument('input_file', type=str, help='Input file path') + parser.add_argument('output_file', type=str, help='Output file path') + parser.add_argument('--cutoff', required=False, type=int, help='Max number of lines to process') + + args = parser.parse_args() + + normalize_file(args.input_file, args.output_file, args.cutoff) diff --git a/notebooks/gaussian_sampling.ipynb b/notebooks/gaussian_sampling.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..f226fc0b1c2a34a9fc3392298b23e99555b55f39 --- /dev/null +++ b/notebooks/gaussian_sampling.ipynb @@ -0,0 +1,2568 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8a3cfa45", + "metadata": {}, + "source": [ + "# Perplexity-based subsampling of a dataset\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "190664d7", + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "import lzma\n", + "import tarfile\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "import matplotlib as mpl\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "#plt.style.use('ggplot')\n", + "#plt.style.use('bmh')\n", + "plt.style.use('fivethirtyeight')\n", + "mpl.rcParams['figure.figsize'] = (14,8)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "931db8d9", + "metadata": {}, + "outputs": [], + "source": [ + "plt.rcParams.update({'font.size': 12})\n", + "\n", + "SMALL_SIZE = 16\n", + "MEDIUM_SIZE = 18\n", + "BIGGER_SIZE = 20\n", + "\n", + "plt.rc('font', size=SMALL_SIZE) # controls default text sizes\n", + "plt.rc('axes', titlesize=SMALL_SIZE) # fontsize of the axes title\n", + "plt.rc('axes', labelsize=MEDIUM_SIZE) # fontsize of the x and y labels\n", + "plt.rc('xtick', labelsize=SMALL_SIZE) # fontsize of the tick labels\n", + "plt.rc('ytick', labelsize=SMALL_SIZE) # fontsize of the tick labels\n", + "plt.rc('legend', fontsize=MEDIUM_SIZE) # legend fontsize\n", + "plt.rc('figure', titlesize=BIGGER_SIZE)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "33cfca52", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import List, Tuple" + ] + }, + { + "cell_type": "markdown", + "id": "44b29018", + "metadata": {}, + "source": [ + "# TL;DR\n", + "\n", + "* **Objetive**: we have a dataset with an arbitrary perplexity distribution. We want to subsample that dataset in a way that we \n", + " - achieve a predefined sampling ratio R \n", + " - increase the share of the dataset having central perplexity distributions.\n", + " We define \"central\" as the perplexities in the two middle quartiles of the original distribution, i.e. interval $[p_{25}$, $p_{75}$]. \n", + " - In concrete terms, given the perplexity values at these quartiles, $X_a$ and $X_b$, we will want to modify the share of those regions from 25% to other values $p_a$ and $p_b$\n", + " \n", + "* **Method**:\n", + " - compute $X_a$ and $X_b$, the perplexity values for $p_{25}$ and $p_{75}$\n", + " - define an initial Gaussian weighting curve as a Gaussian PDF having its $p_{25}$ and $p_{75}$ values in the same $X_a$ and $X_b$ positions as the computed ones\n", + " - compute a histogram of the perplexities\n", + " - use the histogram + initial Gaussian weights to estimate the sampling ratio that would result, and extract from it the normalization factor needed to achieve R\n", + " - modify the paremeters of the initial Gaussian curve by minimizing the error on the desired probabilities $p_a$ and $p_b$\n", + " - subsample the dataset by comparing the perplexity of each sample against the modified normalized Gaussian curve to estimate the probability of retaining it\n", + " \n", + "A final class that implements this procedure is defined in the [PerplexitySubsampler](../subsampler.py) file and it is used in another, [self-contained notebook](gaussian_subsampling.ipynb). The **Development** section in this notebook details the process step by step." + ] + }, + { + "cell_type": "markdown", + "id": "8c9d6270", + "metadata": {}, + "source": [ + "# Development" + ] + }, + { + "cell_type": "markdown", + "id": "79cff218", + "metadata": {}, + "source": [ + "## 1. Data loading \n", + "\n", + "We start by loading the computed perplexity values of the dataset (in this case computed over a 50M random sample)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "visible-acceptance", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "50000000" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = []\n", + "with open(\"../scores/culturax_da.jsonl\") as f:\n", + " for line in f:\n", + " data.append(json.loads(line)[\"perplexities\"][\"wikipedia_pp\"])\n", + "\n", + "data = np.array(data)\n", + "len(data)" + ] + }, + { + "cell_type": "markdown", + "id": "998a6d64", + "metadata": {}, + "source": [ + "Compute quartiles" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "88d8046a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([542497.86733512, 679167.90234057, 998401.07723076])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "qr = np.quantile(data, [0.25, 0.50, 0.75])\n", + "qr" + ] + }, + { + "cell_type": "markdown", + "id": "62c3e90d", + "metadata": {}, + "source": [ + "Plot the distribution, together with its quartiles" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "407c631c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7sAAAIFCAYAAAATLepHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABGjElEQVR4nO3df1RU9b7/8RclcC7qYQgFRBTyYqJgmDlm4Y9cige9V0tsicc8ah4tyzhR2C1/4DKN8gdHK7FrdjDpVKZSiPmjNFxd0qxsnWtaXlx8U0jNc9Qlg5nJD+H7h4c5zvBrQGBmNs/HWi5jz3vPfGb3cWa/+OzPZ3tYLJYqAQAAAABgILc4uwEAAAAAADQ3wi4AAAAAwHAIuwAAAAAAwyHsAgAAAAAMh7ALAAAAADAcwi4AAAAAwHAIuwAAAAAAwyHsAgAAAAAMh7DrxgoKCpzdBLigxvQLX5Op5RrSBK7WHiPwNZn4rEAN9AnYo0/AHn0C9tyxTxB2AQAAAACGQ9gFAAAAABgOYRcAAAAAYDiEXQAAAACA4RB2AQAAAACGQ9gFAAAAABgOYRcAAAAAYDiEXQAAAACA4RB2AQAAAACGQ9gFAAAAABgOYRcAAAAAYDiEXQAAAACA4RB2AQAAAACGQ9gFAAAAABgOYRcAAAAAYDiEXQAAAACA4RB2AQAAAACGQ9gFAAAAABgOYRcAAAAAYDiEXQAyvXXG2U0AAAAAmhVhFwAAAABgOIRdoI1jVBcAAABGRNgF2ij7kGt66wzBFwAAAIZB2AUAAAAAGA5hF2iD6hvBZXQXAAAARkDYBdoYR8IsgRcAAADujrALoFYEXgAAALgzwi4AAAAAwHAIu0AbwmgtAAAA2gqHwm5ubq7Gjh2rO+64QwEBAerTp4+mT5+u/Px8m7rTp09r6tSp6t69u7p166YpU6bo1KlTNZ7PYrEoMTFRPXr0UHBwsB544AF9//33NequXr2qlJQU9erVS0FBQYqNjdWBAwdq1FVWVmrVqlXq27evAgMDFRMTo5ycnFrfS2ZmpsxmswICAjRgwABt2LDBkUMAtEmEYwAAALgrh8JucXGx+vXrp5UrV+rDDz/UokWLlJ+fr9jYWP3444+SpCtXrmjcuHEqKCjQ66+/rnXr1unEiRMaO3asfvnlF+tzVVVVadKkScrNzdWKFSv09ttvq7y8XGPHjtWZM7Yn1omJicrMzNT8+fO1efNmBQYGasKECTpy5IhNXWpqqpYtW6ZHH31UW7duldls1vTp07Vnzx6buszMTCUlJWncuHHKysrSgw8+qOTkZGVkZDTp4AEAAAAAXFM7R4oeeughPfTQQzbb7r77bpnNZuXk5FhDaWFhob755hv16NFDkhQZGam7775bb731lp588klJ0q5du/Tll19q+/btGjp0qCTJbDYrOjpar776qlasWCFJOnr0qLZu3ar09HRNmTJFkhQTE6NBgwbppZde0vvvvy9JOn/+vNasWaOkpCQlJiZKkoYOHaoTJ05o8eLFGjVqlCSpoqJCS5cuVUJCglJSUqx1Z8+eVWpqqqZOnSpPT8+mH0kAAAAAgMto8pzd2267TZLUrt31vLx7926ZzWZr0JWksLAw3XPPPdq1a5d12+7du9WlSxdr0JUkX19fxcXF1ajz9PRUfHy8dVu7du0UHx+vffv2qbS0VNL1S6zLysqUkJBg076JEyfq2LFjKiwslCR9/fXXunDhQo26hIQEXbx4UQcPHmzqoQDcApckAwAAoC1pVNi9du2aysrK9MMPPygpKUmBgYHWEd/8/Hz17t27xj69e/fW8ePHrT/XV3f69GldvnzZWhcaGiofH58adWVlZTpx4oS1ztvb2yZkV9dJsr529fxi+9e2rwNgy/TWGYIyAAAA3I5DlzFXGzFihA4fPixJ6tGjh7Zv367OnTtLuj6v12Qy1djHz89PFovF+nNxcbG6d+9ea510ffGqDh061Pt81c9T/bevr688PDwarJNU4znt6wAjIqwCAACgrWlU2H3jjTf0888/q7CwUGvWrNH48eO1e/duhYaGtlT7XEZBQYGzm1ArV20XnKtmv/Cpte7mnrP5DWil12lLBvzzb44r7NEnYI8+AXv0CdhzxT7Rs2fPOh9rVNjt1auXJGnAgAEaOXKk7rzzTr3yyitavXq1TCaTzQhuNfsR2vrqqh+v/ru22xZV11WPyJpMJpWUlKiqqspmdLe2Oun6yHFQUFCddXWp7yA6S0FBgUu2C85Va7/Yf/Mju+b9PrI80vWmn6ch9OmWwXHFjfj+gD36BOzRJ2DPHftEkxeoMplM6tGjh3XubERERI377krX58pWh+SG6kJCQtShQwdrXVFRka5cuVKjzsvLyzpHNyIiQqWlpTp58mSNOulfAT0i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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "ax.hist(data, bins=1000, range=[0, qr[2]*3]);\n", + "#ax.set_title(\"perplexity for a random sample of mC4-es (P95 of 44M values)\");\n", + "#ax.get_yticklabels().set_fontsize(9)\n", + "for q in qr:\n", + " ax.axvline(q, c='r', lw=1)" + ] + }, + { + "cell_type": "markdown", + "id": "b6b9ffa6", + "metadata": {}, + "source": [ + "## 2. Data subsampling procedure\n", + "\n", + "### 2.1 Overall objective\n" + ] + }, + { + "cell_type": "markdown", + "id": "contained-archives", + "metadata": {}, + "source": [ + "We define three regions in the perplexity distribution:\n", + "1. Low perplexity: the region below the $p_{25}$ percentile\n", + "2. Mid perplexity: the central region between the $p_{25}$ percentile and the $p_{75}$ percentile\n", + "3. High perplexity: the region beyond the $p_{75}$ percentile\n", + "\n", + "The objective is to reshape the dataset so that when subsampled we transfer probability mass from regions [1] and [3] to region [2]\n" + ] + }, + { + "cell_type": "markdown", + "id": "reduced-accreditation", + "metadata": {}, + "source": [ + "We use then two points in the perplexity distribution:\n", + "* $X_a$ is the perplexity value for the $p_{25}$ percentile\n", + "* $X_b$ is the perplexity value for the $p_{75}$ percentile" + ] + }, + { + "cell_type": "markdown", + "id": "decreased-premises", + "metadata": {}, + "source": [ + "### 2.2 Gaussian weighting\n", + "\n", + "With this procedure, we will use a Gaussian curve to extract the weights for subsampling" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "third-backing", + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.stats import norm, uniform" + ] + }, + { + "cell_type": "markdown", + "id": "reported-yemen", + "metadata": {}, + "source": [ + "We now design a normal distribution having a probability distribution so that \n", + "* a certain probability mass (which will be less than the original 25%) is below $X_a$\n", + "* a certain probability mass (which will be less than the original 25%) is beyond $X_b$\n", + "\n", + "By moving probability away from the original $p_{25}$ (i.e. $X_a$) and $p_{75}$ (i.e. $X_b$) perplexities, we are going to achieve our aim of reweighting the dataset decreasing the amount of low and high perplexities" + ] + }, + { + "cell_type": "markdown", + "id": "optional-postage", + "metadata": {}, + "source": [ + "#### parameters of the initial Gaussian curve" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "homeless-garbage", + "metadata": {}, + "outputs": [], + "source": [ + "pa = 0.15 # probability fraction we will want below Xa -- should be less than 0.25\n", + "pb = 0.10 # probability fraction over Xb -- should be less than 0.25" + ] + }, + { + "cell_type": "markdown", + "id": "healthy-species", + "metadata": {}, + "source": [ + "The way of computing the desired normal distribution is by inserting those two values into the Gaussian CDF formula, and deducing from the two equations the values of the Gaussian parameters $\\mu$ and $\\sigma$\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + " \n", + "$ \\phi ( \\frac{X_{a} − \\mu}{\\sigma} ) = p_a $\n", + "\n", + "\n", + "\n", + "$\\Rightarrow$\n", + "\n", + "\n", + "\n", + "$X_{a} − \\mu = \\sigma \\cdot \\phi^{-1}(p_a)$\n", + "\n", + "
\n", + "\n", + "$ \\phi ( \\frac{X_{b} − \\mu}{\\sigma} ) = 1 - p_b $\n", + "\n", + "\n", + " \n", + "$\\Rightarrow$\n", + "\n", + "\n", + " \n", + "$X_{b} − \\mu = \\sigma \\cdot \\phi^{-1}(1 - p_b)$\n", + "\n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "visible-purse", + "metadata": {}, + "outputs": [], + "source": [ + "# Standard deviation\n", + "sdev = (qr[0] - qr[2]) / (norm.ppf(pa) - norm.ppf(1-pb))\n", + "\n", + "# Mean\n", + "mean = qr[0] - norm.ppf(pa)*sdev" + ] + }, + { + "cell_type": "markdown", + "id": "stylish-oregon", + "metadata": {}, + "source": [ + "Let's plot the CDF for the normal distribution we have created" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "alternative-addiction", + "metadata": {}, + "outputs": [], + "source": [ + "x = np.linspace(0, qr[2]+qr[0], 5000)\n", + "y = norm.cdf(x, loc=mean, scale=sdev)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "suspended-worst", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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S6ji2pgAAMCaKJsAAMvLq+B6zwAAwNoomwAAy4ueN8/sCAAAIESUTQCA5dn37DE7AgAACBFlEwBgecWzZpkdAQAAhIiyCQCwvIShQ82OAAAAQkTZBABYXuHcuWZHAAAAIaJsAgCsLyHB7AQAACBElE0AgOXFjRhhdgQAABAiyiYAwPLy1683OwIAAAiRzePxGGaHAAAAAAA0LezZBAAAAACEHWUTAAAAABB2lE0AAAAAQNhRNgEAAAAAYUfZlLRr1y5de+216tixozp06KCrr75aO3furNG2xcXFmjFjhrp3767WrVvr3HPP1erVq+s5cWSp7fxs2LBBkyZNUv/+/dWmTRuddNJJ+tOf/qRt27bVf+gIUZfXzrEee+wxud1uXXDBBfWQMnLVdX42b96sUaNGqUuXLmrdurVOPfVUPf300/WYOHLUZW527typ8ePH66STTlLr1q3Vr18/3XfffSooKKjn1JHh559/1uTJk3XuueeqTZs2crvd2r59e422DQQCevTRR9WrVy+1atVKgwYN0ptvvlnPiSNLbedny5Ytuv3223XGGWeoXbt26t69u37/+9/r22+/bYDUkaEur51jvfbaa3K73erRo0c9pIxcdZ2f3bt368Ybb9SJJ56oli1b6uSTT9bdd99d7XYRXzYLCwt18cUXKysrS0899ZTmz5+vrVu36qKLLqrRL+6JEyfqxRdf1LRp07Ro0SK1atVKl19+ub755psGSN/01WV+XnvtNWVmZur666/XkiVLdNddd+nrr7/WsGHDtGvXrgb6CZquur52jti2bZsefvhhtWjRoh7TRp66zs+GDRt0zjnnqKSkRE888YQWL16sCRMmyO/3N0D6pq0uc1NQUKBLL71Ua9as0bRp07R48WJde+21evLJJzVhwoQG+gmatq1bt+qNN96Q2+3W6aefHtK2s2bN0pw5czRu3DgtWbJE/fv31+jRo/X+++/XU9rIU9v5+fDDD/Xpp5/qqquu0iuvvKKHH35YBw4c0LnnnquNGzfWX+AIUpfXzhEej0d33HGHWrVqFeZ0qMv8bN++XWeffbZ+/PFHPfDAA/rPf/6jqVOnyuFwVLttxF/65Omnn9b06dP15ZdfqkuXLpIOvfnt16+f7r777ip/eX/77bc688wz9eSTT+rqq6+WJPl8Pg0cOFBpaWl69dVXG+RnaMrqMj/79+9X8+bNg8Z27Nih3r1767bbbtP06dPrNXtTV5e5OdZll12mjh07KisrS36/X++99159xo4YdZmfQCCg008/XWlpafrnP//ZUJEjRl3m5sMPP9Rll12m//znP/rNb35TNj5z5kzNmzdPO3fuVFxcXL3/DE1ZIBCQ3X7ob/EvvfSS/vKXv+jrr79Wp06dqtxu37596tmzp2666SZNmzatbPziiy/W/v37tWbNmnrNHSlqOz8HDhxQamqqbDZb2VhOTo5OPvlkXXDBBXrmmWfqNXckqO3cHGvSpEnauXOnWrVqpZUrV+r777+vr7gRpy7zc/nllys7O1vLli1TVFRUSM8b8Xs23333XfXv37/sF74kde7cWQMGDNA777xT7bZRUVG67LLLysacTqcuu+wyffjhhyopKam33JGiLvNzfNGUpI4dO6p58+b65Zdfwp410tRlbo5YsmSJvv76a9111131FTNi1WV+Pv30U23evFk33nhjfceMSHWZm9LSUklSYmJi0HhycrICgYAMI6L/fhwWR96MhWrFihUqLS3ViBEjgsavvPJKff/995zCESa1nZ9mzZoFFU3p0OsmLS2N9wRhUtu5OeLzzz/X4sWL9fDDD4cpEY5V2/n56aeftGLFCo0bNy7koilRNpWZmamMjIxy4xkZGdq8eXO123bq1KncX5EzMjJUWlqqrVu3hjVrJKrL/FRk8+bN2rdvn7p37x6OeBGtrnPj8Xg0bdo03X333UpJSamPiBGtLvPz+eefS5JKSkp0zjnnqHnz5kpLS9OUKVNUVFRUL3kjSV3m5qyzzlLXrl111113KTMzU/n5+Vq5cqXmz5+vP/7xj4qPj6+v2KhGZmamXC5X0B8RJJXNdW1+Z6F+ZWdna9OmTbwnsACv16ubbrpJEydOLPcagrmOvCeIjY3VpZdeqpYtW6pTp066/vrrdfDgwWq3j/iymZ2dLbfbXW48JSVFHo+n1tseuR11U5f5OZ7P59PNN9+s5s2b65prrglPwAhW17mZMWOG0tLS9Ic//CH84VCn+dmzZ48kacyYMRo2bJhef/11TZo0SS+//LLGjh1bD2kjS13mJiYmRu+9954Mw9DAgQPVvn17XXLJJTr//PP10EMP1U9g1Eh2draSk5PL7T3jPYF1TZkyRYZh6M9//rPZUSLe448/rpKSEt1yyy1mR8FxjrwnmDBhgtLS0rRkyRLdfffdev/993XZZZcpEAhUub2zIUICVjB58mR98cUXWrx4cYVv9NBw1qxZo1dffVUrV64s98YM5jvyi+PKK68sO7f5zDPPlN/v18yZM7V582b2BJikuLhYY8aM0b59+/TMM8+offv2+uqrr/Tggw/K6XTq0UcfNTsi0Cg8+uijWrJkiebNm8eeNJNt3bpVjzzyiP7xj38oJibG7Dg4zpH3BIMGDSo7xHno0KFKSkrSH//4R61YsULnnntupdtH/J5Nt9td4V+SK/vLc023lcShgWFQl/k51syZM7Vw4UI9+eSTQYtqoPbqMjc333yzrrnmGrVt21Yej0cej0d+v19+v18ej4fzncOgLvOTmpoqSRo2bFjQ+JHvWW27buoyNy+//LJWrVqlJUuWaMSIERo0aJAmTpyo++67T88//zyXcTCR2+1WTk5OufNmeU9gPc8//7zuuece3XnnnRzpZAG33367hgwZolNPPbXsPYHX65VhGPJ4PJy+YbLK3hMceT9d3XuCiN+zmZ6erszMzHLjmZmZ1f7lPj09Xf/9739VWFgYdN5mZmamoqOj+UtZGNRlfo54+OGH9fjjj+vBBx/U73//+3BHjFh1mZvNmzdr8+bNev7558vd1rlzZ91///264YYbwpY1EtX1/21VqesiEJGuLnPz/fffy+1264QTTggaP+WUUyRJP/zwg3r16hW+sKix9PR0lZSU6Keffgr6/X9krjkawBpeffVV3XrrrZowYYJuu+02s+NAh14jO3fuVOfOncvd1rlzZ40fP15z5sxp+GCQVPf3BBH/jmH48OFat25d0Cpx27dv19q1azV8+PAqt73gggvk9Xr1xhtvlI35fD69/vrrGjZsmFwuVz2ljhx1mR9Jmj9/vu677z7NmDFD48aNq8ekkacuc/P222+X+zjppJPUo0cPvf3227rkkkvqOX3TV5f5Offcc+VyufThhx8Gja9YsUKS1Ldv37DnjSR1mZuWLVvK4/GUW4Bu/fr1kqQ2bdqEPS9q5pxzzlFUVJQWL14cNL548WL16NGjwjfSaFhvv/22brzxRl177bW67777zI6Dw55//vly7wnOPvtsNWvWTG+//Tbv30zWv39/tWrVqtx7guXLl0s6+sfOykT8dTYLCgo0ePBgxcbGavr06bLZbJo1a5by8/O1evVqJSQkSDp0fca+fftqypQpuv3228u2P3Ks8r333qtOnTrpueee07Jly7Rs2TL16dPHpJ+q6ajL/Lz22msaO3aszj777KA5kw5dNqC6v9SganV97Rzvwgsv5DqbYVTX+ZkzZ44eeughTZo0SUOGDNGGDRv0wAMP6He/+52efvpps36sJqEuc7N9+3YNHjxYLVu21K233qr27dtr48aNeuihh9S1a1d9+OGH7HkOgzfffFOStHLlSj3//PN65JFH1Lx5czVr1kyDBw+WdOhSGldddZWefPLJsu1mzpypp59+WjNmzFDv3r31+uuv64UXXtArr7yiCy64wJSfpSmqzfysXr1al112mdLT0/Xggw8GvU6io6PVu3fvhv9BmqDavnaO9+c//5nrbNaD2s7Pv/71L91www0aM2aMLrroIm3dulX33nuvevXqpbfffrvK9Tci/jDa+Ph4vfXWW5o2bZrGjx8vwzA0ZMgQzZ49u+wXviQZhiG/319uxaW//e1vuvfee3XfffcpJydHJ510kv79739TNMOkLvOzfPlyGYah5cuXl/315YhBgwZp6dKlDfZzNEV1fe2gftV1fm6//XYlJCToueee07x589SqVStNnDhRU6ZMaegfpcmpy9x06tRJH3zwgebMmaNZs2bpwIEDateunUaNGqXbbruNohkmo0aNCvr+1ltvlRT8u+PIeebHmjFjhuLj4zV//nzt3btXaWlpWrhwIUUzzGozP5988olKSkr09ddf6/zzzw/avkOHDpzvHCa1fe2gYdR2fkaOHCm73a65c+fqn//8p1JSUnTllVfqrrvuqnahx4jfswkAAAAACD/+BAoAAAAACDvKJgAAAAAg7CibAAAAAICwo2wCAAAAAMKOsgkAAAAACDvKJgAAAAA0Yj///LMmT56sc889V23atJHb7db27dvr9Jjr1q3T5Zdfro4dO6pt27Y644wz9Nprr4X0GJRNAAAAAGjEtm7dqjfeeENut1unn356nR9v2bJl+u1vf6uWLVtqwYIF+te//qVrr71WxcXFIT0O19kEAAAAgEYsEAjIbj+0H/Gll17SX/7yF3399dfq1KlTyI+Vl5envn376v/9v/+nOXPm1CkXezYBAAAAoBE7UjSrs3//ft18883KyMhQy5Yt1b9/fy1cuDDoPm+88Yb279+vCRMm1D1XnR8BAAAAAGBpubm5uuCCC/TBBx9o6tSpWrx4sS644ALdcssteuaZZ8ru9/nnnyslJUXff/+9zjjjDDVr1kw9e/bUnDlz5Pf7Q3pOZ7h/CAAAAACAtcyfP187d+7UmjVr1LVrV0nSWWedpZycHD3wwAO67rrr5HQ6tWfPHhUVFWns2LGaPHmy+vTpo5UrV+qhhx5STk6OZs+eXePnZM8mAAAAADRxK1asUL9+/dSpUyf5fL6yj7PPPlsHDx5UZmampEPnfxYXF2vKlCmaOHGizjzzTN15550aNWqUFixYoJycnBo/J3s2AQAAAKCJ27dvn7Zu3armzZtXePvBgwclSampqZKkYcOGBd0+bNgwPf/888rMzNSAAQNq9JyUTQAAAABo4lJTU9WiRYtKV5hNS0uTJKWnp1f5ODVdjEiibAIAAABAk3f22Wfr73//u9q3b68WLVpUer8LL7xQs2bN0ocffqiePXuWja9YsUIxMTHKyMio8XNSNgEAAACgkXvzzTclSRs3bpQkLV++XM2bN1ezZs00ePBg3XDDDXr99dc1fPhw3XDDDUpLS1NhYaGysrK0Zs0avfLKK5KkHj16aOTIkbr//vsVCATUu3dvffzxx3rppZc0efJkJSQk1DiTzePxGGH/SQEAAAAADcbtdlc4PmjQIC1dulSS5PF49MADD2jp0qX65ZdflJycrG7duumiiy7SDTfcULZNaWmpHnzwQb3yyivau3evOnbsqLFjx+rPf/5zSJkomwAAAACAsOPSJwAAAACAsKNsAgAAAADCjrIJAAAAAAg7yiYAAAAAIOwomwAAAACAsKNsAgAAAADCjrIJAAAAAAg7yiYAAAAAIOwomwAAAACAsPv/l2AjMKnvGfcAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "ax.plot(x, y);\n", + "for q, t, s in zip(qr, [\"$X_a$\", \"mean\", \"$X_b$\"], [\"-\", \":\", \"-\"]):\n", + " ax.axvline(q, c='r', lw=1, ls=s)\n", + " ax.text(q, -0.01, t, color=\"r\")" + ] + }, + { + "cell_type": "markdown", + "id": "ambient-orientation", + "metadata": {}, + "source": [ + "We can verify that effectively the aggregated probabilities for our extreme intervals $X_a$ and $X_b$ are as defined by $p_a$ and $p_b$" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "unable-shift", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.1499999999999999, 0.8999999999999999)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Check the probabilities for the regions delimited by Xa & Xb\n", + "norm.cdf(qr[0], loc=mean, scale=sdev), norm.cdf(qr[2], loc=mean, scale=sdev)" + ] + }, + { + "cell_type": "markdown", + "id": "congressional-heating", + "metadata": {}, + "source": [ + "And its PDF is as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "f00fb4c7", + "metadata": {}, + "outputs": [], + "source": [ + "def plot_quartiles(ax: plt.Axes):\n", + " for q, s in zip(qr, [\"-\", \":\", \"-\"]):\n", + " ax.axvline(q, c='r', lw=1, ls=s)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "quality-sister", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA6UAAAIUCAYAAADiwIoiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAACRgUlEQVR4nOzdeVxUVf8H8M+dFZgBBkFARSEFBddcqMzSLE3NstLMNHMp62nRrKeszJ9li2lPPZVpZWWmVo97aWW2aWlpi5lbKYghKq4gDNvArPf3h7LcYRtghjvL5/168cI5c8/Mdzwi93vPud8jGI1GEUREREREREQyUMgdABEREREREQUuJqVEREREREQkGyalREREREREJBsmpURERERERCQbJqVEREREREQkGyalREREREREJBufT0pPnjyJGTNmYPDgwWjVqhUMBgOOHTvW7HEYjUY89dRT6Nq1K6Kjo9G5c2c88MADzR4HERERERGRL1HJHUBTZWZmYsOGDbj00kvRt29fbN26tdljMBqNGDp0KARBwKxZs9CuXTucOXMGv/76a7PHQkRERERE5Et8Pint168fMjIyAAArVqyQJSl97rnnUFxcjJ07dyIsLKyifdSoUc0eCxERERERkS/x+eW7CoVrHyE3NxePPvooUlJSEB0djdTUVCxbtqzJ719SUoJVq1ZhwoQJkoSUiIiIiIiI6ufzSakrCgsLMXToUHz33Xd46qmnsGbNGgwdOhT//ve/8e677zbptffu3YvS0lJER0djwoQJiI2NRZs2bTBu3DhkZWW55wMQERERERH5KZ9fvuuKxYsX48SJE9i5cyc6dOgAALjmmmtQUFCAl19+Gffccw9Uqsb9VZw5cwYAMHv2bAwaNAgrV65Ebm4unnvuOdx444345ZdfEBoa6rbPQkRERERE5E8CIindsmULevfujfj4eNhstor26667DitWrEBaWhq6du2KzMxM9OrVq97Xa9u2LQ4cOAAAcDgcAID4+HgsXboUgiAAAC655BIMGjQIa9aswT333OOBT0VEREREROT7AiIpzcnJQWZmJqKiomp8Pi8vD8CFZPP333+v9/XUanXFn1u0aAEAGDBgQEVCCgB9+vRBWFgY9u/f35TQiYiIiIiI/FpAJKUtWrRAy5YtMX/+/BqfT0xMBHAh2ezYsWODXjs5ObnO510txERERERERBSIAiIpve666/Dee+8hLi4OLVu2dOtrt2nTBj179sQPP/wAURQrZkt///13FBYWomfPnm59PyIiIiIiIn8iGI1GUe4gmmrjxo0AgG3btmHp0qX473//i6ioKERGRuKqq65CQUEBBg8eDIfDgQcffBCJiYkwmUzIyMjAzp07sXLlyia9/7Zt2zBy5EjccMMNmDBhAnJzc/Hiiy9Cp9Nh27ZtCA4OdsfHJCIiIiIi8jt+kZQaDIYa2/v164dNmzYBAIxGI15++WVs2rQJp0+fRnh4OJKSknDTTTfhwQcfbHIM3333HV566SUcPHgQISEhuP766/HCCy8gOjq6ya9NRERERETkr/wiKSUiIiIiIiLfxCo8REREREREJBsmpURERERERCQbJqVEREREREQkGyalREREREREJBsmpR6SkZEhdwhUB46P9+LYuCa8lqrjnuYL46MbPlzuEGThC2MTqMINBo6PF+PYeDeOj/dy59gwKSUiIr9ScnErMCIiIvINTEqJiMivBE+fLncIRERE1ABMSomIyK/YevaUOwQiIiJqACalRETkV6yTJskdAhERETUAk1IiIvIrYXFxcodAREREDcCklIiI/ErhoUNyh0BEREQNwKSUiIj8iurnn+UOgYiIiBqASSkREfkVzbJlcodAREREDcCklIiI/Ipp9Wq5QyAiIqIGYFJKRER+JXjKFLlDICIiogZgUkpERH7FNmSI3CEQERFRAzApJSIiv2IdPVruEIiIiKgBmJQSEZFfCTcY5A6BiIiIGoBJKRER+ZUCo1HuEIiIiKgBmJQSEZFfUa9dK3cIRERE1ABMSomIyK+ovvlG1vcXRRFmuwiLXYTNIcoaCxERkS9QyR0AERGRO5UuWdIs7yOKIo4U2rDzjAUH8qz4K8+K7BI7csrsMNsrjwtVC2gVokQ7vRI9ItXoEalBv1gNIoOUzRInERGRt2NSSkREfiVkzBiYVq/2yGuLooh9561YecSEr0+U4Vixvd4+RVYRRQU2HC6w4fuTZgCAQgAua6nB8HZBuL1DCGJCmKASEVHgqnf57saNG3HXXXeha9euiI2NRZ8+ffDcc8+hqKio3hcvKyvD7Nmz0alTJ8TGxmLw4MHYsWNHteMcDgdee+01dOvWDTExMejXrx82btzYuE9EREQBzTJpkvtf0y7io8MluPrzHFzzRQ7e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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gauss_pdf = norm.pdf(x, loc=mean, scale=sdev)\n", + "\n", + "fig, ax = plt.subplots()\n", + "ax.plot(x, gauss_pdf);\n", + "plot_quartiles(ax)" + ] + }, + { + "cell_type": "markdown", + "id": "possible-handy", + "metadata": {}, + "source": [ + "As it should be, the area under the PDF curve is 1 (since the total probability mass must sum to 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "green-student", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9998996644500662" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(gauss_pdf)*(x[1]-x[0])" + ] + }, + { + "cell_type": "markdown", + "id": "cefcfe07", + "metadata": {}, + "source": [ + "And the maximum value of the Gaussian curve is at the mean of the PDF" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "37b3500f", + "metadata": {}, + "outputs": [], + "source": [ + "pdf_max = np.max(gauss_pdf)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "postal-connecticut", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2.0283737486698773e-06, 2.0283739702357006e-06)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pdf_max, norm.pdf(mean, loc=mean, scale=sdev)" + ] + }, + { + "cell_type": "markdown", + "id": "purple-aviation", + "metadata": {}, + "source": [ + "In our initial try, the Gaussian curve that we will use for weighted resampling is the PDF of the gaussian distribution just computed, but normalized so that its maximum (the mean of the Gaussian) equals 1. That means that items with that perplexity will be sampled with probability 1 (i.e will _not_ be subsampled), and the weight will decrease gradually as we get away from that mean" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "peaceful-default", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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OCi5wft7R47siFhRITPBrrt/YZ4dfvdHl17bzNqbAICORbEJAOhwD31Vru2VvprbDpv08NGZsttsDd7fM21aByWLDr86KEljuyeYxm5aWaIK1t4EAHQgik0AQIfaVOrV374xN625aliqBmc6G90mvVevUMeKKjabTfcfmSFHndp9e6WPZkEAgA5FsQkA6FA3flYid50Jtm5Jdl13aFqT25SuXx/iVNFncKaz3tqbj3xbru+KaRYEAOgYFJsAgA7zv63VWrbVfO3g7aMzlOZs+s+RY8WKUMaKWtcdmqYeyeZmQTcGXCsLAECoUGwCADqEy2fohpXFprEju8TrvP5JDW9QR/z8+aEJFeVSnXbd9YtM09g72116exvNggAAoUexCQDoEI+vK9emstqmQDZJ9x6ZIVsjTYHqqly4MITJotuZ/RI1plu8aezPq0rk9bMUCgAgtCg2AQAht6/apwe+MjenmT44RYdkxzeyhVnSJZeEIlZMsNlsmj06Q3VL+vxir579rtKyTACA2ECxCQAIufvWlqnUXTuTlh5v082HNd0UqC7v+PGhiBUzDs2J1/m55jVM71pTqhI3S6EAAEKHYhMAEFI/lHr1ZH6FaewPB6cpOzGuxY/hOffcYMeKOX8+LF3JddZC2VPt14MshQIACCGKTQBASN2+ulSeOhNovVLidHleauMbNCAjMzO4oWJQj5Q4/W64+f/9sXXlKizzWpQIABDtKDYBACHz2S6XXimsMo3936h0JTqabwpUV0lxcRBTxa6Zw1NNS6G4/dIdq0stTAQAiGYUmwCAkDAMQ7esMhcyh2Y79esWLHUSyLl4cbBixbQUp123jMowjb34Q5W+2uu2KBEAIJpRbAIAQuL1zdVauctcxNwxOkP2Fix1EsixbFmwYsW8SQOSNLyT0zTG7CYAIBQoNgEAQefzG7rzC3MBM753oo7tntCmx6t64olgxIIku82mW0elm8be2u7Sih0uixIBAKIVxSYAIOgWfl+p70pqG8/YbdLth6c3sUXTkidNCkYs/Oykngk6uqt5jdO/fF4qwzAa2QIAgNaj2AQABJXbZ+ieL81LavxmQLKGZDob2aIFjzltWjtToS5bA7Obn+12642t1RYlAgBEI4pNAEBQLSio0JZyX81tp13606Fp7XpM7zHHtDcWAhzRNUGn9k40jd2xulQ+P7ObAIDgoNgEAARNldfQA2vNs5pTB6Wob5qjXY+bnpfXru3RsFsOS1fddk3ri71avKmq0fsDANAaFJsAgKB5Ir9cP1X6a24nxkl/OKR9s5qSVLptW7sfA/UN6+TUeQPMS9HcvaZUHmY3AQBBQLEJAAiKMo9fD39Vbhq7NC9V3ZPj2v3Yzvnz2/0YaNiNI9PlrHM0sLncpxc2VloXCAAQNSg2AQBB8di35drrqp3VTHPadM2I1KA8tmPNmqA8Durrl+bQhQNTTGMPrC1jdhMA0G4UmwCAdit2+fXIt+ZZzSuHpSo7sf2zmpJUNWdOUB4HDbv24NR6s5vPM7sJAGgnik0AQLs9vr5cpe7ambDMeJuuHhacWU1JSpk4MWiPhfp6pzo0ZVD92U23j9lNAEDbUWwCANql1O3XowGzmjOHpykjPnh/YqpvuCFoj4WGXTsiVXV32ZZyn174ntlNAEDbUWwCANrln+srVBIwq3lpXkoTW7SePzc3qI+H+no1MLt5P7ObAIB2oNgEALRZucevvzdwrWZ6EGc1JSl13LigPh4adk3A7OZWrt0EALQDxSYAoM2eyq/QvjodaNOdNl2eF7xrNQ8oy88P+mOiPmY3AQDBRLEJAGiTSq9fc78xz2pePjRVmQnB/9MSP3du0B8TDbv24DTT7Oa2Cp8Wcu0mAKANKDYBAG0yf0OldlfXzmqmOmy6KogdaOuy79gRksdFfT1T4jQ1YHbz4a/L5GPdTQBAK1FsAgBardpr6G9fl5nGLs1LUVYIZjUlqXr27JA8Lhr2uxGpcthqb39f6tNrm6usCwQAiEgUmwCAVltQUKEdVbWzmskOm64eHppZTUlKPe64kD026uud6tCk3GTT2F+/KpdhMLsJAGg5ik0AQKt4/IbmfG2+VvOiwSnKSYwL2XNWzpkTssdGw64Zkao6k5v6Zp9Hb21zWZYHABB5KDYBAK3yn01V2lbhq7mdGCfNDOGspiQpNcSPj3oGZjh1Rr9E09hfvypjdhMA0GIUmwCAFvMb9a/VvHBgiromh25WU5KSJ00K6eOjYdeOSDPdXrnLrY93ui1KAwCINBSbAIAWW7a1WuuLvTW342wK6bWaB5SvXh3y50B9h+bE66SeCaaxB78qa+TeAACYUWwCAFos8FrNXx2UpH5pjpA/b8Ldd4f8OdCw3x9snt18Z7tLX+5hdhMA0DyKTQBAi3yy06VPd5mLjFkBp1ki+hzdLUFHdY03jTG7CQBoCYpNAECLPBwwq3lSzwSN6OTskOd23XhjhzwPGhY4u/n65mptLPFYlAYAECkoNgEAzVpX5NGyrdWmsY6c1UwdNarDngv1Bb6xYEj6+7fljW8AAIAoNgEALTAnoAPt4Z2dOqZbfCP3Dr7KhQs77LlQn81m0+8CGkE9v7FSu6t8jWwBAADFJgCgGVvKvXpxU5VpbNaINNlsto4LUc4smtXOOihJvVJql7ip9klP5FdYmAgAEO5aVGxu27ZNU6ZMUZ8+fdS7d29dcMEF2rp1a4ueYOvWrbriiis0fPhwdevWTaNGjdKdd96pigr+QAFAJPj7N+XyGrW3B2Y4NLFPYodmSJ41q0OfD/U57TZdOcw8u/nP9RWq9PotSgQACHfNFpuVlZU644wzVFBQoEcffVTz5s3Tpk2bdPrppzdbMFZUVOiss87Sxx9/rJtuukmLFi3SlClT9Mgjj2jGjBlB+yYAAKFR5PJrQUGlaex3w1Nl78hZTUnly5d36POhYVMGJSs9vnbf73P59fzGyia2AADEsmYXR3vmmWdUWFiozz//XP3795ckDRs2TKNGjdLTTz/dZNG4cuVKff/993rppZd0wgknSJLGjh2roqIizZ07V5WVlUpOTg7StwIACLb5GypUWWdas3uyXecN6Pjf24k336zq2bM7/Hlhlua066LBKabOxH//plzTBqUozt6xb0AAAMJfszObb7zxhkaPHl1TaEpSv379dMQRR2jp0qVNbut271+PLS3N3LEwIyNDfr9fhmE0tBkAIAy4fYb+sd58reTlealKiOv4osLfrVuHPycadlleqpx1jh42lfm0ZEt14xsAAGJWs8Vmfn6+8vLy6o3n5eVpw4YNTW57/PHHa8CAAbr11luVn5+v8vJyLV++XPPmzdNFF12klJSUticHAITUy4VV+qmy9nq8ZIdN0wZb83vbPXOmJc+L+nqkxOnX/c2z2498QwMnAEB9zRabRUVFyszMrDeelZWl4uLiJrdNTEzUm2++KcMwdOSRR6pXr14688wzNX78eN1///1tzQwACDHDMPRowDqKv81NVmaCNU3M04YMseR50bCZAcugfLbbrZU7XRalAQCEq2av2WyP6upqTZ8+Xbt379bjjz+uXr166YsvvtB9990nh8OhBx98sNFt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619uGhEMY38jT7+hmn/3f27UfH6gKPUbhvzaf8ptenx0LPfXbLE5ZMgQ5efn1xvPz8/X4MGDm932v//9ryorK03Xbebn5ys+Pt7UdAgAgMZQaAIAIpHNZqtpAhTwFQvSdLxmS+YJEyZo1apVKiwsrBnbvHmzVq5cqQkTJjS57amnniqPx2NqJOT1evXyyy9r3LhxEdeJFgBgDef8+VZHAAAArdRssTl16lT16dNHkydP1pIlS7R06VJNnjxZPXv21PTp02vut2XLFmVnZ+vee++tGTvkkEN09tln68Ybb9Szzz6r5cuX66KLLtLmzZt14403huY7AgBEHceaNVZHAAAArdRssZmSkqLXXntNAwYM0BVXXKHLLrtMffv21WuvvabU1NSa+xmGIZ/PJ7/f3DXp73//u37729/qzjvv1Hnnnaft27frP//5jw499NCgfzMAgOhUNWeO1REAAEArtagbbe/evbVgwYIm79O3b98GGwklJSXprrvu0l133dWmgAAApEycqIolS6yOAQAAWiE62hwBAKJa9Q03WB0BAAC0EsUmACDs+XNzrY4AAABaiWITABD2UseNszoCAABoJYpNAEDYK2tgvWcAABDeKDYBAGEvfu5cqyMAAIBWotgEAIQ9+44dVkcAAACtRLEJAAh71bNnWx0BAAC0EsUmACDspR53nNURAABAK1FsAgDCXuWcOVZHAAAArUSxCQAIf6mpVicAAACtRLEJAAh7yZMmWR0BAAC0EsUmACDsla9ebXUEAADQSrbi4mLD6hAAAAAAgOjCzCYAAAAAIOgoNgEAAAAAQUexCQAAAAAIOopNAAAAAEDQUWxK2rZtm6ZMmaI+ffqod+/euuCCC7R169YWbVtdXa1bbrlFgwcPVrdu3XTyySfro48+CnHi2NLW/bNmzRrNmjVLo0ePVvfu3TV8+HBdeumlKiwsDH3oGNGe105dDz30kDIzM3XqqaeGIGXsau/+2bBhg6ZOnar+/furW7duOvzww/XYY4+FMHHsaM++2bp1q6644goNHz5c3bp106hRo3TnnXeqoqIixKljw/bt23Xdddfp5JNPVvfu3ZWZmanNmze3aFu/368HH3xQI0aMUNeuXTVmzBi9+uqrIU4cW9q6fzZu3Kg//elPOvroo9WzZ08NHjxYv/nNb/T11193QOrY0J7XTl0vvviiMjMzNXTo0BCkjF3t3T8//vijrr76ag0aNEhdunTRwQcfrNtvv73Z7WK+2KysrNQZZ5yhgoICPfroo5o3b542bdqk008/vUV/uGfOnKlnnnlGN910kxYuXKiuXbvqnHPO0VdffdUB6aNfe/bPiy++qPz8fF1++eVavHixbr31Vq1du1bjxo3Ttm3bOug7iF7tfe0cUFhYqAceeECdO3cOYdrY0979s2bNGp100klyuVz629/+pkWLFmnGjBny+XwdkD66tWffVFRU6KyzztLHH3+sm266SYsWLdKUKVP0yCOPaMaMGR30HUS3TZs26ZVXXlFmZqaOOuqoVm07e/Zs3XPPPbrsssu0ePFijR49WtOmTdP//ve/EKWNPW3dP++++64+/PBDnX/++Xr++ef1wAMPaO/evTr55JP15Zdfhi5wDGnPa+eA4uJi3XjjjeratWuQ06E9+2fz5s068cQT9f333+vee+/VSy+9pBtuuEFxcXHNbhvzS5889thjuvnmm/X555+rf//+kvYf/I4aNUq33357k3+8v/76ax177LF65JFHdMEFF0iSvF6vjjzySOXm5uqFF17okO8hmrVn/+zZs0c5OTmmsS1btuiQQw7RH//4R918880hzR7t2rNv6jr77LPVp08fFRQUyOfz6c033wxl7JjRnv3j9/t11FFHKTc3V//+9787KnLMaM++effdd3X22WfrpZde0gknnFAzftttt2nu3LnaunWrkpOTQ/49RDO/3y+7ff978c8++6x+97vfae3aterbt2+T2+3evVvDhg3TNddco5tuuqlm/IwzztCePXv08ccfhzR3rGjr/tm7d686deokm81WM1ZSUqKDDz5Yp556qh5//PGQ5o4Fbd03dc2aNUtbt25V165dtXz5cq1bty5UcWNOe/bPOeeco6KiIi1btkxOp7NVzxvzM5tvvPGGRo8eXfMHX5L69eunI444QkuXLm12W6fTqbPPPrtmzOFw6Oyzz9a7774rl8sVstyxoj37J7DQlKQ+ffooJydHP/30U9Czxpr27JsDFi9erLVr1+rWW28NVcyY1Z798+GHH2rDhg26+uqrQx0zJrVn37jdbklSWlqaaTwjI0N+v1+GEdPvHwfFgYOx1nrnnXfkdrs1adIk0/h5552ndevWcQlHkLR1/2RnZ5sKTWn/6yY3N5djgiBp67454NNPP9WiRYv0wAMPBCkR6mrr/vnhhx/0zjvv6LLLLmt1oSlRbCo/P195eXn1xvPy8rRhw4Zmt+3bt2+9d5Hz8vLkdru1adOmoGaNRe3ZPw3ZsGGDdu/ercGDBwcjXkxr774pLi7WTTfdpNtvv11ZWVmhiBjT2rN/Pv30U0mSy+XSSSedpJycHOXm5ur6669XVVVVSPLGkvbsm+OPP14DBgzQrbfeqvz8fJWXl2v58uWaN2+eLrroIqWkpIQqNpqRn5+vhIQE05sIkmr2dVv+ZiG0ioqKtH79eo4JwoDH49E111yjmTNn1nsNwVoHjgmSkpJ01llnqUuXLurbt68uv/xy7du3r9ntY77YLCoqUmZmZr3xrKwsFRcXt3nbA19H+7Rn/wTyer269tprlZOTowsvvDA4AWNYe/fNLbfcotzcXP32t78Nfji0a//s2LFDkjR9+nSNGzdOL7/8smbNmqUFCxbokksuCUHa2NKefZOYmKg333xThmHoyCOPVK9evXTmmWdq/Pjxuv/++0MTGC1SVFSkjIyMerNnHBOEr+uvv16GYejKK6+0OkrMe/jhh+VyufT73//e6igIcOCYYMaMGcrNzdXixYt1++2363//+5/OPvts+f3+Jrd3dERIIBxcd911+uyzz7Ro0aIGD/TQcT7++GO98MILWr58eb0DM1jvwB+O8847r+ba5mOPPVY+n0+33XabNmzYwEyARaqrqzV9+nTt3r1bjz/+uHr16qUvvvhC9913nxwOhx588EGrIwIR4cEHH9TixYs1d+5cZtIstmnTJv31r3/Vv/71LyUmJlodBwEOHBOMGTOm5hTn4447Tunp6brooov0zjvv6OSTT250+5if2czMzGzwneTG3nlu6baSODUwCNqzf+q67bbbNH/+fD3yyCOmphpou/bsm2uvvVYXXnihevTooeLiYhUXF8vn88nn86m4uJjrnYOgPfunU6dOkqRx48aZxg/cptt2+7Rn3yxYsEArVqzQ4sWLNWnSJI0ZM0YzZ87UnXfeqaeeeoplHCyUmZmpkpKSetfNckwQfp566in95S9/0Z///GfOdAoDf/rTnzR27FgdfvjhNccEHo9HhmGouLiYyzcs1tgxwYHj6eaOCWJ+ZnPIkCHKz8+vN56fn9/sO/dDhgzRf//7X1VWVpqu28zPz1d8fDzvlAVBe/bPAQ888IAefvhh3XffffrNb34T7Igxqz37ZsOGDdqwYYOeeuqpel/r16+f7rrrLl111VVByxqL2vu7rSntbQIR69qzb9atW6fMzEwddNBBpvHDDjtMkvTdd99pxIgRwQuLFhsyZIhcLpd++OEH09//A/uaswHCwwsvvKA//OEPmjFjhv74xz9aHQfa/xrZunWr+vXrV+9r/fr10xVXXKF77rmn44NBUvuPCWL+iGHChAlatWqVqUvc5s2btXLlSk2YMKHJbU899VR5PB698sorNWNer1cvv/yyxo0bp4SEhBCljh3t2T+SNG/ePN1555265ZZbdNlll4Uwaexpz755/fXX630MHz5cQ4cO1euvv64zzzwzxOmjX3v2z8knn6yEhAS9++67pvF33nlHkjRy5Mig540l7dk3Xbp0UXFxcb0GdKtXr5Ykde/ePeh50TInnXSSnE6nFi1aZBpftGiRhg4d2uCBNDrW66+/rquvvlpTpkzRnXfeaXUc/Oypp56qd0xw4oknKjs7W6+//jrHbxYbPXq0unbtWu+Y4O2335ZU+2ZnY2J+nc2Kigodc8wxSkpK0s033yybzabZs2ervLxcH330kVJTUyXtX59x5MiRuv766/WnP/2pZvsD5yrfcccd6tu3r5588kktW7ZMy5Yt06GHHmrRdxU92rN/XnzxRV1yySU68cQTTftM2r9sQHPv1KBp7X3tBJo4cSLrbAZRe/fPPffco/vvv1+zZs3S2LFjtWbNGt1777361a9+pccee8yqbysqtGffbN68Wcccc4y6dOmiP/zhD+rVq5e+/PJL3X///RowYIDeffddZp6D4NVXX5UkLV++XE899ZT++te/KicnR9nZ2TrmmGMk7V9K4/zzz9cjjzxSs91tt92mxx57TLfccosOOeQQvfzyy3r66af1/PPP69RTT7Xke4lGbdk/H330kc4++2wNGTJE9913n+l1Eh8fr0MOOaTjv5Eo1NbXTqArr7ySdTZDoK3757nnntNVV12l6dOn6/TTT9emTZt0xx13aMSIEXr99deb7L8R86fRpqSk6LXXXtNNN92kK664QoZhaOzYsbr77rtr/uBLkmEY8vl89Tou/f3vf9cdd9yhO++8UyUlJRo+fLj+85//UGgGSXv2z9tvvy3DMPT222/XvPtywJgxY7RkyZIO+z6iUXtfOwit9u6fP/3pT0pNTdWTTz6puXPnqmvXrpo5c6auv/76jv5Wok579k3fvn311ltv6Z577tHs2bO1d+9e9ezZU1OnTtUf//hHCs0gmTp1qun2H/7wB0nmvx0HrjOv65ZbblFKSormzZunXbt2KTc3V/Pnz6fQDLK27J8PPvhALpdLa9eu1fjx403b9+7dm+udg6Strx10jLbun8mTJ8tut2vOnDn697//raysLJ133nm69dZbm230GPMzmwAAAACA4OMtUAAAAABA0FFsAgAAAACCjmITAAAAABB0FJsAAAAAgKCj2AQAAAAABB3FJgAAAABEsO3bt+u6667TySefrO7duyszM1ObN29u12OuWrVK55xzjvr06aMePXro6KOP1osvvtiqx6DYBAAAAIAItmnTJr3yyivKzMzUUUcd1e7HW7ZsmU477TR16dJFTzzxhJ577jlNmTJF1dXVrXoc1tkEAAAAgAjm9/tlt++fR3z22Wf1u9/9TmvXrlXfvn1b/VhlZWUaOXKkfv3rX+uee+5pVy5mNgEAAAAggh0oNJuzZ88eXXvttcrLy1OXLl00evRozZ8/33SfV155RXv27NGMGTPan6vdjwAAAAAACGulpaU69dRT9dZbb+mGG27QokWLdOqpp+r3v/+9Hn/88Zr7ffrpp8rKytK6det09NFHKzs7W8OGDdM999wjn8/Xqud0BPubAAAAAACEl3nz5mnr1q36+OOPNWDAAEnS8ccfr5KSEt177726+OKL5XA4tGPHDlVVVemSSy7Rddddp0MPPVTLly/X/fffr5KSEt19990tfk5mNgEAAAAgyr3zzjsaNWqU+vbtK6/XW/Nx4oknat++fcrPz5e0//rP6upqXX/99Zo5c6aOPfZY/fnPf9bUqVP1xBNPqKSkpMXPycwmAAAAAES53bt3a9OmTcrJyWnw6/v27ZMkderUSZI0btw409fHjRunp556Svn5+TriiCNa9JwUmwAAAAAQ5Tp16qTOnTs32mE2NzdXkjRkyJAmH6elzYgkik0AAAAAiHonnnii/vGPf6hXr17q3Llzo/ebOHGiZs+erXfffVfDhg2rGX/nnXeUmJiovLy8Fj8nxSYAAAAARLhXX31VkvTll19Kkt5++23l5OQoOztbxxxzjK666iq9/PLLmjBhgq666irl5uaqsrJSBQUF+vjjj/X8889LkoYOHarJkyfrrrvukt/v1yGHHKL3339fzz77rK677jqlpqa2OJOtuLjYCPp3CgAAAADoMJmZmQ2OjxkzRkuWLJEkFRcX695779WSJUv0008/KSMjQwMHDtTpp5+uq666qmYbt9ut++67T88//7x27dqlPn366JJLLtGVV17ZqkwUmwAAAACAoGPpEwAAAABA0FFsAgAAAACCjmITAAAAABB0FJsAAAAAgKCj2AQAAAAABB3FJgAAAAAg6Cg2AQAAAABBR7EJAAAAAAg6ik0AAAAAQND9P4zJAdfQ1WvGAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "ax.plot(x, gauss_pdf/pdf_max);\n", + "plot_quartiles(ax)" + ] + }, + { + "cell_type": "markdown", + "id": "registered-clothing", + "metadata": {}, + "source": [ + "## 3. Apply subsampling to uniform data\n", + "\n", + "To test the process, we are going to apply it to data with uniform probability. We'll use as working interval (0, $X_{a} + X_{b}$). This interval is chosen so that the uniform data has originally a 25% probability mass below $X_a$ and a 25% probability mass above $X_b$, i.e. just as the original dataset did" + ] + }, + { + "cell_type": "markdown", + "id": "fdbfef47", + "metadata": {}, + "source": [ + "### 3.1 Generate uniform data" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "preceding-contest", + "metadata": {}, + "outputs": [], + "source": [ + "interval = [0, qr[2]+qr[0]]\n", + "width = interval[1] - interval[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "legitimate-crown", + "metadata": {}, + "outputs": [], + "source": [ + "# we generate random data on the interval \n", + "data_unif = uniform.rvs(*interval, 300000)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "indie-wheel", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA6oAAAIFCAYAAADbQQCRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABEd0lEQVR4nO3deXhU5cH+8RtkkUUYZF8keWkoCWBBBauCQF6lDYpggwZFFLAsGkmRVcFSwioCopRFBFEWEUiwgCDgAoJFpIK/qhTeUGwkDaAXqBkQkYRIfn/YpMQEkiczk2fyzPdzXbmUM2e5z5w5Z849Z5ZyXq83RwAAAAAABInytgMAAAAAAHAxiioAAAAAIKhQVAEAAAAAQYWiCgAAAAAIKhRVAAAAAEBQoagCAAAAAIIKRRUAAAAAEFQoqgAAAACAoEJRLUWHDx+2HQGXwfYJXmyb4qnp8VhZblnYPtXuvNN2BCvKwrYJVTU9HrZPEGPbBDe2T/Dy57ahqAIAnPf9m2/ajgAAAAxQVAEAzqsybJjtCAAAwABFFQDgvOzrrrMdAQAAGKCoAgCcd75/f9sRAACAAYoqAMB5NZo0sR0BAAAYoKgCAJx3+v/+z3YEAABggKIKAHBehV27bEcAAAAGKKoAAOdVWrrUdgQAAGCAogoAcN7ZNWtsRwAAAAYoqgAA51UZONB2BAAAYICiCgBwXvZvf2s7AgAAMEBRBQA47/y999qOAAAADFBUAQDOq+nx2I4AAAAMUFQBAM475fXajgAAAAxQVAEAzquYnGw7AgAAMEBRBQA4r8Jbb9mOAAAADFBUAQDO++Gll2xHAAAABiiqAADnVe3d23YEAABggKIKAHBeVv/+tiMAAAADFWwHAAAg0LI7drQdwXmeV47l/b93QGOLSYCyi/0I+C+KKgDAeTWionT66FHbMQDAKoqw/3GfBg5v/QUAOI+SCgBA2UJRBQA4r+LSpbYjAAAAAxRVAIDzKvz977YjAEDQ87xyLO8PsI3PqAIos3KfSPlMCIryw5w5tiMABbTfVVXaxXEM7uDzmvAnrqgC8AtegUUwq3bnnbYjlClcVQEA2MYVVQClildbfVNYceB+LNq5J5+0HQEBwjsrAMBNFFUAfkURhU2XKi0XIiJsxAEAACVEUXUcpQEApOrR0fouJcV2DAAAUEwUVQBlHi/IoCiUVAAAyhaKKgDAeZXmzlVWQoLtGEGDF3cQqnjsA2UHRRUAHFeaJ2b++mIbf2cu/9VXPs8D7qCsAEDwo6gCZRgnW0DxnJs61XYEAABggKIKACi2YPkpENMXaap37qwzO3cGMhIQcnixtPQEy7H3YiXJxGMGJiiqAADnnZ0zx3aEkMcJqtvYvgD8jaIKJwXjK48ALKpe3XYCwKqyXiR5XgdCD0UVQLFwkoCyrGrv3jrz8ce2YxSqtPati4sK3FPWiygA/BxFFfATihx+jsdE8AjWkupPFBW4gMcxkF8o7xMU1SASyg9EACWXe+zIsZyjOGyV98pPP63MsWNLdZkAAqssnTfxwmXpKOoxYfKYYZvZR1F1VCDe4lWWnhAAwIbCjr0cL+EPPAfjckK5VLn4sQaTdXL52EBRLUXtd1WVdoXugQQFuXxwKQtC+YnddT/ft7iaikvhOABbQuUcwMUiidJBUQWQT6g8caJwtk/aA3VCU/2GG0r8OVX2CdjCCX5w49gABBZFFSgm2yfwAApXnJP5s2vWWF1+IPlr+bbXA/A3Xz+vSBEF7KKoIigVVQrLSml08Uku0OtU2Mny3o6Xv91knq5sh2BX1HYq9VJ05kzpLg9+U9jxPlhKNccWoHT9d5+rKm9zq1FQCopVVI8dO6bnn39en3zyif7xj3/ohx9+0KeffqqwsLB84507d05Tp05VUlKSTp06pWuvvVaJiYnq0KFDvvEuXLig559/Xq+88opOnDihiIgIjRkzRj179iyw7GXLlmnevHlKS0tT06ZNFR8fr4cfftiHVUZZwkmAuVC/z2yvf7CcQCO/qsOG6czOnbZj+MT2YxuBxfb1Db9HHHpKa1uwb9pTrKKampqq9evXq23btrr55pu1ffv2QsdLSEjQW2+9pcmTJys8PFyLFy9Wr1699Pbbb+tXv/pV3nhTp07V3LlzNX78eLVp00Z/+ctf1L9/f61Zs0a/+c1v8sZbtmyZHn/8cY0YMUKdO3fW+++/r5EjRyonJ0e///3vfVx1uzjQ+UdJDx5l5YpsINg64PKYh03BUlJD+djjklA8nnGyHliFPabK+uOMjyXAV8Uqqh06dNDhw4clScuXLy+0qO7fv1/JycmaN2+e+vbtmzfdTTfdpGnTpmn16tWSpJMnT2ru3Ll6/PHHlZCQIEnq1KmTUlNTlZiYmFdUs7OzNXnyZPXu3Vvjx4/PG+/LL7/U1KlT9dBDD6lixYo+rj4Q2jjxQKi48qmndG7qVNsx/IYTNwCwi+Nw4BWrqJYvX77IcbZs2aKKFSsqNjb2vzOvUEGxsbF6/vnnlZmZqcqVK2vbtm3KyspS7969800fFxenoUOH6siRIwoPD9dHH32kr7/+usB4vXv31sqVK/Xhhx+qU6dOxYmPQhT3VX12QgAuuNCgQbHG44qnPbxw9l88914a943/2b5P2ff9x7XnML99mVJKSorCwsJUtWrVfMOjoqKUlZWl1NRURUVFKSUlRZUrV1azZs0KjCdJhw4dUnh4uFJSUvINL2y8UCiqJjtvaR5oXNsRTJTmlwn5On9f52X7yQuBFUr7cdZ/3sGTy+TbPkNdYfeFyfNRWX58ubIeQCgKpec4V/mtqGZkZMjj8RQYXqtWrbzbc/9bs2ZNlStXrsjxJBWY58/HK0zu25SDT9WiR/mP/65D1UKGlWz++aevGoB5+lPB5RaWv6jbL52v8Nsvvz4lWWZR26+w20u2zQubvvCsJbv98tMUPp3Z7Zcez/d8l7pPi7sfmCjuevpv/kUvy2T9fd13ir99isvkcXKp6X/VrZs+27Kl0OmLepz6msX3+7x4y7nUMgO/7+cq/vz99TgtOtOlmB+P/Lt8qZ3R2MVZVknv3+IqyfNNSZRs3yxqGl8z+77OxXscF8X02Hyp8fKPa2edSnJsKAmz87LLL9fkONB+10+37+14tjgxi1x2weUXL4cNl1t+8+bF/7pmJ3+exuQOKFW7iv8Kfd46XDRNketVxPzzTf+fcS81z+JeTbh4er++8lzIuhSWv6jbL3mfFXL74cOHL38fl2SZRW2/wm4v4TYvbPpCs5bw9stOc4npjG6/zHg+57vUffqf4blPJj9XosdxIfkunr/PX/plsp8XMk1h6+rXfcdg+xSXyePkUtOf++tf1bxhw0KnL+px6msWn+/zYi6nsPkXZ9tc6vFfnPkXJ19hyy90nyhim5ToeHIpRUxf2HOgX5fvo2I/n5jcXpSSPN+URAn3zaKmMc388xNtn9e5mI/jopgcmy922ce0pXUq9nmPj88rRudlRSzXr+eihsu+5LwsH49+rsjzaQN+K6oej0fp6ekFhude+cy9EurxeHTq1Cnl5OTku6pa2HiS5PV61eCizxb9fDwUH29lQ2njMVd2ufaWx/Kff64fLy6qAAAgqPmtqEZGRmrTpk06e/Zsvs+ppqSkqFKlSnmfSY2MjFRmZqa++OKLfJ9Tzf1MaosWLfLGyx1+cVH9+Xgom0rymafSws+3oCxzrWD6y5XTp+v7W2+1HaPU/PdxUFVeey+slxjHQ/cE8/M+fBOo/ZXjAPxWVGNiYvT0009r/fr16tOnj6SffmJm3bp1io6OVuXKlSVJt99+uypWrKikpCQ9+eSTedMnJSWpZcuWCg8PlyTdeOONql27tpKSktSlS5d849WqVUs33XSTv6IDkv7zVrQAvG3R3zhwl20USTu+f/NN2xFClu1jVml9oUoo7du2t6kNobjOCF6h8ngsdlHdsGGDJOmTTz6RJL377ruqU6eOateurY4dO6pNmzaKjY3V2LFjlZ2drbCwMC1ZskRpaWlatGhR3nzq1q2rxx57TM8995yqV6+uNm3aaN26dXr//fe1atWqvPEqVqyop556SiNHjlSjRo3UuXNnvf/++3r11Vc1Y8YMVapUyU93AQKBb1orfTYOWsF+oCytfL4uJ1AnuMG+fUpTlWHD9MOcObZjAH4R7M+xwZ6vMGUxM/yP583gUuyi2q9fv3z/HjlypCSpQ4cOevM/r1TPnz9fkydP1pQpU3Tq1Cm1bt1aa9euVdu2bfNNO378eFWrVk0LFy7UiRMnFBERoaVLlyomJibfeA8//LDKlSunefPm6c9//rOaNGmimTNnauDAgSVZV6CAog5IwXTACqYspa2sXO1G4JVkP/C8ckyDzoZr8SvHyuRJaCjv+yUV7PeZ55VjyvHTfPwllK4IBxL3I4qLF0eKVuyi6vV6ixynSpUqmjZtmqZNm3bZ8a644gqNHj1ao0ePLnKeAwYM0IABA4obE0GsLJXCQLK1nqFy/8JcKDw2Ft8SZzsCUGpC+QQ42I9nwZQvmLIAhXHy52lcwMHDP3hlE/7GY6psOv1ke9WYvtd2DPiA58XS59J97sq6lOZzUCi/4FFSrjzOggVFFUBIMXkS4UnaHY0Sd9iOAOAyOMFHKPDnd1qEAopqGRLoV9FC7cEPoOQuPl7s7WgxSDF1+fwjbWodbTsGAARUWX/XD+eiuBhFNcSVpQNCWcpamLKeP5BC9b4J1fW2YfCHyUFVVMv6ti/rJ8NAKCjrxxmAogr4gCcBoGzoMWiB7QhFovwh1PAli2UDxybYQlGFM1x8wiuLmeEeFx6HK1eM1gMPzrQdo9hcuM8RvCf4fP7e/wrbZ13cj11cp0DjPis5iioASRxIL8f2fWN7+S7Y1LKz7QgAgCDEc2zwoqgCAJy36obutiNYw0kYAKAsoqgCQBChVARGzvBWKvfcAdsxUIaV5KetAFwa+wmKQlEFADjP3yWVEywAtnEc8g33X/CjqAJ+xoEPoab9rqrSruB+3N//8SatuqE7+ydwEfYHwEyg9xn2yfwoqgCAoOaPJ+7uB3eG9OdUUTROEAHYwLHn0iiq8Ak7F4CyoCz9NE1ZU1aeB8pKTn8KxXUG4A6KKgKKJ0m4jMd32fHG4nj1GLTAdgwgpHCMBOALimoZx5MAABRt0c332o6AAOP5EADcQlEFADhvR8SNtiMAZUYol/7/rntVqzkASOVtBwAAINCOJ3bxy3w8rxwL6ZN4AABKC1dUyyhOlOACHscoLTWm77UdAZfAcQBAIHGMKbsoqgAA5w3anaTFt8QVehsnMQAABB+KKgDAee3SD2ix7RAIabwgAgBm+IwqAMB5Q3pPtB0BAAAYoKgCAJz33rz+tiMAAAADFFUAgPMSY+JtRwAAAAYoqgAA5/2zbrjtCAAAwABFFQDgvH2zC//GXwAAEJwoqgAA5zWeuMN2BAAAYICiCgBw3oj3ltqOAAAADFBUAQDOa3T6hO0IAADAAEUVAOC8UT3H2I4AAAAMUFQBAM7b9+y9tiMAAAADFFUAgPMGxyXajgAAAAxQVAEAzvuucjXbEQAAgAGKKgDAeZteircdAQAAGKCoAgCc12LcZtsRAACAAYoqAMB5E7bOtx0BAAAYoKgCAAAAAIIKRRUA4LyJMY/ZjgAAAAxQVAEAzjs07Q7bEQAAgAGKKgDAed0HLrAdAQAAGKCoAgCcd1Xm97YjAAAAAxRVAIDzFiUl2o4AAAAMUFQBAM5rNzLZdgQAAGCAogoAcN6sDTNsRwAAAAYoqgAA5x2vUc92BAAAYICiCgBw3uzo/rYjAAAAAxRVAIDzjk3oYjsCAAAwQFEFADiv3Ygk2xEAAIABiioAwHm/PHnEdgQAAGCAogoAcF7i1gW2IwAAAAMUVQCA86KHLrUdAQAAGKCoAgCc9+KaCbYjAAAAAxRVAIDz9l3TynYEAABggKIKAHDe4lvibEcAAAAGKKoAAOedfrK97QgAAMAARRUA4LxGiTtsRwAAAAYoqgAA53X5/CPbEQAAgAGKKgDAeYM/TLYdAQAAGKCoAgCc12PQAtsRAACAAYoqAMB5K1eMth0BAAAYoKgCAJy3qWVn2xEAAIABiioAwHmrbuhuOwIAADBAUQUAOC9neCvbEQAAgAGKKgDAeeWeO2A7AgAAMEBRBQA47/6PN9mOAAAADFBUAQDO635wp+0IAADAAEUVAOC8Bx6caTsCAAAwQFEFADjvjcXxtiMAAAADFFUAgPMW3Xyv7QgAAMAARRUA4LwdETfajgAAAAz4taju2bNHv/vd7xQREaEmTZqoU6dOWrFiRb5xzp07p/Hjx6tFixZq0KCBunbtqg8++KDAvC5cuKDZs2fr2muvVf369dWhQwdt2LDBn3EBACHieGIX2xEAAIABvxXVf/zjH7r77rt1/vx5zZkzRytWrND111+vhIQELVmyJG+8hIQELVu2TOPGjdOaNWtUv3599erVS5999lm++U2dOlXTp0/X4MGDlZycrPbt26t///56++23/RUZABAiakzfazsCAAAwUM7r9eb4Y0aTJk3S3Llz9cUXX6h69ep5w7t27SpJeuedd7R//37deuutmjdvnvr27StJys7O1k033aSIiAitXr1aknTy5Em1atVKjz/+uMaNG5c3rx49eujrr7/W7t27/RG51HleOWY7AgCH5QxvpXLPHbAdIygN2p2kxbfE2Y4B5GF/BRAo3gGNrS378OHDat68uV/m5bcrqllZWapYsaKqVKmSb3iNGjV04cIFSdKWLVtUsWJFxcbG5t1eoUIFxcbGavv27crMzJQkbdu2TVlZWerdu3e+ecXFxengwYM6cuSIv2IDAEJAu3QKAQAAZYnfimqfPn0kSU888YS+/PJLeb1eLVu2TDt37lR8/E8/C5CSkqKwsDBVrVo137RRUVHKyspSampq3niVK1dWs2bNCownSYcOHfJXbABACBjSe6LtCAAAwIDfimrLli21adMmbd68WVFRUQoPD9eoUaM0e/Zs9erVS5KUkZEhj8dTYNpatWrl3Z7735o1a6pcuXKXHQ8AgOJ4b15/2xEAAICBCv6a0b/+9S899NBDioyM1OzZs1WlShW9+eabGjFihK688krFxZXeZ4MOHz5cassyU7XoUQAAfpcYE287AgAApcJ2F7rc8k0+v+q3ojpp0iRVqFBBa9asUcWKFSVJnTt3VkZGhp588kndc8898ng8Sk9PLzBt7hXS3CumHo9Hp06dUk5OTr6rqj8f71L89QFev9vFlykBgA3/rBtuOwIAAKXCZhcKyi9TOnjwoFq3bp1XUnNdf/31+vbbb3Xy5ElFRkYqLS1NZ8+ezTdOSkqKKlWqlPeZ1MjISGVmZuqLL74oMJ4ktWjRwl+xAQAhYN9svvEXAICyxG9FtV69etq/f7+ysrLyDf/444915ZVXqlatWoqJidH58+e1fv36vNuzs7O1bt06RUdHq3LlypKk22+/XRUrVlRSUlK+eSUlJally5YKDw/3V2wAQAhoPHGH7QgAAMCA3976O3jwYPXr10/33Xeffv/736tKlSrasmWL1q5dq/j4eFWqVElt2rRRbGysxo4dq+zsbIWFhWnJkiVKS0vTokWL8uZVt25dPfbYY3ruuedUvXp1tWnTRuvWrdP777+vVatW+SsyACBEjHhvqWZH97cdAwAAFJPfimrPnj2VnJys559/Xn/4wx+UmZmp8PBwzZo1SwMGDMgbb/78+Zo8ebKmTJmiU6dOqXXr1lq7dq3atm2bb37jx49XtWrVtHDhQp04cUIRERFaunSpYmJi/BUZABAiGp0+YTsCAAAwUM7r9ebYDhEqPK/wZUoAAidneCuVe+6A7RgAioH9FUCgeAc0trbsoPwyJQAAgtW+Z++1HQEAABigqAIAnDc4LtF2BAAAYICiCgBw3neVq9mOAAAADFBUAQDO2/RSvO0IAADAAEUVAOC8FuM2244AAAAMUFQBAM6bsHW+7QgAAMAARRUAAAAAEFQoqgAA502Mecx2BAAAYICiCgBw3qFpd9iOAAAADFBUAQDO6z5wge0IAADAAEUVAOC8qzK/tx0BAAAYoKgCAJy3KCnRdgQAAGCAogoAcF67kcm2IwAAAAMUVQCA82ZtmGE7AgAAMEBRBQA473iNerYjAAAAAxRVAIDzZkf3tx0BAAAYoKgCAJx3bEIX2xEAAIABiioAwHntRiTZjgAAAAxQVAEAzvvlySO2IwAAAAMUVQCA8xK3LrAdAQAAGKCoAgCcFz10qe0IAADAAEUVAOC8F9dMsB0BAAAYoKgCAJy375pWtiMAAAADFFUAgPMW3xJnOwIAADBAUQUAOO/0k+1tRwAAAAYoqgAA5zVK3GE7AgAAMEBRBQA4r8vnH9mOAAAADFBUAQDOG/xhsu0IAADAAEUVAOC8HoMW2I4AAAAMUFQBAM5buWK07QgAAMAARRUA4LxNLTvbjgAAAAxQVAEAzlt1Q3fbEQAAgAGKKgDAeTnDW9mOAAAADFBUAQDOK/fcAdsRAACAAYoqAMB593+8yXYEAABggKIKAHBe94M7bUcAAAAGKKoAAOc98OBM2xEAAIABiioAwHlvLI63HQEAABigqAIAnLfo5nttRwAAAAYoqgAA5+2IuNF2BAAAYICiCgBw3vHELrYjAAAAAxRVAIDzakzfazsCAAAwQFEFADhv0O4k2xEAAIABiioAwHnt0g/YjgAAAAxQVAEAzhvSe6LtCAAAwABFFQDgvPfm9bcdAQAAGKCoAgCclxgTbzsCAAAwQFEFADjvn3XDbUcAAAAGKKoAAOftmx1nOwIAADBAUQUAOK/xxB22IwAAAAMUVQCA80a8t9R2BAAAYICiCgBwXqPTJ2xHAAAABiiqAADnjeo5xnYEAABggKIKAHDevmfvtR0BAAAYoKgCAJw3OC7RdgQAAGCAogoAcN53lavZjgAAAAxQVAEAztv0UrztCAAAwABFFQDgvBbjNtuOAAAADFBUAQDOm7B1vu0IAADAAEUVAAAAABBUKKoAAOdNjHnMdgQAAGCAogoAcN6haXfYjgAAAAxQVAEAzus+cIHtCAAAwABFFQDgvKsyv7cdAQAAGKCoAgCctygp0XYEAABggKIKAHBeu5HJtiMAAAADFFUAgPNmbZhhOwIAADBAUQUAOO94jXq2IwAAAAMUVQCA82ZH97cdAQAAGKCoAgCcd2xCF9sRAACAgYAU1bffflvdunVT48aNdc0116hLly7auXNn3u1er1cJCQlq1qyZGjVqpJ49e+rAgQMF5nPu3DmNHz9eLVq0UIMGDdS1a1d98MEHgYgMAHBYuxFJtiMAAAADfi+qr7zyivr06aO2bdvq1Vdf1dKlS3X33Xfrhx9+kCTl5OTovvvu07Zt2zRjxgwtX75c58+f11133aVjx47lm1dCQoKWLVumcePGac2aNapfv7569eqlzz77zN+xAQAO++XJI7YjAAAAAxX8ObO0tDSNHTtWkyZNUnx8fN7w2267Le//N2/erD179uiNN95Qp06dJEnt27dXmzZtNGfOHM2Y8dM3M+7fv1/JycmaN2+e+vbtK0nq0KGDbrrpJk2bNk2rV6/2Z3QAgMMSty5Q9NAbbccAAADF5Ncrqq+++qrKly+vhx9++JLjbNmyRQ0bNswrqZJUs2ZNxcTEaPPmzfnGq1ixomJjY/OGVahQQbGxsdq+fbsyMzP9GR0A4LDooUttRwAAAAb8WlT37Nmj5s2b6/XXX1fbtm1Vu3ZtXXfddVq8eHHeOCkpKYqKiiowbVRUlI4ePaozZ87kjRcWFqaqVasWGC8rK0upqan+jA4AcNiLaybYjgAAAAz49a2/X331lb766iv96U9/0p/+9CeFh4drw4YNGj16tLKzs/Xoo48qIyNDTZs2LTBtrVq1JP30RUvVq1dXRkaGPB7PJcfLyMjwZ3QAgMP2XdPKdgQAAGDAr0X1woUL+u6777R8+XL16NFDktS5c2f9+9//1nPPPadHHnnEn4u7pMOHD5fKcsxVLXoUAIDfLb4lznYEAABKhe0udLnlN2/evNjz8WtRvfrqq/Wvf/1L0dHR+YZHR0fr3Xff1VdffSWPxyOv11tg2twrpLlXUT0ej9LT0y85Xu6V1cKY3AGlatexoscBAPjd6Sfbq8b0vbZjAAAQcDa70OHDh/22fL9+RjUyMvLyCytfXpGRkUpJSSlwW0pKipo0aaLq1avnzSstLU1nz54tMF6lSpXUrFkz/wUHADitUeIO2xEAAIABvxbV7t27S5K2b9+eb/i2bdvUuHFj1a9fX926ddPx48e1a9euvNtPnz6trVu3qlu3bnnDYmJidP78ea1fvz5vWHZ2ttatW6fo6GhVrlzZn9EBAA7r8vlHtiMAAAADfn3r729+8xvdeuutevzxx/XNN98oPDxc69ev1/bt2zV//nxJ0h133KEbb7xRQ4YM0aRJk+TxeDR79mzl5ORo2LBhefNq06aNYmNjNXbsWGVnZyssLExLlixRWlqaFi1a5M/YAADHDf4wWZtaRxc9IgAACAp+LarlypXTypUrNWnSJD399NPyer1q3ry5Fi9erHvvvVfST2//XbNmjf74xz9q5MiRyszMVPv27bVx40Y1adIk3/zmz5+vyZMna8qUKTp16pRat26ttWvXqm3btv6MDQBwXI9BC2xHAAAABsp5vd4c2yFChecVvkwJQODkDG+lcs8dsB0jKK1cMVoPPDjTdgwgD/srgEDxDmhsbdlB+2VKAAAEo00tO9uOAAAADFBUAQDOW3VDd9sRAACAAYoqAMB5OcNb2Y4AAAAMUFQBAM7js4AAAJQtFFUAgPPu/3iT7QgAAMAARRUA4LzuB3fajgAAAAxQVAEAzuOnaQAAKFsoqgAA572xON52BAAAYICiCgBw3qKb77UdAQAAGKCoAgCctyPiRtsRAACAAYoqAMB5xxO72I4AAAAMUFQBAM6rMX2v7QgAAMAARRUA4LxBu5NsRwAAAAYoqgAA57VLP2A7AgAAMEBRBQA4b0jvibYjAAAAAxRVAIDz3pvX33YEAABggKIKAHBeYky87QgAAMAARRUA4Lx/1g23HQEAABigqAIAnLdvdpztCAAAwABFFQDgvMYTd9iOAAAADFBUAQDOG/HeUtsRAACAAYoqAMB5jU6fsB0BAAAYoKgCAJw3qucY2xEAAIABiioAwHn7nr3XdgQAAGCAogoAcN7guETbEQAAgAGKKgDAed9VrmY7AgAAMEBRBQA4b9NL8bYjAAAAAxRVAIDzWozbbDsCAAAwQFEFADhvwtb5tiMAAAADFFUAAAAAQFChqAIAnDcx5jHbEQAAgAGKKgDAeYem3WE7AgAAMEBRBQA4r/vABbYjAAAAAxRVAIDzrsr83nYEAABggKIKAHDeoqRE2xEAAIABiioAwHntRibbjgAAAAxQVAEAzpu1YYbtCAAAwABFFQDgvOM16tmOAAAADFBUAQDOmx3d33YEAABggKIKAHDesQldbEcAAAAGKKoAAOe1G5FkOwIAADBAUQUAOO+XJ4/YjgAAAAxQVAEAzkvcusB2BAAAYICiCgBwXvTQpbYjAAAAAxRVAIDzXlwzwXYEAABggKIKAHDevmta2Y4AAAAMUFQBAM5bfEuc7QgAAMAARRUA4LzTT7a3HQEAABigqAIAnNcocYftCAAAwABFFQDgvC6ff2Q7AgAAMEBRBQA4b/CHybYjAAAAAxRVAIDzegxaYDsCAAAwQFEFADhv5YrRtiMAAAADFFUAgPM2texsOwIAADBAUQUAOG/VDd1tRwAAAAYoqgAA5+UMb2U7AgAAMEBRBQA4r9xzB2xHAAAABiiqAADn3f/xJtsRAACAAYoqAMB53Q/utB0BAAAYoKgCAJz3wIMzbUcAAAAGKKoAAOe9sTjedgQAAGCAogoAcN6im++1HQEAABigqAIAnLcj4kbbEQAAgAGKKgDAeccTu9iOAAAADFBUAQDOqzF9r+0IAADAAEUVAOC8QbuTbEcAAAAGKKoAAOe1Sz9gOwIAADBAUQUAOG9I74m2IwAAAAMUVQCA896b1992BAAAYICiCgBwXmJMvO0IAADAQECLaq9eveTxeDRlypR8w71erxISEtSsWTM1atRIPXv21IEDBT8/dO7cOY0fP14tWrRQgwYN1LVrV33wwQeBjAwAcNA/64bbjgAAAAwErKiuXbtW//jHPwoMz8nJ0X333adt27ZpxowZWr58uc6fP6+77rpLx44dyzduQkKCli1bpnHjxmnNmjWqX7++evXqpc8++yxQsQEADto3O852BAAAYCAgRdXr9WrcuHGaOnVqgds2b96sPXv2aOHChbrnnnt0++23a9WqVbpw4YLmzJmTN97+/fuVnJysadOmqV+/furcubOWLl2qJk2aaNq0aYGIDQBwVOOJO2xHAAAABgJSVCdMmKCoqCjdc889BW7bsmWLGjZsqE6dOuUNq1mzpmJiYrR58+Z841WsWFGxsbF5wypUqKDY2Fht375dmZmZgYgOAHDQiPeW2o4AAAAM+L2ofvjhh1q9erVmzZpV6O0pKSmKiooqMDwqKkpHjx7VmTNn8sYLCwtT1apVC4yXlZWl1NRUf0cHADiq0ekTtiMAAAADfi2qWVlZGj58uBISEtS8efNCx8nIyJDH4ykwvFatWpJ+ettwccbLyMjwS2YAgPtG9RxjOwIAADBQwZ8zmzNnjn744QeNHDnSn7M1dvjwYavLv7SqRY8CAPC7fc/eq3Yjk23HAAAg4Gx3ocst/1IXMwvjt6Kanp6uZ599Vn/+85+VmZmZ7zOkmZmZ8nq9uuqqq+TxePKuml4s9wpp7lVUj8ej9PT0S46Xe2W1MCZ3QKnadazocQAAfjc4LtF2BAAASoXNLnT48GG/Ld9vb/09cuSIzp07p8GDBys8PDzvT5Lmzp2r8PBwHThwQJGRkUpJSSkwfUpKipo0aaLq1atLkiIjI5WWlqazZ88WGK9SpUpq1qyZv6IDABz3XeVqtiMAAAADfiuq1157rTZu3FjgT5Li4uK0ceNGNWvWTN26ddPx48e1a9euvGlPnz6trVu3qlu3bnnDYmJidP78ea1fvz5vWHZ2ttatW6fo6GhVrlzZX9EBAI7b9FK87QgAAMCA39766/F4dOuttxZ6W9OmTfNuu+OOO3TjjTdqyJAhmjRpkjwej2bPnq2cnBwNGzYsb5o2bdooNjZWY8eOVXZ2tsLCwrRkyRKlpaVp0aJF/ooNAAgBLcZtLnokAAAQNALyO6qXXWD58lqzZo26dOmikSNHqm/fvrriiiu0ceNGNWnSJN+48+fP1wMPPKApU6YoLi5Ox44d09q1a9W2bdvSjg0AKMMmbJ1vOwIAADDg12/9LUxhX5xUq1YtzZ8/X/PnX/7EoUqVKpo2bZqmTZsWoHQAAAAAgGBT6ldUAQAobRNjHrMdAQAAGKCoAgCcd2jaHbYjAAAAAxRVAIDzug9cYDsCAAAwQFEFADjvqszvbUcAAAAGKKoAAOctSkq0HQEAABigqAIAnNduZLLtCAAAwABFFQDgvFkbZtiOAAAADFBUAQDOO16jnu0IAADAAEUVAOC82dH9bUcAAAAGKKoAAOcdm9DFdgQAAGCAogoAcF67EUm2IwAAAAMUVQCA83558ojtCAAAwABFFQDgvMStC2xHAAAABiiqAADnRQ9dajsCAAAwQFEFADjvxTUTbEcAAAAGKKoAAOftu6aV7QgAAMAARRUA4LzFt8TZjgAAAAxQVAEAzjv9ZHvbEQAAgAGKKgDAeY0Sd9iOAAAADFBUAQDO6/L5R7YjAAAAAxRVAIDzBn+YbDsCAAAwQFEFADivx6AFtiMAAAADFFUAgPNWrhhtOwIAADBAUQUAOG9Ty862IwAAAAMUVQCA81bd0N12BAAAYICiCgBwXs7wVrYjAAAAAxRVAIDzyj13wHYEAABggKIKAHDe/R9vsh0BAAAYoKgCAJzX/eBO2xEAAIABiioAwHkPPDjTdgQAAGCAogoAcN4bi+NtRwAAAAYoqgAA5y26+V7bEQAAgAGKKgDAeTsibrQdAQAAGKCoAgCcdzyxi+0IAADAAEUVAOC8GtP32o4AAAAMUFQBAM4btDvJdgQAAGCAogoAcF679AO2IwAAAAMUVQCA84b0nmg7AgAAMEBRBQA47715/W1HAAAABiiqAADnJcbE244AAAAMUFQBAM77Z91w2xEAAIABiioAwHn7ZsfZjgAAAAxQVAEAzms8cYftCAAAwABFFQDgvBHvLbUdAQAAGKCoAgCc1+j0CdsRAACAAYoqAMB5o3qOsR0BAAAYoKgCAJy379l7bUcAAAAGKKoAAOcNjku0HQEAABigqAIAnPdd5Wq2IwAAAAMUVQCA8za9FG87AgAAMEBRBQA4r8W4zbYjAAAAAxRVAIDzJmydbzsCAAAwQFEFAAAAAAQViioAwHkTYx6zHQEAABigqAIAnHdo2h22IwAAAAMUVQCA87oPXGA7AgAAMEBRBQA476rM721HAAAABiiqAADnLUpKtB0BAAAYoKgCAJzXbmSy7QgAAMAARRUA4LxZG2bYjgAAAAxQVAEAzjteo57tCAAAwABFFQDgvNnR/W1HAAAABiiqAADnHZvQxXYEAABggKIKAHBeuxFJtiMAAAADFFUAgPN+efKI7QgAAMAARRUA4LzErQtsRwAAAAYoqgAA50UPXWo7AgAAMEBRBQA478U1E2xHAAAABiiqAADn7bumle0IAADAAEUVAOC8xbfE2Y4AAAAM+LWobtiwQQ8++KBat26tBg0aqF27dpo4caK+++67fON5vV4lJCSoWbNmatSokXr27KkDBw4UmN+5c+c0fvx4tWjRQg0aNFDXrl31wQcf+DMyACAEnH6yve0IAADAgF+L6ty5c3XFFVfoT3/6k9auXauHH35YS5Ys0e9+9ztduHBBkpSTk6P77rtP27Zt04wZM7R8+XKdP39ed911l44dO5ZvfgkJCVq2bJnGjRunNWvWqH79+urVq5c+++wzf8YGADiuUeIO2xEAAICBCv6c2erVq1WnTp28f3fs2FG1atXSo48+qr/+9a/q3LmzNm/erD179uiNN95Qp06dJEnt27dXmzZtNGfOHM2YMUOStH//fiUnJ2vevHnq27evJKlDhw666aabNG3aNK1evdqf0QEADuvy+Ufa1DradgwAAFBMfr2ienFJzXX99ddLkr788ktJ0pYtW9SwYcO8kipJNWvWVExMjDZv3pw3bMuWLapYsaJiY2PzhlWoUEGxsbHavn27MjMz/RkdAOCwwR8m244AAAAMBPzLlHI/U9qiRQtJUkpKiqKiogqMFxUVpaNHj+rMmTN544WFhalq1aoFxsvKylJqamqAkwMAXNFj0ALbEQAAgAG/vvX3544fP65p06apS5cuuu666yRJGRkZatq0aYFxa9WqJemnL1qqXr26MjIy5PF4LjleRkbGJZd7+PBhP6QPhKpFjwIA8LuVK0brgQdn2o4BAEDA2e5Cl1t+8+bNiz2fgBXVM2fOqE+fPqpQoYLmz58fqMUUyuQOKFW7jhU9DgDA7za17Gw7AgAApcJm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AAAQaEFdVLt166a9e/fqyJEjecPS0tL0t7/9Td26dbMX7CJHjx7VQw89pKZNm+qaa65R3759lZ6eXqxpz507p/Hjx6tFixZq0KCBunbtqg8++CDAiUNLSbfP3//+dw0bNkzt27dXw4YN1bp1aw0aNCjfYxG+8WXfudhzzz0nj8ejmJiYAKQMXb5un0OHDqlfv35q1qyZGjRooHbt2umFF14IYOLQ4cu2SU9P1yOPPKLWrVurQYMGuuGGGzRlyhR+m9yPjh07ptGjR6tr165q2LChPB6P0tLSijXthQsXNHv2bF177bWqX7++OnTooA0bNgQ4cego6bb5/PPP9cQTT+iWW25R48aN1aJFC913333av39/KaQOHb7sOxd7/fXX5fF41LJlywCkDE2+bpvjx4/rscce0y9/+UvVq1dPv/rVrzRx4sQipwvqotqvXz81bdpUffr00ZtvvqnNmzerT58+aty4sQYMGGA7ns6ePasePXro8OHDWrBggRYuXKjU1FTdddddxXrST0hI0LJlyzRu3DitWbNG9evXV69evfTZZ5+VQnr3+bJ9Xn/9daWkpGjIkCFKTk7WhAkT9Omnnyo6OlpHjx4tpTVwl6/7Tq4jR45o1qxZqlu3bgDThh5ft8/f//533X777crMzNSf//xnJSUlaejQofrxxx9LIb3bfNk233//ve6++27t3r1b48aNU1JSkh566CHNmzdPQ4cOLaU1cF9qaqrWr18vj8ejm2++2WjaqVOnavr06Ro8eLCSk5PVvn179e/fX2+//XaA0oaWkm6b7du3669//avuv/9+rVq1SrNmzdI333yjrl276pNPPglc4BDjy76Ty+v1auzYsapfv76f04U2X7ZNWlqabrvtNv3rX//SM888o7/85S968skndcUVVxQ5bTmv15tT0tClIT09XePGjdOOHTuUk5OjTp066emnn1ZYWJjtaHrhhRf01FNPad++fXm/9XrkyBHdcMMNmjhx4mWf+Pfv369bb71V8+bNU9++fSVJ2dnZuummmxQREaHVq1eXyjq4zJft8/XXX6tOnTr5hv373/9WmzZtNGrUKD311FMBze46X7bNxWJjY9W0aVMdPnxYP/74o7Zu3RrI2CHDl+1z4cIF3XzzzYqIiNDKlStLK3LI8GXbbN++XbGxsfrLX/6i//3f/80bnpiYqLlz5yo9PV1Vq1YN+Dq47sKFCypf/qfrAMuXL9cf/vAHffrpp0Wet5w8eVKtWrXS448/rnHjxuUN79Gjh77++mvt3r07oLlDQUm3zTfffKOrr75a5cqVyxt26tQp/epXv1JMTIxefPHFgOYOFSXdPhcbNmyY0tPTVb9+fe3cuVMHDx4MVNyQ4su26dWrlzIyMvTWW2+pYsWKRssN6iuqknTNNddoxYoVSk9P19GjR/Xaa68FRUmVpC1btqh9+/Z5JwuSFB4erl//+tfavPnyPy6/ZcsWVaxYUbGxsXnDKlSooNjYWG3fvl2ZmZkByx0qfNk+Py+pktS0aVPVqVNHX375pd+zhhpftk2u5ORkffrpp5owYUKgYoYsX7bPX//6Vx06dEiPPfZYoGOGJF+2TVZWliTpqquuyje8Zs2aunDhgnJygvp16zIj92TO1LZt25SVlaXevXvnGx4XF6eDBw/y0RM/KOm2qV27dr6SKv2030RERHBO4Ecl3T659uzZo6SkJM2aNctPiZCrpNvmiy++0LZt2zR48GDjkiqVgaIazFJSUhQVFVVgeFRUlA4dOlTktGFhYQVevY6KilJWVpZSU1P9mjUU+bJ9CnPo0CGdPHmSL/LyA1+3jdfr1bhx4zRx4kTVqlUrEBFDmi/bZ8+ePZKkzMxM3X777apTp44iIiI0ZswY/fDDDwHJG0p82TZdunTRL37xC02YMEEpKSk6c+aMdu7cqYULF+rhhx9WtWrVAhUbxZCSkqLKlSvnexFCUt72LsnzFgInIyND//d//8c5QZA4f/68Hn/8cSUkJBTYh2BP7jlBlSpVdPfdd6tevXoKCwvTkCFD9O233xY5PUXVB5f6mZxatWoV+rM6xZ0293b4xpft83PZ2dkaPny46tSpowcffNA/AUOYr9tm/PjxioiI0AMPPOD/cPBp+3z11VeSpAEDBig6Olrr1q3TsGHDtGLFCg0cODAAaUOLL9vmyiuv1NatW5WTk6ObbrpJTZo0Uc+ePfXb3/5WM2fODExgFFtGRoZq1qxZ4Mod5wXBacyYMcrJydGjjz5qOwokPf/888rMzNSIESNsR8FFcs8Jhg4dqoiICCUnJ2vixIl6++23FRsbqwsXLlx2+gqlERIo60aPHq2PPvpISUlJ/IavZbt379bq1au1c+fOAid0sC/3SScuLi7vs9y33nqrfvzxRyUmJurQoUNcgbDk3LlzGjBggE6ePKkXX3xRTZo00f/7f/9PM2bMUIUKFTR79mzbEYEyYfbs2UpOTtbcuXO5ehcEUlNT9eyzz+rVV1/VlVdeaTsOLpJ7TtChQ4e8t2R37txZNWrU0MMPP6xt27apa9eul5yeK6o+8Hg8hb6CfalXvIs7rSTezugHvmyfiyUmJmrp0qWaN29evi8gQcn5sm2GDx+uBx98UI0aNZLX65XX69WPP/6oH3/8UV6vl893+4Ev2+fqq6+WJEVHR+cbnvtvvtXcN75smxUrVmjXrl1KTk5W79691aFDByUkJGjKlCl6+eWX+akNyzwej06dOlXgs8KcFwSXl19+WZMmTdIf//hH3mEVJJ544gl16tRJ7dq1yzsvOH/+vHJycuT1evnYiUWXOifIPZ8u6pyAK6o+iIyMVEpKSoHhKSkpRV4xiIyM1KZNm3T27Nl8n1NNSUlRpUqVeIXOD3zZPrlmzZql559/XjNmzNB9993n74ghy5dtc+jQIR06dEgvv/xygdvCw8M1bdo0xcfH+y1rKPL12HY5vn5ZRqjzZdscPHhQHo9H//M//5Nv+PXXXy9J+uc//6lrr73Wf2FhJDIyUpmZmfriiy/ynQPkbm/eiWDf6tWrNXLkSA0dOlSjRo2yHQf/kZKSovT0dIWHhxe4LTw8XI888oimT59e+sHg8zkBZww+6Natm/bu3Zvvm/jS0tL0t7/9Td26dbvstDExMTp//rzWr1+fNyw7O1vr1q1TdHS0KleuHKDUocOX7SNJCxcu1JQpUzR+/HgNHjw4gElDjy/bZuPGjQX+WrdurZYtW2rjxo3q2bNngNO7z5ft07VrV1WuXFnbt2/PN3zbtm2SpOuuu87veUOJL9umXr168nq9Bb6s7+OPP5YkNWzY0O95UXy33367KlasqKSkpHzDk5KS1LJly0JPwlF6Nm7cqMcee0wPPfSQpkyZYjsOLvLyyy8XOC+47bbbVLt2bW3cuJFzOIvat2+v+vXrFzgnePfddyX994XSSwn631ENZt9//706duyoKlWq6KmnnlK5cuU0depUnTlzRh988IGqV68u6aff37zuuus0ZswYPfHEE3nT5743e/LkyQoLC9OSJUv01ltv6a233lLbtm0trZU7fNk+r7/+ugYOHKjbbrst3zaTfvpph6JeIcLl+brv/Nydd97J76j6ka/bZ/r06Zo5c6aGDRumTp066e9//7ueeeYZ/e53v9MLL7xga7Wc4Mu2SUtLU8eOHVWvXj2NHDlSTZo00SeffKKZM2fqF7/4hbZv384Vbz/ZsGGDJGnnzp16+eWX9eyzz6pOnTqqXbu2OnbsKOmnnzy5//77NW/evLzpEhMT9cILL2j8+PFq06aN1q1bp1deeUWrVq1STEyMlXVxTUm2zQcffKDY2FhFRkZqxowZ+faTSpUqqU2bNqW/Io4q6b7zc48++ii/o+pnJd02r732muLj4zVgwADdddddSk1N1eTJk3Xttddq48aNl/2+Ed7664Nq1arpjTfe0Lhx4/TII48oJydHnTp10tNPP513siBJOTk5+vHHHwt8s9X8+fM1efJkTZkyRadOnVLr1q21du1aSqqf+LJ93n33XeXk5Ojdd9/Ne9UnV4cOHfTmm2+W2nq4yNd9B4Hl6/Z54oknVL16dS1ZskRz585V/fr1lZCQoDFjxpT2qjjHl20TFhamd955R9OnT9fUqVP1zTffqHHjxurXr59GjRpFSfWjfv365fv3yJEjJeV//sj9bP3Fxo8fr2rVqmnhwoU6ceKEIiIitHTpUkqqH5Vk27z//vvKzMzUp59+qt/+9rf5pr/mmmv4fLcflXTfQeCVdNv06dNH5cuX15w5c7Ry5UrVqlVLcXFxmjBhQpFfiskVVQAAAABAUOHlUwAAAABAUKGoAgAAAACCCkUVAAAAABBUKKoAAAAAgKBCUQUAAAAABBWKKgAAAACEqGPHjmn06NHq2rWrGjZsKI/Ho7S0NJ/muXfvXvXq1UtNmzZVo0aNdMstt+j11183mgdFFQAAAABCVGpqqtavXy+Px6Obb77Z5/m99dZbuuOOO1SvXj299NJLeu211/TQQw/p3LlzRvPhd1QBAAAAIERduHBB5cv/dP1y+fLl+sMf/qBPP/1UYWFhxvP67rvvdN111+mee+7R9OnTfcrFFVUAAAAACFG5JbUoX3/9tYYPH66oqCjVq1dP7du319KlS/ONs379en399dcaOnSo77l8ngMAAAAAwFmnT59WTEyM3nnnHT355JNKSkpSTEyMRowYoRdffDFvvD179qhWrVo6ePCgbrnlFtWuXVutWrXS9OnT9eOPPxots4K/VwIAAAAA4I6FCxcqPT1du3fv1i9+8QtJUpcuXXTq1Ck988wz+v3vf68KFSroq6++0g8//KCBAwdq9OjRatu2rXbu3KmZM2fq1KlTevrpp4u9TK6oAgAAAAAuadu2bbrhhhsUFham7OzsvL/bbrtN3377rVJSUiT99HnXc+fOacyYMUpISNCtt96qP/7xj+rXr59eeuklnTp1qtjL5IoqAAAAAOCSTp48qdTUVNWpU6fQ27/99ltJ0tVXXy1Jio6Oznd7dHS0Xn75ZaWkpOjXv/51sZZJUQUAAAAAXNLVV1+tunXrXvKbfCMiIiRJkZGRl51Pcb+4SaKoAgAAAAAu47bbbtOiRYvUpEkT1a1b95Lj3XnnnZo6daq2b9+uVq1a5Q3ftm2brrzySkVFRRV7mRRVAAAAAAhhGzZskCR98sknkqR3331XderUUe3atdWxY0fFx8dr3bp16tatm+Lj4xUREaGzZ8/q8OHD2r17t1atWiVJatmypfr06aNp06bpwoULatOmjXbs2KHly5dr9OjRql69erEzlfN6vTl+X1MAAAAAQJng8XgKHd6hQwe9+eabkiSv16tnnnlGb775pr788kvVrFlTzZs311133aX4+Pi8abKysjRjxgytWrVKJ06cUNOmTTVw4EA9+uijRpkoqgAAAACAoMLP0wAAAAAAggpFFQAAAAAQVCiqAAAAAICgQlEFAAAAAAQViioAAAAAIKhQVAEAAAAAQYWiCgAAAAAIKhRVAAAAAEBQoagCAAAAAILK/wcrwKHN9xLjtwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Let's plot the distribution for the test data. Should be flat\n", + "fig, ax = plt.subplots()\n", + "ax.hist(data_unif, bins=300);\n", + "plot_quartiles(ax)" + ] + }, + { + "cell_type": "markdown", + "id": "99fbe6ad", + "metadata": {}, + "source": [ + "### 3.2 subsample\n", + "We define now the subsampling function with gaussian weighting" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "ready-seventh", + "metadata": {}, + "outputs": [], + "source": [ + "def subsample_gauss(data: np.ndarray, mean: float, sdev: float, norm_factor: float) -> np.ndarray:\n", + " \"\"\"\n", + " Vectorized subsampling: process the whole dataset\n", + " \"\"\"\n", + " # Create the gaussian weight for each data point\n", + " p = norm.pdf(data, loc=mean, scale=sdev)/norm_factor\n", + " #print(p)\n", + " # Subsample data with probability according to the weight\n", + " return data[ uniform.rvs(size=len(p)) < p ]" + ] + }, + { + "cell_type": "markdown", + "id": "hidden-shelf", + "metadata": {}, + "source": [ + "After resampling, at each perplexity value, the probability of retaining a sample will be the value of the normalized gaussian PDF curve.\n", + "\n", + "This also means that the overall sample ratio will be:\n", + "\n", + "
\n", + "
\n", + "\n", + "$$\\text{R} = \\int{p(v) \\cdot w(v) dv} = \n", + "\\int{ p(v) \\cdot \\frac{1}{\\text{pdf}_{max}} \\text{pdf}(v) dv } = \n", + "$$\n", + "\n", + "
\n", + "\n", + "$$ = { \\frac{1}{W} \\cdot \\frac{1}{\\text{pdf}_{max}} \\text{pdf}(v) dv } = \n", + "\\frac{1}{W\\cdot\\text{pdf}_{max}}\\int{\\text{pdf}(v) dv} =\n", + "\\frac{1}{W\\cdot\\text{pdf}_{max}}$$\n", + "\n", + "
\n", + " \n", + "where $W$ is the interval width, and we use the value of the uniform probability ($1/W$) and the fact that the integral of the Gaussian distribution over the interval sums approximately 1 (given that the interval is big enough to encompass most of the Gaussian definition interval)\n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "russian-sodium", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.31994686644840487" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ratio = 1/(width*pdf_max)\n", + "ratio" + ] + }, + { + "cell_type": "markdown", + "id": "fdcae693", + "metadata": {}, + "source": [ + "Let's do the resampling:" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "random-champion", + "metadata": {}, + "outputs": [], + "source": [ + "data_unif_sub = subsample_gauss(data_unif, mean, sdev, pdf_max)" + ] + }, + { + "cell_type": "markdown", + "id": "vietnamese-carry", + "metadata": {}, + "source": [ + "### 3.3 check results" + ] + }, + { + "cell_type": "markdown", + "id": "quarterly-february", + "metadata": {}, + "source": [ + "Check the obtained sampling ratio; it should be aproximately equal to the estimation:" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "specialized-penny", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.3208933333333333" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(data_unif_sub)/len(data_unif)" + ] + }, + { + "cell_type": "markdown", + "id": "thirty-mexican", + "metadata": {}, + "source": [ + "Check the shares of the distribution below $X_a$ and above $X_b$, they should match our objectives" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "intensive-fitness", + "metadata": {}, + "outputs": [], + "source": [ + "def check_regions(data: np.ndarray):\n", + " ra = len(data[data < qr[0]]) / len(data)\n", + " print(\"Probability mass below Pa:\", ra)\n", + " rb = len(data[data > qr[2]]) / len(data)\n", + " print(\"Probability mass above Pb:\", rb)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "advisory-certification", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probability mass below Pa: 0.14987327045331783\n", + "Probability mass above Pb: 0.1009785183030706\n" + ] + } + ], + "source": [ + "check_regions(data_unif_sub)" + ] + }, + { + "cell_type": "markdown", + "id": "brown-perception", + "metadata": {}, + "source": [ + "We can plot the resulting data distribution" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "painted-madonna", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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0DPPPKO7775bTZo0UcuWLfXwww/r4MGDZZDaXUx+hn7srbfeksfjUevWrUshpXuZzs+JEyc0atQo3X777apfv77++7//W1OmTCnRff26xA4aNEjNmjXTo48+qk2bNmnz5s169NFH1aRJEw0ZMsRqtrNnz6pPnz7KyMjQggULtHDhQmVmZuqBBx4o0RuA2NhYLV++XBMnTtTq1avVoEED9evXT5999lkZpHcHkzl66623lJ6erhEjRigtLU2TJ0/Wp59+qsjISB0/fryMnkHFZvozVOjo0aOaPXu26tWrV4pp3cl0jj7++GP16NFDubm5+sMf/qDU1FSNHj1aFy9eLIP0FZ/J/Hz33Xd68MEHtXfvXk2cOFGpqakaOHCg5s2bx+XrHJSZmal169bJ4/Goc+fO13Xf6dOna8aMGRo+fLjS0tIUHh6uwYMH69133y2ltO5zo/OzY8cO/eUvf9EjjzyilStXavbs2frXv/6lnj176pNPPim9wC5k8jNUyOv1asKECWrQoIHD6WAyP1lZWbr33nv1z3/+Uy+88IL+9Kc/6dlnn9VNN91Uovv79SV2pB/+Ujxx4kTt3LlTBQUF6tq1q55//nkFBwdbzfXKK69o0qRJOnDgQNF1bI8ePaq77rpLU6ZMueqbgIMHD+qee+7RvHnzNGDAAElSXl6eOnXqpNDQUK1atapMnkNFZzJHX331lerWreuz7f/+7//Url07PfXUU5o0aVKpZncDk/n5sejoaDVr1kwZGRm6ePGitm7dWpqxXcVkjvLz89W5c2eFhobqzTffLKvIrmIyPzt27FB0dLT+9Kc/6X/+53+KticmJmru3Lk6duyYqlevXurPoaLLz89X5co/rBesWLFCv/3tb/Xpp59e8z3MqVOn1KZNG40dO1YTJ04s2t6nTx999dVX2rt3b6nmdosbnZ9//etfuvXWW1WpUqWibadPn9Z///d/KyoqSq+++mqp5naTG52jHxszZoyOHTumBg0aaNeuXTp8+HBpxXUdk/np16+fcnJy9M477yggIOC6v7Zfr8RK0m233abXX39dx44d0/Hjx/XHP/7ReoGVpC1btig8PLzojYMkhYSE6Gc/+5k2b958zfsGBAQoOjq6aFuVKlUUHR2tHTt2KDc3t9Ryu4nJHF1aYCWpWbNmqlu3rr744gvHs7qRyfwUSktL06effqrJkyeXVkxXM5mjv/zlLzpy5IhGjRpV2jFdy2R+zp8/L0m65ZZbfLbXrl1b+fn5Kijw679vlxuFb+6u1/bt23X+/Hn179/fZ3tMTIwOHz7MoS0OudH5qVOnjk+BlX742QkNDeU9gsNudI4K7du3T6mpqZo9e7ZDifBjNzo/n3/+ubZv367hw4ffUIGVykGJ9Vfp6elq1apVse2tWrXSkSNHrnnf4ODgYn/lbtWqlc6fP6/MzExHs7qVyRxdzpEjR3Tq1ClOKuYQ0/nxer2aOHGipkyZoqCgoNKI6Homc7Rv3z5JUm5urnr06KG6desqNDRUTz/9tL7//vtSyes2JvPTvXt3/eQnP9HkyZOVnp6ub7/9Vrt27dLChQv1xBNPqEaNGqUVGyWQnp6uwMBAnz9QSCqa7xt5DUPpysnJ0f/+7//yHsGPXLhwQWPHjlVsbGyxnyXYVfgeoVq1anrwwQdVv359BQcHa8SIEfr6669L9BiU2Bt0pcv8BAUFXfayQCW9b+HtMGcyR5fKy8vTuHHjVLduXT3++OPOBHQ50/lJSEhQaGioHnvsMefDQZLZHH355ZeSpCFDhigyMlJr167VmDFj9Prrr2vo0KGlkNZ9TObn5ptv1tatW1VQUKBOnTqpadOm6tu3r37+859r1qxZpRMYJZaTk6PatWsXW+3jfYL/evrpp1VQUKAnn3zSdhT820svvaTc3FyNHz/edhRcovA9wujRoxUaGqq0tDRNmTJF7777rqKjo5Wfn3/Nx6hS2iGBiiA+Pl4ffvihUlNTuUaxH9i7d69WrVqlXbt2FXuTB/9Q+AIUExNTdAz5Pffco4sXLyoxMVFHjhxhxcKic+fOaciQITp16pReffVVNW3aVP/v//0/zZw5U1WqVFFycrLtiEC5kZycrLS0NM2dO5cVPz+RmZmpF198UW+88YZuvvlm23FwicL3CBEREUW7enfr1k21atXSE088oe3bt6tnz55XfQxWYm+Qx+O57F+6r/SX8ZLeVxK7RjrEZI5+LDExUSkpKZo3b57PCVBgxmR+xo0bp8cff1yNGzeW1+uV1+vVxYsXdfHiRXm9Xo4rd4jJHN16662SpMjISJ/thZ9zJnZzJvPz+uuv6/3331daWpr69++viIgIxcbGatq0aVq6dCmXCrHM4/Ho9OnTxY5N5n2C/1m6dKmee+45/e53v2NPLT/yzDPPqGvXrurQoUPR+4QLFy6ooKBAXq+Xw1osu9J7hML32SV5j8BK7A0KCwtTenp6se3p6enXXF0ICwvTxo0bdfbsWZ/jYtPT01W1alX+iucQkzkqNHv2bL300kuaOXOmHn74YacjuprJ/Bw5ckRHjhzR0qVLi90WEhKipKQkjRw50rGsbmX6e+5qTE/WAbP5OXz4sDwej/7rv/7LZ/tPf/pTSdLf//533XHHHc6FxXUJCwtTbm6uPv/8c5/3BIXzzV4M/mHVqlWKi4vT6NGj9dRTT9mOgx9JT0/XsWPHFBISUuy2kJAQ/eY3v9GMGTPKPhgkOfMegXcRN6hXr17av3+/zxkCs7Ky9Ne//lW9evW66n2joqJ04cIFrVu3rmhbXl6e1q5dq8jISAUGBpZSancxmSNJWrhwoaZNm6aEhAQNHz68FJO6k8n8bNiwodhH27Zt1bp1a23YsEF9+/Yt5fTuYDJHPXv2VGBgoHbs2OGzffv27ZKkO++80/G8bmMyP/Xr15fX6y12IsGPPvpIktSoUSPH86LkevTooYCAAKWmpvpsT01NVevWrS/7xhxla8OGDRo1apQGDhyoadOm2Y6DSyxdurTY+4R7771XderU0YYNG3hfZ1l4eLgaNGhQ7D3Ctm3bJP3nD6pX4/fXifVX3333nbp06aJq1app0qRJqlSpkqZPn65vv/1We/bsUc2aNSX9cG3RO++8U08//bSeeeaZovsX7u89depUBQcHa8mSJXrnnXf0zjvvqH379paeVcViMkdvvfWWhg4dqnvvvddn3qQfLklxrb8g4dpMf4Yu9Ytf/ILrxDrMdI5mzJihWbNmacyYMeratas+/vhjvfDCC/rlL3+pV155xdbTqjBM5icrK0tdunRR/fr1FRcXp6ZNm+qTTz7RrFmz9JOf/EQ7duxgtdwh69evlyTt2rVLS5cu1Ysvvqi6deuqTp066tKli6QfLtnyyCOPaN68eUX3S0xM1CuvvKKEhAS1a9dOa9eu1bJly7Ry5UpFRUVZeS4V0Y3Mz549exQdHa2wsDDNnDnT52elatWqateuXdk/kQrsRn+GLvXkk09yndhScKPz88c//lEjR47UkCFD9MADDygzM1NTp07VHXfcoQ0bNlzznCfsTnyDatSoobffflsTJ07Ub37zGxUUFKhr1656/vnni944SFJBQYEuXrxY7Cxb8+fP19SpUzVt2jSdPn1abdu21Zo1ayiwDjKZo23btqmgoEDbtm0r+qtQoYiICG3atKnMnkdFZfozhNJnOkfPPPOMatasqSVLlmju3Llq0KCBYmNj9fTTT5f1U6mQTOYnODhYf/7znzVjxgxNnz5d//rXv9SkSRMNGjRITz31FAXWQYMGDfL5PC4uTpLva0nhMf0/lpCQoBo1amjhwoU6efKkQkNDlZKSQoF12I3Mz+7du5Wbm6tPP/1UP//5z33uf9ttt3FMucNu9GcIZeNG5+fRRx9V5cqV9fLLL+vNN99UUFCQYmJiNHny5BKdtJOVWAAAAABAucGfWgEAAAAA5QYlFgAAAABQblBiAQAAAADlBiUWAAAAAFBuUGIBAAAAAOUGJRYAAAAAXCo7O1vx8fHq2bOnGjVqJI/Ho6ysLKPH3L9/v/r166dmzZqpcePGuvvuu/XWW285lJgSCwAAAACulZmZqXXr1snj8ahz587Gj/fOO+/o/vvvV/369fXaa6/pj3/8owYOHKhz5845kPYHXCcWAAAAAFwqPz9flSv/sLa5YsUK/fa3v9Wnn36q4ODg636sb775Rnfeead+9atfacaMGU5HLcJKLAAAAAC4VGGBvZavvvpK48aNU6tWrVS/fn2Fh4crJSXFZ8y6dev01VdfafTo0aWQ9D8osQAAAACAKzpz5oyioqL05z//Wc8++6xSU1MVFRWl8ePH69VXXy0at2/fPgUFBenw4cO6++67VadOHbVp00YzZszQxYsXHctTxbFHAgAAAABUOAsXLtSxY8e0d+9e/eQnP5Ekde/eXadPn9YLL7ygX//616pSpYq+/PJLff/99xo6dKji4+PVvn177dq1S7NmzdLp06f1/PPPO5KHlVgAAAAAwBVt375dd911l4KDg5WXl1f0ce+99+rrr79Wenq6pB+Orz137pyefvppxcbG6p577tHvfvc7DRo0SK+99ppOnz7tSB5WYgEAAAAAV3Tq1CllZmaqbt26l73966+/liTdeuutkqTIyEif2yMjI7V06VKlp6frZz/7mXEeSiwAAAAA4IpuvfVW1atX74pnHA4NDZUkhYWFXfVxSnoSqWuhxAIAAAAArujee+/VokWL1LRpU9WrV++K437xi19o+vTp2rFjh9q0aVO0ffv27br55pvVqlUrR/JQYgEAAADAxdavXy9J+uSTTyRJ27ZtU926dVWnTh116dJFI0eO1Nq1a9WrVy+NHDlSoaGhOnv2rDIyMrR3716tXLlSktS6dWs9+uijSkpKUn5+vtq1a6edO3dqxYoVio+PV82aNR3JW8nr9RY48kgAAAAAgHLH4/FcdntERIQ2bdokSfJ6vXrhhRe0adMmffHFF6pdu7ZatGihBx54QCNHjiy6z/nz5zVz5kytXLlSJ0+eVLNmzTR06FA9+eSTjuWlxAIAAAAAyg0usQMAAAAAKDcosQAAAACAcoMSCwAAAAAoNyixAAAAAIBygxILAAAAACg3KLEAAAAAgHKDEgsAAAAAKDcosQAAAACAcoMSCwAAAAAoN/4/FsuhuFkXPMkAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "ax.hist(data_unif_sub, bins=200);\n", + "plot_quartiles(ax)" + ] + }, + { + "cell_type": "markdown", + "id": "bored-feedback", + "metadata": {}, + "source": [ + "### 3.4 Adjust sampling ratio\n", + "\n", + "The \"natural\" sampling ratio for this Gaussian weighting obtained is, as computed above, of 32%. We might want to achieve a different sampling ratio; to achieve that we can modify the normalization factor so that we lower the Gaussian curve to sample less data (but still keep the relative weights); in this case the peak of the Gaussian would not sample at 100%, but less than that." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "confused-external", + "metadata": {}, + "outputs": [], + "source": [ + "# Let's seek a sampling ratio of 20%\n", + "desired_sampling_ratio = 0.20\n", + "\n", + "# With this desired fraction, we compute the new normalization factor\n", + "unif_norm_factor = 1/(width*desired_sampling_ratio)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "controversial-caribbean", + "metadata": {}, + "outputs": [], + "source": [ + "data_unif_sub2 = subsample_gauss(data_unif, mean, sdev, unif_norm_factor)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "angry-stomach", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.20069666666666666" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Now we have our desired sampling ratio\n", + "len(data_unif_sub2)/len(data_unif)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "transparent-width", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probability mass below Pa: 0.14976166353867362\n", + "Probability mass above Pb: 0.1011808865784185\n" + ] + } + ], + "source": [ + "# And the probability masses stay as before\n", + "check_regions(data_unif_sub2)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "ethical-resolution", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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/mNov4m2IwBACWW9T+B9BPBflFbgPPHHA6i63pkxUNHD02zHAAAABiitwDlwNl/AHcmxCbYjAAAAQ5RWoJJQggF7PmvU2nYEAPhFvE8Azo3SChhiuTBQdexIjVfoxE22YwAAAAOUVsBH+IQU8F8UVgBVHR+WI5BRWhGwSv7yry1toXQCrhr5TppSowfajgEAFYZSC5dRWuEMflkDOJfmR76xHQEAfKq8K7x434SqpLrtAAAAVLTRfcbajgAAAAwx04oqq6xPGPkEEcBpO569XZ1HZdiOAQCVxtfvg3hfBZv8vrQeOHBASUlJ2rRpk4qKitS9e3c99dRTatmype1oqGS+XgYDIHAMiU+2HQEArLrQD/srG6UYv8SvS+uxY8fUu3dv1axZU7NmzVK1atU0efJk3XLLLdq6davq1KljOyIAoAr4oSZ/LwDAlyiZqEx+XVoXLFig/fv3a8eOHWrTpo0kqX379rr66qs1f/58DR8+3HJC/NyF/vIqa3/bn/gBcMfqlxPUNmmt7RgA4KwLfd9W3pIbtaXklR8ozW7z69K6bt06RUVFFRdWSWrdurV+85vfaO3atZTWSlbeUnqhjw8AvkJhBQD/4u/LlauSQJj1rub1eotshziXyy+/XDfffLOef/75EttHjRqlFStW6IsvvrATDAAAAABQKfz6kje5ubnyeDyltoeEhMjr9VZ6HgAAAABA5fLr0goAAAAACGx+XVo9Hs9ZZ1TPNQMLAAAAAHCLX5fWiIgIZWZmltqemZmptm3bWkgEAAAAAKhMfl1ae/bsqQ8++ED79+8v3paVlaV//vOf6tmzp71g/+fAgQO699571apVK7Vs2VL9+/dXdnb2ed33+PHjGj9+vNq2baumTZsqJiZGW7dureDEgcV0fD766CONGDFCUVFRatasmTp06KD777+/xP8PUX7lef383HPPPSePx6PY2NgKSBm4yjs+e/bs0YABA9SmTRs1bdpUnTt31osvvliBiQNLecYnOztbDzzwgDp06KCmTZvq6quv1qRJk/Tjjz9WcOrAkJOTozFjxigmJkbNmjWTx+NRVlbWed23sLBQqampuuKKK9SkSRN16dJFK1eurODEgcV0fD7//HM9+uijuv766xUaGqq2bdvqjjvu0M6dOyshdeAoz+vn515//XV5PB61a9euAlIGrvKOz8GDBzVs2DBdfvnlaty4sX79619r4sSJ53Vfvy6tAwYMUKtWrXTXXXdpzZo1Wrt2re666y6FhoZq0KBBVrMdO3ZMvXv31t69ezVr1izNnj1b+/bt0y233HJef/gTExO1YMECJSUlaenSpWrSpIn69u2rTz/9tBLSu6884/P6668rMzNTQ4cOVUZGhiZMmKBPPvlE0dHROnDgQCV9B24r7+vntP3792vatGlq1KhRBaYNPOUdn48++kg33XST8vLy9Je//EXp6ekaPny4Tp48WQnp3Vee8fnxxx916623atu2bUpKSlJ6erruvfdezZgxg8vI+ci+ffu0YsUKeTweXXfddRd038mTJ2vKlCkaMmSIMjIyFBUVpYEDB+qtt96qoLSBx3R8Nm7cqH/84x+68847tXjxYk2bNk3fffedYmJi9PHHH1dc4ABTntfPaV6vV+PGjVOTJk18nA7lGZ+srCzdeOON+uKLL/T000/rb3/7mx577DFddNFF53V/v77kjXTqE+GkpCRt2rRJRUVF6tatm5566imFhYVZzfXiiy/q8ccf144dO4qvI7t//35dffXVmjhx4i/+8d+5c6duuOEGzZgxQ/3795ckFRQU6Nprr1V4eLiWLFlSKd+Dy8ozPt9++60aNmxYYtt//vMfdezYUaNHj9bjjz9eodkDQXnG5+fi4uLUqlUr7d27VydPntT69esrMnbAKM/4FBYW6rrrrlN4eLhee+21yoocUMozPhs3blRcXJz+9re/6X/+53+KtycnJ+uFF15Qdna2ateuXeHfg8sKCwtVvfqpOYGFCxfqoYce0ieffFLm+5ZDhw6pffv2evjhh5WUlFS8vXfv3vr222+1bdu2Cs0dKEzH57vvvtOll16qatWqFW87fPiwfv3rXys2NlYvvfRSheYOFKbj83MjRoxQdna2mjRpos2bN2v37t0VFTfglGd8+vbtq9zcXL355psKDg6+4Of265lWSWrZsqUWLVqk7OxsHThwQH/961+tF1ZJWrdunaKioorfMEhS69at9Zvf/EZr1/7yRezXrVun4OBgxcXFFW8LCgpSXFycNm7cqLy8vArLHSjKMz5nFlZJatWqlRo2bKivvvrK51kDUXnG57SMjAx98sknmjBhQkXFDFjlGZ9//OMf2rNnj4YNG1bRMQNWecYnPz9fknTJJZeU2F6/fn0VFhaqqMivP8euEk6/obtQGzZsUH5+vvr161die3x8vHbv3s0hKj5iOj4NGjQoUVilU6+b8PBw3hv4kOn4nLZ9+3alp6dr2rRpPkqEnzMdny+//FIbNmzQkCFDjAqrVAVKq7/KzMxUZGRkqe2RkZHas2dPmfcNCwsr9Wl2ZGSk8vPztW/fPp9mDUTlGZ+z2bNnjw4dOsQJwHykvOPj9XqVlJSkiRMnKiQkpCIiBrTyjM/27dslSXl5ebrpppvUsGFDhYeHa+zYsfrpp58qJG+gKc/49OjRQ7/61a80YcIEZWZm6ujRo9q8ebNmz56t++67T3Xq1Kmo2ChDZmamatasWeLDCEnFY23ytwsVKzc3V//+9795b+AnTpw4oYcffliJiYmlXkew6/R7g1q1aunWW29V48aNFRYWpqFDh+r7778/r8egtBo612V3QkJCznqZnvO97+nbUT7lGZ8zFRQU6JFHHlHDhg11zz33+CZggCvv+IwfP17h4eG6++67fR8O5Rqfr7/+WpI0aNAgRUdHa/ny5RoxYoQWLVqkwYMHV0DawFOe8bn44ou1fv16FRUV6dprr1WLFi3Up08f/e53v9MzzzxTMYFxXnJzc1W/fv1Ss3m8N/BfY8eOVVFRkR588EHbUSDp+eefV15enkaOHGk7Cs5w+r3B8OHDFR4eroyMDE2cOFFvvfWW4uLiVFhYWOZjBFV0SKCqGzNmjN5//32lp6dzfWA/sG3bNi1ZskSbN28u9eYO9p3+wxMfH198/PcNN9ygkydPKjk5WXv27GFWwqLjx49r0KBBOnTokF566SW1aNFC//u//6upU6cqKChIqamptiMCVUJqaqoyMjL0wgsvMKvnB/bt26dnn31Wr776qi6++GLbcXCG0+8NunTpUrx0u3v37qpXr57uu+8+bdiwQTExMb/4GMy0GvJ4PGf9RPtcn4Cf730lsdzRB8ozPj+XnJystLQ0zZgxo8RJS1A+5RmfRx55RPfcc4+aN28ur9crr9erkydP6uTJk/J6vRwT7gPlGZ9LL71UkhQdHV1i++mvOUN6+ZVnfBYtWqQtW7YoIyND/fr1U5cuXZSYmKhJkybplVde4fIdFnk8Hh0+fLjUccW8N/A/r7zyip544gn96U9/YgWWn3j00UfVrVs3de7cufi9wYkTJ1RUVCSv18vhKZad673B6ffW5/PegJlWQxEREcrMzCy1PTMzs8xZhIiICK1evVrHjh0rcVxrZmamatSowSd2PlCe8Tlt2rRpev755zV16lTdcccdvo4Y0MozPnv27NGePXv0yiuvlLqtdevWSklJUUJCgs+yBqLy/n77JeU9yQbKNz67d++Wx+PR//t//6/E9quuukqS9Nlnn+mKK67wXVict4iICOXl5enLL78s8T7g9FizQsE/LFmyRKNGjdLw4cM1evRo23HwfzIzM5Wdna3WrVuXuq1169Z64IEHNGXKlMoPBkm+eW/AuwdDPXv21AcffFDibH5ZWVn65z//qZ49e/7ifWNjY3XixAmtWLGieFtBQYGWL1+u6Oho1axZs4JSB47yjI8kzZ49W5MmTdL48eM1ZMiQCkwamMozPqtWrSr1r0OHDmrXrp1WrVqlPn36VHB695VnfGJiYlSzZk1t3LixxPYNGzZIkq688kqf5w005Rmfxo0by+v1ljrh34cffihJatasmc/z4vzcdNNNCg4OVnp6eont6enpateu3VnfjKNyrVq1SsOGDdO9996rSZMm2Y6Dn3nllVdKvTe48cYb1aBBA61atYr3cpZFRUWpSZMmpd4bvP3225L++8HpL/H767T6qx9//FFdu3ZVrVq19Pjjj6tatWqaPHmyjh49qq1bt6pu3bqSTl3f88orr9TYsWP16KOPFt//9PrtJ598UmFhYZo3b57efPNNvfnmm+rUqZOl78od5Rmf119/XYMHD9aNN95YYsykU5eJKOvTIpStvK+fM/3+97/nOq0+VN7xmTJlip555hmNGDFC3bp100cffaSnn35af/jDH/Tiiy/a+racUZ7xycrKUteuXdW4cWONGjVKLVq00Mcff6xnnnlGv/rVr7Rx40Zmw31g5cqVkqTNmzfrlVde0bPPPquGDRuqQYMG6tq1q6RTl1C58847NWPGjOL7JScn68UXX9T48ePVsWNHLV++XPPnz9fixYsVGxtr5Xtxkcn4bN26VXFxcYqIiNDUqVNLvE5q1Kihjh07Vv434ijT18+ZHnzwQa7TWgFMx+evf/2rEhISNGjQIN1yyy3at2+fnnzySV1xxRVatWpVmecpYXmwoTp16uiNN95QUlKSHnjgARUVFalbt2566qmnit8wSFJRUZFOnjxZ6qxYM2fO1JNPPqlJkybp8OHD6tChg5YtW0Zh9ZHyjM/bb7+toqIivf3228WfAJ3WpUsXrVmzptK+D1eV9/WDilXe8Xn00UdVt25dzZs3Ty+88IKaNGmixMREjR07trK/FSeVZ3zCwsL097//XVOmTNHkyZP13XffKTQ0VAMGDNDo0aMprD4yYMCAEl+PGjVKUsm/IaePxf+58ePHq06dOpo9e7a++eYbhYeHKy0tjcLqYybj8+677yovL0+ffPKJfve735W4f8uWLTke3IdMXz+oHKbjc9ddd6l69eqaPn26XnvtNYWEhCg+Pl4TJkw4rxNrMtMKAAAAAPBbfKQKAAAAAPBblFYAAAAAgN+itAIAAAAA/BalFQAAAADgtyitAAAAAAC/RWkFAAAAgACVk5OjMWPGKCYmRs2aNZPH41FWVla5HvODDz5Q37591apVKzVv3lzXX3+9Xn/9dePHo7QCAAAAQIDat2+fVqxYIY/Ho+uuu67cj/fmm2/q5ptvVuPGjfXyyy/rr3/9q+69914dP37c+DG5TisAAAAABKjCwkJVr35qLnPhwoV66KGH9MknnygsLOyCH+uHH37QlVdeqdtuu01TpkzxWUZmWgEAAAAgQJ0urGX59ttv9cgjjygyMlKNGzdWVFSU0tLSSuyzYsUKffvttxo+fLhvM/r00QAAAAAATjly5IhiY2P197//XY899pjS09MVGxurkSNH6qWXXireb/v27QoJCdHu3bt1/fXXq0GDBmrfvr2mTJmikydPGj9/kC++CQAAAACAm2bPnq3s7Gxt27ZNv/rVryRJPXr00OHDh/X000/rj3/8o4KCgvT111/rp59+0uDBgzVmzBh16tRJmzdv1jPPPKPDhw/rqaeeMnp+ZloBAAAAAOe0YcMGXX311QoLC1NBQUHxvxtvvFHff/+9MjMzJZ06Pvb48eMaO3asEhMTdcMNN+hPf/qTBgwYoJdfflmHDx82en5mWgEAAAAA53To0CHt27dPDRs2POvt33//vSTp0ksvlSRFR0eXuD06OlqvvPKKMjMz9Zvf/OaCn5/SCgAAAAA4p0svvVSNGjU65xmBw8PDJUkRERG/+Djne9KnM1FaAQAAAADndOONN2rOnDlq0aKFGjVqdM79fv/732vy5MnauHGj2rdvX7x9w4YNuvjiixUZGWn0/JRWAAAAAAhgK1eulCR9/PHHkqS3335bDRs2VIMGDdS1a1clJCRo+fLl6tmzpxISEhQeHq5jx45p79692rZtmxYvXixJateune666y6lpKSosLBQHTt21KZNm7Rw4UKNGTNGdevWNcpXzev1FvnkOwUAAAAAVDkej+es27t06aI1a9ZIkrxer55++mmtWbNGX331lerXr6/LLrtMt9xyixISEorvk5+fr6lTp2rx4sX65ptv1KpVKw0ePFgPPvigcT5KKwAAAADAb3HJGwAAAACA36K0AgAAAAD8FqUVAAAAAOC3KK0AAAAAAL9FaQUAAAAA+C1KKwAAAADAb1FaAQAAAAB+i9IKAAAAAPBblFYAAAAAgN/6/+5Y/zbQVBnXAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "ax.hist(data_unif_sub2, bins=200);\n", + "plot_quartiles(ax)" + ] + }, + { + "cell_type": "markdown", + "id": "b55ef486", + "metadata": {}, + "source": [ + "## 4. Subsample the original dataset\n", + "\n", + "### 4.1 Direct approach\n", + "\n", + "We now apply the same procedure to our original (non-uniform) dataset, using the same normalization factor we used for the uniform dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "9d0201e0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 3.64 s, sys: 57.9 s, total: 1min 1s\n", + "Wall time: 1min 1s\n" + ] + } + ], + "source": [ + "%%time\n", + "data_sub = subsample_gauss(data, mean, sdev, unif_norm_factor)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "d2affc12", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.32652108" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Compute the sampling ratio we have achieved\n", + "len(data_sub)/len(data)" + ] + }, + { + "cell_type": "markdown", + "id": "c89e184a", + "metadata": {}, + "source": [ + "We did not actually achieve the desired sampling ratio. Let's take a look at the resulting perplexity distibution, comparing it with the original" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "7906df3c", + "metadata": {}, + "outputs": [], + "source": [ + "def plot_subsample(orig: np.ndarray, sub: np.ndarray, \n", + " name: str = 'Gaussian subsampling'):\n", + " fig, ax = plt.subplots()\n", + " if orig is not None:\n", + " ax.hist(orig, bins=1000, range=[0, qr[2]*3]);\n", + " ax.hist(sub, bins=1000, range=[0, qr[2]*3], color=\"g\");\n", + " if orig is not None:\n", + " ax.legend(['original', 'subsampled'])\n", + " plot_quartiles(ax)\n", + " ax.set_title(\"Perplexity distribution \" + (\"before and after \" if orig is not None else \"for \") + name);" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "435111d2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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XHTu3Dlt3rxZ0p0/OEl3+nbFihU1depUFS1aVM7Ozg4Xn0sqM78vn376qZYvX65OnTqpcuXKun79uhYtWqQSJUooODhY0dHReuihh/TII4/onnvukYuLi7Zu3aqoqCi1atUq1f16enoqODhYCxYskI+Pj8qUKaMPPvggV09JyExdvr6+CgkJ0dy5c1WmTBmVLVtWa9euTXOkNaP3hIyOlZSzvpdV2XkPy4mRI0dq06ZN6tGjh5577jndvn1bs2fPlre3d5YuigYUFoRdANlSv3597dmzRzNnztTo0aN1+fJleXl5qV69ehmew5pUSEiImjVrpilTpujMmTOqWbOm1q1bp+rVq6e5jouLiz7++GPNnTtX4eHhioyMlLu7u6pWrap27drJ1dVVhw8f1tSpUzV8+HD7yKCrq6uWLl2qli1bavz48ZozZ06q2+/Tp48OHTqkKVOmKDo6WhUrVtSPP/5ofzwgIEDVq1dXiRIlHG6xlJ4+ffro2rVrWrhwoT766CPVqlVL7777rgYNGpTuekFBQVq0aJHGjRunS5cuqWzZsmrVqpXGjx9vbzNs2DD99ttvev7553X16lWFhIRk6jY8qXnxxRd1/PhxPfPMM7p+/bqaN2+uWbNmOYySDB8+XNHR0VqyZIneeOMNtW3bVosWLbLfwzc7db311luqUqWKPvjgA4WFhcnX11fDhg1zuOJubqhWrZqef/55TZ06Vb///rsqVaqkpUuXOgSknPTtIkWKaM2aNZo6darmzZunixcvqlKlSpo2bZr9vrwZmTRpku655x69++67evfdd+Xk5KTy5curZcuWDhcQSi7xAkoTJkzQk08+KV9fXw0ePFiXLl1yuDJtViReHXvFihVasmSJGjVqpA8//FCNGzfOcN2XXnpJ0dHReuutt3Tr1i2FhIToo48+ytTvTOnSpTV79my98cYb6tSpk+Li4vTJJ5+oefPm2T4+GQkICNCBAwe0cOFCrV+/3n7f7nLlyqlx48YOV393dXXVypUr9dJLL2nw4MEqVaqUHn/8cVWsWFHPP/+8w3Yz8/ty991366677tLs2bP1999/y8PDQw0bNtSGDRtUvnx53bp1S4GBgVqxYoVOnjypIkWKqHr16lqyZEmqV7lP9O6772rEiBEaNWqUihUrpm7duunxxx9PcTG47CpWrFim6lq8eLGGDx+u0aNH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N87uoQBMraCcrytJbtOnG10CAAAALCJT05gff/xxBQYGqk6dOipRooR+//13vfXWWypatKj9/rlPPvmklixZol69emn8+PFycnLStGnTVL58efXr18++rY4dO+ree+/V008/rSlTpshms2nOnDlKSEjQCy+8YG8XGBio7t27a+zYsYqNjVXlypW1dOlSRUZGavHixfZ2ZcuW1bPPPqu5c+fKw8NDgYGB2rBhg/bt26fVq1fb27m4uGj8+PEaMWKE/Pz81LJlS+3bt08ffPCBZs2aJVdX1xwfTAAAAACAOWQq7AYHB2vDhg1asGCBYmJiVL58eTVr1kwvvvii/eJUxYsX1+bNmzVu3DgNHjxYCQkJatGihaZPn26fmixJRYoU0Zo1azRhwgSNGDFCt27dUnBwsD755BNVqFDBYb8LFy7U1KlT9eqrryo6OloBAQFav3696tev79Bu4sSJKl68uN555x2dO3dO1atX1/Lly9W+fXuHdv3795eTk5MWLFigN998UxUqVNDs2bM1YMCA7Bw7ALns1tixRpcAAACQwpAhQ7R69epUrz1kVdOnT9fMmTP1ww8/5PoFievWratKlSpp69atubrd5DIVdocNG6Zhw4Zl2K5ixYp6//33M2xXqlQpLVy4UAsXLky33V133aXXXntNr732WrrtihYtqlGjRmnUqFEZ7rtfv34OI80AMs+27HSeXqTKo1EjztsFAMAAtjdsRpfgIGpYlNElwAKyfc4uAOS262vWGF0CAAAALIKwC8A8rl41ugIAAABYBGEXQJbk5dWd3ZNcpA4AACC7bt68qenTpysoKEjlypVTpUqV1LRpU02cOFHSnbvG2Gw2TU/lThDTp0+XzWZTZGRkiscuXLigp59+WlWrVpWfn5+6dOmiw4cPp2i3evVq/etf/1KlSpXk5+enwMBADRw4UBcuXLC3+f777zVkyBA1atRI5cqVU4UKFfTAAw/ok08+SbG9IUOGyGaz6eLFixoyZIiqVaumChUqqFevXvr7778lScuXL9e9994rHx8fBQcHpzgfNulzXr9+vZo2bSofHx8FBARo+vTpio2NzdSxjY6O1ssvv6wGDRrI29tbd999t5566imHu/IkOnXqlPr27atKlSqpYsWKCg0NTXHL2LyUqXN2ARRMBem2Q5J09YsvjC4BAABYwMiRI/XBBx/o0Ucf1bPPPqvY2Fj9/vvv2rdvX46226NHD5UqVUpjxozRuXPntGTJEj344IPauXOnateuLUn68MMPNWTIEDVp0kTjxo3TXXfdpVOnTmnXrl06f/68vLy8JElbtmxRRESEunXrpooVK+rixYtavXq1nnjiCS1ZskSPPPJIqvv38/PTuHHjdPz4cS1atEi9e/dW586dtXz5cj3xxBNyc3PTokWL9OSTT+rQoUP2W7Em2r59u95++20NHDhQ3t7e2r59u2bOnKmTJ0/qrbfeSvf5R0dH64EHHtCpU6f0+OOPq1atWvrrr7+0dOlStW7dWp9//rkqVaokSYqKilLHjh11+vRp9e/fXzVr1tSBAwfUuXNn3bhxI0c/h8wi7AIwjWLjx+vmtGlGlwEAAAq4LVu2qG3btnrnnXdydbuJF+R1cnKSJHXu3FmtWrXSxIkT9dFHH9n3XaJECX3yySdydv5f3Bo/frzDtkaOHKmXX37ZYdnTTz+tFi1aKCwsLNWw26hRI4WFhTkse+utt3T27Fl99dVXKlmypCSpRYsWatasmcLDw1Ps46efftKePXvsd7gZNGiQevfurVWrVqlfv34KDg5O8/m/9tprOnHihHbt2qW6deval/fq1UshISGaPn263n77bUnSm2++qT///FMLFixQ7969JUkDBgzQmDFjcv3nkhamMQMwjXhfX6NLAAAAFlCyZEn93//9n44ePZqr233hhRfsQVeS6tevr1atWmnv3r26+t9rj5QsWVLXr1/Xjh07lJCQkOa2ihcvbv//9evXdfHiRd24cUMtWrTQL7/8osuXL6dYZ8iQIQ7fN2nSRJL06KOP2oOuJAUEBKhkyZL6/fffU2yjVatWDrdydXJy0gv/PZVsy5YtadabkJCgdevWqWnTpvLz89M///xj/1e8eHEFBQXp888/t7ffunWrvL299dhjjzlsJzN3+cktjOwCFlXQpjBL0u2hQ40uAQAAWMD06dM1ePBgNW3aVFWqVFHz5s3Vvn17dejQQUWKZH+875577kmxrGbNmtqzZ49OnjypWrVqacSIEfrqq6/0+OOPq3Tp0goJCVHbtm3VrVs3lShRwr7e+fPn9eqrr2rbtm06f/58iu1GR0c7BFhJKaYk22w2SbJPHU7K09NTFy9ezPRzkJTqebeJLly4oIsXL2rPnj26++67U22T9NieOHFCDRs2VNGiRR3a+Pr6ytPTM8395CbCLoAsy6v77Zbw99eVY8dyfbsAAKBw6dSpk44cOaKdO3fqwIED2rt3r95//301adJEmzZtchidTS4uLi5H+7777rv17bff6osvvtAXX3yhAwcO6Pnnn9f06dO1bds2Va1aVQkJCerWrZt+/fVXDR48WA0aNFDJkiVVtGhRrVy5UuvWrVN8fHyKbScPjhktT29kObvuv//+fB2dzQnCLgDTuJpk6gsAAEBOlCpVSqGhoQoNDVVCQoImT56sefPmadu2bWrdurUk6dKlSynWS29089dff01xTusvv/yiokWLqmLFivZlbm5uateundq1aydJ2rlzp3r27KmFCxcqLCxMP/30k3766Se99NJLGjdunMP2VqxYkd2nnCm//vprimW//PKLpJQjx0mVKVNGnp6eunLliu6///4M91OlShX9/vvviouLcwjjf/31l6Kjo7Ncd3Zwzi6AbMmLadJFfvst17cJAAAKl7i4OEVFRTksc3JyUr169STdCbglSpSQj4+PvvzyS4fRzxMnTqS4ZU9S8+bNc2h/+PBh7d27Vy1btpSHh4ck6Z9//kmxXmBgoH3f0v9GYpOPvB49ejTd82Zzw+eff+5wu6SEhATNmzdP0p0R8bQUKVJEPXv21Pfff69Nmzal2ibpdOyOHTvq3LlzWr16tUObN954I/vFZxEju4AFFcTzdSWp2IwZuta8udFlAACAAuzKlSvy9/dXhw4dVK9ePXl5eSkyMlLvvfeebDab2rdvL0kaOHCgXn31VT388MPq1KmTzp49q2XLlqlWrVr697//neq2T548qe7du6tDhw76+++/tWTJEt11112aMmWKvU23bt3k6empJk2aqEKFCoqOjtaqVavk5OSk0NBQSXfOka1Vq5befPNN3bhxQzVq1NBvv/2m5cuXq3bt2qneuze3BAQEqEuXLho4cKB8fHy0bds27d27V6Ghobr33nvTXXfChAn65ptv1LdvX3Xr1k1BQUFydXXVyZMntWvXLgUGBtqvxvzCCy9o3bp1euGFF/TDDz/I399f+/fv18GDB1WmTJk8e35JEXYBmMa1dP6SCgAAkBnu7u4aMmSIvvjiC+3du1fXrl2Tj4+POnTooOHDh6tcuXKS7lwV+PLly1qzZo3279+vmjVrav78+Tp8+HCaYfejjz7SuHHjNH36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YsGCBfr777/pExawadMmSbJfUOKzzz6Tl5eXypQpo2bNmkmSypQpo8cee0wLFiyQJJUtW1bPPvus5s6dKw8PDwUGBmrDhg3at2+fVq9ebcjzQO7JTp9Yv369tm3bprZt26p8+fI6f/683n33Xf3www9aunSpIc8DOTdy5Eht3LhRI0eOlLu7uw4ePGh/zM/PT+XLl+ezRCGT3T7BZwlre/zxxxUYGKg6deqoRIkS+v333/XWW2+paNGieu655yRJ+/fvV9euXbVgwQI99thjku6ct33vvffq6aef1pQpU2Sz2TRnzhwlJCTohRdeMPIpOSDsmkzx4sW1efNmjRs3ToMHD1ZCQoJatGih6dOnO0wHSEhIUFxcnOLj4x3WX7hwoaZOnapXX31V0dHRCggI0Pr161W/fv18fibILTnpE9WrV9eWLVu0ZcsWXb58WSVKlNB9992n+fPnq1GjRkY8HeSiJ5980uH7ESNGSJJCQkK0detWSXduJRAXF+fQbuLEiSpevLjeeecdnTt3TtWrV9fy5cvVvn37/CkceSY7fSLxCsyTJk3SpUuX5O7urgYNGuijjz5S69at86945Kpdu3ZJksLCwhQWFubw2OjRozV27Fg+SxQy2e0TfJawtuDgYG3YsEELFixQTEyMypcvr2bNmunFF1+0X5wqtX5RpEgRrVmzRhMmTNCIESN069YtBQcH65NPPlGFChWMejopOEVFRSVk3AwAAAAAgIKDc3YBAAAAAJZD2AUAAAAAWA5hFwAAAABgOYRdAAAAAIDlEHYBAAAAAJZD2AUAAAAA5IrTp09r1KhRatu2rcqVKyebzabIyMgcbfPgwYPq0aOHKlWqJD8/PzVt2lQfffRRhusRdgEAAAAAueL48ePauHGjbDabmjRpkuPt7dixQx07dpS3t7feffddrVq1Sn369NHNmzczXJf77AIAAAAAckV8fLyKFLkzprpixQo9//zz+uGHH1S5cuUsb+vKlStq0KCBHn74Yc2YMSPL6zOyCwAAAADIFYlBNyMXLlzQiy++qFq1asnb21vBwcFavny5Q5uNGzfqwoULeu6557JXS7bWAgAAAAAgGy5fvqz27dtr165dGjNmjNauXav27dtr+PDhWrRokb3dN998o1KlSuno0aNq2rSpypQpozp16mjGjBmKi4vLcD/OefkkAAAAAABI6p133tHJkyf11Vdf6e6775Yk3X///YqOjtbMmTP11FNPydnZWX/99Zdu3LihAQMGaNSoUapfv76++OILzZ49W9HR0Zo+fXq6+2FkFwAAAACQb3bv3q1GjRqpcuXKio2Ntf9r3bq1Ll68qGPHjkm6c/7vzZs39dJLL2no0KFq3ry5JkyYoCeffFLvvvuuoqOj090PI7sAAAAAgHxz/vx5HT9+XF5eXqk+fvHiRUlS6dKlJUmtWrVyeLxVq1Z67733dOzYMd13331p7oewCwAAAADIN6VLl1bZsmXTvMJy9erVJUn+/v7pbieji2ERdgEAAAAA+aZ169ZavHixKlSooLJly6bZrlOnTpo2bZr27NmjOnXq2Jfv3r1bxYoVU61atdLdD2EXAAAAAJBrNm3aJEk6fPiwJOmzzz6Tl5eXypQpo2bNmumZZ57Rhg0b1KFDBz3zzDOqXr26rl+/roiICH311VdavXq1JKl27drq1auXXnvtNcXHxyswMFB79+7VihUrNGrUKHl4eKRbh1NUVFRCnj5TAAAAAEChYbPZUl0eEhKirVu3SpKioqI0c+ZMbd26VWfPnpWnp6dq1Kihzp0765lnnrGvc/v2bc2aNUurV6/WuXPnVKlSJQ0YMEBDhgzJsA7CLgAAAADAcrj1EAAAAADAcgi7AAAAAADLIewCAAAAACyHsAsAAAAAsBzCLgAAAADAcgi7AAAAAADLIewCAAAAACyHsAsAAAAAsBzCLgAAAADAcv4fWsg8zZwwOuAAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_subsample(data, data_sub)" + ] + }, + { + "cell_type": "markdown", + "id": "683c0096", + "metadata": {}, + "source": [ + "### 4.2 Adjust sampling ratio\n", + "\n", + "In order to achieve the desired sampling ratio, we now muct take into account that now the data distribution is not uniform, hence the previous simple computation no longer applies. \n", + "\n", + "Instead, we need to compute the sampling ratio from the full integral. In order to approximate it, we compute an histogram of the data and appliximate the integral through a sum over the histogram bins" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "d7a1f784", + "metadata": {}, + "outputs": [], + "source": [ + "# Compute a histogram for the dataset\n", + "hbins = 1000\n", + "range_max = qr[2]*10\n", + "hcounts, hedges = np.histogram(data, bins=hbins, range=[0, range_max])\n", + "hcounts[-1] += len(data[data>range_max])\n", + "\n", + "hperp = (hedges[:-1] + hedges[1:])/2" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "0cbd8b75", + "metadata": {}, + "outputs": [], + "source": [ + "# Now let's compute the gaussian weighting function over the histogram bins\n", + "gauss_weights = norm.pdf(hperp, loc=mean, scale=sdev)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "66c43147", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.3265025569497173" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# And we estimate the sampling ratio by a sum\n", + "samples = (hcounts*gauss_weights/unif_norm_factor).sum()\n", + "\n", + "samples/hcounts.sum()" + ] + }, + { + "cell_type": "markdown", + "id": "e0b28370", + "metadata": {}, + "source": [ + "This theoretical number is a good approximation to the one obtained from the actual sample. So, we use this procedure in the reverse, to compute the normalization factor we need to achieve the desired sampling ratio" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "d3cf86c1", + "metadata": {}, + "outputs": [], + "source": [ + "adjusted_norm_factor = (hcounts*gauss_weights).sum()/hcounts.sum()/desired_sampling_ratio" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "40684c79", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 3.35 s, sys: 38.4 s, total: 41.8 s\n", + "Wall time: 42 s\n" + ] + } + ], + "source": [ + "%%time\n", + "data_sub_adjusted = subsample_gauss(data, mean, sdev, adjusted_norm_factor)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "85088557", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.19998344" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Obtained ratio\n", + "len(data_sub_adjusted)/len(data)" + ] + }, + { + "cell_type": "markdown", + "id": "3a56780e", + "metadata": {}, + "source": [ + "... the ratio now is close to the desired factor. The resulting distribution is as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "b2e956d2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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77yTYv29e/eqefPm8vHxUf369bVq1ao8P90HKKgY2QWQaZGRkSpatKiKFy+uw4cPq2PHjqpbt65ef/113XXXXXrnnXf00EMPaefOnapXr559vcuXL6t///4aNmyYJk+erLvuusv+2P79+3X48GFNnjxZrq6uWrBggR555BHt37/f4cN/UrGxserRo4eOHTum0aNHq3bt2jp48KDmzJmjS5cuafr06SpevLjefvtttW3bVtOnT1dYWJjOnTunwYMHq3379ho4cGCq2x4zZoz++ecf/fvf/9aaNWskSa6urvLx8VGnTp0UHh7ucI5tXFyc3nvvPfuH8rSsWrVK48ePV69evdS9e3cdP35cAwYM0NWrV9M95l9//bUGDRqkp59+WtOmTVN8fLx+/fVXRUdHS7pzzuigQYMUFxen1157TZJUokQJh20MGjRIPXr00KpVqzI853r+/PkKCAjQ4sWLdf78eU2bNk3du3fXN998k6VRrczUldSQIUO0ceNGjRgxQk2aNNG3336rV199VSdOnNDbb7/t0HbevHm67777tGjRIp0/f16TJk3SoEGDtG3btgzrOn78uMaOHatx48apTJkyeuedd9S/f3+VLl1aLVq0kKRM9e1XX31V69at07x58/Tuu+/K19dXfn5+io+PV2hoqH744QeNHz9etWvX1qeffqqJEyfqn3/+sf+hJ9HYsWPVpk0bLVmyRDdv3pQkhYWFadGiRfaf+ZkzZzR9+nT997//1c6dO1W0aNE0n9+JEyfUtWtXvfDCCypSpIgOHDig5557Tjdv3lT//v0d2q5du1bVq1fXzJkzFRMTo8mTJ6tXr146ePCgffRzxowZevXVV/XMM8/oX//6l/7zn//osccey/A4S9KlS5fk5uamKVOmyMvLS3/99ZcWLVqkBx54QAcPHlSxYsU0ZswY1atXT2PHjtXcuXMVGBioYsWK6dtvv9WoUaM0a9YsNWjQQJJUo0aNLB+f999/X5UrV9a0adNUvHhxlS1bNtVav/jiCxUtWlRt2rTJ1HNLPNYtWrTQoEGD5ObmpsOHD2vWrFn6559/FBYWluntSNLVq1fVvXt3NWzYUG+88YY8PDz0559/6rvvvrO3efrpp3Xy5ElNnTpV5cqV0/nz5/XFF1/o+vXraW735MmTqlOnjnr16iUPDw8dO3ZMs2fP1okTJ1KEqD/++EPjxo3TCy+8oNKlS2vRokXq27evDh48aJ/hk5rs1JWejN4TMnOsMtP3kurbt6/69OmjYcOG6e2339azzz6r48ePa//+/XrxxRcVGxurcePGacCAAdq9e3eW6s2KK1euaODAgRoyZIjGjBmj1atXa8SIEapWrZr99enYsWPq2bOnGjZsqOXLlysmJkZz5szR5cuX5eTklK1jDlgZYRdAmuLi4hQbG6urV69q48aN+vjjj9W+fXu5u7trypQpKl++vLZs2SJXV1dJUuvWrdWkSRPNnj3bYTTp6tWrWrJkiX1kL6nz589r586dKl++vCSpZcuWqlOnjubMmaOlS5emWteGDRv09ddfa9u2bQoJCbGvJ0mzZs3S8OHDVaZMGQUGBurFF1/U5MmTdf/992vhwoUqWrRouhefqlKlikqXLi1XV9cU08yeeuopde7cWV999ZWaNm0qSfr00091+vTpFEEiqfj4eM2aNUutW7fWG2+8YV/u5eWV7nqSdOjQIXl6emrmzJn2Zf/617/s//f391eJEiUUFxeX5rS4Ll26aOrUqenuJ5GHh4fWrFmjIkXuTPypVq2a2rdvrzVr1qhPnz6Z2kZm60p09OhRbdiwQWPHjtX48eMl3XmOzs7Omj59uoYPH66AgAB7+4oVKzoE4H/++UeTJ0/W2bNn0wwzic6dO6ddu3bZa2rTpo0aN26sGTNm2D9MZqZv+/v726cu161bV5UqVZIkffLJJ/r666+1ePFiPf744/bncv36dS1atEjPPPOMSpcuba+nQYMGWrhwof37yMhIvf766xo7dqzGjh1rX574c9ixY4d9JDQ1SUe34uPj1axZM/39999avnx5ir7m4uKitWvXOvwR48knn9T333+v++67T1FRUXrzzTfVt29fvfzyy/bnUrRo0UyFuerVq2vWrFn27+Pi4nTfffcpICBAu3btUufOnVWlShV7iK1Ro4b955I4SyLpsuwcn4SEBH300UcOf2BLzZkzZ+Tl5ZWiXXx8vH22iCQVLVrUHiiSHs+EhAQ1bdpUt2/f1sKFCzVlyhT771BmREREKCoqSi+99JJDX0/sQ5J08OBBTZ48WT179rQve+ihh9LdbteuXR1qbNy4sUqUKKHBgwdr7ty5uvvuu+2P//PPP9q+fbvuueceSVJgYKBq1KihjRs3OvSr5LJTV3oyek/IzLHK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zp3Tli1bJN35g5N0p29XqFBB06ZNU9GiReXs7Oxw8bmkMvP78sknn2jlypXq1KmTKlWqpOvXr2vJkiUqUaKEgoODFR0drYceekiPPPKI7r33Xrm4uGjbtm2KiopSq1atUt2vp6engoODtWjRIvn4+Kh06dJ67733cvWUhMzU5evrq5CQEM2fP1+lS5dWmTJltG7dujRHWjN6T8joWEk563tZlZ33sJwYNWqUNm/erB49eujZZ5/V7du3NWfOHHl7e2fpomhAYUHYBZAt9erV0549ezRr1iyNHTtWly9flpeXl+rWrZvhOaxJhYSEqFmzZpo6darOnDmjGjVqaP369apWrVqa67i4uOijjz7S/PnzFR4ersjISLm7u6tKlSpq166dXF1ddfjwYU2bNk0jRoywjwy6urpq+fLlatmypSZOnKh58+aluv0+ffro0KFDmjp1qqKjo1WhQgX9+OOP9scDAgJUrVo1lShRwuEWS+np06ePrl27psWLF+vDDz9UzZo19fbbb2vQoEHprhcUFKQlS5ZowoQJunTpksqUKaNWrVpp4sSJ9jbDhw/Xb7/9pueee05Xr15VSEhIpm7Dk5oXXnhBx48f19ChQ3X9+nU1b95cs2fPdhglGTFihKKjo7Vs2TK99tpratu2rZYsWWK/h2926nrjjTdUuXJlvffee5o7d658fX01fPhwhyvu5oaqVavqueee07Rp0/T777+rYsWKWr58uUNAyknfLlKkiNauXatp06ZpwYIFunjxoipWrKjp06fb78ubkSlTpujee+/V22+/rbfffltOTk4qV66cWrZs6XABoeQSL6A0adIkPfnkk/L19dXgwYN16dIlhyvTZkXi1bFXrVqlZcuWqWHDhvrggw/UuHHjDNcdM2aMoqOj9cYbb+jWrVsKCQnRhx9+mKnfmbvvvltz5szRa6+9pk6dOikuLk4ff/yxmjdvnu3jk5GAgAAdOHBAixcv1oYNG+z37S5btqwaN27scPV3V1dXrV69WmPGjNHgwYNVqlQpPf7446pQoYKee+45h+1m5vflnnvu0V133aU5c+bo77//loeHhxo0aKCNGzeqXLlyunXrlgIDA7Vq1SqdPHlSRYoUUbVq1bRs2bJUr3Kf6O2339bIkSM1evRoFStWTN26ddPjjz+e4mJw2VWsWLFM1bV06VKNGDFCY8eOVbFixdS7d2+NHj06xbGSMn5PyOhYSTnre1mVnfewnPD399e6des0efJk9evXT2XLltXw4cP12Wef6c8//8yTfQIFmVNUVFTOLpsHANlUp04dNWnSJMu3ZzBaRESEGjVqpAULFmTpdjwAAOswy3vY1atX1aBBA7Vr1y7dW+sBhREjuwCQSadPn9bx48c1Y8YM+fr6ZnhhKgAActvo0aN13333ydfXV3/99ZfeeustRUVFafDgwUaXBpgOYRcAMmnVqlWaPXu2fZpeTu7fCQBAdty6dUthYWH2K8k3aNBAmzZtst9LGMD/YxozAAAAAMByuGwbAAAAAMByCLsAAAAAAMsh7AIAAAAALIewCwAAAACwHMJuARYREWF0CTChrPQLT5st7wrJhuKdOhldguV42my8ViAF+gSSo08gOfoEkiuIfYKwC8A0rm3bZnQJAAAAsAjCLgDTuOv5540uAQAAABZB2AVgGrH16xtdAgAAACyCsAvANGL69jW6BAAAAFgEYReAaZQsX97oEgAAAGARhF0ApnH5v/81ugQAAABYhLPRBQBAIuf9+xXboYPRZQAAYEkJCQm6du2a4uLiMmxbrFgxRUdH50NVKCjyu08ULVpUxYsXl5OTU7a3QdgFYBquK1cSdgEAyAOxsbG6cuWKPDw85OLikmF7Nzc3FStWLB8qQ0GR330iJiZGUVFRKlGihJydsxdbmcYMwDSur11rdAkAAFjStWvX5OnpmamgC5iBi4uLPD09de3atWxvg7ALwDTuGjDA6BIAALCsIkX46I+CJad9lh4PwDRiH3jA6BIAAABgEYRdAKYR88gjRpcAAAAAiyDsAjANT5vN6BIAAABgEYRdAKYRHRVldAkAAAB2nTp1Up06dbK9/pdffimbzabVq1fnYlVpGzJkiGwMHthx6yEApuGyfj1TmQEAMIBtxWmjS3AQ1a+c0SXAAgi7AEzD+dNPCbsAAMA0Nm7cqISEhGyvHxISor/++otbPhmEsAvANG68/bbRJQAAgEIuLi5Ot27dkru7u1xdXXO0rSJFiqhYsWK5VBmyinN2AZiGe2io0SUAAAAL+OeffzRq1CjVrl1bZcqUUe3atTVq1ChdvHjRod3q1atls9m0d+9ezZ49W/Xq1ZOPj482btwoKe1zdjdv3qyQkBD5+PgoICBAM2fO1N69e1Ocn5vaObtJl7333ntq3LixvL29FRAQoAULFqTY1549e9SvXz8FBgbK19dXFStWVLdu3bR///7cOlyWxcguANO43bev0SUAAIACLjo6Wu3atdPx48fVu3dvBQYG6siRI1q+fLn27dun3bt3q0SJEg7rTJo0SbGxsXryySdVokQJVa9ePc3tf/TRR3rqqadUpUoVjR07Vs7OzlqzZo0++eSTLNW5YsUKnTt3Tk888YQ8PT21bt06vfjii/Lz89MjSU7rev/993Xp0iU9+uijKleunM6cOaN3331XXbt21ccff6ymTZtm7QAVIoRdALKtOG2KC0HENmtmdAkAAKCAe/311/X7779r7ty5GjBggH15nTp1NHr0aC1YsECTJk1yWOfmzZvat2+f3N3d0912bGysJk6cKC8vL+3Zs8d+5eP+/fsrJCQkS3WeOnVK3377rTw9PSVJvXv3Vp06dbR06VKHsLtgwQIVL17cYd3+/furcePGmj9/PmE3HUxjBmAaJWvWNLoEAABQwG3dulVeXl7qm2zGWL9+/eTl5aVt27alWKd///4ZBl1JOnz4sM6ePatevXo53OLHw8ND/fv3z1Kdjz/+uD3oSpK7u7uCgoL0+++/O7RLGnSvXr2qixcvqmjRogoKCtKhQ4eytM/ChpFdoJAz060GLp86ZXQJAACggIuMjFT9+vXl7OwYdZydnVWtWjX98MMPKdapVq1apredVvvMbiNRpUqVUiy7++67U5xX/Mcff2jatGnavXu3oqOjHR5zcnLK0j4LG8IuUEjZVpxWQrLvJWPva+eycqViOG8XAADks7vuuivf91m0aNEM21y9elUdO3bUtWvXNGTIENWqVUslSpRQkSJFNG/ePO3bty8fKi24CLsATMP5P/8h7AIAgBypXLmyIiIiFBsb6zC6Gxsbq99++02VK1fO9rYrVqwoSfrtt99SPJbaspz64osvdPbsWS1atEi9e/d2eOzll1/O9f1ZDefsAoVQelOXjZzWfCOVy+0DAABkRadOnXThwgWtWrXKYXl4eLguXLigTp06ZXvb9evXl6+vr95//31FRUXZl1+9elXvvPNOtreblsTR34SEBIfle/bs4XzdTGBkFyhkMhNmjbo6c/FOnXQtlYtGAAAAZNZzzz2nTZs2adSoUfrhhx9Ut25dHTlyRO+++66qV6+u559/PtvbdnZ21rRp0zRw4ED961//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zzzzjGJjY/X7779r3759Odpujx49VKpUKY0bN07nzp3TsmXL9OCDD2rnzp2qVauWJOmDDz7QkCFD1KRJE02YMEF33XWXTp06pV27dun8+fPy8vKSJG3dulURERHq1q2bKlSooIsXL2rNmjV64okntGzZMj3yyCOp7t/Pz08TJkzQ8ePHtWTJEvXu3VudO3fWypUr9cQTT8jNzU1LlizRk08+qUOHDtlvxZpox44devPNNzVw4EB5e3trx44dmjVrlk6ePKk33ngj3ecfHR2tBx54QKdOndLjjz+umjVr6q+//tLy5cvVunVrff7556pYsaIkKSoqSh07dtTp06fVv39/1ahRQwcOHFDnzp1148aNHP0cMouwC8A0ik2cqJvTpxtdBgAAKOC2bt2qtm3b6q233srV7SZekNfJyUmS1LlzZ7Vq1UqTJ0/Whx9+aN93iRIl9PHHH8vZ+f/j1sSJEx22NWrUKL344osOy55++mm1aNFCc+fOTTXsNmzYUHPnznVY9sYbb+js2bP66quvVLJkSUlSixYt1KxZM4WHh6fYx08//aQ9e/bY73AzaNAg9e7dW++//7769eun4ODgNJ//K6+8ohMnTmjXrl2qU6eOfXmvXr0UEhKiGTNm6M0335Qkvf766/rzzz+1aNEi9e7dW5I0YMAAjRs3Ltd/LmlhGjMA04j39TW6BAAAYAElS5bUf//7Xx09ejRXt/v888/bg64k1atXT61atdLevXt19X/XHilZsqSuX7+uTz/9VAkJCWluq3jx4vb/X79+XRcvXtSNGzfUokUL/fLLL7p8+XKKdYYMGeLwfZMmTSRJjz76qD3oSlJAQIBKliyp33//PcU2WrVq5XArVycnJz3/v1PJtm7dmma9CQkJWr9+vZo2bSo/Pz/9888/9q/ixYsrKChIn3/+ub39tm3b5O3trccee8xhO5m5y09uYWQXsKiCNoVZkm4PG2Z0CQAAwAJmzJihwYMHq2nTpqpcubKaN2+u9u3bq0OHDipSJPvjfffee2+KZTVq1NCePXt08uRJ1axZUyNHjtRXX32lxx9/XHfffbdCQkLUtm1bdevWTSVKlLCvd/78eb388svavn27zp8/n2K70dHRDgFWUoopyTabTZLsU4eT8vT01MWLFzP9HCSlet5togsXLujixYvas2eP7rnnnlTbJD22J06cUIMG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YC35foGqHTt2qGzZsvagK0menp5q3769tm/f7tDOxcVF3bt3ty9zdnZW9+7dtWfPHt26dUuStHv3bt2+fVuhoaEO++nZs6eOHj2qEydOSJK+++47XbhwIUW70NBQXbx4UV9//XVuP1UAWbS0YT7tqID+McBojPACAICCJE/C7sCBA3X33XerSpUqGjBggE6ePGl/7NixY6pZs2aKdWrWrKlTp07p6tWr9naVKlWSu7t7ina3b9/W8ePH7e3c3NxUtWrVFO0k6ZdffrG3S7o8rXZAgVeAg9zeyvm4swJ8nIyQGHQJvAAAoKDI1bBbsmRJPfvss3r99de1ZcsWjR49Wnv37lW7du10/vx5SdKlS5dks9lSrFuqVClJdy5elZl2ly5dsv/r6ekpJyenDNtJSrHN5O2AzOJDf+4786rRFSAz6PsAAKAgyNVzdgMDAxUYGGj/vlmzZmratKlat26tJUuWaNKkSbm5u3wVERFhdAmpMmtdhYN7xk2QJSUnGF0BMisx8B5sdt3gSpBdvH8gOfoEkqNPIDkz9onq1aun+Vie32e3Xr16qlatmv79739LujOymjh6m1TykVebzeYw/Tl5u8QRWZvNpujoaCUkJDiM7qbWTrozcuzr65tmu7SkdxCNEhERYcq6Co39jG7ltoGHpGVB+bhDLlaVY7wGFUy8fyA5+gSSo08guYLYJ/LtAlWJQdTf399+/mxSx44dU/ny5eXh4WFvFxkZqevXr6do5+rqaj9H19/fX7du3dIff/yRop1058rQie2SLk+rHQDjBJ0xYKecu5sjnMsLAADMKs/D7n/+8x9FRESoQYMGkqQOHTrozJkz2r9/v73N5cuX9cknn6hDhw72Ze3bt1dMTIw2bdpkXxYbG6uNGzeqVatWcnNzkyS1adNGLi4uWrduncN+161bp1q1aqly5cqSpEaNGql06dKptitVqpQaN26cm08bFmfaD/YFPLg93cWgHRfw42a0pIHXtL8bAACg0MnVacwDBw5UpUqVVLduXXl6eurIkSOaP3++/Pz8NHjwYElSx44d1ahRIz399NOaOnWqbDab5s2bp4SEBD3//PP2bQUGBqp79+4aP368YmNjValSJS1fvlyRkZFaunSpvV2ZMmX0zDPPaP78+fLw8FBgYKA2btyoffv2ac2aNfZ2Li4umjhxokaOHCk/Pz+1bNlS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furatat+/tlcd1BwioqKSjC6iPxy7do1NWvWTHfddZcmTpwoJycnTZ8+XVevXtWBAwfk4eFhdIm6fv26mjVrJjc3N4car1+/rgMHDqh48eLprj9w4EB9+umnmjZtmipXrqxly5bps88+086dO1W3bt18ehbITTntEzabTb169VK/fv0clteuXVvu7u55WTry0Jdffqn+/furXr16iouL0549e/TDDz+oUqVKGa47bdo0LVy4UJMnT1ZgYKA++ugjhYeHa+3atWrXrl0+VI+8kJM+UadOHd17770aN26cw/Lq1atzmk8B1aZNG5UvX14dO3aUn5+fjhw5opkzZ+ree+/Vzp07VaRI2uMdfJawppz0CT5LWNeGDRv0ww8/KCgoSKVLl9apU6f02muv6fTp0zpw4IAqVqyY6noJCQnq0KGD/vzzT02dOlU2m03z5s3TsWPH9OWXX6pcOXPcYaVQhV1JOnnypCZMmKC9e/cqISFBLVq00IwZMzL1YSA/vPnmm5o4caIOHTpkvx/wiRMn1LBhQ7300kvp3gv4xx9/VPPmzbVo0SL17t1bkhQbG6vGjRurWrVq+uCDD/LlOSB35aRPSHfeoEaNGqVJkyblR7nIJ/Hx8fYPJqtWrdJzzz2XqWBz/vx51a5dW8OHD9eECRPsy7t06aILFy7oq6++ytO6kXey2yekO2G3SZMmWrp0aV6XiXxy4cIFeXl5OSxbs2aNhgwZos2bN6tly5aprsdnCevKbp+Q+CxR2ERERCg4OFjTpk3TsGHDUm2zbds2Pf7449qyZYtatGghSYqOjlZgYKB69uyp2bNn52fJaSpU05glqUKFCnr33Xd18uRJnTp1Su+//75pgq4k7dixQ8HBwfZQI0mVK1fWfffdp+3bt2e4rouLi7p3725f5uzsrO7du2vPnj26detWntWNvJOTPgHrSu8v8OnZvXu3bt++rdDQUIflPXv21NGjRx1O80DBkt0+AWtKHmokqUGDBpKks2fPprkenyWsK7t9AoXP3XffLenO735aduzYobJly9qDriR5enqqffv2pvp8yjujyRw7dkw1a9ZMsbxmzZr65ZdfMly3UqVKKaaT1KxZU7dv39bx48dztVbkj5z0iUTLly+Xt7e3ypYtq86dOzN6V4gdO3ZMbm5uDn88kWTvY5ntU7CeTz75RGXLlpW3t7fatGnD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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_subsample(data, data_sub_adjusted)" + ] + }, + { + "cell_type": "markdown", + "id": "a45660a5", + "metadata": {}, + "source": [ + "The probability masses, though, have not been adjusted to our original objectives:" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "d44c0178", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probability mass below Pa: 0.18007621031021367\n", + "Probability mass above Pb: 0.0318859401558449\n" + ] + } + ], + "source": [ + "check_regions(data_sub_adjusted)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "6c96ae05", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.09827000000000002" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "abs(pa-0.1801) + abs(pb-0.03183)" + ] + }, + { + "cell_type": "markdown", + "id": "39781e00", + "metadata": {}, + "source": [ + "The transfer of probability mass is, in fact, greater than oour objectives of retaining a 15% and 10%. \n", + "\n", + "This is to be expected, given the non-uniform probability of the data. So the simple global computation we did is no longer valid. If we want to evaluate the actual probability masses in the regions given by $X_a$ and $X_b$ we need to compute the actual integral, or apporximate it by histogram sums" + ] + }, + { + "cell_type": "markdown", + "id": "e3e765f6", + "metadata": {}, + "source": [ + "## 4.3 Modification of the Gaussian weighting curve\n", + "\n", + "If we modify the `mean` and `sdev` Gaussian parameters from the ones estimated for uniform data probability , we can change the probability masses to be transferred:\n", + " * modify sdev changes the results for both regions, transferring more or less data from them\n", + " * while moving the mean changes the relation asymmetrically, giving more weight to the first or to the fourth quartile\n", + "\n", + " \n", + "### 4.3.1 Subsample with different parameter combinations\n", + "\n", + "Let's try a grid of values around the initial values" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "5c3778ee", + "metadata": {}, + "outputs": [], + "source": [ + "def compute_subsample_results(data, m: float, s: float) -> Tuple[float, float, float]:\n", + " # Gaussian weigthing\n", + " gauss_weights = norm.pdf(hperp, loc=m, scale=s)\n", + " adjusted_norm_factor = (hcounts*gauss_weights).sum()/hcounts.sum()/desired_sampling_ratio\n", + " # Subsample\n", + " data_sub = subsample_gauss(data, m, s, adjusted_norm_factor)\n", + " # Compute result metrics\n", + " ra = len(data_sub[data_sub < qr[0]]) / len(data_sub)\n", + " rb = len(data_sub[data_sub > qr[2]]) / len(data_sub)\n", + " return len(data_sub)/len(data), ra, rb" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "a4e7921f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 1min 32s, sys: 14min 21s, total: 15min 53s\n", + "Wall time: 16min\n" + ] + } + ], + "source": [ + "%%time\n", + "df = pd.DataFrame(([f1, f2, mean*f1, sdev*f2, *compute_subsample_results(data, mean*f1, sdev*f2)]\n", + " for f1 in np.arange(0.8, 1.3, 0.1) for f2 in np.arange(0.8, 1.3, 0.1)), \n", + " columns=[\"factor1\", \"factor2\", \"mean\", \"sdev\", \"ratio\", \"pa\", \"pb\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "9778ae79", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
factor1factor2meansdevratiopapb
00.80.8597075.559089157344.6657290.1999870.3273610.001474
10.80.9597075.559089177012.7489460.2000600.3309270.003349
20.81.0597075.559089196680.8321620.2001150.3326190.006112
30.81.1597075.559089216348.9153780.2000930.3327100.009676
40.81.2597075.559089236016.9985940.2000260.3319740.013916
50.90.8671710.003975157344.6657290.1999820.2192790.005382
60.90.9671710.003975177012.7489460.2000270.2382700.009421
70.91.0671710.003975196680.8321620.1999960.2526140.014298
80.91.1671710.003975216348.9153780.2000720.2629470.019859
90.91.2671710.003975236016.9985940.1999870.2705640.025817
101.00.8746344.448861157344.6657290.2001250.1309400.017452
111.00.9746344.448861177012.7489460.1999840.1578200.024555
121.01.0746344.448861196680.8321620.2000450.1801630.031770
131.01.1746344.448861216348.9153780.2000710.1981400.039049
141.01.2746344.448861236016.9985940.1999730.2122290.046073
151.10.8820978.893747157344.6657290.1999790.0675920.049761
161.10.9820978.893747177012.7489460.1999390.0941720.058519
171.11.0820978.893747196680.8321620.2000170.1189650.066225
181.11.1820978.893747216348.9153780.1999600.1405010.073169
191.11.2820978.893747236016.9985940.1999180.1592360.079432
201.20.8895613.338633157344.6657290.1999710.0291370.121411
211.20.9895613.338633177012.7489460.1999140.0494250.125282
221.21.0895613.338633196680.8321620.1999610.0714710.127871
231.21.1895613.338633216348.9153780.1999230.0929870.129851
241.21.2895613.338633236016.9985940.2000010.1132400.131530
\n", + "
" + ], + "text/plain": [ + " factor1 factor2 mean sdev ratio pa \\\n", + "0 0.8 0.8 597075.559089 157344.665729 0.199987 0.327361 \n", + "1 0.8 0.9 597075.559089 177012.748946 0.200060 0.330927 \n", + "2 0.8 1.0 597075.559089 196680.832162 0.200115 0.332619 \n", + "3 0.8 1.1 597075.559089 216348.915378 0.200093 0.332710 \n", + "4 0.8 1.2 597075.559089 236016.998594 0.200026 0.331974 \n", + "5 0.9 0.8 671710.003975 157344.665729 0.199982 0.219279 \n", + "6 0.9 0.9 671710.003975 177012.748946 0.200027 0.238270 \n", + "7 0.9 1.0 671710.003975 196680.832162 0.199996 0.252614 \n", + "8 0.9 1.1 671710.003975 216348.915378 0.200072 0.262947 \n", + "9 0.9 1.2 671710.003975 236016.998594 0.199987 0.270564 \n", + "10 1.0 0.8 746344.448861 157344.665729 0.200125 0.130940 \n", + "11 1.0 0.9 746344.448861 177012.748946 0.199984 0.157820 \n", + "12 1.0 1.0 746344.448861 196680.832162 0.200045 0.180163 \n", + "13 1.0 1.1 746344.448861 216348.915378 0.200071 0.198140 \n", + "14 1.0 1.2 746344.448861 236016.998594 0.199973 0.212229 \n", + "15 1.1 0.8 820978.893747 157344.665729 0.199979 0.067592 \n", + "16 1.1 0.9 820978.893747 177012.748946 0.199939 0.094172 \n", + "17 1.1 1.0 820978.893747 196680.832162 0.200017 0.118965 \n", + "18 1.1 1.1 820978.893747 216348.915378 0.199960 0.140501 \n", + "19 1.1 1.2 820978.893747 236016.998594 0.199918 0.159236 \n", + "20 1.2 0.8 895613.338633 157344.665729 0.199971 0.029137 \n", + "21 1.2 0.9 895613.338633 177012.748946 0.199914 0.049425 \n", + "22 1.2 1.0 895613.338633 196680.832162 0.199961 0.071471 \n", + "23 1.2 1.1 895613.338633 216348.915378 0.199923 0.092987 \n", + "24 1.2 1.2 895613.338633 236016.998594 0.200001 0.113240 \n", + "\n", + " pb \n", + "0 0.001474 \n", + "1 0.003349 \n", + "2 0.006112 \n", + "3 0.009676 \n", + "4 0.013916 \n", + "5 0.005382 \n", + "6 0.009421 \n", + "7 0.014298 \n", + "8 0.019859 \n", + "9 0.025817 \n", + "10 0.017452 \n", + "11 0.024555 \n", + "12 0.031770 \n", + "13 0.039049 \n", + "14 0.046073 \n", + "15 0.049761 \n", + "16 0.058519 \n", + "17 0.066225 \n", + "18 0.073169 \n", + "19 0.079432 \n", + "20 0.121411 \n", + "21 0.125282 \n", + "22 0.127871 \n", + "23 0.129851 \n", + "24 0.131530 " + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "markdown", + "id": "3f1e0585", + "metadata": {}, + "source": [ + "As it can be seen, modifying the parameters of the Gaussian curve *does* change the obtained values of $p_a$ and $p_b$" + ] + }, + { + "cell_type": "markdown", + "id": "7d9f2276", + "metadata": {}, + "source": [ + "### 4.3.2 Use an estimation\n", + "\n", + "Extracting complete subsamples to analyze results is, as we have seen, too computationally intensive. Let's do an approximation instead, by estimating the results on a perplexity histogram" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "74d58fb9", + "metadata": {}, + "outputs": [], + "source": [ + "def subsample_gauss_histo(hperp: np.ndarray, hcounts: np.ndarray, \n", + " mean: float, sdev: float, norm_factor: float) -> np.ndarray:\n", + " \"\"\"\n", + " Execute the subsampling on a histogram\n", + " \"\"\"\n", + " # Create the gaussian weight for each data point\n", + " p = norm.pdf(hperp, loc=mean, scale=sdev)/norm_factor\n", + " # Subsample data with probability according to each weight\n", + " return hcounts*p\n", + "\n", + "def compute_percentile_estimation(hedges: np.ndarray, hcounts: np.ndarray, perp_value) -> float:\n", + " \"\"\"\n", + " Estimate the percentile reached by a given perplexity value\n", + " \"\"\"\n", + " v = np.searchsorted(hedges, perp_value, side=\"right\")\n", + " return hcounts[:v-1].sum() + hcounts[v-1]*(perp_value - hedges[v-1])/(hedges[v] - hedges[v-1])\n", + "\n", + "def estimate_subsample_results(m: float, s: float) -> Tuple[float, float, float]:\n", + " # Gaussian weight on perplexity values\n", + " gauss_weights = norm.pdf(hperp, loc=m, scale=s)\n", + " # Normalization factor needed for the desired ratio\n", + " adjusted_norm_factor = (hcounts*gauss_weights).sum()/hcounts.sum()/desired_sampling_ratio\n", + " # Subsample the histogram\n", + " hcounts_sub = subsample_gauss_histo(hperp, hcounts, m, s, adjusted_norm_factor)\n", + " sub_size = hcounts_sub.sum()\n", + " # Compute the results of the subsampling\n", + " ratio = sub_size/hcounts.sum()\n", + " ra = compute_percentile_estimation(hedges, hcounts_sub, qr[0])/sub_size\n", + " rb = compute_percentile_estimation(hedges, hcounts_sub, qr[2])/sub_size\n", + " return ratio, ra, 1-rb" + ] + }, + { + "cell_type": "markdown", + "id": "006c4866", + "metadata": {}, + "source": [ + "Let's repeat the same process, but now with the estimator. It should be much faster" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "1298ea05", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 12.6 ms, sys: 1.81 ms, total: 14.4 ms\n", + "Wall time: 19.8 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "result = ([f1, f2, mean*f1, sdev*f2, *estimate_subsample_results(mean*f1, sdev*f2)]\n", + " for f1 in np.arange(0.8, 1.3, 0.1) for f2 in np.arange(0.8, 1.3, 0.1))\n", + "\n", + "df_est = pd.DataFrame(result, columns=[\"factor1\", \"factor2\", \"mean\", \"sdev\", \"ratio\", \"pa\", \"pb\"])" + ] + }, + { + "cell_type": "markdown", + "id": "ebdceefe", + "metadata": {}, + "source": [ + "We can compare the actual quartile results with the ones we have estimated" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "5c811407", + "metadata": {}, + "outputs": [], + "source": [ + "df['pa_est'] = df_est['pa']\n", + "df['pb_est'] = df_est['pb']\n", + "df['err_pa'] = df.pa - df.pa_est\n", + "df['err_pb'] = df.pb - df.pb_est" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "550a7351", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
factor1factor2meansdevratiopapbpa_estpb_esterr_paerr_pb
00.80.8597075.559089157344.6657290.1999870.3273610.0014740.3273430.0014720.0000180.000002
10.80.9597075.559089177012.7489460.2000600.3309270.0033490.3310550.003324-0.0001280.000025
20.81.0597075.559089196680.8321620.2001150.3326190.0061120.3325720.0060820.0000470.000029
30.81.1597075.559089216348.9153780.2000930.3327100.0096760.3326950.0096740.0000140.000003
40.81.2597075.559089236016.9985940.2000260.3319740.0139160.3319330.0139560.000041-0.000040
50.90.8671710.003975157344.6657290.1999820.2192790.0053820.2194740.005363-0.0001950.000019
60.90.9671710.003975177012.7489460.2000270.2382700.0094210.2384660.009394-0.0001970.000027
70.91.0671710.003975196680.8321620.1999960.2526140.0142980.2524920.0143010.000123-0.000003
80.91.1671710.003975216348.9153780.2000720.2629470.0198590.2628600.0198160.0000870.000043
90.91.2671710.003975236016.9985940.1999870.2705640.0258170.2705350.0257110.0000290.000106
101.00.8746344.448861157344.6657290.2001250.1309400.0174520.1310280.017454-0.000088-0.000002
111.00.9746344.448861177012.7489460.1999840.1578200.0245550.1579820.024564-0.000162-0.000010
121.01.0746344.448861196680.8321620.2000450.1801630.0317700.1801180.0318180.000045-0.000048
131.01.1746344.448861216348.9153780.2000710.1981400.0390490.1980260.0389970.0001140.000052
141.01.2746344.448861236016.9985940.1999730.2122290.0460730.2124350.045980-0.0002060.000092
151.10.8820978.893747157344.6657290.1999790.0675920.0497610.0676930.049718-0.0001020.000043
161.10.9820978.893747177012.7489460.1999390.0941720.0585190.0943240.058571-0.000152-0.000052
171.11.0820978.893747196680.8321620.2000170.1189650.0662250.1189720.066312-0.000007-0.000087
181.11.1820978.893747216348.9153780.1999600.1405010.0731690.1407230.073189-0.000221-0.000020
191.11.2820978.893747236016.9985940.1999180.1592360.0794320.1594270.079397-0.0001910.000034
201.20.8895613.338633157344.6657290.1999710.0291370.1214110.0293310.121336-0.0001940.000075
211.20.9895613.338633177012.7489460.1999140.0494250.1252820.0495780.125308-0.000154-0.000026
221.21.0895613.338633196680.8321620.1999610.0714710.1278710.0715050.127902-0.000034-0.000030
231.21.1895613.338633216348.9153780.1999230.0929870.1298510.0931080.129839-0.0001210.000013
241.21.2895613.338633236016.9985940.2000010.1132400.1315300.1132300.1315090.0000100.000021
\n", + "
" + ], + "text/plain": [ + " factor1 factor2 mean sdev ratio pa \\\n", + "0 0.8 0.8 597075.559089 157344.665729 0.199987 0.327361 \n", + "1 0.8 0.9 597075.559089 177012.748946 0.200060 0.330927 \n", + "2 0.8 1.0 597075.559089 196680.832162 0.200115 0.332619 \n", + "3 0.8 1.1 597075.559089 216348.915378 0.200093 0.332710 \n", + "4 0.8 1.2 597075.559089 236016.998594 0.200026 0.331974 \n", + "5 0.9 0.8 671710.003975 157344.665729 0.199982 0.219279 \n", + "6 0.9 0.9 671710.003975 177012.748946 0.200027 0.238270 \n", + "7 0.9 1.0 671710.003975 196680.832162 0.199996 0.252614 \n", + "8 0.9 1.1 671710.003975 216348.915378 0.200072 0.262947 \n", + "9 0.9 1.2 671710.003975 236016.998594 0.199987 0.270564 \n", + "10 1.0 0.8 746344.448861 157344.665729 0.200125 0.130940 \n", + "11 1.0 0.9 746344.448861 177012.748946 0.199984 0.157820 \n", + "12 1.0 1.0 746344.448861 196680.832162 0.200045 0.180163 \n", + "13 1.0 1.1 746344.448861 216348.915378 0.200071 0.198140 \n", + "14 1.0 1.2 746344.448861 236016.998594 0.199973 0.212229 \n", + "15 1.1 0.8 820978.893747 157344.665729 0.199979 0.067592 \n", + "16 1.1 0.9 820978.893747 177012.748946 0.199939 0.094172 \n", + "17 1.1 1.0 820978.893747 196680.832162 0.200017 0.118965 \n", + "18 1.1 1.1 820978.893747 216348.915378 0.199960 0.140501 \n", + "19 1.1 1.2 820978.893747 236016.998594 0.199918 0.159236 \n", + "20 1.2 0.8 895613.338633 157344.665729 0.199971 0.029137 \n", + "21 1.2 0.9 895613.338633 177012.748946 0.199914 0.049425 \n", + "22 1.2 1.0 895613.338633 196680.832162 0.199961 0.071471 \n", + "23 1.2 1.1 895613.338633 216348.915378 0.199923 0.092987 \n", + "24 1.2 1.2 895613.338633 236016.998594 0.200001 0.113240 \n", + "\n", + " pb pa_est pb_est err_pa err_pb \n", + "0 0.001474 0.327343 0.001472 0.000018 0.000002 \n", + "1 0.003349 0.331055 0.003324 -0.000128 0.000025 \n", + "2 0.006112 0.332572 0.006082 0.000047 0.000029 \n", + "3 0.009676 0.332695 0.009674 0.000014 0.000003 \n", + "4 0.013916 0.331933 0.013956 0.000041 -0.000040 \n", + "5 0.005382 0.219474 0.005363 -0.000195 0.000019 \n", + "6 0.009421 0.238466 0.009394 -0.000197 0.000027 \n", + "7 0.014298 0.252492 0.014301 0.000123 -0.000003 \n", + "8 0.019859 0.262860 0.019816 0.000087 0.000043 \n", + "9 0.025817 0.270535 0.025711 0.000029 0.000106 \n", + "10 0.017452 0.131028 0.017454 -0.000088 -0.000002 \n", + "11 0.024555 0.157982 0.024564 -0.000162 -0.000010 \n", + "12 0.031770 0.180118 0.031818 0.000045 -0.000048 \n", + "13 0.039049 0.198026 0.038997 0.000114 0.000052 \n", + "14 0.046073 0.212435 0.045980 -0.000206 0.000092 \n", + "15 0.049761 0.067693 0.049718 -0.000102 0.000043 \n", + "16 0.058519 0.094324 0.058571 -0.000152 -0.000052 \n", + "17 0.066225 0.118972 0.066312 -0.000007 -0.000087 \n", + "18 0.073169 0.140723 0.073189 -0.000221 -0.000020 \n", + "19 0.079432 0.159427 0.079397 -0.000191 0.000034 \n", + "20 0.121411 0.029331 0.121336 -0.000194 0.000075 \n", + "21 0.125282 0.049578 0.125308 -0.000154 -0.000026 \n", + "22 0.127871 0.071505 0.127902 -0.000034 -0.000030 \n", + "23 0.129851 0.093108 0.129839 -0.000121 0.000013 \n", + "24 0.131530 0.113230 0.131509 0.000010 0.000021 " + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "markdown", + "id": "cfe2ca39", + "metadata": {}, + "source": [ + "As we can see, the estimation produces the same results as the full computation. So we can use it safely" + ] + }, + { + "cell_type": "markdown", + "id": "bb325b33", + "metadata": {}, + "source": [ + "### 4.3.3 Optimization\n", + "\n", + "Now that we can produce a fast estimation of the results, we can try to optimize the arguments for the Gaussian curve by minimizing the error on the desired probability masses" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "bec2f2c6", + "metadata": {}, + "outputs": [], + "source": [ + "import scipy as sp" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "75ba883b", + "metadata": {}, + "outputs": [], + "source": [ + "def error(point, pa, pb):\n", + " \"\"\"\n", + " Compute the estimation error to minimize\n", + " \"\"\"\n", + " _, actual_pa, actual_pb = estimate_subsample_results(point[0], point[1])\n", + " return abs(pa-actual_pa) + abs(pb-actual_pb)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "4c7f409a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: 0.000000\n", + " Iterations: 104\n", + " Function evaluations: 199\n" + ] + } + ], + "source": [ + "initial = np.array([mean, sdev])\n", + "r = sp.optimize.minimize(error, initial, args=(pa, pb), \n", + " method='nelder-mead', options={'xatol': 1e-8, 'disp': True})" + ] + }, + { + "cell_type": "markdown", + "id": "cfc4442c", + "metadata": {}, + "source": [ + "Minimization was successful, so we can use now the obtained `mean` and `sdev` values" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "2372db3b", + "metadata": {}, + "outputs": [], + "source": [ + "def adjusted_gaussian_subsample(data: np.ndarray, mean: float, sdev: float, \n", + " ratio: float, hbins: int = 1000) -> np.ndarray:\n", + " \"\"\"\n", + " Subsample a dataset ensuring a given sampling ratio\n", + " \"\"\"\n", + " # Compute a histogram for this dataset\n", + " hcounts, hedges = np.histogram(data, bins=hbins, range=[0, qr[2]*10])\n", + " hperp = (hedges[:-1] + hedges[1:])/2\n", + " # Compute the weighting function over the histogram values\n", + " gauss_weights = norm.pdf(hperp, loc=mean, scale=sdev)\n", + " # Normalize the weights to achive the desired sampling ratio\n", + " adjusted_norm_factor = (hcounts*gauss_weights).sum()/hcounts.sum()/ratio\n", + " # Subsample\n", + " return subsample_gauss(data, mean, sdev, adjusted_norm_factor)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "6813dc15", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 4.43 s, sys: 27.8 s, total: 32.2 s\n", + "Wall time: 32.4 s\n" + ] + } + ], + "source": [ + "%%time\n", + "data_sub_adj2 = adjusted_gaussian_subsample(data, r.x[0], r.x[1], desired_sampling_ratio)" + ] + }, + { + "cell_type": "markdown", + "id": "4d184d7e", + "metadata": {}, + "source": [ + "Let's check we *did* obtain the desired results and plot the distributions" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "0d1ed557", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ratio: 0.19997422\n", + "Probability mass below Pa: 0.14992142487166596\n", + "Probability mass above Pb: 0.10007179925492396\n" + ] + } + ], + "source": [ + "print(\"Ratio:\", len(data_sub_adj2)/len(data))\n", + "check_regions(data_sub_adj2)" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "3d153b4a", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7sAAAIXCAYAAABdM0nXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAACAjElEQVR4nO3de3yP9f/H8efYQTP2kdlmziLDmMMmzCFfhxxCiJUkhBxScj63SI6RUCE5lORQDjmLJDrR9yuVr1rJcirE5sxOvz/89vnus/Nm23Xt2uN+u7nNrs/7uq7X59p7n8/nuff1vi6nyMjIeAEAAAAAYCEFjC4AAAAAAIDsRtgFAAAAAFgOYRcAAAAAYDmEXQAAAACA5RB2AQAAAACWQ9gFAAAAAFgOYRdAMqtWrZLNZrP/K126tEJCQrR48WLFxMTkej0DBw5UjRo1cmz7NptN06ZNs3+/ZcsWLViwIMf2l1iNGjU0cOBA+/cJxz4iIiLD21i1apXef//9TO036TGNiIiQzWbTypUrM7WdrNSVleeYHdq1a6fWrVtn6zZff/11BQQEqHjx4mrUqFG2btvMkv7O3Kv3339fderUUYkSJVS2bFlFRERo2rRpOnnyZLbtIyP++ecfTZkyRQ0bNlSpUqXk4+OjWrVq6bnnntOXX36Zq7VkVsLv8KpVq4wuJctq1Kih/v37G11Gtkvt9TYv/6yAvMLZ6AIAmNeKFSvk5+enq1evauPGjRo1apQuXLig8ePHG11attq9e7f8/Pzs32/dulVffPGFnn/++Vyv5ZFHHtHu3bvl6+ub4XU+/PBDxcbG6umnn87wOqNGjdKAAQOyUmKGpVZXVp6jGX3//feaMmWKXnjhBbVr104eHh5Gl5QnnTt3TkOHDlXXrl21cOFCFSpUSH/++admzJihBg0aqHz58rlSx7Fjx9SlSxfFx8erX79+ql27tpydnfXbb79p7dq1at++vX799Vd5e3vnSj2Z5evrq927d6tChQpGl4J08LMCcg9hF0CqatSooYoVK0qS/vWvf+nEiRNatGjRPYfd27dvy83NLTtKzBbBwcFGl2Dn5eUlLy+vHNt+wrE38kNWTj/H3PLLL79Ikvr06ZMtgcxsvxe55ffff1dsbKyefPJJNWjQQJJyZBQ1NjZW8fHxcnZO/tEnOjpaTz/9tNzd3bVz506H/tmkSRP16dNH69atk4uLS7bXlV3c3NxM9VqG1PGzAnIPpzEDyLA6deroypUrunDhgiTpxx9/1BNPPKFy5crJ19dXjzzyiL766iuHdQYOHKhq1arpu+++U6tWreTr66tJkyZJ+t8paytWrFDt2rXl4+OjJk2aaP/+/enWcuPGDb388suqWbOmSpQooZo1a2r27NmKi4uTJF2/fl3BwcH617/+pejoaPt6e/fuVbFixbRkyRL7ssSnZA4cOFCrV6/W2bNn7adx16hRQ3///bdKlCiht99+O1kt06ZNU8mSJRUZGZlmzW+//bZq1KghHx8fPfzww8mOlZTyKb7r1q1T48aNVapUKZUpU0YNGzbUsmXLJN09NffgwYP65ptv7PW2a9fOYVsHDx7UM888o7Jly6p58+b255nSqeF37tzRuHHjVKlSJZUsWVKhoaHJTjdO6RTWpKflZaSuxNuNjo7Wq6++qho1aqhEiRKqUaOGXn31VYefXcI+li1bpqlTp6pKlSoqW7asQkNDdebMmTSPfWJbt25VgwYN5O3treDgYG3YsCFZm/T6drt27TRo0CBJUq1atRyOyZUrVzRy5Ej5+/vL29tbQUFBWrhwoeLj4+3rf/nll7LZbNq8ebNeeOEFPfDAA6pcubL98eXLlyskJEQ+Pj6qWLGinn/+eV2+fDnd5/bxxx+rffv2euCBB1SqVCk1btxYH374YbJ2NptNr776qt555x3VrFlTpUuXVtu2bfXf//7XoV1sbKxeffVVValSRSVLllS7du2StUnNxYsXNXToUNWtW1clS5ZU9erV1bdvX509e9beZuDAgXr00UclSR07drT/vrVv316S9Nhjj9n7T+IAnJHjY7PZNGXKFM2dO9f+OvHzzz+nWOvmzZv1+++/KywsLNU/xHTt2lXFihWzf79371517drVfmwaNGig+fPnKzY2Nlkd6f2+SNK///1vPfbYY6pQoYJ8fX0VGBio4cOH2x//+++/NWDAAHu/qlKlikJDQ+2vx6lts2fPnqpWrZp8fX0VFBSkyZMn6+bNmw71JJziv2/fPjVp0sT+fD799NMUj0Vi6dWV0NeT/gEjrekM6b0npHesMtL3pLuv3TabTb/++qs6d+4sPz8/BQQE6IMPPpAkffTRRwoODlapUqX06KOP6o8//nBYP6vvYSn9rBLeK3/44Qe1adNGJUuWVJ06dfTee+8lW3/fvn1q3LixfHx8VLt2ba1cuTLHp/sAeRUjuwAyLCIiQgULFlThwoV15MgRtW3bVjVr1tSbb76p++67T++9954ee+wx7dq1S7Vq1bKvd+XKFfXp00dDhgzRxIkTdd9999kfO3DggI4cOaKJEyfK1dVV8+bNU9euXXXgwAGHD/+JxcTEqEuXLjp+/LhGjhyp6tWr69ChQ5o1a5YuX76sqVOnqnDhwnr33XfVsmVLTZ06VWFhYTp//rwGDBig1q1bq1+/filue9SoUfrnn3/073//W6tXr5Ykubq6ysfHR+3atdOKFSsc5tjGxsbqgw8+sH8oT83KlSs1duxYde/eXZ07d9aJEyfUt29fXbt2Lc1j/vXXX6t///567rnnNGXKFMXFxenXX39VVFSUpLtzRvv376/Y2Fi98cYbkqQiRYo4bKN///7q0qWLVq5cme6c67lz5yogIEALFy7UhQsXNGXKFHXu3FnffPNNpka1MlJXYgMHDtSGDRs0bNgwNWjQQN9++61ef/11nTx5Uu+++65D2zlz5uihhx7SggULdOHCBU2YMEH9+/fX1q1b063rxIkTGj16tMaMGaMSJUrovffeU58+fVS8eHE1adJEkjLUt19//XWtXbtWc+bM0fvvvy9fX1/5+fkpLi5OoaGh+uGHHzR27FhVr15dO3fu1Pjx4/XPP//Y/9CTYPTo0WrRooUWLVqkW7duSZLCwsK0YMEC+8/87Nmzmjp1qv773/9q165dKliwYKrP7+TJk+rYsaNeeuklFShQQAcPHtQLL7ygW7duqU+fPg5t16xZo8qVK2v69OmKjo7WxIkT1b17dx06dMg++jlt2jS9/vrrGjx4sP71r3/pP//5j5588sl0j7MkXb58WW5ubpo0aZK8vLz0119/acGCBXrkkUd06NAhFSpUSKNGjVKtWrU0evRozZ49W4GBgSpUqJC+/fZbjRgxQjNmzFCdOnUkSVWqVMn08fnwww9Vvnx5TZkyRYULF1bJkiVTrPWLL75QwYIF1aJFiww9t4Rj3aRJE/Xv319ubm46cuSIZsyYoX/++UdhYWEZ3o4kXbt2TZ07d1bdunX11ltvycPDQ3/++ae+++47e5vnnntOp06d0uTJk1WqVClduHBBX3zxhW7cuJHqdk+dOqUaNWqoe/fu8vDw0PHjxzVz5kydPHkyWYj6448/NGbMGL300ksqXry4FixYoF69eunQoUP2M3xSkpW60pLee0JGjlVG+l5ivXr1Us+ePTVkyBC9++67ev7553XixAkdOHBAL7/8smJiYjRmzBj17dtXe/bsyVS9mXH16lX169dPAwcO1KhRo7Rq1SoNGzZMlSpVsr8+HT9+XN26dVPdunW1dOlSRUdHa9asWbpy5YqcnJyydMwBKyPsAkhVbGysYmJidO3aNW3YsEGffvqpWrduLXd3d02aNEmlS5fW5s2b5erqKklq3ry5GjRooJkzZzqMJl27dk2LFi2yj+wlduHCBe3atUulS5eWJDVt2lQ1atTQrFmztHjx4hTrWr9+vb7++mtt3bpVISEh9vUkacaMGRo6dKhKlCihwMBAvfzyy5o4caIefvhhzZ8/XwULFkzz4lMVKlRQ8eLF5erqmuw0s2effVbt27fXV199pYYNG0qSdu7cqTNnziQLEonFxcVpxowZat68ud566y37ci8vrzTXk6TDhw/L09NT06dPty/717/+Zf+/v7+/ihQpotjY2FRPi+vQoYMmT56c5n4SeHh4aPXq1SpQ4O6JP5UqVVLr1q21evVq9ezZM0PbyGhdCY4dO6b169dr9OjRGjt2rKS7z9HZ2VlTp07V0KFDFRAQYG9ftmxZhwD8zz//aOLEiTp37lyqYSbB+fPntXv3bntNLVq0UP369TVt2jT7h8mM9G1/f3/7qcs1a9ZUuXLlJEk7duzQ119/rYULF+qpp56yP5cbN25owYIFGjx4sIoXL26vp06dOpo/f779+4iICL355psaPXq0Ro8ebV+e8HPYvn27fSQ0JYlHt+Li4tSoUSP9/fffWrp0abK+5uLiojVr1jj8EeOZZ57R999/r4ceekiRkZF6++231atXL7366qv251KwYMEMhbnKlStrxowZ9u9jY2P10EMPKSAgQLt371b79u1VoUIFe4itUqWK/eeScJZE4mVZOT7x8fH65JNPHP7AlpKzZ8/Ky8srWbu4uDj72SKSVLBgQXugSHw84+Pj1bBhQ925c0fz58/XpEmT7L9DGREeHq7IyEi98sorDn09oQ9J0qFDhzRx4kR169bNvuyxxx5Lc7sdO3Z0qLF+/foqUqSIBgwYoNmzZ+v++++3P/7PP/9o27ZteuCBByRJgYGBqlKlijZs2ODQr5LKSl1pSe89ISPHKiN9L7EhQ4bY/4hTu3Zt7dixQ8uWLdMPP/ygokWLSpL++usvjRkzRn/++afKli2b4Xoz4+rVq1q1apX9tahhw4bas2ePPv74Y/uy2bNnq0iRIvr444/l7u4uSWrQoIECAwNNO58cMBKnMQNIVXBwsLy8vFS+fHkNHz7cfgGZmzdv6uDBg+rYsaMKFCigmJgYxcTEKD4+Xk2bNk12eq6Li0uqV8ENCgqyf0iQ7o7+tWrVSocOHUq1rj179qhMmTJ66KGH7PuOiYmxn7KceN1BgwapefPmCg0N1d69e/XOO+84hI3MaNy4sfz9/bV8+XL7suXLl6t69eppBrozZ87ozJkzyT4AdujQIcX5g4nVrl1bkZGR6t+/v3bs2JHuqdIpSSscJdWhQweHD+n169dXqVKl0vx53KuE/hIaGuqwPOHD88GDBx2Wt2rVyuH7atWqSZJOnz6d7r5Kly7t8LMqWLCgOnbsqO+//15xcXGZ7tspPZcCBQqoa9euyZ7LnTt3HEafpOQ/m3379ikuLk7dunVz6NtBQUEqUqRIuvv//fff9eyzz6pq1ar2udErV67Ub7/9lqxts2bNHIJu0uP4888/6/r168n6befOndOsIbGlS5cqJCREpUqVUvHixe3hJKV6MiKzx6d58+bpBt20dO3a1X4cvby8HK4u/tdff9n/EFOiRAl5eXnp1VdfVVRUlP0U3oyqWLGiPD099dJLL2nNmjUp9uXatWtr/vz5evvtt/Xzzz87nBafmitXrujll19WrVq15O3tLS8vLz333HOKj4/X77//7tD2gQcesAddSSpRooRKlCiR7u9VVupKS3rvCRk5VlLm+l7Lli3t/7fZbCpRooSCg4PtQVeSHnzwQUlKNmUiK+9hqXF3d7eHWunu3N5KlSo5PMdDhw6pZcuW9qAr3b3gVb169TK9PyA/IOwCSNUHH3ygzz//XIcOHdLZs2e1aNEiFStWTJcvX1ZsbKxmzZrl8EHQy8tLS5YsUWRkpMNoiJeXV6qnXqb0l2hvb2+dO3cu1bouXLigU6dOJdt3wojnpUuX7G2dnJwUGhqq27dvKyAgwD4CnFV9+vTRpk2bdOnSJf3555/67LPP0h2d/fvvv+3PKzFnZ2eHkZWUNGrUSCtWrNDp06fVo0cPVapUSR07dtRPP/2U4Zozc9XjlH4eJUqUSPPnca8S5lr6+Pg4LE/4PulczMTzJiXZR18TTgNOS4kSJZIt8/b21p07d3Tx4sVM9+2UnkuxYsXsNaX3XJL+bBJCUu3atZPt/+rVqw59O6lr167pscce008//aSXX35Z27dv1+eff64ePXro9u3bydqndxxT67cZHT1atGiRhg8frocffljvv/++9u7dq88++8xhH5mV2eOT0b7v5+enf/75J9lc1pkzZ+rzzz+3T2lIEBcXpyeffFI7d+7UyJEjtXnzZn3++ecaMWJElp6fp6enPv30U/n6+mrEiBEKCAhQgwYNtGnTJnubZcuWqU2bNnrzzTcVEhKiqlWrasaMGWn2x8GDB2vZsmV67rnntGHDBn3++eeaPXt2ijUm7Q/S3T6R3nPJSl1pSe89ISPHKrN9L+kUFBcXlxSXSUr2u5SV97DUpDQVJunPIOH6ESntE0BynMYMIFXVqlVLca6Wp6enChQooL59+6Y6fy/x6GBa84jOnz+f4rK0Tke9//77Va5cOYcR1sQSn2L2999/a8yYMQoMDNTRo0f19ttvO8y5zawnnnhCkydP1qpVqxQVFSV3d/dko3hJJQSdpM81JiYmzfCSoGPHjurYsaOuXbumAwcOKCwsTI8//riOHTuWoVMlMzOPK6Wfx4ULFxwufOLm5uZw4SgpeYjLjIQP2efPn3e4SnRC2ErpQ3hWpTTidv78ebm6usrLy0s3b97MVN9OKuGPQXfu3HEIvKk9l6Q/m4Q/fmzYsCHFD75pHYtDhw7p1KlT2r59u/2qxpKyfG/sxP22atWq9uUp9ZGUfPLJJ2ratKmmTp1qX3av983N7PHJaN9v0qSJVq5cqc8++8zhFNeEkc6kF1H6448/9J///EeLFi1yOCNh+/btybad0d+XmjVr6v3331dMTIz+85//aM6cOerdu7cOHDigatWqqUSJEpo9e7Zmz56t8PBwrV69WtOmTZOXl5eeffbZZNu7deuWtm3bpjFjxji85qV2ka6sSq+uhPmxSY9Baq99GXlPSO9Y5UTfS01W3sPuhY+PT6qvYwCSY2QXQKYVLlxYDRo00E8//aTAwEDVrl072b+MOnz4sMMpWlevXtWuXbvSPC24efPmOnPmjAoXLpzivhNOU46Pj9fAgQPl5uamTZs2aeDAgQoLC0t3VNTNzS3ZCE+CokWLqmvXrlq+fLk++OADdenSxeFUt5SUKlVKpUuX1saNGx2Wb968OVNBxMPDQ61bt1avXr30119/2T8splVvZm3evNlhROabb77RmTNnHH4eZcqU0bFjxxzW27lzZ7JtZbSuhPnPH3/8scPydevWSbo7up1dTp8+7XB6YWxsrDZt2qS6deuqQIEC99y3Q0JCFBcXl+xnvW7dOrm6uqZ7qmGzZs1UoEABnTp1KsV9p3WLo4QLAiU+NTkyMlLbtm1Lc5+pqV69ugoXLpzsuXzyyScZWv/GjRvJLmqW+OqzaUm4BVPS/nMvxyctHTp0UIUKFRQWFqaLFy+m2z6lYx0dHW3vs4ll9PclgbOzs4KDgzV+/Hj7BemSqly5siZNmiSbzZbq1bFv376t2NjYZD+DlK7OnV1SqqtMmTKSlOwY7Nq1K8VtZOY9IbVjdS99L7Oy8h52L4KDg7V7926HC4D99ddf+vbbb3Nkf0Bex8gugCyZOnWq2rVrp86dO+vpp5+Wj4+P/vnnHx09elSxsbEZvhqpt7e3OnfurDFjxtivZHnjxg2NGjUq1XW6deumVatWqWPHjho8eLBq1KihO3fu6I8//tD27du1atUqubu7a8GCBdq3b582b94sm82msLAwHThwQH379tXnn3+e6ly+KlWq6PLly1q6dKlq164tNzc3Va9e3f74s88+a7/1T+/evdN9jgUKFNCoUaP0wgsvaNCgQerSpYtOnDihN954I92gPHXqVF24cEGNGzeWr6+v/XTyGjVq2G+RUqVKFS1dulSffPKJKlSoIA8Pj0xfBTTBtWvX1L17d/Xu3VsXL17U5MmT9cADDziMcnbu3Nk+khMcHKyvvvoqWVDNTF3VqlXT448/runTpysmJkYPPfSQvvvuO82aNUuPP/64w7G/V97e3urdu7fGjh0rLy8vvffee/rtt9/0+uuv29vcS99u2bKlGjRooGHDhunixYuqWrWqdu3apZUrV2rYsGHpzhevUKGChg4dqlGjRum3335TSEiIChUqpNOnT2vfvn16+umnHeb0JfbQQw+paNGiGjFihMaOHasbN25o1qxZKl68uK5cuZLpY2Wz2TRw4EC9/vrr8vDw0L/+9S/9+9//dpi3mpYWLVrojTfe0Ouvv666detq//79DqeapqVSpUpydnbWBx98oGLFitnnLt7L8UmLq6ur3n//fXXp0kWNGzdW3759VadOHbm4uOj8+fPavHmzpLt/cJLu9u0yZcpoypQpKliwoJydnR0uPpdYRn5fduzYoeXLl6tdu3YqV66cbty4oUWLFqlIkSIKDg5WVFSUHnvsMXXt2lUPPvigXFxctHXrVkVGRqpZs2Yp7tfT01PBwcFasGCBfHx8VLx4cX3wwQfZOiUhI3X5+voqJCREc+fOVfHixVWiRAmtXbs21ZHW9N4T0jtW0r31vczKynvYvRgxYoQ2bdqkLl266Pnnn9edO3c0a9YseXt7Z+qiaEB+QdgFkCW1atXS3r17NWPGDI0ePVpXrlyRl5eXatasme4c1sRCQkLUqFEjTZ48WWfPnlWVKlW0bt06VapUKdV1XFxc9Mknn2ju3LlasWKFIiIi5O7urgoVKqhVq1ZydXXVkSNHNGXKFA0bNsw+Mujq6qqlS5eqadOmGj9+vObMmZPi9nv27KnDhw9r8uTJioqKUpkyZfTjjz/aHw8ICFClSpVUpEgRh1sspaVnz566fv26Fi5cqI8//lhVq1bVu+++q/79+6e5XlBQkBYtWqRx48bp8uXLKlGihJo1a6bx48fb2wwdOlS//fabXnjhBV27dk0hISEZug1PSl566SWdOHFCgwYN0o0bN9S4cWPNnDnTYZRk2LBhioqK0pIlS/TGG2+oZcuWWrRokf0evlmp66233lL58uX1wQcfaPbs2fL19dXQoUMdrribHSpWrKgXXnhBU6ZM0e+//66yZctq6dKlDgHpXvp2gQIFtGbNGk2ZMkXz5s3TpUuXVLZsWU2dOtV+X970TJo0SQ8++KDeffddvfvuu3JyclKpUqXUtGlThwsIJZVwAaUJEybomWeeka+vrwYMGKDLly87XJk2MxKujr1y5UotWbJEdevW1UcffaT69eunu+6oUaMUFRWlt956S7dv31ZISIg+/vjjDP3O3H///Zo1a5beeOMNtWvXTrGxsfr000/VuHHjLB+f9AQEBOjgwYNauHCh1q9fb79vd8mSJVW/fn2Hq7+7urpq1apVGjVqlAYMGKBixYrpqaeeUpkyZfTCCy84bDcjvy8PPPCA7rvvPs2aNUt///23PDw8VKdOHW3YsEGlSpXS7du3FRgYqJUrV+rUqVMqUKCAKlWqpCVLlqR4lfsE7777roYPH66RI0eqUKFC6tSpk5566qlkF4PLqkKFCmWorsWLF2vYsGEaPXq0ChUqpB49emjkyJHJjpWU/ntCesdKure+l1lZeQ+7F/7+/lq7dq0mTpyo3r17q2TJkho6dKg+++wz/fnnnzmyTyAvc4qMjLy3y+YBQBbVqFFDDRo0yPTtGYwWHh6uevXqad68eZm6HQ8AwDrM8h527do11alTR61atUrz1npAfsTILgBk0JkzZ3TixAlNmzZNvr6+6V6YCgCA7DZy5Eg99NBD8vX11V9//aV33nlHkZGRGjBggNGlAaZD2AWADFq5cqVmzpxpP03vXu7fCQBAVty+fVthYWH2K8nXqVNHGzdutN9LGMD/cBozAAAAAMByuGwbAAAAAMByCLsAAAAAAMsh7AIAAAAALIewCwAAAACwHMJuHhYeHm50CTChzPQLT5st5wrJgsLt2hldguV42my8ViAZ+gSSok8gKfoEksqLfYKwC8A0rm/danQJAAAAsAjCLgDTuO/FF40uAQAAABZB2AVgGjG1axtdAgAAACyCsAvANKJ79TK6BAAAAFgEYReAaRQtXdroEgAAAGARhF0ApnHlv/81ugQAAABYhLPRBQBAAucDBxTTpo3RZQAAYEnx8fG6fv26YmNj021bqFAhRUVF5UJVyCtyu08ULFhQhQsXlpOTU5a3QdgFYBquy5cTdgEAyAExMTG6evWqPDw85OLikm57Nzc3FSpUKBcqQ16R230iOjpakZGRKlKkiJydsxZbOY0ZgGncWLPG6BIAALCk69evy9PTM0NBFzADFxcXeXp66vr161neBmEXgGnc17ev0SUAAGBZBQrw0R95y732WXo8ANOIeeQRo0sAAACARRB2AZhGdNeuRpcAAAAAiyDsAjANT5vN6BIAAABgEYRdAKYRFRlpdAkAAAB27dq1U40aNbK8/pdffimbzaZVq1ZlY1WpGzhwoGwMHthx6yEApuGybh2nMgMAYADbsjNGl+Agsncpo0uABRB2AZiG886dhF0AAGAaGzZsUHx8fJbXDwkJ0V9//cUtnwxC2AVgGjfffdfoEgAAQD4XGxur27dvy93dXa6urve0rQIFCqhQoULZVBkyizm7AEzDPTTU6BIAAIAF/PPPPxoxYoSqV6+uEiVKqHr16hoxYoQuXbrk0G7VqlWy2Wzat2+fZs6cqVq1asnHx0cbNmyQlPqc3U2bNikkJEQ+Pj4KCAjQ9OnTtW/fvmTzc1Oas5t42QcffKD69evL29tbAQEBmjdvXrJ97d27V71791ZgYKB8fX1VtmxZderUSQcOHMiuw2VZjOwCMI07vXoZXQIAAMjjoqKi1KpVK504cUI9evRQYGCgjh49qqVLl2r//v3as2ePihQp4rDOhAkTFBMTo2eeeUZFihRR5cqVU93+J598omeffVYVKlTQ6NGj5ezsrNWrV2vHjh2ZqnPZsmU6f/68nn76aXl6emrt2rV6+eWX5efnp66JpnV9+OGHunz5sp544gmVKlVKZ8+e1fvvv6+OHTvq008/VcOGDTN3gPIRwi4A2ZadMcWFIGIaNTK6BAAAkMe9+eab+v333zV79mz17dvXvrxGjRoaOXKk5s2bpwkTJjisc+vWLe3fv1/u7u5pbjsmJkbjx4+Xl5eX9u7da7/ycZ8+fRQSEpKpOk+fPq1vv/1Wnp6ekqQePXqoRo0aWrx4sUPYnTdvngoXLuywbp8+fVS/fn3NnTuXsJsGTmMGYBpFq1Y1ugQAAJDHbdmyRV5eXuqV5Iyx3r17y8vLS1u3bk22Tp8+fdINupJ05MgRnTt3Tt27d3e4xY+Hh4f69OmTqTqfeuope9CVJHd3dwUFBen33393aJc46F67dk2XLl1SwYIFFRQUpMOHD2dqn/kNI7tAPmemWw1cOX3a6BIAAEAeFxERodq1a8vZ2THqODs7q1KlSvrhhx+SrVOpUqUMbzu19hndRoJy5colW3b//fcnm1f8xx9/aMqUKdqzZ4+ioqIcHnNycsrUPvMbwi6QT9mWnVF8ku8lY+9r57J8uaKZtwsAAHLZfffdl+v7LFiwYLptrl27prZt2+r69esaOHCgqlWrpiJFiqhAgQKaM2eO9u/fnwuV5l2EXQCm4fyf/xB2AQDAPSlfvrzCw8MVExPjMLobExOj3377TeXLl8/ytsuWLStJ+u2335I9ltKye/XFF1/o3LlzWrBggXr06OHw2Kuvvprt+7Ma5uwC+VBapy4beVrzzRQutw8AAJAZ7dq108WLF7Vy5UqH5StWrNDFixfVrl27LG+7du3a8vX11YcffqjIyEj78mvXrum9997L8nZTkzD6Gx8f77B87969zNfNAEZ2gXwmI2HWqKszF27XTtdTuGgEAABARr3wwgvauHGjRowYoR9++EE1a9bU0aNH9f7776ty5cp68cUXs7xtZ2dnTZkyRf369dO//vUvPf3003J2dtaHH36o+++/XxEREdk6j7Z+/fry8fHRhAkT9Oeff6pUqVL68ccftWbNGlWrVk3Hjh3Ltn1ZESO7AFJkxAjvrTFjcn2fAADAWjw9PbVz50717t1bu3fv1ujRo7V792716dNHO3bsSHaP3czq2rWrli9frkKFCmnatGlatGiROnbsqGHDhknK3vm/NptNH3/8sYKCgrR48WJNmDBBx48f19q1axUYGJht+7Eqp8jIyPj0m8GMwsPD07zhNfKn9PpF4hAb/1J1Oc39OdW2uT2663TunOJLlszVfVqdp82mw4cO8VoBB7x/ICn6hPVFRUU53OYmPbdu3VKhQoVysCLrmT9/viZOnKjdu3crODjY6HKynVF9IrN9NzFGdoF8xEy3GUqJR7NmRpcAAACQpjt37ig2NtZh2bVr1/Tuu+/q/vvvZ8TVRDIUdvfs2aP27dvrwQcflLe3t6pVq6ZevXrp+PHjDu1Onz6tnj17qmzZsipTpox69OihU6dOJdteZGSkhgwZoooVK8rPz08dO3bUzz8nH126deuWJk6cqCpVqsjX11ctW7bUwYMHk7WLi4vTnDlzVKNGDfn4+CgkJESbNm1K8bmsWLFCwcHB8vb2VlBQUI5MJAesIrfD8dUkrykAAABmc/LkSdWuXVuvvPKKli9frunTpyskJEQRERGaMGGCXF1djS4R/y9DYffy5cuqVauWZs2apU8++USTJk3S8ePH1bJlS/3555+SpBs3bqhDhw4KDw/XW2+9pXfeeUcnTpxQ+/btdf36dfu24uPj9cQTT2jPnj2aOXOmVq5cqejoaLVv315nzjh+sB4yZIhWrFihcePGac2aNfLx8VGXLl109OhRh3ZTp07V9OnT1b9/f61bt07BwcHq1auXdu3a5dBuxYoVGjp0qDp06KD169frscce0/Dhw7V06dIsHTwA2ct1/nyjSwAAAEiTl5eXgoODtW7dOo0ePVrz58+Xt7e3li1bpj59+hhdHhLJ0NWYH3/8cT3++OMOy+rWravg4GBt2rTJHkpPnjypw4cPq2LFipKk6tWrq27dulq2bJmef/55SdK2bdv0zTffaPPmzWrSpIkkKTg4WIGBgZo3b55mzpwpSfrxxx+1bt06h3tKhYSEqH79+nrttdf00UcfSZIuXLig+fPna+jQoRoyZIgkqUmTJjpx4oTCwsLUqlUrSXfvqzVlyhSFhoZq4sSJ9nbnzp3T1KlT1bNnT7m4uGT9SAK4ZwX++svoEgAAANJ0//33M1iWR2R5zu79998vSfYbNW/fvl3BwcH2oCvdvaHzQw89pG3bttmXbd++XSVLlrQHXenuFdNat26drJ2Li4s6d+5sX+bs7KzOnTtr7969un37tqS7p1jfuXNHoaGhDvV169ZNx44d08mTJyVJ3333nS5evJisXWhoqC5duqSvv/46q4cCyBPMPl9Xkm5NnWp0CQAAALCITIXd2NhY3blzR7///ruGDh0qHx8f+4jv8ePHVbVq1WTrVK1aVb/88ov9+7TanT59WteuXbO3K1eunNzd3ZO1u3Pnjk6cOGFv5+bm5hCyE9pJsu87YX5x0n0nbQfAkW3ZmVwLyh5Nm+bKfgAAAGB9GTqNOUHz5s115MgRSVLFihW1efNmlShRQtLdeb02my3ZOsWKFVNkZKT9+8uXL6ts2bIptpPuXrzKw8Mjze0lbCfhq6enZ7KbN6fUTlKybSZtB1hRXhjVlaQb8+YZXQIAAAAsIlNhd9GiRbp69apOnjyp+fPnq1OnTtq+fbvKlSuXU/WZRnh4uNElpMisdcFYyfuFe4rt7m2b2c/t4kXdpk9nq6D//8prBZKiTyAp+oS1FSpUSG5ubpla59atWzlUDfIqI/rElStXdP78+VQfT+se4ZkKu1WqVJEkBQUFqUWLFqpZs6beeOMNzZ07VzabzWEEN0HSEdq02iU8nvA1pdsWJbRLGJG12WyKiopSfHy8w+huSu2kuyPHvr6+qbZLjRlvtM4N4JGSFPvFgXsf2Q0+4K7I3qXueTtp8XjiCV37/vsc3Ud+xWsFEuP9A0nRJ6wvKipKhQoVynD7W7duZao9rM+oPlG0aFGVKVMmS+tm+QJVNptNFStWtM+d9ff3T3bfXenuXNmEkJxeu9KlS8vDw8PeLiIiQjdu3EjWztXV1T5H19/fX7dv39Yff/yRrJ30v4Du7+/vsDy1dgCMQ9AFAABAdsly2D1//rzCw8NVoUIFSVKbNm106NAh+9WPJSkiIkLffvut2rRpY1/Wpk0bnT17VgcOHLAvu3Llinbs2OHQrnXr1oqOjtbGjRvty2JiYrRhwwY1a9bMfhpGixYt5OLiorVr1zrUt3btWlWrVk3ly5eXJNWrV0/FixdPsV2xYsVUv379rB4KwNTyynxdSXKbNs3oEgAAAGARGTqN+amnnlJgYKCqV6+uIkWK6Pfff9dbb72lggUL2u+f+8wzz2jJkiXq3r27xo8fLycnJ02dOlWlSpVS79697dtq27at6tWrp+eee06TJ0+WzWbTnDlzFB8frxdffNHeLjAwUJ07d9bYsWMVExOjcuXKaenSpYqIiNDixYvt7UqUKKHBgwdr7ty58vDwUGBgoDZs2KD9+/dr9erV9nYuLi4aP368hg8fLj8/PzVt2lT79+/XBx98oJkzZ8rV1fWeDyYAAAAAwBwyFHaDg4O1YcMGLViwQNHR0SpVqpQaNWqkl156yX5xqsKFC2vz5s0aN26cBgwYoPj4eDVp0kTTpk2zn5osSQUKFNCaNWs0YcIEDR8+XLdv31ZwcLA+/fRTlS5d2mG/Cxcu1JQpU/Tqq68qKipKAQEBWr9+vWrVquXQbuLEiSpcuLDeeecdnT9/XpUqVdLy5cvVunVrh3Z9+vSRk5OTFixYoDfffFOlS5fWrFmz1Ldv36wcOwDZ7PbYsUaXAAAAkMzAgQO1evXqFK89ZFXTpk3TjBkz9MMPP2T7BYlr1KihsmXLauvWrdm63aQyFHaHDh2qoUOHptuuTJkyev/999NtV6xYMS1cuFALFy5Ms919992n1157Ta+99lqa7QoWLKiRI0dq5MiR6e67d+/eDiPNADLOtuxMjl6kyqNuXebtAgBgANsbNqNLcBA5NNLoEmABWZ6zCwDZ7caaNUaXAAAAAIsg7AIwj2vXjK4AAAAAFkHYBZApOXl1Z/dEF6kDAADIqlu3bmnatGkKCgpSyZIlVbZsWTVs2FATJ06UdPeuMTabTdNSuBPEtGnTZLPZFBERkeyxixcv6rnnnlOFChXk5+enDh066MiRI8narV69Wv/6179UtmxZ+fn5KTAwUP369dPFixftbb7//nsNHDhQdevWVcmSJVW6dGk98sgj+vTTT5Ntb+DAgbLZbLp06ZIGDhyoihUrqnTp0urevbv+/vtvSdLy5ctVr149+fj4KDg4ONl82MTPef369WrYsKF8fHwUEBCgadOmKSYmJkPHNioqSi+//LJq164tb29vPfDAA3r22Wcd7sqT4PTp0+rVq5fKli2rMmXKKDQ0NNktY3NShubsAsib8tJthyTp2hdfGF0CAACwgBEjRuiDDz7QE088ocGDBysmJka///679u/ff0/b7dKli4oVK6YxY8bo/PnzWrJkiR599FHt2rVL1apVkyR99NFHGjhwoBo0aKBx48bpvvvu0+nTp7V7925duHBBXl5ekqQtW7YoPDxcnTp1UpkyZXTp0iWtXr1aTz/9tJYsWaKuXbumuH8/Pz+NGzdOJ06c0KJFi9SjRw+1b99ey5cv19NPPy03NzctWrRIzzzzjA4fPmy/FWuC7du36+2331a/fv3k7e2t7du3a8aMGTp16pTeeuutNJ9/VFSUHnnkEZ0+fVpPPfWUqlatqr/++ktLly5V8+bN9fnnn6ts2bKSpMjISLVt21ZnzpxRnz59VKVKFR08eFDt27fXzZs37+nnkFGEXQCmUWj8eN2aOtXoMgAAQB63ZcsWtWzZUu+88062bjfhgrxOTk6SpPbt26tZs2aaOHGiPv74Y/u+ixQpok8//VTOzv+LW+PHj3fY1ogRI/Tyyy87LHvuuefUpEkTzZ49O8WwW7duXc2ePdth2VtvvaVz587pq6++UtGiRSVJTZo0UaNGjbRixYpk+/jpp5+0d+9e+x1u+vfvrx49eujDDz9U7969FRwcnOrzf+2113Ty5Ent3r1bNWrUsC/v3r27QkJCNG3aNL399tuSpDfffFN//vmnFixYoB49ekiS+vbtqzFjxmT7zyU1nMYMwDTifH2NLgEAAFhA0aJF9d///lfHjh3L1u2++OKL9qArSbVq1VKzZs20b98+Xfv/a48ULVpUN27c0M6dOxUfH5/qtgoXLmz//40bN3Tp0iXdvHlTTZo00S+//KIrV64kW2fgwIEO3zdo0ECS9MQTT9iDriQFBASoaNGi+v3335Nto1mzZg63cnVyctKL/z+VbMuWLanWGx8fr3Xr1qlhw4by8/PTP//8Y/9XuHBhBQUF6fPPP7e337p1q7y9vfXkk086bCcjd/nJLozsAhaV105hlqQ7Q4YYXQIAALCAadOmacCAAWrYsKHKly+vxo0bq3Xr1mrTpo0KFMj6eN+DDz6YbFmVKlW0d+9enTp1SlWrVtXw4cP11Vdf6amnntL999+vkJAQtWzZUp06dVKRIkXs6124cEGvvvqqtm3bpgsXLiTbblRUlEOAlZTslGSbzSZJ9lOHE/P09NSlS5cy/BwkpTjvNsHFixd16dIl7d27Vw888ECKbRIf25MnT6pOnToqWLCgQxtfX195enqmup/sRNgFkGk5db/dIv7+unr8eLZvFwAA5C/t2rXT0aNHtWvXLh08eFD79u3T+++/rwYNGmjTpk0Oo7NJxcbG3tO+H3jgAX377bf64osv9MUXX+jgwYN64YUXNG3aNG3btk0VKlRQfHy8OnXqpF9//VUDBgxQ7dq1VbRoURUsWFCrVq3SunXrFBcXl2zbSYNjesvTGlnOqocffjhXR2fvBWEXgGlcS3TqCwAAwL0oVqyYQkNDFRoaqvj4eIWFhWnevHnatm2bmjdvLkm6fPlysvXSGt389ddfk81p/eWXX1SwYEGVKVPGvszNzU2tWrVSq1atJEm7du1St27dtHDhQs2ePVs//fSTfvrpJ40aNUrjxo1z2N7KlSuz+pQz5Ndff0227JdffpGUfOQ4seLFi8vT01NXr17Vww8/nO5+ypcvr99//12xsbEOYfyvv/5SVFRUpuvOCubsAsiSnDhNusBvv2X7NgEAQP4SGxuryMhIh2VOTk6qWbOmpLsBt0iRIvLx8dGXX37pMPp58uTJZLfsSWzevHkO7Y8cOaJ9+/apadOm8vDwkCT9888/ydYLDAy071v630hs0pHXY8eOpTlvNjt8/vnnDrdLio+P17x58yTdHRFPTYECBdStWzd9//332rRpU4ptEp+O3bZtW50/f16rV692aPPGG29kvfhMYmQXsKC8OF9XkgpNn67rjRsbXQYAAMjDrl69Kn9/f7Vp00Y1a9aUl5eXIiIi9N5778lms6l169aSpH79+unVV1/V448/rnbt2uncuXNatmyZqlatqn//+98pbvvUqVPq3Lmz2rRpo7///ltLlizRfffdp8mTJ9vbdOrUSZ6enmrQoIFKly6tqKgoffjhh3JyclJoaKiku3Nkq1atqjfffFM3b95U5cqV9dtvv2n58uWqVq1aivfuzS4BAQHq0KGD+vXrJx8fH23btk379u1TaGio6tWrl+a6EyZM0DfffKNevXqpU6dOCgoKkqurq06dOqXdu3crMDDQfjXmF198UevWrdOLL76oH374Qf7+/jpw4IAOHTqk4sWL59jzS4ywC8A0rqfxl1QAAICMcHd318CBA/XFF19o3759un79unx8fNSmTRsNGzZMJUuWlHT3qsBXrlzRmjVrdODAAVWpUkXz58/XkSNHUg27H3/8scaNG6dp06bp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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_subsample(data, data_sub_adj2)" + ] + }, + { + "cell_type": "markdown", + "id": "af8c5b32", + "metadata": {}, + "source": [ + "To take a closer look, we show only the distribution for the subsampled data" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "49a77f85", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7EAAAIXCAYAAABKEdkeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABofklEQVR4nO3deVyVdeL+/wsDbRTzkCKKKMig4EJoglnm9lELLZdBk1Irc0wtsyisGReMVLLU1FLLJUscl1RKcS3LZUytSWfGbOqLWSa51KjFQc1kEX5/+OOMh327ueHm9Xw8fBT3ed/3uc45b+Bc3Mtxsdvt2QIAAAAAoAqoYXYAAAAAAACKixILAAAAAKgyKLEAAAAAgCqDEgsAAAAAqDIosQAAAACAKoMSCwAAAACoMiixAKq81atXy2azOf75+Pioc+fOWrp0qTIzMys8zxNPPKHg4GDDtm+z2TRz5kzH11u3btXChQsNu78bBQcH64knnnB8nfPcJycnF3sbq1ev1t/+9rcS3W/u5zQ5OVk2m00rV64s0XZKk6s0j7E8ZGVl6a9//asCAwPl4eGhoUOHGn6fX3zxhUaOHKnWrVvL09NTTZs2VY8ePTRjxgz9/PPPht9/WcycOVM2m83sGKX26aefymazae/evWZHKXe5f2ZV9dcKgPlczQ4AAOUlPj5e3t7eunTpkjZt2qQXXnhB58+f1+TJk82OVq4+/vhjeXt7O77etm2b/v73v+upp56q8Cz33nuvPv74YzVq1KjY66xZs0bXrl3Tww8/XOx1XnjhBY0dO7Y0EYutoFyleYzlITExUYsXL9aMGTPUsWNH3XrrrYbe34IFCzR16lR16dJFkydPlp+fn3777Td98cUXio+P15EjR5SQkGBohrJ45JFH1KtXL7NjoBh4rQCUFSUWgGUEBwfL399fkvR///d/OnHihJYsWVLmEpuWlqZatWqVR8RyERYWZnYEhwYNGqhBgwaGbT/nuW/evLlh91EUox9jQY4dOyZJevLJJ1WjRtkPnCpsHu/bt09Tp07V2LFjnfaYSdI999yjZ599Vps2bSpzBiM1adJETZo0MTsGioHXCkBZcTgxAMu6/fbbdfHiRZ0/f16S9NVXX+nBBx+Ur6+vGjVqpHvvvVcHDx50WueJJ55Q69at9cUXX+iee+5Ro0aNNHXqVEnXS/Lo0aMVHx+v9u3by8vLS127dtW+ffuKzHLlyhW9+OKLuu222+Tp6anbbrtNc+bMUVZWliTpt99+U1hYmP7v//5PGRkZjvV2794tDw8PLVu2zLHsxkPznnjiCa1du1Znz551HE4dHBys//73v/L09NRbb72VJ8vMmTPVuHFj2e32QjO/9dZbCg4OlpeXl7p3757nuZLyP9R2w4YN6tKli5o0aaKmTZvqrrvu0rvvvitJuu+++3TgwAF9/vnnjrz33Xef07YOHDigRx99VM2aNVPPnj0djzO/Q7TT09M1adIkBQQEqHHjxoqMjMxz2G/uQxml/x2OvHr16mLnunG7GRkZmjFjhoKDg+Xp6ang4GDNmDHD6bXLuY93331XcXFxCgwMVLNmzRQZGakzZ84U+twHBwfrlVdekSTdeuutTll//vlnjRkzRv7+/mrYsKHuuusurVu3Lt/XJb/nMj+vv/666tevr5deeinf2+vUqaNhw4Y5LXv55ZfVtWtXNW3aVP7+/urXr58OHTqUb47cr0l+h5O+9dZb6tixoxo1aiRfX191795dW7Zscdy+a9cu3XPPPWrWrJmaNGmi0NBQvfrqq4Vuc+nSperdu7f8/PzUrFkz9erVSx999JHTmLK8TsXJVdDcve+++xxz7Eapqal64okn5Ovrq6ZNm+rxxx/Xr7/+WqLnavfu3XrggQcUGBioxo0b684779SCBQt07do1p+3k/Ex77733FBoaqkaNGqlPnz76/vvv9dtvvykqKkrNmzdXixYtNHnyZKfTM3IOf05MTCwyb275vVY2m00zZszQ4sWLddttt8nHx0d9+/bV//t//89p3LVr1zRjxgzHY+vXr5++/fbbfL/PAVgXe2IBWFZycrJuuukm1alTR0eOHFHfvn1122236Y033tAf/vAHvfPOOxo4cKB27typdu3aOda7ePGiRo4cqfHjxysmJkZ/+MMfHLft379fR44cUUxMjGrWrKnXX39dDzzwgPbv368WLVrkmyMzM1ODBg1SUlKSnn/+ebVp00aHDh3S7NmzlZKSori4ONWpU0dvv/22evfurbi4OMXGxurcuXMaO3aswsPD9fjjj+e77RdeeEG//PKL/vWvf2nt2rWSpJo1a8rLy0v33Xef4uPjnc5hvXbtmlatWqWBAwcWek7aypUrNXHiRA0dOlQRERE6ceKERo0apcuXLxf6nH/22WcaPXq0xowZo+nTpysrK0vffvutUlNTJUmvvfaaRo8erWvXrmn+/PmSpLp16zptY/To0Ro0aJBWrlxZ5DnN8+bNU9u2bbVo0SKdP39e06dPV0REhD7//HO5ubkVuu6NipPrRk888YQ2btyo5557Tnfeeaf+8Y9/6LXXXtPJkyf19ttvO42dO3eu7rjjDi1cuFDnz5/XlClTNHr0aG3btq3A7a9atUpLlizRmjVr9PHHH0uSmjdvrt9++0333Xef7Ha7pk6dqiZNmmj9+vUaM2aMfv/9d40YMcJpO8V5LjMzM3XgwAH169dPNWvWLMazdd1PP/2kJ598Ut7e3rpy5YrWr1+vvn37au/evWrTpk2xtyNJ69ev15QpU/TCCy/ozjvv1NWrV/X1118rJSVFknTy5Ek99NBDGjBggF544QW5ubnpxIkTOnnyZKHb/fHHH/Xwww/L19dXmZmZ+vDDDxUZGamEhIQ8h7OW5nUqba7CTJo0Sd26ddPy5cv1/fffa/r06frpp5+0devWYj1XObm6du2q0aNHq1atWjpy5IheffVV/fLLL4qNjXW6v4MHD+qHH35QbGysMjIyNHHiRD388MPy8/OTv7+/3nnnHR04cEBz5sxR8+bNNWrUqBLlLYl169apRYsWeuWVV5SRkaGYmBgNHTpUhw4dkqvr9besM2fO1Guvvaann35a3bt315EjR/TQQw+V+L4AVG2UWACWce3aNWVmZury5cvauHGjtmzZovDwcNWuXVtTp06Vj4+PNm/e7Hij3rNnT915552aNWuW1qxZ49jO5cuXtWTJknz3kpw/f147d+6Uj4+PJKlbt24KDg7W7NmztXTp0nxzJSQk6LPPPtO2bdvUuXNnx3qS9OqrryoqKkqenp4KCQnRiy++qJiYGHXv3l0LFizQTTfdVOhFm5o3b6769eurZs2aeQ4z/vOf/6x+/frp4MGDuuuuuyRJH330kc6cOaORI0cWuM2srCy9+uqr6tmzp958803H8gYNGhS6niQdPnxY9erVc+xFlK4f2p0jKChIdevW1bVr1wo8LLp///6aNm1aofeTw93dXWvXrnUcbhsQEKDw8HCtXbtWjzzySLG2UdxcOb755hslJCToL3/5iyZOnCjp+mN0dXVVXFycoqKi1LZtW8f4Zs2aORXbX375RTExMfrpp5/UuHHjfO8jJCTEcd7zjXmWLl2q77//Xlu2bFGXLl0kSb1799a5c+c0Y8YMPfzww7rpppsc44vzXP7666+6evWqY07fKHfxzSkS0vVzaHNcu3ZNvXr1UqdOnbRy5UqnPZHFcejQIbVp00Z/+ctfHMvuuecex/9/+eWXSk9P12uvvaZbbrlF0v++hwozY8YMx/9nZWWpW7du+u6777R8+fI8JbY0r1NpcxUmKCjI8X3Xq1cveXh4aPTo0fr73/+ubt26FflcSXL6Ps3OztZdd92l9PR0x3nPNx6efvnyZSUkJKhevXqSpP/+97/661//qg4dOjievx49emjnzp3atGlTnhJbVN6ScHNz07p165z+APXoo4/qn//8p+644w7Z7Xa99dZbGjlypOOogR49esjNzU1Tpkwp0X0BqNo4nBiAZYSFhalBgwby8/NTdHS0HnjgAS1atEi///67Dhw4oAEDBqhGjRrKzMxUZmamsrOz1a1btzyHybq5uSk8PDzf+wgNDXV6s1+3bl3dc889eQ6jvNGuXbvUtGlT3XHHHY77zszMdBw6fOO6Tz75pHr27KnIyEjt3r1bixcvVv369Uv1fHTp0kVBQUFasWKFY9mKFSvUpk2bQovamTNndObMGQ0cONBpef/+/Z1KTH7at28vu92u0aNH68MPPyzykOX83H///cUe279/f6c35J06dVKTJk0KfT3KKme+REZGOi0fMmSIJOnAgQNOy3MXjNatW0uSTp8+Xar79vb2dhTYG+/7woULSkpKclpekucyt//+97+O84Fz/t1Yavfu3av777/f8YeUBg0a6LvvvtN3331X4vtq3769vvrqKz3//PPau3evrly54nR7cHCw3Nzc9Oc//1mJiYmOUwSKcuTIEUVGRqpFixaOjHv27Mk3Y2lep9LmKkzu77uBAweqRo0a+uKLLyQV/VxJ1w85z/ljiqenpxo0aKAZM2YoNTU1T8aOHTs6CqwktWzZUpLyHH7esmXLfA+vLipvSeQU0hy5X4Ovv/5av/32mwYMGOC0Xu6vAVgfJRaAZaxatUp79uzRoUOHdPbsWS1ZskQeHh5KSUnRtWvXNHv27DxvypctWya73e44N1W6vsfxxr1ZN2rYsGG+y3766acCc50/f16nTp3Kc985eyhvPH/MxcVFkZGRSktLU9u2bcu8V2fkyJFKTEzUr7/+qh9//FGffPJJkXtT//vf/zoe141cXV2LvELu3Xffrfj4eJ0+fVrDhw9XQECABgwYoP/85z/FzlySqwDn93p4enoW+nqUVc5hm15eXk7Lc76+8bBOSfLw8HD6OudIgKtXr5bqvnPfb2H3XZzn8tZbb9XNN9+cp6zVr19fe/bs0Z49e/Too4863XbkyBE98MADqlOnjhYsWKBPPvlEe/bsUdu2bUv1uB566CHNnTtX//znPxUREaHmzZtr+PDhjnNp/f399f777ysrK0tjxoxRy5Yt1atXL+3fv7/AbZ4+fVr9+/dXSkqKZs2apZ07d2rPnj3q1atXvhlL8zqVJldRcs/pmjVrymazOeZ0Uc9VVlaWHnroIX300Ud6/vnntXnzZu3Zs0cTJkzI9/HkPq0gp0TmtzwtLa3EeUuiqNcg52eTp6dnoRkAWB+HEwOwjNatWzuuTnyjevXqqUaNGho1alSB507duDfPxcWlwPs4d+5cvssKOtxQul4SfH19nfaI3qhZs2aO/885lC8kJERHjx7VW2+95XROa0k9+OCDmjZtmlavXq3U1FTVrl1bDzzwQKHr5BSi3I81MzOzyAu2SNf3igwYMECXL1/W/v37FRsbq8GDB+ubb74p1lV2C3v+c8vv9Th//rzThXRq1arldMElKW/ZK4mcN9rnzp1zumpyzhvs3G/Ey5OHh0e+exELuu/iPJeurq666667tGfPHqWnpzuKg6urq9q3by9J+vDDD53W2bJli1xdXbVq1SqnPWd2u91pr97NN98sSXme/9zzyMXFRY899pgee+wx2e127d69W1OmTNHIkSO1a9cuSVLXrl3VtWtXpaWl6fPPP9fMmTMVGRmpo0eP5nu0wq5du3Tx4kW9++67TlfCzW/PZVkUlevmm2/O8/il63Mwv7mSe06np6fLbrc7fsYU9Vz98MMP+ve//60lS5Y4HS2wY8eOcn3cxc1bnnJ+Np0/f16tWrUqMAMA62NPLADLq1Onju6880795z//UUhIiNq3b5/nX3EdPnzYaY/VpUuXtHPnzkIPz+3Zs6fOnDmjOnXq5HvfOW/As7Oz9cQTT6hWrVqOK37GxsYWuRezVq1a+v333/O97ZZbbtEDDzygFStWaNWqVRo0aJDj3L2CNGnSRD4+Pnk+UmXz5s1FXmjpRu7u7goPD9eIESP0888/O4pLYXlLavPmzU570T///HOdOXPG6fVo2rSpvvnmG6f1cl+htiS5cs4vfv/9952Wb9iwQdL1vdFG6dy5s86cOaPPP//caXlCQoI8PT0VFBRUqu0+88wz+uWXX/Tiiy8Wa/yVK1d00003OZXkv//973n25jZt2lSSnJ7/zMxM7dmzp8Bt22w2RUREaODAgXmuTCtdf526deump59+Wr/99lueKx/fmFGSU8n+7rvv9I9//KMYj7DkCsrVtGlTnTt3ThcuXHCM/eGHH3T8+PF8t5P7+27Tpk3KyspSx44d84zN77nK73FnZGQ45md5K0nesmrTpo3q1KmjxMTEQjMAsD72xAKoFuLi4nTfffcpIiJCDz/8sLy8vPTLL7/o6NGjunbtWp4rdhakYcOGioiI0F//+lfH1YmvXLmiF154ocB1hgwZotWrV2vAgAEaN26cgoODlZ6erh9++EE7duzQ6tWrVbt2bS1cuFB79+7V5s2bZbPZFBsbq/3792vUqFHas2eP01WSbxQYGKiUlBQtX75c7du3V61atZyuDvvnP//Z8RE3jz32WJGPsUaNGnrhhRf09NNP68knn9SgQYN04sQJzZ8/v8gCHBcXp/Pnz6tLly5q1KiR47Du4OBgx2etBgYGavny5frggw/UvHlzubu7F3hl56JcvnxZQ4cO1WOPPaYLFy5o2rRp+uMf/+i0xz0iIkJz5szRnDlzFBYWpoMHD+YpoCXJ1bp1aw0ePFivvPKKMjMzdccdd+iLL77Q7NmzNXjw4BJfmbckhg4dqsWLF+vhhx9WTEyMvL29tX79eu3Zs0fz588v8DD4onTr1k2xsbGKjY3V119/7fgoqrS0NH333Xf64IMPVKdOHUdp7dWrl9566y09+eSTGjZsmL777jvNnj3bcTGqHLfffruaN2+uqVOnKjs7WzVr1tTy5cvzHJb6zDPPyN3dXR07dlSDBg30/fffa926derRo4ck6Z133tHBgwfVu3dvNWnSRL/88ovmzZunxo0bO+2Ru1H37t3l6uqqsWPH6qmnntLPP/+smTNnysfHx+kPH2VRnFwDBw5UXFycRo8erXHjxjnGFHSue1JSkuP77rvvvtOMGTN09913O04tKOq5CgwMVNOmTTV9+nTddNNNcnV1dbpAW3krKm95stlseuKJJ/Taa6/J3d1d3bt315dffqm//e1vklQun6cMoGqgxAKo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AAAAAKsoVol99913NXToULVr106rVq3SihUrNHDgQP3++++SpOzsbD344IPatWuXZs2apZUrVyojI0P9+vXTmTNnnLY1fvx4xcfHa9KkSVq3bp28vLw0aNAgHT161GlcXFycXnnlFY0ePVobNmxQWFiYRowYoZ07dzqNi4+PV1RUlPr376+EhAQNHDhQ0dHRWr58eVmeFwDlKPSs2QkAAABgFS52uz27sAHJycm64447NHXqVD355JP5jtm2bZuGDRumzZs3q2vXrpKk1NRUhYSEaMiQIZo1a5Yk6auvvlKXLl20cOFCDR8+XJKUmZmpTp06KSAgQO+9954k6fz582rTpo2ioqI0adL/jkPs37+/Lly4oIMHDzrWDQoKUq9evbR48WLHuHHjxmnHjh06duyY3NzcSvvcmOb48eNq0aKF2TFQiZR0TtSz2ZRqtzu+rirnm9qj7GZHqDJyv8aAxO8P5MWcQG7MCeRWFedEkXtiV61apRo1amjkyJEFjtmxY4caN27sKLCSVK9ePYWHh2v79u1O49zc3BQREeFY5urqqoiICO3evVtpaWmSpF27dik9PV2RkZFO9zNkyBB98803OnnypCTpiy++0IULF/KMi4yM1K+//qrPPvusqIcHoALsebd446pK2QYAAIB5iiyxn3/+uVq0aKH3339f7dq1U/369dW+fXstW7bMMSYpKUmtWrXKs26rVq10+vRpXb582THO19dXtWvXzjMuPT1dJ06ccIyrVauW/P3984yTpGPHjjnG3bi8oHEAzBXb3ewEAAAAsArXogb8/PPP+vnnnzV16lRNnTpVfn5+SkxM1PPPP6/MzEw98cQTSklJUbNmzfKs6+HhIen6RZ/c3d2VkpIim81W4LiUlBTHf+vVqycXF5cix0nKs83c4wCY69v6ZicAAACAVRRZYrOysnTp0iWtXLlS/fv3lyR169ZNP/74o+bNm6exY8caHtIox48fNztCgSpzNpijJHMitITjjXZ4qdRkQvHGVqbclVlle41ReTAvkBtzArkxJ5BbZZsTRZ2jW2SJvfXWW/X999+rR48eTst79OihTz75RD///LNsNpvs+VxgJPeeUpvNplOnThU4LmcPqs1mU2pqqrKzs532xuY3Trq+p7dRo0YFjitIZT2BuSqeXA1jlWZOVKY5VNwCK0lh28K4wFMxVabXGJUD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T1dkZKRiYmIc43766SfFxcXpkUcekZubW0mfFwDl6FJNsxMAAADAKsrtnNgdO3aocePGjgIrSfXq1VN4eLi2b9/uNM7NzU0RERGOZa6uroqIiNDu3buVlpYmSdq1a5fS09MVGRnpdD9DhgzRN998o5MnT0qSvvjiC124cCHPuMjISP3666/67LPPyushAiilrWsq9v44pBgAAMC6SlRiH3/8cd16661q3ry5Ro0apVOnTjluS0pKUqtWrfKs06pVK50+fVqXL192jPP19VXt2rXzjEtPT9eJEycc42rVqiV/f/884yTp2LFjjnE3Li9oHADzBD5tdgIAAABYRbFK7C233KKnnnpKb7zxhjZv3qznn39ee/fu1T333KPz589LklJSUmSz2fKs6+HhIen6RZ+KMy4lJcXx33r16snFxaXIcZLybDP3OADmeXGP2QkAAABgFcU6JzYkJEQhISGOr++++27ddddd6tmzp5YsWaIpU6YYFtBIx48fNztCgSpzNpiDOVEyVn++QmX9x4jSYV4gN+YEcmNOILfKNidatGhR6O0lurDTjdq1a6eAgAD961//knR9T2jO3tYb5d5TarPZnA5Dzj0uZw+qzWZTamqqsrOznfbG5jdOur6nt1GjRgWOy09RT45Zjh8/XmmzwRxVfU681KPi77MqP1/FVR0eI0qmqv+sQPljTiA35gRyq4pzoswXdsopmEFBQY7zU2+UlJQkHx8fubu7O8YlJyfrypUrecbVrFnTcQ5sUFCQ0tLS9MMPP+QZJ12/UnLOuBuXFzQOsKqqcBGjY2+YnQAAAABWUeoS++9//1vHjx93fG5snz59dPbsWe3fv98x5uLFi/rwww/Vp08fx7Lw8HBlZGRo06ZNjmWZmZnauHGjevTooVq1akmSevXqJTc3N61fv97pftevX6/WrVvLz89PktSxY0fVr18/33EeHh7q1KlTaR8igHJy/9CKv8+qUO4BAABQcsU6nPjxxx+Xr6+vbrvtNtWrV09Hjx7VvHnz5O3trbFjx0qS+vbtq44dO2rMmDGaNm2abDab5s6dq+zsbD3zzDOObYWEhCgiIkITJ05UZmamfH19tXz5ciUnJ2vp0qWOcZ6enho3bpzmzZsnd3d3hYSEaOPGjdq3b5/Wrl3rGOfm5qbJkycrOjpa3t7e6tatm/bt26dVq1Zp1qxZqlmT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Vn09AQAAzORanEGDBw/W4MGDnZZ16NBBYWFhSkxMdJTNkydP6vDhw/L395cktWnTRh06dNC7776rp556SpK0fft2ff7559q8ebO6du0qSQoLC1NISIhef/11zZo1S5L01VdfacOGDVq4cKGGDx8uSercubM6deqkl19+We+9954k6fz581qwYIGioqI0fvx4SVLXrl114sQJxcbG6p577inrcwSgjC6+LN0yyewUAAAAsIJSnxN76623SpJcXa/34B07digsLMxRYCXJz89Pd9xxh7Zv3+5YtmPHDjVu3NhRYCWpXr16Cg8PzzPOzc1NERERjmWurq6KiIjQ7t27lZaWJun6oc7p6emKjIx0yjdkyBB98803OnnyZGkfIoBy4h1tdgIAAABYRYlK7LVr15Senq7vv/9eUVFR8vLycuyhTUpKUqtWrfKs06pVKx07dszxdWHjTp8+rcuXLzvG+fr6qnbt2nnGpaen68SJE45xtWrVcirPOeMkOd03AHN0P2l2AvNwSDEAAED5KtbhxDl69uypI0eOSJL8/f21efNmeXp6Srp+3qzNZsuzjoeHh+x2u+PrlJQUNWvWLN9x0vWLPrm7uxe6vZzt5Py3Xr16cnFxKXRcfo4fP17gbWarzNmAkhr9T2lroNkpzFXe39OhBmwT1sC8QG7MCeTGnEBulW1OtGjRotDbS1RilyxZokuXLunkyZNasGCB/vSnP2nHjh3y9fUtU0izFPXkmOX48eOVNhtQGv2Hmp3AfEZ8T/NzArnx+wO5MSeQG3MCuVXFOVGiw4kDAwMVGhqqwYMHKzExUZcvX9b8+fMlSTabzWmPa47ce1QLG5dze3HG5exptdlsSk1NVXZ2dqHjgMrOyoedrk4wOwEAAACsotQXdrLZbPL393ecmxoUFJTnc2Ol6+esBgb+7zjCwsb5+PjI3d3dMS45OVlXrlzJM65mzZqOc2CDgoKUlpamH374Ic84SU73DcAcW1uanQAAAABWUeoSe+7cOR0/flzNmzeXJPXp00eHDh1yuhpwcnKy/vGPf6hPnz6OZX369NHZs2e1f/9+x7KLFy/qww8/dBoXHh6ujIwMbdq0ybEsMzNTGzduVI8ePVSrVi1JUq9eveTm5qb169c75Vu/fr1at24tPz+/0j5EAOVk7W1mJwAAAIBVFOuc2GHDhikkJERt2rRR3bp1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NWvW6JFHHtHVq1eLXJfPiQUAAAAAFCorK0s1alzfB7py5Uo9/fTT+vLLL+Xr61vibV26dEnt27fX4MGD9corr5R4ffbEAgAAAAAKlVNgi3LhwgU9++yzatWqlRo2bKiwsDCtWLHCacymTZt04cIFPfXUU6XLUqq1AAAAAAC4wcWLFxUeHq6PP/5Yf/3rX7V+/XqFh4frueee05IlSxzjPv/8c3l4eOibb77RXXfdpfr166tNmzZ65ZVXdO3atSLvx9XIBwEAAAAAqB4WL16sU6dO6eDBg/rjH/8oSerevbtSU1P16quv6s9//rNcXV31888/6/fff9eoUaP0/PPPq127dvr73/+u2bNnKzU1VTNnziz0ftgTCwAAAAAos127dqlDhw7y9fVVZmam41/Pnj3166+/KikpSdL182uvXr2qF154QePHj1eXLl00ZcoUPfroo3r77beVmppa6P2wJxYAAAAAUGbnz5/XiRMn1KBBg3xv//XXXyVJt956qySpR48eTrf36NFD77zzjpKSknTHHXcUeD+UWAAAAABAmd16663y9PQs8IrDAQEBkqSgoKBCt1PURaQosQAAAACAMuvZs6eWLl0qHx8feXp6FjjuvvvuU1xcnHbv3q02bdo4lu/atUs333yzWrVqVej9UGIBAAAAAEVKTEyUJB05ckSS9Mknn6hBgwaqX7++7r77bj355JPauHGj+vTpoyeffFIBAQG6cuWKjh8/roMHD2rt2rWSpNatW2vo0KF6+eWXlZWVpZCQEO3du1crV67U888/L3d390JzuNjt9mxDHykAAAAAoMqz2Wz5Lu/cubO2bdsmSbLb7Xr11Ve1bds2/fTTT6pXr55atGihfv366cknn3Ssk56erlmzZmnt2rU6d+6cmjVrplGjRumJJ54oMgclFgAAAABQZfAROwAAAACAKoMSCwAAAACoMiixAAAAAIAqgxILAAAAAKgyKLEAAAAAgCqDEgsAAAAAqDIosQAAAACAKoMSCwAAAACoMiixAAAAAIAq4/8D7tESFyC1GqsAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_subsample(None, data_sub_adj2)" + ] + }, + { + "cell_type": "markdown", + "id": "d287335e", + "metadata": {}, + "source": [ + "## 5. Annex: piecewise sampling\n", + "\n", + "A different, and more direct approach, is to subsample with different ratios on the three regions" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "0d57d187", + "metadata": {}, + "outputs": [], + "source": [ + "def subsample_frac(data: np.ndarray, frac: float) -> np.ndarray:\n", + " return data[uniform.rvs(size=len(data)) < frac]\n", + "\n", + "def subsample_byregion(data: np.ndarray, frac: float, q1: float, q2: float) -> np.ndarray:\n", + " data1 = subsample_frac(data[data=qr[0]) & (data<=qr[2])], (1-q1-q2)/0.5*frac)\n", + " data3 = subsample_frac(data[data>qr[2]], q2/0.25*frac)\n", + " return np.hstack([data1, data2, data3])" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "1cb0056e", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 2.15 s, sys: 5.13 s, total: 7.28 s\n", + "Wall time: 7.29 s\n" + ] + } + ], + "source": [ + "%%time\n", + "data_piece = subsample_byregion(data, 0.20, 0.15, 0.10)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "3cd4b533", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.20003226" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(data_piece)/len(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "1ec4f255", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probability mass below Pa: 0.1500345994191137\n", + "Probability mass above Pb: 0.10010635284528606\n" + ] + } + ], + "source": [ + "check_regions(data_piece)" + ] + }, + { + "cell_type": "markdown", + "id": "df483672", + "metadata": {}, + "source": [ + "This method obtains also the desired values. However, the resulting distribution is quite different:" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "f2231d55", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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tCpUqKAKFSpowIABif7eXLx4Uc8++6xKly6tsmXLavDgwdq5c2ei3x0gN2NkF0CKwsPDlTdvXhUoUEA//vij2rZtq5o1a+qNN97QAw88oHfffVePP/64du/erVq1atnXu3Llivr27auhQ4dq0qRJeuCBB+zPHTx4UD/++KMmTZokFxcXLViwQE8++aQOHjzo8OE/vqioKHXp0kXHjx/X6NGjVa1aNR0+fFhz5szR5cuXFRISogIFCuidd95Ry5YtFRISoilTpuj8+fMaOHCgWrdurf79+ye57TFjxujff//VDz/8oHXr1kmSXFxc5OnpqXbt2mnVqlUOH9Cio6O1Zs0a+4fy5KxevVrjxo1T9+7d1blzZ508eVL9+vXTtWvXUjzmX3/9tQYMGKDnnntO06ZNU0xMjP7zn/8oMjJS0r1pbwMGDFB0dLRef/11SVKhQoUctjFgwAB16dJFq1evTvW8t/nz56t69epavHixLly4oGnTpqlz58765ptv5OzsnOK68aWlrvgGDRqkzZs3a8SIEWrQoIG+/fZbvfbaawoLC9M777zj0HbevHl6+OGHtWjRIl24cEETJ07UgAEDtGPHjlTrOnnypMaOHauXXnpJJUqU0Lvvvqu+ffuqePHiaty4sSSlqW+/9tpr2rBhg+bNm6f33ntPXl5e8vb2VkxMjIKDg/XTTz9p3Lhxqlatmj799FNNmDBB//77r/2Lnjhjx45VixYttGTJEnuAmDJlihYtWmT/mZ89e1YhISH67bfftHv3buXNmzfZ1xcWFqaOHTvqxRdfVJ48eXTo0CG98MILunXrlvr27evQdv369apUqZJmzpypu3fvatKkSerevbsOHz5sH/2cMWOGXnvtNQ0ZMkSPPPKI/u///k9PPfVUqsdZki5fvixXV1dNnjxZ7u7u+vvvv7Vo0SI9+uijOnz4sPLnz68xY8aoVq1aGjt2rObOnSs/Pz/lz59f3377rUaNGqVZs2apTp06kqTKlSun+/i8//77KleunKZNm6YCBQqoZMmSKdackf5/+vRptWjRQiVKlND06dPl7u6ujz76SL169dLatWvVtm1bSfemvT/22GMqX768pk+fLm9vb508edIhgL/77rsaMWKEnn76aY0ZM0bXrl3TzJkz7V8eFSpUSEFBQVq2bJlOnTql0qVLKyIiQseOHdMDDzygAwcO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yZIlFR0drTx58qQYdOJe25tvvploSqwkh1tbBQUF6c0339S3336r3377TY0bN5anp6cqV66sAwcO6MCBAymO6sZt7+WXX9bLL7+sv/76S1u3btUrr7wiFxcXvfLKKypWrJjy58+vXbt2Jbl+Sl8kODk5qU+fPurTp48iIiK0b98+TZw4UX379tXevXslSfnz50/0PpLS++GFCxdUoEABh8eS7H8rUns9e/fu1ZUrV7RixQqVKlXKvp3MGHXOSL2ZydPTUxEREbp7965D4E3r7yqQWxB2AaRJgQIF1KBBA/3888/y8/NLU+BKzpEjR3T69Gn7VOarV69q9+7dKZ7f1bx5c23btk0FChSwTy1LSmxsrAYNGiRXV1dt3bpVs2fP1pQpUxQUFJTiqKirq6tu3ryZ5HOFCxfWk08+qZUrV+r69evq0qVLqvfcLFWqlHx8fLRlyxaHe85u27YtXUGkYMGCat26tcLCwvTSSy/p0qVLcnd3l6urq/799980bycl27Zt07hx4+w/02+++UZnzpxxmPpbunRp/frrrw7rJbyiqaQ01xV3/vOHH36oUaNG2Zdv3LhR0r3R7cxy+vRpHT582P56oqOjtXXrVtWtW1d58uS5774dGBioN954Q1u2bLFPw457LS4uLqpXr16K6zdr1kx58uTRqVOn1KxZs3TtO+5De/wPuxEREdq5c2e6thOnWrVqKlCggLZs2eIwI+Kjjz5Kcz0JL0oWd7Xu1MTdginh7+H9HJ+0SEv/T6h58+Y6fPiwfH19U5wyXb9+fW3YsEFjxoxJsl29evVUqFAhnTx5Ut27d0+xzsDAQOXNm1fTp09X8eLF7VPQGzdurI8//ljHjh3Ts88+m5aXLOneF4RDhw7Vxo0b7dNsmzdvrtdff11Xrly5rxkxNptNnTt31pEjRxy+oEzr+0iczZs328+Ble69XxQsWND+2lN7PUn9fvz+++/69ttvUxxxz6j01Hu/AgICFB0dre3btztMn96yZUum7wvIyQi7ANIsJCRE7dq1U+fOndWzZ095enrq33//1dGjRxUdHZ2mC9hI96ZZde7cWS+99JL9asw3btxI8SqSXbt21dq1a9WxY0cNGTJENWrU0J07d/Tnn39q165dWrt2rdzc3LRo0SLt379f27Ztk81m05QpU3Tw4EH169dPn3/+ebIfTCtXrqzLly9r+fLlql27tlxdXVWtWjX7888++6z91j99+vRJ9TXmyZNHY8aM0QsvvKDBgwerS5cuOnnypF5//fVUg3JISIguXLigoKAgeXl56ezZs1qyZIlq1Khhn8ZduXJlLV++XB999JHKly+vggULpjh9MSXXrl1T9+7d1adPH128eFFTp07Vgw8+6DDK2blzZ82dO1dz585VQECAvvrqK3344YeJtpXWuqpWraonnnhCM2fOVFRUlB5++GF99913mjNnjp544gmHY3+/PDw81KdPH40bN07u7u5699139fvvv+u1116zt7mfvt2yZUs1aNBAI0aM0MWLF1WlShXt3r1bq1ev1ogRI1I9X7x8+fIaPny4xowZo99//12BgYHKnz+/Tp8+rf3796tnz572C2kl9PDDD6tw4cIaNWqUxo0bpxs3bmjOnDkqXry4rly5ku5jZbPZNGjQIL322msqWLCgHnnkEf3www8pXoU3vhYtWuj111/Xa6+9prp16+rAgQPaunVrmtatWLGi8uXLpzVr1qho0aJydXVVxYoV7+v4pEVa+n9C48ePV/PmzdW2bVv1799fZcqUUUREhH777TeFhYXZLzb16quvql27dmrZsqWef/55eXt7KywsTMeOHdOcOXNUuHBhTZ06VaNGjdK///6rFi1aqHDhwjp37pwOHTqkRo0a2WeRFC5cWH5+fvriiy/0+OOP20ewGzVqZL+tWmrHoWXLlmrTpo2qVq2qAgUK6NChQ/r555/trzUoKEhPPPGEevXqpSFDhti/EPrrr7+0e/duvfLKK6pYsWKS2x42bJgKFiyoevXqyd3dXX/88YfWr1/v8AVF586d9fzzz2vcuHFq3bq1jh07luRtsuKsWrVKMTExqlOnjvbu3avVq1frpZdeUpEiRdL0epo2bap8+fJp4MCBev755/X3339rxowZ8vHxSfWWQBmRWr2Z6ZFHHlH9+vU1bNgw/fvvv6pQoYK2bt1qv9L3/XwhDVgJYRdAmtWqVUv79u3TrFmzNHbsWF25ckXu7u6qWbNmqlcYji8wMFCNGjXS1KlTdfbsWVWuXFkbN25M9kOUdO+b+Y8++kjz58/XqlWrFB4eLjc3N5UvX16tWrWSi4uLfvzxR02bNk0jRoywjwzGnb/YpEkTTZgwIdH9LeP06tVLR44c0dSpUxUZGanSpUvr2LFj9uerV6+uihUrqlChQg63WEpJr169dP36dS1evFgffvihqlSponfeeUcDBgxIcT1/f38tWbJE48eP1+XLl1WiRAk1a9ZMEyZMsLcZPny4fv/9d73wwgu6du2aAgMD03QbnqS8+OKLOnnypAYPHqwbN24oKChIs2fPdhgNGTFihCIjI7Vs2TK9/vrratmypZYsWeJw4Zb01vXmm2+qXLlyWrNmjebOnSsvLy8NHz7c4WqumaFChQp64YUXNG3aNP3xxx8qU6aMli9f7hAM7qdv58mTR+vXr9e0adO0YMECXbp0SWXKlFFISIj9vrypmTx5sh566CG98847euedd+Tk5KRSpUqpSZMmevDBB5Ndz93dXe+9954mTpyoZ555Rl5eXho4cKAuX77scFXk9Ii7Ovbq1au1bNky1a1bVx988IHq16+f6rpjxoxRZGSk3nzzTd2+fVuBgYH68MMP0/Q7U6xYMc2ZM0evv/662rVrp+joaH388ccKCgrK8PFJi7T0/4RKly6tzz//XDNnztS0adN08eJFFStWTFWqVHEIyXXq1NEnn3yi6dOna8yYMbpz545Kly5tv2q3dO/Ls1KlSumNN97Qpk2bFBUVpZIlS6pBgwaJplIHBQXphx9+cOi7jRs3lpOTk3x8fOxXC09Ow4YNtXnzZr3++uuKiopSuXLlNH36dA0cONDeZunSpVqyZInWrFmj1157Ta6uripdurSaN2+e5PnvcR5++GGtXbtW69ev15UrV+Tl5aWuXbs63Hane/fuOnPmjN577z2tXLlSDRo00Nq1a5M9H/v999/XmDFj7F8MjBo1yuFL0dReT5UqVbRs2TJNnz5dTz31lMqXL68pU6bos88+08GDB1M8VhmRWr2Zbc2aNRozZoymTJmiPHnyqE2bNho/frwGDx6c6peqQG7hFBEREZt6MwDIHDVq1FCDBg2SvcWQWYWGhqpevXpasGBBum7HA8CcwsPD5efnpzfeeIPfadyXGTNmaNasWbp48WKqV9vPaqNHj9batWv1559/2k8NAHIzRnYBIAVnzpzRyZMnNWPGDHl5eaV6YSoAALLD2rVrdeXKFVWpUkV37tzRZ599puXLl+uFF14g6AL/RdgFgBSsXr1as2fPVsWKFbVs2bJ03b8TAICsUqBAAb311lsKCwvT7du3VbZsWU2ePFkvvPCC0aUBpsE0ZgAAAACA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hw/zXgEH/P1AQvQJ64uMjHS4zU1qbt26pfz582dhRdazcOFCTZo0SXv27FFAQIDR5WQ6o/pEevtufIzsArmImW4zlJSCzZoZXQIAAECK7ty5o+joaIdl165d0zvvvKNixYox4moiaQq7e/fuVfv27fXQQw/Jw8NDVatWVe/evXX8+HGHdqdPn1avXr1UpkwZlS5dWj169NCpU6cSbS8iIkJDhw5VhQoV5O3trY4dO+qXXxKPLt26dUuTJk1S5cqV5eXlpZYtW+rQoUOJ2sXExGjevHmqUaOGPD09FRgYqK1btyb5WlatWqWAgAB5eHjI398/S04kB6wiu8Px1QTvKQAAAGYTFham2rVr65VXXtHKlSs1c+ZMBQYGKjw8XBMnTpSLi4vRJeK/0hR2L1++rFq1amnOnDn66KOPNHnyZB0/flwtW7bUX3/9JUm6ceOGOnTooNDQUL355pt6++23dfLkSbVv317Xr1+3bys2NlbdunXT3r17NXv2bK1evVp3795V+/btdeaM4wfroUOHatWqVRo/frzWr18vT09PdenSRUePHnVoFxISopkzZ2rAgAHauHGjAgIC1Lt3b+3evduh3apVqzR8+HB16NBBmzZt0uOPP66RI0dq+fLlGTp4ADKXy8KFRpcAAACQInd3dwUEBGjjxo0aO3asFi5cKA8PD61YsUJ9+/Y1ujzEk6arMT/xxBN64oknHJbVrVtXAQEB2rp1qz2UhoWF6ciRI6pQoYIkqVq1aqpbt65WrFih559/XpK0c+dOffPNN9q2bZsaN24sSQoICJCfn58WLFig2bNnS5KOHTumjRs3OtxTKjAwUPXr19f06dP1wQcfSJIuXLighQsXavjw4Ro6dKgkqXHjxjp58qSmTJmiVq1aSbp3X61p06YpODhYkyZNsrc7d+6cQkJC1KtXLzk7O2f8SAK4b3n+/tvoEgAAAFJUrFgxBstyiAyfs1usWDFJst+oedeuXQoICLAHXeneDZ0ffvhh7dy5075s165dKlmypD3oSveumNa6detE7ZydndW5c2f7snz58qlz587at2+fbt++LeneFOs7d+4oODjYob6uXbvq119/VVhYmCTpu+++08WLFxO1Cw4O1qVLl/T1119n9FAAOYLZz9eVpFshIUaXAAAAAItIV9iNjo7WnTt39Mcff2j48OHy9PS0j/geP35c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xAnlzZtXpUuXti9zdXVVq1at1KpVK0nS7t271bVrVy1evFhz587Vzz//rJ9//lljxozR+PHjHba3evXqjL7kNPnPf/6TaNmJEyckJR45jq948eIqUqSIrl69qqZNm6a6n3LlyumPP/5QdHS0Qxj/+++/FRkZme66M4JzdgFkSFZMk87z+++Zvk0AAJC7REdHKyIiwmGZk5OTatasKelewC1UqJA8PT315ZdfOox+hoWFJbplT3wLFixwaP/jjz9q//79atKkiQoWLChJ+vfffxOt5+fnZ9+39L+R2IQjr7/++muK581mhs8//9zhdkmxsbFasGCBpHsj4snJkyePunbtqu+//15bt25Nsk386dht27bV+fPntW7dOoc2r7/+esaLTydGdgELyonn60pS/pkzdT0oyOgyAABADnb16lX5+vqqTZs2qlmzptzd3RUeHq53331XNptNrVu3liT1799fr776qp544gm1a9dO586d04oVK1SlShX98MMPSW771KlT6ty5s9q0aaN//vlHy5Yt0wMPPKCpU6fa23Tq1ElFihRRgwYN5OPjo8jISL3//vtycnJScHCwpHvnyFapUkVvvPGGbt68qUqVKun333/XypUrVbVq1STv3ZtZqlevrg4dOqh///7y9PTUzp07tX//fgUHB6tevXoprjtx4kR988036t27tzp16iR/f3+5uLjo1KlT2rNnj/z8/OxXYx42bJg2btyoYcOG6aeffpKvr68OHjyow4cPq3jx4ln2+uIj7AIwjespfJMKAACQFm5ubho0aJC++OIL7d+/X9evX5enp6fatGmjESNGqGTJkpLuXRX4ypUrWr9+vQ4ePKjKlStr4cKF+vHHH5MNux9++KHGjx+vGTNm6NatW/L399e0adNUvXp1e5tnn31Wmzdv1sqVK3X58mUVK1ZMNWvW1KxZs9S4cWNJ90Z2169fr0mTJmndunW6ceOGqlSpojfffFM///xzlobdNm3aqFKlSpo3b55+//13lShRQqNHj9aYMWNSXbdIkSL69NNPtWjRIm3ZskU7d+5Uvnz55O3trfr166tXr172tjabTbt27dKECRP0wQcfSJIaNmyojz/+WB06dMiy1xefU0REROaftYxsERoaqkqVKhldBkwmNDRUAQfd0tQ29sVqcpr/S4b3ldkXqXpg2DDd/O80GmSOIjab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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_subsample(data, data_piece, 'piecewise subsampling')" + ] + }, + { + "cell_type": "markdown", + "id": "4692bdb9", + "metadata": {}, + "source": [ + "The main differences with Gaussian subsampling are:\n", + " * There are discontinuities at the region boundaries, so that perplexity values at both sides of the boundary get quite different sampling ratios. We lose the gradual transitions of Gaussian sampling\n", + " * Inside each region the pattern is roughly equivalent to the original shape, though obviously subsampled. This means that we keep the long tail behaviour of the original distribution. While for Gaussian weighting the shape of the weighting function cuts down the long tails, concentrating the distribution near the quartile boundaries" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/gaussian_subsampling.ipynb b/notebooks/gaussian_subsampling.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..d7752500b3dea97b9da3588cba0b6d9262a5474c --- /dev/null +++ b/notebooks/gaussian_subsampling.ipynb @@ -0,0 +1,809 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "aef779f2-7e26-45d7-8ec2-593a571344aa", + "metadata": {}, + "source": [ + "# Perplexity-based subsampling of a dataset\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "44566054-ef4c-4dee-afac-1f5affd8e86f", + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "import lzma\n", + "import json\n", + "import tarfile\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "import matplotlib as mpl\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "#plt.style.use('ggplot')\n", + "#plt.style.use('bmh')\n", + "plt.style.use('fivethirtyeight')\n", + "mpl.rcParams['figure.figsize'] = (14,8)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "1bf78228-6bf8-4148-9de3-9f4eeff3ccc9", + "metadata": {}, + "outputs": [], + "source": [ + "plt.rcParams.update({'font.size': 12})\n", + "\n", + "SMALL_SIZE = 16\n", + "MEDIUM_SIZE = 18\n", + "BIGGER_SIZE = 20\n", + "\n", + "plt.rc('font', size=SMALL_SIZE) # controls default text sizes\n", + "plt.rc('axes', titlesize=SMALL_SIZE) # fontsize of the axes title\n", + "plt.rc('axes', labelsize=MEDIUM_SIZE) # fontsize of the x and y labels\n", + "plt.rc('xtick', labelsize=SMALL_SIZE) # fontsize of the tick labels\n", + "plt.rc('ytick', labelsize=SMALL_SIZE) # fontsize of the tick labels\n", + "plt.rc('legend', fontsize=MEDIUM_SIZE) # legend fontsize\n", + "plt.rc('figure', titlesize=BIGGER_SIZE)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "00cc7e68-df5e-48ff-9897-7bc8646db1eb", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import List, Tuple" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "9fe94ce2-53fc-4271-b664-e7b0ed5dbc17", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1000000" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = []\n", + "with open(\"../scores/culturax_da.jsonl\") as f:\n", + " for line in f:\n", + " data.append(json.loads(line)[\"perplexities\"][\"wikipedia_pp\"])\n", + "\n", + "data = np.array(data)\n", + "len(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "79e4d349-016f-4fac-95c8-be11ea11585c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([397.975, 503.3 , 648.2 ])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "qr = np.quantile(data, [0.25, 0.50, 0.75])\n", + "qr\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "0c38e201-dcd6-4326-843b-52200c974312", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABRgAAAK0CAYAAABoYVEGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABcdElEQVR4nO3de5hW1WEv4B8XMQ4IKAooSJSAFWq8VSoGG7RGivFS45EEMWlC01yIpRGtx3gkMUfl1CZBTNWqNRGqUdSmXpAQIsZAosVL4y3GaEQDCipFRW6jQYHzB/kmM8yFmc0MM/PN+z4PD/Ptvde+zKxZe+/frLV3p7fffntLAAAAAAAK6NzaOwAAAAAAtF8CRgAAAACgMAEjAAAAAFCYgBEAAAAAKEzACAAAAAAUJmAEAAAAAAoTMAIAAAAAhQkYAQAAAIDCBIwAAAAAQGECRgAAAACgMAFjB/Xuu+/mpZdeyrvvvtvau0I7o+40r06/+lV2/9CH0ulXv2rtXWlRpXrz/uOPd4jjbWkdrd5ob2gqdYci1BuKUG8oSt2hiLZcbwSMHdimTZtaexdop9Sd5tNp06Z0fvPNdOoA39NNmzYl77/fYY63JXW4egMFqDsUod5QhHpDUeoORbTVeiNgBAAAAAAKEzACAAAAAIUJGAEAAACAwgSMAAAAAEBhAkYAAAAAoDABIwAAAABQmIARAAAAAChMwAgAAAAAFCZgBAAAAAAKEzACAAAAAIUJGAEAAACAwgoFjJMmTUrv3r0b/Pfuu+/WWfbJJ5/MZz/72QwdOjT9+vXLIYcckvPPPz+rVq1qcJv/8z//k/PPPz+HHHJI+vbtm6FDh+azn/1snnzyyQbLbdy4MVdeeWVGjRqVfffdNx/84Adz0kkn5Z577ily6AAAAABANV13pPDIkSNzwAEH1DmvS5cutabdc889+fznP5/3338/RxxxRD74wQ/miSeeyA033JB77rkn8+fPz+DBg2uVW7JkSU488cSsWrUq+++/f0466aQsW7Ys99xzT370ox9l5syZOeWUU2qVq6yszCc+8Yk88sgj6dWrV44//vhs2LAhP//5z/PQQw/l7//+73PZZZftyLcAAAAAADq0HQoYP/OZz+Sss85q1LKvvfZaJk2alPfffz9XXnllPve5zyVJNm3alEmTJuWOO+7I3/3d3+WnP/1pOnXqVFVuy5Yt+du//dusWrUqn/rUp/Kv//qvVeHlrFmzcs4552TSpEn58z//8/Tr16/GNi+55JI88sgjGT58eO6999706dMnydZelCeffHKuvvrqHHPMMRk7duyOfBsAAAAAoMPaac9gvPbaa1NZWZljjz22KlxMtvZ0vOKKK9KzZ888/vjjeeCBB2qUW7BgQZ5++un06tUr06dPr9Ez8nOf+1xGjx6d9evX57rrrqtR7u23386NN96YJLniiiuqwsUkOeyww/LVr341STJ9+vTmPlQAAAAA6DB2WsA4d+7cJMkZZ5xRa16PHj1y4oknJknuvffeOsudeOKJ6dGjR62ypfVtW+6+++7Lxo0bM3DgwIwcObJWuXHjxiVJHnvssbz22mtNPRwAAAAAIDs4RPoXv/hFnn322axfvz577rlnjjjiiIwZMya77rprjeXWrVuXl156KUly+OGH17muww8/PLfffnuefvrpGtNLnxsqlyQvvvhiNmzYkO7duzeq3P7775899tgjq1evzq9+9avss88+jTlkAAAAAKCaHQoYb7vttlrT+vfvn6uvvjof+9jHqqa9/PLLVV8PHDiwznUNGDAgSbJs2bIa00uf6ytXmr5ly5a8/PLLGTZsWKPKJcm+++6b1atX19pmXep7K3Z7tXHjxhr/Q2OpO82ra7Xv5/tl1s5UV6ov7733XtXncj7eltbR6o32hqZSdyhCvaEI9Yai1B2KaMl684EPfGCHyhcKGA8++OBcfvnlGT16dAYOHJh33303zzzzTC6//PI88sgjOfPMM3PnnXfmL/7iL5Ik69evrypb6mG4rdLw53Xr1tWYXipbX7nq06uX3V65hrZZl1dffTWbNm3a7nLtzcqVK1t7F2in1J3mUbFyZfpk6/ez8pVXWnt3Wtxbb72V/uk4x9tSOlq90d5QlLpDEeoNRag3FKXuUERz15suXbpk8ODBO7SOQgHj2WefXePz7rvvnuOOOy7HHntszjrrrMybNy8XXnhhHnzwwR3aubZk3333be1daFYbN27MypUr069fv3Tr1q21d4d2RN1pXl1Xr06S9OvXL+/vt18r703LKdWbPffcM0n5H29L62j1RntDU6k7FKHeUIR6Q1HqDkW05XqzQ0Okt9WpU6dceOGFmTdvXp555pksX748AwcOrPFylg0bNqRXr161ypZ6HO6+++41pvfo0SOrV6/Ohg0b6txm9enVy5a2WV+5hrZZlx3tKtpWdevWrWyPjZal7jSPzn84KXTr1i1dO8D3c5dddknScY63pXS0eqO9oSh1hyLUG4pQbyhK3aGItlhvmv0t0n/yJ39S9fWrr76aJNmvWu+K5cuX11luxYoVSZJBgwbVmF76XF+50vROnTrV2M72ylXfv223CQAAAAA0TrMHjG+99VbV16VehD179qway/3EE0/UWa40/dBDD60xvfR5e+U+9KEP1egpub1yS5cuzeo/DDE75JBDGjgiAAAAAKA+zR4w/ud//meSraHi0KFDq6affPLJSZIf/vCHtcqsX78+8+fPT5KccsopNeaVyv34xz+uc7hzaX3blhszZky6deuW5cuX5+GHH65V7j/+4z+SJCNGjMg+++zTuIMDAAAAAGpocsD49NNPZ968eXn//fdrTN+8eXNuuummXHrppUmSL37xi1XP2kqSSZMmpaKiIgsXLsy///u/V03ftGlTzjvvvKxZsyZHHHFE/vIv/7LGek844YQccsghWbNmTc4777wab3KeNWtWFi1alB49euTLX/5yjXK9e/fO3/7t3yZJzjvvvBo9K5988sl897vfrZoHAAAAABTT5Je8vPzyy/n0pz+d3r1759BDD03fvn2zZs2aPPvss1XPOzzjjDPyta99rUa5ffbZJ//6r/+az3/+8/nqV7+am2++OYMGDcrjjz+epUuXpm/fvvne976XTp061SjXqVOnfP/738+JJ56Y2267LQ8//HCOOOKILFu2LL/85S/TtWvXXHvttenXr1+tff3GN76Rxx9/PI8++miOOOKIfPSjH01lZWUWLVqU9957L2effXbGjh3b1G8BAAAAAPAHTe7BePDBB2fSpEkZNmxYXnjhhdx7771ZtGhRkuSv//qvc8cdd+R73/teunatnV2edtpp+elPf5pTTjklS5cuzdy5c7Np06Z84QtfyIMPPlj1nMZtDR06NA899FC+8IUvZNOmTZk7d26WLVuWU045Jffff3+t4dElFRUVmTt3bi6++OLsu+++WbBgQR599NGMGDEis2bNyrRp05p6+AAAAABANU3uwbj//vvnn/7pnwpv8LDDDsvNN9/c5HL9+vXLt7/97Xz7299uUrlu3bplypQpmTJlSpO3CVBOes9ckbcnDmjt3QAAAKDMNPtLXgAAAACAjkPACFCGes9cUWgeAAAANJWAEQAAAAAoTMAI0I7ofQgAAEBbI2AEAAAAAAoTMAIAAAAAhQkYAQAAAIDCBIwApPfMFZ7vCAAAQCECRoAyJjgEAACgpQkYAQAAAIDCBIwAAAAAQGECRgAAAACgMAEjQJnwrEUAAABag4ARoI0RFAIAANCeCBgB2qjtBY2CSAAAANoCASMAAAAAUJiAEaCd05MRAACA1iRgBKBOgksAAAAaQ8AIAAAAABQmYARoB/QmBAAAoK0SMAJQgzATAACAphAwAgAAAACFCRgBAAAAgMIEjAAAAABAYQJGAAAAAKAwASMAAAAAUJiAEQAAAAAoTMAIQCG9Z65o7V0AAACgDRAwAgAAAACFdW3tHQCgafQcBAAAoC3RgxFgJxMQAgAAUE4EjAAdiHATAACA5iZgBGhFo+esau1daJLeM1cIKQEAAKhBwAhQBoqGfo0tJ1QEAACgPgJGgDLT1DCw+vKCRAAAAJpKwAjQBrS3odIAAABQImAEAAAAAAoTMALsJDtj+HF922jJbRtWDQAA0LEJGAE6IKEgAAAAzUXACNAGlQJAQSAAAABtnYARgAYJOQEAAGiIgBEAAAAAKEzACAAAAAAUJmAEoF6GRwMAALA9AkYAAAAAoDABI0A71lAPw9bsfajnIwAAQMchYAQAAAAAChMwAnRQehkCAADQHASMAAAAAEBhAkYAAAAAoDABI0ALaInhx+1hSHN72EcAAACal4ARAAAAAChMwAgAAAAAFCZgBAAAAAAKEzACUEtLPEtxxIMVVV+PnrOqxbYDAADAziVgBAAAAAAKEzACAAAAAIUJGAFaUHMMAW6Lw4jb4j4BAADQOgSMALQoYSQAAEB569raOwDAVoI4AAAA2iM9GAGaiYCwpt4zV/ieAAAAdAACRgAAAACgMAEjAAAAAFCYgBEAAAAAKEzACAAAAAAUJmAEoFl4oQsAAEDHJGAEoE0QUAIAALRPAkYAAAAAoDABIwAAAABQmIARgMKaOqz5hPlrWmhPAAAAaC0CRoBW0t6eObiz9re9fV8AAAA6OgEjAAAAAFCYgBFgJ9I7DwAAgHIjYATYQULDmnw/AAAAOhYBIwA7TKgIAADQcQkYAVqBQA4AAIByIWAEKEBACAAAAFt1be0dACh3wkgAAADKmR6MAAAAAEBhAkYAAAAAoDABI0ALMTQaAACAjkDACECrEMACAACUBwEjAAAAAFCYgBEAAAAAKEzACAAAAAAUJmAEAAAAAAoTMAIAAAAAhQkYAWizvGkaAACg7RMwAgAAAACFCRgBAAAAgMIEjABNYMguAAAA1CRgBAAAAAAKEzAC0K7oRQoAANC2CBgBAAAAgMIEjAC0uP6z32ztXQAAAKCFCBgBmpkhvM3P9xQAAKDtEjACAAAAAIUJGAGakZ52AAAAdDQCRgAAAACgMAEjAG2GHqAAAADtj4ARgDZJ2AgAANA+CBgBAAAAgMIEjABNpGcdAAAA/JGAEQAAAAAoTMAIQJujlygAAED70bW1dwCgvRKCAQAAgB6MAAAAAMAO0IMRoBnozVic7x0AAED71iw9GL/xjW+kd+/e6d27d7797W/Xu9zChQszbty4DB48OP3798+IESNy6aWXZv369Q2u/6WXXsqkSZMyfPjw9O3bN8OHD8+kSZOydOnSBsutW7cul1xySY488sj0798/gwcPzic/+cksWrSoyGECAAAAANvY4YDxkUceydVXX51OnTo1uNw111yT0047Lffff38OOuigjB07NmvXrs306dNz3HHH5c0336yz3MMPP5xjjjkms2fPTq9evXLyySenV69emT17dkaNGpXHHnusznKrVq3KcccdlyuuuCLr16/P2LFjc9BBB2XBggU57bTTcv311+/ooQMAAABAh7dDAWNlZWW+8pWvpH///vn4xz9e73JPPfVUpk6dmi5duuSOO+7IvHnzMmvWrDzxxBMZPXp0XnjhhUyZMqXO9U+cODGVlZU599xzs3jx4tx4441ZvHhxzj333GzYsCETJ07MO++8U6vsV7/61SxZsiSjR4/O448/nlmzZmXevHm5/fbb07lz51x44YV55plnduTwgTJn6C4AAABs3w4FjP/3//7fvPjii7nyyivTs2fPepebMWNGtmzZkrPOOisnnHBC1fSKiopcddVV6dy5c+bMmZPf/va3Ncrdeuutee211zJkyJBMnTq1xrypU6dmyJAhWb58eW677bYa85577rnMmzcvXbp0yVVXXZWKioqqeWPGjMmECROyefPmzJgxY0cOH+ggBI1tn58RAABA6ykcMP7iF7/Iv/3bv2X8+PEZM2ZMvctt3Lgx9913X5LkjDPOqDV/0KBBOeqoo5Ikc+fOrTGv9Pn0009P5841d7Vz5875xCc+kSS599576yx31FFHZdCgQbW2WdqP+fPn57333qv/IAEAAACABhUKGNevX5+///u/T9++fXP55Zc3uOySJUtSWVmZJDn88MPrXKY0/emnn64xvfS5pcpt2LAhL774YoP7DwAAAADUr2uRQl//+tezbNmy/OAHP0jv3r0bXHbZsmVJkl69emX33Xevc5kBAwbUWDbZ+gbot956K0kycODABsu98cYb2bBhQ7p3715jPfWV69mzZ3r27Jm1a9dm2bJlOeiggxo8hiR59913t7tMe7Jx48Ya/0NjdbS6U/rdL7c2oD2p62dQ18+jI/2Mulb7PXy/jI+7o7U3NB91hyLUG4pQbyhK3aGIlqw3H/jAB3aofJMDxgceeCAzZ87M//pf/ysnn3zydpdfv359klSFf3Xp0aNHkq2h4rblGipbKlcqW1quMdvs3r171q5dW2ObDXn11VezadOmRi3bnqxcubK1d4F2qmPUnYq88sor1f7fOo2dq66fwR+/TgPTylfFypXpk62/h5Ud4Lg7RntDS1B3KEK9oQj1hqLUHYpo7nrTpUuXDB48eIfW0aSAcc2aNZk8eXL22muvfOtb39qhDbc3++67b2vvQrPauHFjVq5cmX79+qVbt26tvTu0Ix2r7ryZ/fbbr9r/W6exc9X1M/jj12lgWvnqunp1kqRfv355v4yPu2O1NzQndYci1BuKUG8oSt2hiLZcb5oUMF544YVZsWJFZs6cmT59+jSqTKmX4YYNG+pdptTjsPoQ6uq9E+srW72XY11lG9pmaV59w7a3taNdRduqbt26le2x0bI6St0pHWNHONa2qq6fQV0/j470M+r8h4uJbt26pWsHOO6O0t7Q/NQdilBvKEK9oSh1hyLaYr1pUsA4d+7cdO3aNd/73vfyve99r8a8F154IUly8803Z+HChenXr19uvPHGqrc4r1mzJuvWrasz0FuxYkWS1Hjj8+6775499tgjq1evzvLly/PhD3+43nJ9+vSpMRx60KBBeeqpp7J8+fI6j2Pt2rVZu3ZtrW0CAAAAAE3T5Gcwvv/++3nooYfqnf/yyy/n5ZdfrhqqNnTo0FRUVKSysjJPPPFEPvrRj9Yq88QTTyRJDj300BrTDz300CxcuDBPPPFETjzxxCaVu/fee6vm11eue/fuGTJkSL3HAgAAAAA0rHNTFn755Zfz9ttv1/nvzDPPTJJcdNFFefvtt/OrX/0qydZum2PGjEmS/PCHP6xznY8++miS1HppTOnznXfemc2bN9eYt3nz5tx1111JklNOOaXGvJNOOilJ8sgjj9T50P/SfowdOza77LJLE74DALRlvWeuaO1dAAAA6HCaFDAWdc4556RTp0655ZZbcv/991dNr6yszOTJk7Np06aceuqpOfDAA2uUmzBhQvbZZ58sWbIk06ZNqzFv2rRpWbJkSQYMGJDx48fXmDds2LB8/OMfz6ZNmzJ58uS88847VfMWLFiQW2+9NZ07d86UKVNa4GgBAAAAoONo8hDpIg477LBcdtllueiiizJu3LiMGjUqe++9dxYvXpzXX389Q4cOzYwZM2qVq6ioyMyZM3P66adn+vTp+fGPf5xhw4blN7/5TZ599tl07949s2bNym677Var7He/+908//zzWbhwYQ4//PAcffTRWbVqVR566KFs2bIll19+eQ4++OCdcfgAAAAAULZ2Sg/GJDn77LNz99135/jjj8+vf/3rzJs3L927d8+5556bBx54oN63Uo8cOTIPPvhgxo8fn9WrV2fOnDlZvXp1xo8fnwcffDAjRoyos9zee++dn/3sZ5kyZUq6d++eefPm5de//nWOP/743HPPPfnyl7/ckocLAAAAAB1Cs/VgvPbaa3Pttdc2uMyxxx6bY489tsnrHjx4cK677roml+vZs2cuvvjiXHzxxU0uC0Db4LmKAAAAbdtO68EIAM1J8AgAANA2CBgBAAAAgMIEjAAAAABAYQJGANodw6MBAADaDgEjAGVNGAkAANCymu0t0gDQkgSFAAAAbZMejAC0W0JHAACA1idgBAAAAAAKEzACAAAAAIUJGAEawVBcAAAAqJuAEaCRhIztR++ZK/y8AAAAdhIBIwAAAABQmIARAAAAAChMwAhQjaG1AAAA0DQCRgAAAACgMAEjAAAAAFCYgBGAsmBoOwAAQOsQMAIAAAAAhQkYAQAAAIDCBIwAAAAAQGECRoB4fl858bMEAADYuQSMAAAAAEBhAkYAAAAAoDABIwDtmiHRAAAArUvACECHIIgEAABoGQJGAAAAAKAwASNAA/R6AwAAgIYJGAEAAACAwgSMAAAAAEBhAkYAAAAAoDABIwAAAABQmIARAAAAAChMwAgAAAAAFCZgBAAAAAAKEzACAAAAAIUJGAEAAACAwgSMAHQ4vWeuaO1dAAAAKBsCRoA/EDoBAABA0wkYAQAAAIDCBIwAAAAAQGECRoA6GC4NAAAAjSNgBAAAAAAKEzACUPb0SAUAAGg5AkYAypZgEQAAoOUJGAEAAACAwgSMAAAAAEBhAkYAiOHUAAAARQkYAQAAAIDCBIwAdFi9Z67QcxEAAGAHCRgBAAAAgMIEjECHpwcbAAAAFCdgBAAAAAAKEzACQDV6tAIAADSNgBEAAAAAKEzACAAAAAAUJmAEoMMw/BkAAKD5CRgBAAAAgMIEjAAAAABAYQJGAAAAAKAwASPQYXkeHwAAAOw4ASMAAAAAUJiAEYAOSQ9WAACA5iFgBDocwRIAAAA0HwEjAAAAAFCYgBGADkUPVgAAgOYlYAQ6NGETAAAA7BgBIwAAAABQmIARAAAAAChMwAgAAAAAFCZgBIB6eEYnAADA9gkYAQAAAIDCBIwAAAAAQGECRgAAAACgMAEjAAAAAFCYgBEAAAAAKEzACECH523RAAAAxQkYAQAAAIDCBIxAh6THGgAAADQPASPQIfSeuUKoSGHqDwAAQP0EjADQBIJGAACAmgSMAAAAAEBhAkYAAAAAoDABIwBsozHDoA2VBgAA2ErACAAAAAAUJmAEAAAAAAoTMAJAHQyBBgAAaBwBIwAAAABQmIARAAAAAChMwAgAAAAAFCZgBAAAAAAKEzACHYoXdwAAAEDzEjACZU2gSFPUVV/UIQAAgIYJGAEAAACAwgSMAAAAAEBhAkYAaCLDpgEAAP5IwAgAAAAAFCZgBAAAAAAKEzACAAAAAIUJGAGgkTx7EQAAoDYBI1D2hEIAAADQcgSMAAAAAEBhAkYAAAAAoDABIwAAAABQmIARAAAAAChMwAgAAAAAFCZgBAAAAAAKEzACAAAAAIUJGAEAAACAwgoFjHfccUe+9KUvZdSoURkyZEj22muvDBo0KH/5l3+ZK664IuvXr6+37MKFCzNu3LgMHjw4/fv3z4gRI3LppZc2WCZJXnrppUyaNCnDhw9P3759M3z48EyaNClLly5tsNy6detyySWX5Mgjj0z//v0zePDgfPKTn8yiRYuKHDoAAAAAUE2hgPHGG2/MHXfckU2bNuXQQw/NaaedlsMOOyy/+c1vcskll+SjH/1oXnvttVrlrrnmmpx22mm5//77c9BBB2Xs2LFZu3Ztpk+fnuOOOy5vvvlmndt7+OGHc8wxx2T27Nnp1atXTj755PTq1SuzZ8/OqFGj8thjj9VZbtWqVTnuuOOqQs+xY8fmoIMOyoIFC3Laaafl+uuvL3L4AFCn3jNXtPYuAAAA7HRdixS67LLL8qEPfSh77LFHjelvvfVWzjrrrCxevDhTp07N97///ap5Tz31VKZOnZouXbrktttuywknnJAkqayszJlnnplFixZlypQpuemmm2qss7KyMhMnTkxlZWXOPffcfOMb36iad8kll+SKK67IxIkT89hjj2W33XarUfarX/1qlixZktGjR2f27NmpqKhIktx3330588wzc+GFF2bUqFE5+OCDi3wbgDaq98wVeXvigNbeDQAAAOgQCvVgPPLII2uFi0my55575utf/3qS5IEHHqgxb8aMGdmyZUvOOuusqnAxSSoqKnLVVVelc+fOmTNnTn7729/WKHfrrbfmtddey5AhQzJ16tQa86ZOnZohQ4Zk+fLlue2222rMe+655zJv3rx06dIlV111VVW4mCRjxozJhAkTsnnz5syYMaPItwAAAAAASAu85KVr162dInfdddeqaRs3bsx9992XJDnjjDNqlRk0aFCOOuqoJMncuXNrzCt9Pv3009O5c83d7dy5cz7xiU8kSe699946yx111FEZNGhQrW2W9mP+/Pl57733Gnl0AFCbodEAAEBH1qwB47p163L55ZcnSU488cSq6UuWLEllZWWS5PDDD6+zbGn6008/XWN66XNLlduwYUNefPHFeo4IAAAAAGhIoWcwljzwwAP5j//4j2zevDmrVq3KY489lnXr1uVjH/tYvvnNb1Ytt2zZsiRJr169svvuu9e5rgEDBtRYNtkaWL711ltJkoEDBzZY7o033siGDRvSvXv3Guupr1zPnj3Ts2fPrF27NsuWLctBBx3U4LG+++67Dc5vbzZu3Fjjf2is9lJ3yu13lrapej0rfb1t3es/+828fmafZt1u12q/h++XcV1vL+0NbY+6QxHqDUWoNxSl7lBES9abD3zgAztUfocCxueeey6zZ8+uMW3cuHGZNm1aevXqVTVt/fr1SVIV/tWlR48eSbaGituWa6hsqVypbGm5xmyze/fuWbt2bY1t1ufVV1/Npk2btrtce7Ny5crW3gXaqbZddyryyiuvVH0NLaV6Pdv6dfW6l23mNZ+KlSvT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nXPhhRfmmWeeaeq3AAAAAAD4gyYHjKNHj85NN92Uj3zkI7XmnX766ZkwYUKS1AoYZ8yYkS1btuSss87KCSecUDW9oqIiV111VTp37pw5c+bkt7/9bY1yt956a1577bUMGTIkU6dOrTFv6tSpGTJkSJYvX15re88991zmzZuXLl265KqrrkpFRUXVvDFjxmTChAnZvHlzZsyY0dRvAQAAAADwB83+kpdDDjkkSbJixR8fGr9x48bcd999SZIzzjijVplBgwblqKOOSpLMnTu3xrzS59NPPz2dO9fc3c6dO+cTn/hEkuTee++ts9xRRx2VQYMG1dpmaT/mz5+f9957r5FHBwAAAABU1+wB44svvpgk6devX9W0JUuWpLKyMkly+OGH11muNP3pp5+uMb30uaXKbdiwoWqfAQAAAICmadaAceXKlbn11luTJKeeemrV9GXLliVJevXqld13373OsgMGDKixbLL1DdBvvfVWkmTgwIENlnvjjTeyYcOGWtusr1zPnj3Ts2fPWtsEdr7eM1dsfyEAAACgTeraXCt6//3388UvfjFr167N8OHDM3HixKp569evT5J079693vI9evRIsjVU3LZcQ2VL5UplS8s1Zpvdu3fP2rVra2yzPu++++52l2lPNm7cWON/aKyWqjvvvvtu+s+u+03yQPOpHuiXzm1t9RznXEVR6g5FqDcUod5QlLpDES1Zbz7wgQ/sUPlmCxinTJmSRYsWZc8998xNN92Ubt26Ndeq24RXX301mzZtau3daHYrV65s7V2gnWreulORV155JUnFdpcEmk/p927r/22XcxVFqTsUod5QhHpDUeoORTR3venSpUsGDx68Q+toloDxggsuyM0335zevXvnrrvuypAhQ2rML/UyrD6EeVulHofVh1BX751YX9nqvRzrKtvQNkvz6hu2Xd2+++673WXak40bN2blypXp169f2YXBtKyWqTtvZr/99kuiByPsTKXfuxEPVuT1M/u09u7U4lxFUeoORag3FKHeUJS6QxFtud7scMB40UUX5frrr0+vXr1y11135dBDD621TOktzmvWrMm6devqDPRKb52u/sbn3XffPXvssUdWr16d5cuX58Mf/nC95fr06VNjOPSgQYPy1FNPZfny5XXu99q1a7N27dpa26zPjnYVbau6detWtsdGy2ruumN4NOx81X+H+89+M29PHNCKe1M/5yqKUncoQr2hCPWGotQdimiL9WaHXvLyjW98I9dcc0169uyZu+66q943Ng8dOjQVFVuHPj7xxBN1LlOavm1AWfrcUuW6d+9eq8clAAAAANA4hQPGb37zm/mXf/mX9OzZM3fffXeOOOKIepft1q1bxowZkyT54Q9/WGv+yy+/nEcffTRJcvLJJ9eYV/p85513ZvPmzTXmbd68OXfddVeS5JRTTqkx76STTkqSPPLII3U+W6q0H2PHjs0uu+xS/4ECAAAAAPUqFDBedtllufLKK9OrV6/thosl55xzTjp16pRbbrkl999/f9X0ysrKTJ48OZs2bcqpp56aAw88sEa5CRMmZJ999smSJUsybdq0GvOmTZuWJUuWZMCAARk/fnyNecOGDcvHP/7xbNq0KZMnT84777xTNW/BggW59dZb07lz50yZMqXItwAA2r3qb5QGAAAoqsnPYJw3b16+853vJEkGDx6cG264oc7l+vTpk8suu6zq82GHHZbLLrssF110UcaNG5dRo0Zl7733zuLFi/P6669n6NChmTFjRq31VFRUZObMmTn99NMzffr0/PjHP86wYcPym9/8Js8++2y6d++eWbNmZbfddqtV9rvf/W6ef/75LFy4MIcffniOPvrorFq1Kg899FC2bNmSyy+/PAcffHBTvwUAAAAAwB80OWBcvXp11ddPPPFEvc843G+//WoEjEly9tln50//9E9z9dVX55e//GUqKyszcODAnHvuuZkyZUq9b3MeOXJkHnzwwXzrW9/KokWLMmfOnOy1114ZP358LrjgghxwwAF1ltt7773zs5/9LDNmzMicOXMyb968VFRU5Pjjj8/kyZMzevToph4+AHQYpR6ObfXlLwAAQNvQ5IDxrLPOyllnnVV4g8cee2yOPfbYJpcbPHhwrrvuuiaX69mzZy6++OJcfPHFTS4LAAAAADRsh94iDQAAAAB0bAJGAAAAAKAwASMAkMRbpQEAgGIEjAAAAABAYQJGAKCGhnoy6uUIAABsS8AIAAAAABQmYAQAtkvPRQAAoD4CRgAAAACgMAEjANAoejECAAB1ETACrUZYAQAAAO2fgBEAaJA/BgAAAA0RMAIAVYSJAABAUwkYgVYlzAAAAID2TcAIAAAAABQmYAQAAAAAChMwAgC1eHwBAADQWAJGAKAQISQAAJAI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5aCDDmrwGN59990G57c3GzdurPE/AFC33jNX5PUz+9SYVrouKP3ff/abtZah9bjOoQj1hiLUG4pSdyiiJevNBz7wgR0qv1MCxvXr1ydJVfhXlx49eiTZGipuW66hsqVypbKl5Rqzze7du2ft2rU1tlmfV199tdFvy25PVq5c2dq7QLtSsf1FAMrQK6+8kuptYOnz1v+zzde0Fa5zKEK9oQj1hqLUHYpo7nrTpUuXDB48eIfWsVMCxnKw7777tvYuNKuNGzdm5cqV6devX7p169bau0O74Q3SQMe03377pXobWPq89f9s8zWtzXUORag3FKHeUJS6QxFtud7slICx1Mtww4YN9S5T6nFYfQh19d6J9ZWt3suxrrINbbM0r75h29XtaFfRtqpbt25le2w0n94zV+TtiQNaezcAWs2258r+s9+sNd35tO1xnUMR6g1FqDcUpe5QRFusNzvlJS+ltzivWbOm3uHIK1asqLFssjX422OPPZIky5cvb7Bcnz59agyHLq2nvnJr167N2rVra20TAGBbO/LGaG+bBgCg3O2UgHHo0KGpqNj63KInnniizmVK0w899NAa00ufW6pc9+7dM2TIkO0eAwAAAABQ204JGLt165YxY8YkSX74wx/Wmv/yyy/n0UcfTZKcfPLJNeaVPt95553ZvHlzjXmbN2/OXXfdlSQ55ZRTasw76aSTkiSPPPJInQ9dL+3H2LFjs8suuzT5mAAAAACAnRQwJsk555yTTp065ZZbbsn9999fNb2ysjKTJ0/Opk2bcuqpp+bAAw+sUW7ChAnZZ599smTJkkybNq3GvGnTpmXJkiUZMGBAxo8fX2PesGHD8vGPfzybNm3K5MmT884771TNW7BgQW699dZ07tw5U6ZMaYGjBQAAAICOodBLXp588sn84z/+Y9Xn3/3ud0mSWbNm5Sc/+UnV9B/84Afp379/kuSwww7LZZddlosuuijjxo3LqFGjsvfee2fx4sV5/fXXM3To0MyYMaPWtioqKjJz5sycfvrpmT59en784x9n2LBh+c1vfpNnn3023bt3z6xZs7LbbrvVKvvd7343zz//fBYuXJjDDz88Rx99dFatWpWHHnooW7ZsyeWXX56DDz64yLcAOhzPEAMAAADqUihgXLduXf77v/+71vQVK1ZUvXQlSX7/+9/XmH/22WfnT//0T3P11Vfn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AAAAtH9l2+1h2bJlSZKBAwfWu8yAAQNqLAsAAAAANE3ZBozr169PknTv3r3eZXr06JEkWbdu3U7ZJwAAAAAoN2UbMAIAAAAALa9sA8ZS78QNGzbUu0ypl+Puu+++U/YJAAAAAMpN2QaMgwYNSpKsWFH/68hL80rLAgAAAABNU7YB4yGHHJIkeeutt7J06dI6l3nyySeTJIceeuhO2isAAAAAKC9lGzAOGDAgRxxxRJLkhz/8Ya35ixcvzvLly7PrrrvmhBNO2Nm7BwAAAABloWwDxiQ599xzkyRXXnllVW/FZGuvxvPOOy9J8oUvfCG9evVqjd1rNXfffXdOOumkfPCDH8y+++6bUaNG5bvf/W7ee++91t41Wsh7772XRYsW5etf/3qOO+64DBo0KHvttVcOPPDAjB8/Pj/5yU/qLPdP//RP6d27d4P/fvvb39a73ZdeeimTJk3K8OHD07dv3wwfPjyTJk2qt1cxbc+kSZO2WwfefffdOss++eST+exnP5uhQ4emX79+OeSQQ3L++edn1apVDW7zf/7nf3L++efnkEMOSd++fTN06NB89rOfrdGO07YtW7Zsu/Wm9O+hhx6qKqfN6RheeOGFXH/99Zk0aVI+8pGPpE+fPundu3e+/e1vb7fswoULM27cuAwePDj9+/fPiBEjcumll1Y9V7s+RevGunXrcskll+TII49M//79M3jw4Hzyk5/MokWLmnLINIOm1pvNmzfnkUceybRp0zJ27NgccMAB2WuvvTJ48OCcdtppueOOO7Jly5Y6y95yyy3bbYvuv//+evfVeaztKNLetNa5SHvTthSpO4299pk9e3aNctqc8lD0nrukHK5xuhYu2Q6cfPLJ+dKXvpTrr78+J5xwQkaPHp2KioosWrQoa9asyciRI3PRRRe19m7uVF/72tdy3XXXpWvXrvnoRz+a7t275+c//3kuvvjizJ8/P3feeWd222231t5NmtlDDz2U0047LUnSr1+/HH300amoqMjzzz+f+fPnZ/78+fnc5z6XGTNmpFOnTrXKH3zwwfnwhz9c57p79uxZ5/SHH344p59+eiorKzNs2LCMHDkyv/nNbzJ79uzMmTMnd999d0aMGNFsx0jLGjlyZA444IA653Xp0qXWtHvuuSef//zn8/777+eII47IBz/4wTzxxBO54YYbcs8992T+/PkZPHhwrXJLlizJiSeemFWrVmX//ffPSSedlGXLluWee+7Jj370o8ycOTOnnHJKsx8fzatHjx4588wz653//PPP5/HHH8/uu++eww47rNZ8bU55+/73v5/rrruuyeWuueaaXHTRRenUqVOOPvro9O3bN4sXL8706dMzZ86czJ8/P3369KlVrmjdWLVqVU488cQsWbIk/fv3z9ixY/M///M/WbBgQRYsWJDLL788X/rSlwp9D2i6ptabpUuX5q/+6q+SJHvssUcOP/zw9O7dO0uXLs3ChQuzcOHC/Od//mduvvnmdOvWrc51HHDAARk5cmSd8/bZZ586pzuPtS1F25tk556LtDdtT5G609C1z/Lly/OLX/winTp1yqhRo+pcRpvTvu3IPXe5XOOUdcCYJP/8z/+ckSNH5oYbbsijjz6a9957LwcccECmTJmSr3zlK/VeUJSjuXPn5rrrrkuPHj0yd+7cqpu6N998M6ecckoWL16cadOm5bLLLmvdHaXZderUKaeeemq+/OUv5yMf+UiNeXfeeWe+8IUvZNasWTnqqKPqPDGedNJJufDCCxu9vcrKykycODGVlZU599xz841vfKNq3iWXXJIrrrgiEydOzGOPPSbQbic+85nP5KyzzmrUsq+99lomTZqU999/P1deeWU+97nPJUk2bdqUSZMm5Y477sjf/d3f5ac//WmNk+uWLVvyt3/7t1m1alU+9alP5V//9V+rwstZs2blnHPOyaRJk/Lnf/7n6devX7MfI82nT58+ufbaa+udP27cuCTJ6aefnu7du9ear80pb8OHD8/kyZNzyCGH5NBDD8306dNz++23N1jmqaeeytSpU9OlS5fcdtttVY+3qayszJlnnplFixZlypQpuemmm2qU25G68dWvfjVLlizJ6NGjM3v27FRUVCRJ7rvvvpx55pm58MILM2rUqBx88MHN8W1hO5pabzp16pSPfvSj+Yd/+Iccd9xxNf4Y9uCDD+ZTn/pUfvKTn2TGjBm54IIL6lzHyJEjG2zLtuU81vYUaW9Kdua5SHvT9hSpOw21F+edd15+8Ytf5Nhjj633JbPanPat6D13OV3jlPUQ6ZJPfOITmTdvXl5++eW89tpr+a//+q+cc845HSpcTJIrrrgiSXLOOefU6DHSp0+fTJ8+PUlyww03ZM2aNa2xe7Sg0aNH56abbqrV0CVbb/AnTJiQJLntttuaZXu33nprXnvttQwZMiRTp06tMW/q1KkZMmRIli9f3mzbo2259tprU1lZmWOPPbYqXEy29nS84oor0rNnzzz++ON54IEHapRbsGBBnn766fTq1SvTp0+vcTP4uc99LqNHj8769esL90SgbXj11Vfz05/+NMnW4Lo5aHPal7/5m7/JpZdemnHjxuXAAw9M587bvxydMWNGtmzZkrPOOqvGs7MrKipy1VVXpXPnzpkzZ06tYYtF68Zzzz2XefPmpUuXLrnqqquqLryTZMyYMZkwYUI2b96cGTNmFPkWUEBT680BBxyQOXPm5GMf+1itnvbHHHNMzjnnnCTNd+2TOI+1RUXam6K0N+WlOevOu+++W/VeiOa69km0OW1N0XvucrrG6RABI1tv6B5//PEkyRlnnFFr/tFHH52BAwfm97//fRYsWLCzd49WVnrr+ooVK5plfXPnzk2ytSHd9mTcuXPnfOITn0iS3Hvvvc2yPdqW0s+/rramR48eOfHEE5PU/vmXyp144onp0aNHrbKl9ak37dutt96azZs3Z9iwYTnyyCObZZ3anPK2cePG3HfffUnqblcGDRqUo446Kskf60JJ0bpRKnfUUUfV2dOktB/z58/3DOt2qrmvfRLnsY5Oe0N95syZkzVr1mSPPfbISSed1Gzr1ea0L3Wdd8rtGqfsh0iz1dNPP51k6zNo9t9//zqXOeyww7J8+fI8/fTTdVZuyteLL76YJPV2nX/qqafyzW9+M6tXr07Pnj1zyCGHZOzYsdl9993rXL5U3w4//PA655eml5aj7fvFL36RZ599NuvXr8+ee+6ZI444ImPGjMmuu+5aY7l169blpZdeStLwz//222+v9fNvbL158cUXs2HDhjqH1tL23XrrrUmST3/60/Uuo82huiVLlqSysjJJwz/jxYsXF25XipbbsGFDXnzxxRx00EGNORTakO1d+yTJ7373u1x22WVZtWpVunfvnmHDhuXjH/94nc/BSpzHys3OOhdpb8rfD37wgyTJJz/5yVrXztVpc8pbXeedcrvGETB2EMuWLUuSDBw4sN5lBgwYUGNZOoaVK1dW3fCfeuqpdS5TeihtdT179sw///M/13pm47p16/LWW28lqb++leraG2+84WTXTtQ1hKx///65+uqr87GPfaxq2ssvv1z19fZ+/tu2Ndtrp0rTt2zZkpdffjnDhg1rwhHQFjz44IN56aWX0q1bt4wfP77e5bQ5VFdqG3r16lXvjX1d7cqO1I3ttUc9e/ZMz549s3bt2ixbtswNfztTWVmZ66+/Pkn91z7J1ofnP/zwwzWmnX/++fna175WNcS6Ouex8rKzzkXam/K2bNmy/OIXv0iy/eHR2pzyVd89d7ld4xgi3UGUXm3e0E1VqVv1unXrdso+0fref//9fPGLX8zatWszfPjwTJw4scb8Aw44IN/4xjfy85//PEuXLs3SpUszf/78/NVf/VXWrl1b9cKO6kp1Lam/vlXvwq++tW0HH3xwLr/88ixevDivvPJKXnjhhdx111056qij8vrrr+fMM8+sumhKmvbz3/Znv712qvp09aZ9Kv0F/8QTT6zzr/HaHOpS9BpmR+pGY7ZZmqdOtT/nnXdeli1bln322SfnnXderfn9+vXLP/7jP+anP/1pXnzxxbzyyiv52c9+lvHjx+f3v/99vvnNb1Y9v7w657HysLPPRdqb8nbLLbdky5YtOfzww+t9YYY2p7w1dM9dbtc4ejBCBzZlypQsWrQoe+65Z2666aZaLz6qq4fRyJEjc/vtt+d//+//nX/7t3/L//k//yennXZah3tpUkdx9tln1/i8++6757jjjsuxxx6bs846K/PmzcuFF16YBx98sJX2kPZi7dq1mTNnTpL6h0drc4CW9q1vfSuzZ8/OBz7wgcycOTN77rlnrWU+9rGP1eidn2wdMnbdddfl4IMPztSpU/Otb30rn/nMZ9K3b9+dtevsJM5FNJfNmzc36tEw2pzytr177nKiB2MHUUqvN2zYUO8ypSS7vq65lJcLLrggN998c3r37p277rorQ4YMaVL5Cy+8MF26dMkbb7yR//7v/66aXv0vJfXVt+p/cVHf2qdOnTrlwgsvTJI888wzWb58eZKm/fy3/dlvr52qPl29aX/uvPPOVFZWZsCAATn++OObXF6b03EVvYbZkbrRmG2W5qlT7cfVV1+d//f//l923XXX/OAHP8jIkSObvI5JkyalT58++f3vf58HHnigxjznsfLXEuci7U35WrhwYZYvX57ddtut8DsOtDnt2/buucvtGkfA2EGU3g7U0JvySvPqepMQ5eWiiy7K9ddfn169euWuu+7KoYce2uR17LHHHtl7772TbH1Lecnuu++ePfbYI0mqQqdtlepanz59PAutHfuTP/mTqq9LdWC//farmra9n/+2bU3pc33lStM7depUYzu0D6Xh0WeeeWatN901hjan4yq1DWvWrKl3qE5d7cqO1I3ttUdr167N2rVra22Ttuv666/P1KlT061bt9x00021egs1VpcuXfKhD30oSc22KHEe6wha4lykvSlfpWufU045Jb169Sq0Dm1O+9WYe+5yu8YRMHYQpVeiv/XWW1m6dGmdyzz55JNJUihsov34xje+kWuuuSY9e/bMXXfdVe/bo7Zn06ZNVQ1P9b+gJH+sQ0888USdZUvT1bX2rfRg4eSPdaBnz54ZPHhwkqb//Btbbz70oQ/VqnO0bc8991z++7//O506dWpwiFBDtDkd19ChQ1NRUZGk5dqVouW6d+/e5BEA7Hw33HBDLrjggqpw8a/+6q92aH2l81/Rtsh5rP1qiXOR9qY8rV69Oj/60Y+SbP/lLtujzWl/GnvPXW7XOALGDmLAgAE54ogjkiQ//OEPa81fvHhxli9fnl133TUnnHDCzt49dpJvfvOb+Zd/+Zf07Nkzd999d1WdKGLevHmprKxMp06dajWYJ598cpKtQyI3b95cY97mzZtz1113Jdn61zzar//8z/9MsjVUHDp0aNX00s+/rrZm/fr1VW9k3PbnXyr34x//uM4u+6X1qTftz80335wk+Yu/+Ivsv//+hdahzem4unXrljFjxiSpu115+eWX8+ijjyb5Y10oKVo3TjrppCTJI488kldeeaXWNkv7MXbs2Oyyyy5NPiZ2nhtvvDHnn39+Vbg4duzYHVrfk08+mSVLliRJ/uzP/qzGPOex8tcS5yLtTXm644478vvf/z4HHHBAjjnmmMLr0ea0P0255y63axwBYwdy7rnnJkmuvPLKqt6Kyda/iJTeoPeFL3yhcPdt2rbLLrssV155ZXr16tWocPGVV17J7bffnnfffbfWvLlz5+Yf/uEfkiTjxo1Lv379asyfMGFC9tlnnyxZsiTTpk2rMW/atGlZsmRJBgwYUOdDtGk7nn766cybNy/vv/9+jembN2/OTTfdlEsvvTRJ8sUvfrHGyWfSpEmpqKjIwoUL8+///u9V0zdt2pTzzjsva9asyRFHHJG//Mu/rLHeE044IYccckjWrFmT8847L5s2baqaN2vWrCxatCg9evTIl7/85ZY4XFrIe++9V/W2zYb+gq/NoSHnnHNOOnXqlFtuuSX3339/1fTKyspMnjw5mzZtyqmnnpoDDzywRrmidWPYsGH5+Mc/nk2bNmXy5Ml55513quYtWLAgt956azp37pwpU6a0wNHSXP793/895513XpPCxcrKytxwww11DlV76KGH8jd/8zdJkqOPPrrWzb7zWPvXGuci7U15Kg2P/vSnP51OnTrVu5w2p7w09Z47Ka9rnE5vv/32liaXot264IILcv3112eXXXbJ6NGjU1FRkUWLFmXNmjUZOXJk7rrrruy2226tvZs0s3nz5mXChAlJtr6R7KCDDqpzuT59+uSyyy5LsjVc+uhHP5oePXrkwx/+cPbdd9+88847ef755/Piiy8m2dobafbs2XV2uX/44Ydz+umnp7KyMsOHD8+wYcPym9/8Js8++2y6d++eu+++OyNGjGihI6Y5zJ07N5/+9KfTu3fvHHrooenbt2/WrFmTZ599tuqZHWeccUauu+66dO3atUbZu+++O5///OezadOmHHnkkRk0aFAef/zxLF26NH379s38+fOrhlJX98ILL+TEE0/MG2+8kf333z9HHHFEli1bll/+8pfp2rVrZs6c6a+w7cy9996bz3zmM+nVq1eef/75fOADH6hzOW1Ox/Hkk0/mH//xH6s+/+53v8ubb76ZAQMGZJ999qma/oMf/CD9+/ev+nzNNdfkoosuSqdOnTJq1KjsvffeWbx4cV5//fUMHTo08+fPT58+fWptr2jdWLVqVcaOHZsXX3wx/fv3z9FHH51Vq1bloYceypYtW3L55Ze7aduJmlpvnn766YwePTpbtmzJgQceWOvGvLprr7226uu33347+++/f3bdddcccsghGThwYN5///28+OKLefbZZ5Mkw4cPz5133lmjfpY4j7UtRepNa5yLtDdtT9FzVZI89dRTGT16dLp06ZJnnnmmxvLb0uaUjyL33CXlco0jYOyA7rrrrtxwww155pln8t577+WAAw7IJz/5yXzlK18p61emd2S33HJLzj777O0ut99+++VXv/pVkq09W//lX/4ljz/+eF566aWsXr06GzduTJ8+fXLooYdm3LhxOf300xt8WcNLL72Ub33rW1m0aFHeeOON7LXXXhk9enQuuOCCHHDAAc12fLSMpUuX5vrrr8+TTz6ZZcuW5a233sqWLVuy995758/+7M9y1llnVXXpr8uTTz6Z6dOnZ/HixVm7dm369euXsWPH5vzzz0/fvn3rLbdy5cp85zvfyfz587Ny5cr07NkzRx99dM4777wcdthhLXCktKRPfepT+clPfpK/+7u/y3e+8516l9PmdBy/+MUvGnWz89RTT+WDH/xgjWkLFy7M1VdfnV/+8peprKzMwIED89d//deZMmVKg286LFo31q5dmxkzZmTOnDlZvnx5Kioq8md/9meZPHlyRo8e3fiDZoc1td40dvlk6w1+ycaNG/Ptb387Tz75ZH7729/mrbfeyjvvvJPevXvn4IMPzmmnnZYJEyY0eM3sPNZ2NLXetOa5SHvTtuzIuer888/PDTfckDFjxlSN4qiPNqd8FLnnrq4crnEEjAAAAABAYZ7BCAAAAAAUJmAEAAAAAAoTMAIAAAAAhQkYAQAAAIDCBIwAAAAAQGECRgAAAACgMAEjAAAAAFCYgBEAAAAAKEzACAAAAAAUJmAEAAAAAAoTMAIAAAAAhQkYAQAAAIDC/j9fEYKPloGC/gAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "ax.hist(data, bins=1000, range=[0, qr[2]*3]);\n", + "#ax.set_title(\"perplexity for a random sample of mC4-es (P95 of 44M values)\");\n", + "#ax.get_yticklabels().set_fontsize(9)\n", + "for q in qr:\n", + " ax.axvline(q, c='r', lw=1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "6756a67c-538e-45db-be9e-729b4d2a3e8d", + "metadata": {}, + "source": [ + "## Testing gaussian sampling" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "ec9c4d5f-c676-46f5-8a3b-4d3f3773ef7d", + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.stats import norm, uniform" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "9b8c74ca-9343-4779-b058-2006eee7e999", + "metadata": {}, + "outputs": [], + "source": [ + "pa = 0.15 # probability fraction we will want below Xa -- should be less than 0.25\n", + "pb = 0.10 # probability fraction over Xb -- should be less than 0.25" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "09c0c2ee-6875-4d49-8475-a96ff27de0d1", + "metadata": {}, + "outputs": [], + "source": [ + "# Standard deviation\n", + "sdev = (qr[0] - qr[2]) / (norm.ppf(pa) - norm.ppf(1-pb))\n", + "\n", + "# Mean\n", + "mean = qr[0] - norm.ppf(pa)*sdev\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "e5e60e04-d5f1-4d4e-a1e5-598eb58b1b91", + "metadata": {}, + "outputs": [], + "source": [ + "x = np.linspace(0, qr[2]+qr[0], 5000)\n", + "y = norm.cdf(x, loc=mean, scale=sdev)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "e78dc8bc-8ff1-451f-a41d-290c4074cef7", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABP4AAAK0CAYAAACTE/PwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAACeI0lEQVR4nOzdd5xcVf3/8fe9M7N1tqdveiM9m0Ag9GawgAEERYlSvsqX3pGOdP0iELoCAUFRBAVEQUAQTACJBEjvdVPJJtlsm21T7v39kfIjzmyy9d6Zua/n4+FjN/fcufOOendvPvM55xjV1dW2AAAAAAAAAKQV0+0AAAAAAAAAADofhT8AAAAAAAAgDVH4AwAAAAAAANIQhT8AAAAAAAAgDVH4AwAAAAAAANIQhT8AAAAAAAAgDVH4AwAAAAAAANIQhT8AAAAAAAAgDVH4AwAAAAAAANIQhT8AAAAAAAAgDVH4SwFNTU1au3atmpqa3I4CpDTuJaDjjEWLlDdkiKJz53I/AZ0knX4/7fkZYSxa5HYUeFA63UuA27if0geFvxQRi8XcjgCkBe4loGOMWExmZaUUjXI/pRhz/nzll5TInD/f7ShIIF3upz0/I4w0+fsg9aTLvQQkA+6n9EDhDwAAwAPsvn3V9MADsvv2dTsKAAAAHOJ3OwAAAAC6nt2tm8Lnn+92DAAAADiIjj8AAAAvqK6W/623pOpqt5MAAADAIRT+AAAAPMAsL1fu2WfLLC93OwoAAAAcwlRfAAAAD7BGj1bt6tWyCwrcjgIAAACHUPgDAADwgkBAdrdubqcAAACAg5jqCwAA4AHG+vXKvvhiGevXux0FAAAADqHwBwAA4AFGOCxz3ToZ4bDbUQAAAOAQpvoCAAB4gDVsmOrfecftGAAAAHAQHX8AAAAAAABAGqLwBwAA4AHmwoXK79dP5sKFbkcBAACAQyj8AQAAeIDdq5eabrhBdq9ebkcBAACAQ1jjDwAAwAPsHj0Uvuwyt2MAAADAQXT8AQAAeEFtrXwzZ0q1tW4nAQAAgEMo/AEAAHiAuXatgqedJnPtWrejAAAAwCFM9QUAAPAAa+RI1S5YwBp/AAAAHkLhDwAAwAsyM2UPGOB2CgAAADiIqb4AAAAeYGzcqKzrrpOxcaPbUQAAAOCQdhX+Vq1apaeeekoXX3yxjjjiCJWUlKiwsFD3339/h8LMnDlT3/3udzV48GD16tVLkyZN0t13361QKNSh6wIAAHid0dAg/5w5Mhoa3I4CAAAAh7Rrqu+zzz6rJ598slODPPHEE7rllltkGIYOP/xw9ejRQ7Nnz9aDDz6ov/3tb3rnnXdUUlLSqe8JAADgFdZBByn04YduxwAAAICD2tXxN2rUKF1++eWaMWOG5syZo7POOqtDIRYsWKBbb71VPp9Pf/rTn/TWW2/p+eef17x583Tsscdq1apVuvrqqzv0HgAAAAAAAICXtKvj75xzztnnz6bZsaUCH3roIdm2rWnTpmnKlCl7j+fk5Oixxx5TWVmZ/va3v2nlypUaPnx4h94LAADAi8zFi5V7xhmqf/VVWWPGuB0HAAAADnB9V99wOKx3331XknTmmWfGjffv31+HHXaYZs+erTfffFPXXHON0xEBAABSnt2tm8I/+Ynsbt3cjgIASFG2bcuyJVva+9W2JUv27q+7/mx/5atl2///fPsr1/qvr1Li8T3v257XKcE5Lb8u/j1afF2rMu8/T7ILN0e1td5QbVVUGZkRt+O029jigNsRXOd64W/16tVq2L3I9IQJExKeM2HCBM2ePVsLFy50MhoAAEDasHv1UvNPf+p2DABISbZtqykmNcVsNUZtNcdsNcZshWO2IpYUtmxFrN3f7z4Wsezdx3cfs6VIbNexsCVF94zHdp0btaWYLcUse9dXW4rZtqLWruLZnmPR3ePWnnFbilm7vrds7f7zvteI7S667S3Wyd6ncLdv0S5xcS9VC1joiGxJNW6H6JDq80vdjuA61wt/69evlyQVFBQoLy8v4TmlpaX7nAsAAIA2CoXkW7pUsVGjpGDQ7TQA0Omilq26qLS5PqZIU0T1EVuhiKW6iK366K7vQxF79392fd8Q3VXAa9rzdff3Tbu/b9z7vdt/OwBoH9cLf6FQSJKUm5vb4jnB3Q+ndXV1B7xeU1NT5wRLIuFweJ+vANqHewnoOP/u+ycS2TXlg/spdfiXLlXBSSep8t13FR03zu04+Ip0+v3k/8rfJZqGz+XoepZtqzpsa0eTperwru9rwrZqwtbe76vDtmoi1v//Przr+8aYJOVIqnb3LwEgaaRjjSgrK6tN57te+OtsW7ZsUSyWnh/HVFRUuB0BSAvcS0D75VRUqETSzp07pR49uJ9SiJGdrS9feknN2dmyN250Ow4SSIf7ac/PiIqKCjXw/zPsFrOlyrCh7WFDO8KGqiJSVcTQzoix62vYUPXuP1dHpJgMtyMDSBMb0+x3kc/n0+DBg9v0GtcLf3u6+err61s8Z09XYEtTgb+qT58+nRMsiYTDYVVUVKhnz57KyMhwOw6QsriXgI7zV1VJkoqLi9UgcT+lmmHD3E6ABNLp99OenxE9e/ZUtF8/l9PACVHL1uYGS5sbLH255z+NlrY2WNqy++u2JksxFogD4IJ+/C5yv/DXv39/SVJNTY3q6uoSFvc2b968z7n709aWx1SSkZGR1n8/wCncS0D7mbuLEoHArh3SuJ9Sh7F5szKffFLNF10ku5SFrpNROtxPe35GZGRkyJ/ifxfsYtu2tjdZWl8X0/pQVOV1Ma2vi2p9aNfXTfUxinod5DekgGnIb0qmIfmMXd/7dn+/65jkNw35jNads+s8Q35D8pmSKUM+UzIkGcbur9p1jmFI5u7je78axt5z9pxvGnvO2fc1e8d2H4+/nvGVc3Yd3+OrvZ379Hm2dM7uF7f0utZcu8Vz9jlutOKcxMe/yjjAuFPa8/aRSEQ7d+5UcXHx3uc+J9+/s6T679XO4Hrhb9iwYcrJyVFDQ4PmzZunY445Ju6cefPmSZLGjx/vdDwAAIC0YNTWyv/22wqffTaFPwBxmmO21tRGtapm139W1kS0qiaq1TVR1UXSs7KX4zeU6zeU5TeU7TOU5TOU7TeU6TOU7ZOy/LuP+f7/OZm7z9lzboZpKMOUAj5DAVPKMA0F9hwzDQV8u77P2F3YyzANZew+N2Du+mq6XRUCEmhqatLGQEz9+mVRPEtxrhf+MjIydNJJJ+n111/XK6+8Elf427Bhg+bMmSNJOuWUU9yICAAAkPKskSMV+vxzt2MAcFnM2lXgW7wzosVVES3ZGdHKml0dfFaK1PfyA4YKMk0VZpgqzDBUuPv7HNNSrKFOfUoKVJSdoWDAUG7AUDBgKi+wq8gXDJi7jvsN+UwKbgDSn2OFv6efflozZszQxIkT9dRTT+0zdtVVV+mvf/2r/vCHP2jq1Kn62te+JklqaGjQ5ZdfrlgspqlTp2r48OFOxQUAAACAlBaKWFpQGdGinbsKfIurIlpWFVFTEu2FWJhhqHu2T92yTHXPMvd+3y3LVEmmubeot+urofwMU/4WCnZNTU3auHGn+vXLpkMJAHZrV+Fv/vz5uu666/b+ed26dZKk559/Xv/4xz/2Hv/973+vXr16SZIqKyu1atUq9ejRI+56ZWVluueee3TLLbfou9/9ro488kh1795ds2fP1tatWzVs2DA99NBD7YkKAAAASeayZco5+2w1vPiirJEj3Y4DoJNFLFtLqyKauz2iL3aENXd7WMtroq518XXLMtUnx6feuT71yfn/3/fO8e0t8JVkmsrw0XUHAF2pXYW/uro6fZ5gqsjmzZv3bsQhSc3Nza2+5qWXXqrRo0fr8ccf1xdffKGGhgb17dtX11xzja6++upW7egLAACAxOyCAkVOO012QYHbUQB0gp1NMc2uCOuTirA+3x7WgsqwY518PkPqm+vTgDy/Bub5NCDo14A8n0pzfeqT41OvHJ8yKegBQFJoV+Hv6KOPVnV1dZtec9NNN+mmm27a7znHHXecjjvuuPZEAgAAwH7Yffqo+fbb3Y4BoJ2+bIjpk63N+qQirNlbm7W0Otql7xcwpSH5fg3N92tYgV+D8v17C3x9c30tTrcFACQX1zf3AAAAgAMaG2WuWSNryBApO9vtNAAOoDZs6aMvm/WvLc36YHOT1tZ1TTtffsDQqKKAhhX4NbzAr2GFfg3LD2hAHsU9AEgHFP4AAAA8wFyxQnnHHae6mTNllZW5HQfAf4lZtuZVRvTB5ib9a0uz5mwLK9aJ6/MZkgbl+TSmOKAxxQGNLtr1tX/QJ8OgwAcA6YrCHwAAgAdYw4Yp9MEHsoYNczsKgN1CEUsfbG7WWxsa9e6mZu1stjrt2kPyfTq4W4Ymds/QhJKARhcHFAyYnXZ9AEBqoPAHAADgBbm5ik2c6HYKwPO2NsT0zsYmvbWhUbO+bFZzJ8zgLc40NalHhg7pFtDB3TM0oVuGijIp8gEAKPwBAAB4grF1qzKee07h88+X3auX23EAT6loiOmv5Y16bV2j/rMt3OHr9c4xdWSvTB3RM1NH9MrQ8AK/TKbrAgASoPAHAADgAUZlpTJeeEGRqVMp/AEOqGq29Mb6Rr26tlEfbW2W1YH1+npkmzq+T6aO7p2po3plagDr8gEAWonCHwAAgAdYo0erbulSt2MAaa05ZuudjU16cVW93t/crGg7i32ZPumInpk6oU+mji/N0ugiP4U+AEC7UPgDAAAAgA5YWBnW71c16M9rG1TV3L5qX99cn77ZP0vf6JelI3pmKttPoQ8A0HEU/gAAADzAXL5cOf/zP2r4zW9kjRjhdhwg5VU3W3p5TYN+v6pBi3ZG2nWN8SUBfat/lr7ZL0tjiwN09QEAOh2FPwAAAA+wg0FFjzpKdjDodhQgpS2sDOuZ5fX685pGNcba3t03uUeGTh+UrZP7Z6lvkH+OAQC6Fr9pAAAAPMDu21dNv/yl2zGAlBSO2XpjfaNmLKtv1668E7oF9J1B2Tp9YDbFPgCAo/itAwAA4AVNTTK3bJHVp4+UleV2GiAlVDVbemZZSM8sr1dFo9Wm1w7O8+kHQ3N0xuAcDc7nn10AAHfwGwgAAMADzOXLlXfccaqbOVNWWZnbcYCktr4uql8tCemFVQ1qaMPWvLl+Q6cNytYPh+Voco8M1uwDALiOwh8AAIAHWEOGKPTGG7KGDHE7CpC0FlSG9djikP6yrlFtWb7v8J4ZmjYsR6cNzFYwYHZdQAAA2ojCHwAAgBfk5Sl29NFupwCS0hfbw7pvfq3e3dTc6tcE/YbOGpqjH4/I1aiiQBemAwCg/Sj8AQAAeICxbZsCL72kyPe/L7tHD7fjAElh7u6C3z/aUPAbXuDXT0bk6vtDc5SfQXcfACC5UfgDAADwAKOiQpnTpyt6/PEU/uB583aE9X/z2lbwm1KaqUvHBHVs70zW7gMApAwKfwAAAB5gjR2ruvJyt2MArlpTE9Vdc2v01/KmVp3vN6QzB2fr8jF5Gl3MdF4AQOqh8AcAAAAgrW1vjOmX8+v03Ip6tWaT3qDf0LkH5eriUbnqG+SfTACA1MVvMQAAAA8wV61S9iWXqPFXv5I1bJjbcQBH1EcsPbEkpEcXhRRqRcUvL2DoolFBXTI6qKJM1u8DAKQ+Cn8AAAAeYGdmyhoxQnZmpttRgC5n27ZeXtOoOz6v0dZG64Dn5wUMXTgqqEsp+AEA0gyFPwAAAA+w+/dX42OPuR0D6HLzd4R1w6c1+nRb+IDnBv2GLhpNwQ8AkL4o/AEAAHhBJCKjslJ2SYkUYJMCpJ+dTTHdPbdWz69o0IEm9foN6X9G5Or6sjx1y/I5kg8AADdQ+AMAAPAAc8kS5R13nOpmzpRVVuZ2HKDTWLat361s0B2f16g6fOB1/E4fmK3bDs7X4Hz+KQQASH/8tgMAAPAAa9Ag1b/8sqxBg9yOAnSaFdURXfVJtWZXHHha7xE9M3T3pAId3D3DgWQAACQHCn8AAABeUFCg6Ne/7nYKoFM0x2w9tLBO0xfWKXyAvTv6BX26d1KBvj0gS4ZhOBMQAIAkQeEPAADAA4wdOxT4y18UOf102d26uR0HaLf/VDTryn9Xa0VNdL/nZfqkK8fm6aqxQeX42bgDAOBNFP4AAAA8wNi8WVm33KLooYdS+ENKaozauuuLGj25tP6Am3ec3D9L9x5aoIF5/HMHAOBt/CYEAADwAGv8eNVu2+Z2DKBd5u0I68IPq7TyAF1+/YM+PXh4oab0zXIoGQAAyY3CHwAAAICkFLFs3b+gTg8uqFNsP21+piFdPCqomyfkKTfAtF4AAPbgtyIAAIAHmGvWKPfUU2WuWeN2FKBVlldH9LU3t+uX8/df9BtXHNAHp3TXvYcWUPQDAOC/0PEHAADgAbbPJ6tbN9k+n9tRgP2ybVu/XdmgGz+tVlOs5fMyfdLNE/J16eig/Ca79QIAkAiFPwAAAA+wBw5U47PPuh0D2K/qZktXfVKt18sb93vehG4BPXl0kQ4qDDiUDACA1EThDwAAwAtiMam+XsrNlej6QxL6fHtY/zNzpzaEWm7z8xvSdePzdO34PAXo8gMA4IBYBAMAAMADzEWLVNC/v8xFi9yOAuzDsm09sqhO3/j79v0W/UYU+vXPU7rrxgn5FP0AAGglOv4AAAA8wBo4UPXPPy9r4EC3owB7VTdbuvCjKv1jY9N+z7toVK7uOLhAWX4KfgAAtAWFPwAAAC8oLFT0tNPcTgHstXhnRD/6oFLr6lru8ivONPWrowv1jX7ZDiYDACB9MNUXAADAA4ydOxX4wx9k7NzpdhRAf17ToClvbt9v0e+Inhn66NQeFP0AAOgACn8AAAAeYGzYoJxLL5WxYYPbUeBhEcvWTZ9W64IPq9QYsxOeYxrSjWV5euMb3VSay0Y0AAB0BFN9AQAAPMAaP141O3awoy9cs6MppnM+2KlPKsItntMj29Szxxbr6N6ZDiYDACB9UfgDAADwAsOQ/Dz6wR3LqyM6671Krd/Prr2Hds/Qb08oVu8citMAAHQWpvoCAAB4gLlunXK+/32Z69a5HQUe889NTTrpze37LfpdMCJXb36zG0U/AAA6GR/7AgAAAOgSTy8N6cY5NbISL+enLJ/00BFF+sHQHGeDAQDgERT+AAAAPMAaNEgNL73kdgx4RNSWrp9drWeW17d4Tr+gT78/oVjjSzIcTAYAgLdQ+AMAAPAC25ZisV2bexiG22mQ5m7+tFrPZLZc9JvcI0MvnFCs7tlM7QUAoCuxxh8AAIAHmAsWqKBbN5kLFrgdBWmsutmSJH26LdLiOWcNydZfv9GNoh8AAA6g8AcAAOABdv/+anjiCdn9+7sdBWlqXW1Ul3xctd9zfnZwvp48ukiZPrpOAQBwAlN9AQAAPMAuLlZk2jS3YyBNzdsR1nffq1S/eivheLbP0FPHFGnqwGyHkwEA4G10/AEAAHhBdbX8r78uVVe7nQRp5v3NTTrl7R3a0ZS46Ncj29Tb3+pG0Q8AABdQ+AMAAPAAs7xcueedJ7O83O0oSCOvrW3QWe9Vqj5qJxwfku/Tuyd3V1k3du4FAMANTPUFAADwAGvsWNVs2CDl5rodBWnihZX1uuLf1Upc8pMmdgvoT1NK1C2LTTwAAHALHX8AAABe4PNJ+fm7vgId9OTSkC7fT9Hv8J4BvfGNbhT9AABwGYU/AAAADzDKy5X94x/LYKovOujBBXW68dOa/Z5zz6GFyg3wTw0AANzGVF8AAAAPMGIxmTt2yIjFWuzSAvbHtm3dPbdW0xeGWjznB0N3beDhN6TEW30AAAAnUfgDAADwAGvIENX/9a9ux0CKsm1bN8+p0a+X1rd4zi0T8nSRgg6mAgAAB0L/PQAAAIAW2batmw5Q9Lv30AL9tCzfwVQAAKA1KPwBAAB4gLlggfJ79JC5YIHbUZBCbNvWrZ/V6skWin6GpEeOKNSlo+n0AwAgGTHVFwAAwAPs0lI13Xuv7NJSt6MgRdi2rZ99XqsnliRe089nSE8eXaTvDslxOBkAAGgtCn8AAAAeYHfrpvAFF7gdAynCtm3d+UWtHlucuOjnN6Tnji/WtwdkO5wMAAC0BVN9AQAAvKCmRv5//EOqqXE7CZLcnt17H15E0Q8AgFRH4Q8AAMADzHXrlHvWWTLXrXM7CpLc/QvqNH1hy9N7nz2Ooh8AAKmCqb4AAAAeYI0erdrly2WXlLgdBUnsyaUh/XxeXcIxnyE9e2yxTh1I0Q8AgFRB4Q8AAMALAgHZvXq5nQJJ7MVV9brx08RTwU1DmnFMkU4bRNEPAIBUwlRfAAAADzA2bFD25ZfL2LDB7ShIQm+ub9Tl/65OOGYa0lNHF+k7g9m9FwCAVEPhDwAAwAOM5maZy5fLaG52OwqSzKwtTfqfmTsVsxOPP3JEob47hKIfAACpiKm+AAAAHmANG6b6995zOwaSzGfbwjr7/Z0KW4nH7z20QD8anutsKAAA0Gno+AMAAAA8aGV1RN99b4fqo4lb/a4vy9Olo4MOpwIAAJ2Jwh8AAIAHmIsWKW/gQJmLFrkdBUlga0NMZ7xXqepw4qLfhSNzdVNZnsOpAABAZ6PwBwAA4AF2z55qvuYa2T17uh0FLquLWPree5XaGIolHP/B0Bz94rACGYbhcDIAANDZWOMPAADAA+wePRS+4gq3Y8BlEcvWuR/s1MKdkYTjJ/fP0mNHFsqk6AcAQFqg4w8AAMAL6urk++gjqa7O7SRwiW3buvzjKn2wJfHOzof3zNCzxxbLb1L0AwAgXVD4AwAA8ABzzRoFv/1tmWvWuB0FLrl3Xp1eWtOYcOygAr9ePLFEWX6KfgAApBOm+gIAAHiANWKE6ubOldWnj9tR4ILfrqjXAwsSd3v2zDb155NKVJRJTwAAAOmGwh8AAIAXZGXJGjzY7RRwwawtzbp2dnXCsaDf0J+nlKh/kH8WAACQjvhYDwAAwAOMTZuUdf31MjZtcjsKHLS6JqJz/lWpqB0/5jekF04o1riSDOeDAQAAR1D4AwAA8AAjFJL/449lhEJuR4FDqpotnfXPStWEE1T9JD12VJGOL81yOBUAAHASPf0AAAAeYI0YodAnn7gdAw6JWLbO+aBSa2pjCcdvKMvTD4bmOJwKAAA4jY4/AAAAII3Ytq3rZlfro63hhOPfGZStG8vyHE4FAADcQOEPAADAA8wlS5Q3apTMJUvcjoIu9qul9frtyoaEYwd3C+iJo4pkGIbDqQAAgBso/AEAAHiAXVKi8I9+JLukxO0o6ELvbWrSrXNqEo6V5vj0hxNLlO2n6AcAgFewxh8AAIAH2L16qfmmm9yOgS60tjaqn8zaqURbeeT6Df3xa8XqleNzPBcAAHAPHX8AAABeUF8v39y5Un2920nQBUIRS9PeT7yDryFpxrFFGleS4XwwAADgKgp/AAAAHmCuWqXgCSfIXLXK7SjoZLZt69KPq7SsOppw/I5D8vWt/tkOpwIAAMmAqb4AAAAeYB10kOo+/ljWkCFuR0Ene3hRSH8tb0o49r3B2bpiTNDhRAAAIFlQ+AMAAPCC7GxZY8a4nQKd7J+bmnTXF7UJx8YWB/TwkYXs4AsAgIcx1RcAAMADjC1blHnnnTK2bHE7CjrJutqoftzCZh5FmYZ+f0Kxcvw87gMA4GU8CQAAAHiAUVOjwOuvy6ipcTsKOkF9xNK0DxJv5mEa0nPHFWtAHpN7AADwOp4GAAAAPMAaOVKhefPcjoFOYNu2rp1draVViTfzuPOQfB3XJ8vhVAAAIBnR8QcAAACkkBdWNeilNY0Jx84cnK3LRrOZBwAA2IXCHwAAgAeYy5YpeMghMpctczsKOmDRzoiu/091wrExxQE9ymYeAADgKyj8AQAAeICdn6/oN78pOz/f7Shop9qwpfP+VammWPxYfoahF45nMw8AALAv1vgDAADwALu0VE133+12DLSTbdu64t/VWlOboOon6YmjijQon0d7AACwLz4SBAAA8ILGxl3TfBsTrw2H5Pb0snq9Xp74f7tLRufq2wOyHU4EAABSAYU/AAAADzBXrFDe4YfLXLHC7Shooy+2h3XrZzUJxw7tnqE7DylwOBEAAEgVFP4AAAA8wBo6VKF335U1dKjbUdAG1c2Wzpu5UxErfqw409RvjitSwGQzDwAAkBgLgQAAAHhBMKjYoYe6nQJtYNu2rvqkWhtDidf1e/qYIvUN8jgPAABaRscfAACABxhbtyrz/vtlbN3qdhS00gurGlpc1++6cXn6Wt8shxMBAIBUQ+EPAADAA4wdO5TxzDMyduxwOwpaYWV1RDd+mnhdvyN7ZeimCXkOJwIAAKmIuQEAAAAeYI0Zozo29kgJzTFbP55VpYaoHTdWlGloxjHF8rGuHwAAaAU6/gAAAIAkcsfnNVq0M5Jw7PEji9Qn1+dwIgAAkKoo/AEAAHiAuWKFgsccI5Ouv6T2j41N+vXS+oRjF4zI1ckDsh1OBAAAUlmHCn+vv/66Tj75ZA0YMEB9+vTRkUceqUceeUSRSOJPKPenvr5e06dP13HHHad+/fqpW7duGj58uM466yy99dZbHYkJAADgeXZOjqKHHio7J8ftKGhBRaOlSz6qSjg2qsivuyYVOJwIAACkunav8XfjjTfqySeflN/v1zHHHKPc3Fx9+OGHuv322/XOO+/otddeU3Z26z6R3Llzp771rW9p+fLlCgaDOvTQQ1VQUKC1a9fqH//4h/7xj3/owgsv1H333dfeuAAAAJ5m9+unpgcecDsGWmDZ0hX/Camy2Yoby/YZ+s1xxcr2s64fAABom3YV/t588009+eSTCgaDevPNN1VWViZJqqys1Le//W3Nnj1b9957r+65555WXe++++7T8uXLVVZWpr/85S8qKiraO/buu+/q7LPP1lNPPaUzzzxTkyZNak9kAAAAb2tulrF1q+xevaTMTLfT4L/86Uu/Zm1NPGvm54cWaERhwOFEAAAgHbRrqu/06dMlSVddddXeop8klZSU6MEHH5QkzZgxQzU1Na263kcffbT3el8t+knSSSedpKOPPlqSNGfOnPbEBQAA8Dxz2TLljx8vc9kyt6Pgv6ysierx8sSFvW8PyNJ5BzE9GwAAtE+bC39btmzR3LlzJUlnnnlm3Pjhhx+uvn37qrm5We+9916rrpnZyk+dS0pKWh8UAAAAe1mDByv0+uuyBg92Owq+ImLZuuw/ITVb8dN4S3N8evTIIhkGU3wBAED7tLnwt3DhQklSUVGRBg4cmPCcPV2Ae849kK997WuSpIcfflhVVfsuaPzuu+/qo48+Us+ePfXNb36zrXEBAAAgSfn5ih13nJSf73YSfMX9C+q0cGcs4divji5SUWaH9uIDAAAe1+Y1/tavXy9J6tu3b4vnlJaW7nPugVx11VWaO3eu3n//fY0dO1aHHXbY3s095s+fr8mTJ+uxxx5TQcGBdzJrampq1XumknA4vM9XAO3DvQR0nH/3/ROJ7FqLjPspdZjbtyvr1VfVdMYZsrp3dzsOJM3dEdGDC+oSjv3vQVk6rNhOuWdb/1d+10ZTLDtSH896QOfhfkpeWVlZbTq/zYW/UCgkScrNzW3xnGAwKEmqq0v8IPPfcnNz9dJLL+muu+7S448/rvfff3/vWHFxsY499lj17t27VdfasmWLYrHEn5qmuoqKCrcjAGmBewlov5yKCpVI2rlzp9SjB/dTCslesUIj7r9fG4YOVeNBB7kdx/MaY9JF87IUs+M7+gZlW/pR8U5t3LjThWQds+dnREVFhRo2bnQ7DjyK301A5+F+Si4+n0+D27hsS7t29e1sW7du1dlnn60lS5bo1ltv1RlnnKHu3btrxYoVuueee3Tffffp73//u95++23l5eXt91p9+vRxKLVzwuGwKioq1LNnT2VkZLgdB0hZ3EtAx/l3L8lRXFysBon7KZX066cda9aom9s5IEm68fOQNjQ1xx33G9JTxxRpWHFSPKa32Z6fET179lS0Xz+X08BreNYDOg/3U/po8xPFnm6++vr6Fs/Z0xV4oCLdHhdffLHmzp2ru+66S1dcccXe4xMnTtTLL7+sY489VosXL9Zjjz2mm2++eb/XamvLYyrJyMhI678f4BTuJaD9zN0PfoHArh1IuZ+Atnt/c5OeXxVf9JOkG8rydGifoMOJOs+enxEZGRny87MBLuF3E9B5uJ9SX5tXC+7fv78kafPmzS2es2dsz7n7s2XLFv3rX/+SJJ1xxhlx44FAQKeeeqokadasWW2NCwAAAEnmqlXK/cY3ZK5a5XYUT6tutnTZx1UJxw4u8evqca374BwAAKA12lz4GzdunKRda/uUl5cnPGf+/PmSpPHjxx/weps2bdr7fUsdgvm7d5/77x1/AQAA0Dp2RoasQYNkM13HVTd+Wq0vG6y441mmrccPD8pvGi6kAgAA6arNhb/S0lJNnDhRkvTKK6/Ejc+ePVubNm1SZmampkyZcsDrfXXTji+++CLhOZ9//rkkacCAAW2NCwAAAEn2gAFq/PWvZfM85Zp/bGzSS2saE45dNSiiQXk+hxMBAIB01+bCnyRdc801kqSHH354b3eftKsL8Nprr5UkXXDBBSooKNg79sYbb2jSpEmaOnXqPtfq16/f3kLijTfeqPXr1+8z/vLLL+u1116TJJ155pntiQsAAIBIRMaOHVIk4nYST6putnTVJ4lnrxzfO6Dv9Io6nAgAAHhBu7YLO+WUU3ThhRfqqaee0pQpU3TssccqJydHs2bNUk1NjSZPnqxbbrlln9fU1tZq1apVampqirve448/rm9/+9tasWKFDjvsMB1yyCEqKSnRypUrtWzZMknS9773PX3ve99rT1wAAADPM5csUd5xx6lu5kxZZWVux/GcWz6rSTjFNz9g6MFDcxWrrHEhFQAASHftKvxJ0n333afJkydrxowZmjNnjiKRiAYNGqSrr75al1xySZu2ex41apRmz56tX/3qV3rvvfc0b948NTc3q7CwUCeeeKJ++MMf6vTTT29vVAAAAM+zBg5U/Ysvyho40O0onvPPTU36w6qGhGP3HlqgPjk+bax0OBQAAPCEdhf+JOn0009vdUFu2rRpmjZtWovjPXr00B133KE77rijI5EAAACQSGGhot/6ltspPKcmbOnKf1cnHDuxNFM/HJaj5uZmZ0MBAADPaNcafwAAAEgtxo4dynjuuV3r/MExt31Wo80NsbjjeQFDDx9RKMNgF18AANB1KPwBAAB4gLFpk7Kuu07Gpk1uR/GMDzY36XcrE0/xvXtSgfoFOzT5BgAA4IB42gAAAPAAq6xMtZUsJOeU2rClK1qY4ntcn0ydOzzH2UAAAMCT6PgDAAAAOtndX9RqU338FN+g39AjTPEFAAAOofAHAADgAeaaNcr5zndkrlnjdpS0N2dbs55ZXp9w7M5J+RqQx6QbAADgDAp/AAAAHmD7fFJe3q6v6DLhmK0r/10tO8HYUb0ydP5BuY5nAgAA3sXHjQAAAB5gDxyoht/+1u0Yae/RxSEtq47GHc/ySY8eWSSTKb4AAMBBdPwBAAB4QSwm1dfv+oousbomovsX1CYcu7EsX4Pz+cwdAAA4i8IfAACAB5iLFqmgtFTmokVuR0lLlm3ryk+q1ZygrjqmOKBLxwSdDwUAADyPwh8AAIAH2AMGqOGZZ2QPGOB2lLT0+1UN+vfWcNxx05AePaJQAZMpvgAAwHnMNwAAAPAAu6hIkTPPdDtGWqpoiOm2z2oSjl04MlcTu2c4nAgAAGAXOv4AAAA8wKiqUuDll2VUVbkdJe3cNKdGNeH4fXz75vp0y8R8FxIBAADsQuEPAADAA4z165Vz4YUy1q93O0pa+cfGJr22rjHh2PTDCxUM8LgNAADcw1RfAAAAD7DGjVNNRYUUCLgdJW3URyxdO7s64dh3BmXrpH5ZzgYCAAD4LxT+AAAAvMA0pcxMt1OklQcW1GlTffw2vgUZhv7vsAIXEgEAAOyLuQcAAAAeYJSXK+eHP5RRXu52lLSwvDqixxaHEo7dPalAPbJ9DicCAACIR+EPAADAAwzLksLhXV/RIbZt67rZ1YrG7+ehw3tm6EfDcpwPBQAAkABTfQEAADzAGjxYDX/6k9sx0sKf1jbq463huON+Q3rw8EIZhuFCKgAAgHh0/AEAAACtVN1s6dY5NQnHLhkd1KgiNk8BAADJg8IfAACAB5jz56ugsFDm/PluR0lp986t1fam+OnSpTk+XV+W50IiAACAllH4AwAA8AC7Xz81PPqo7H793I6SsubvCOuZ5fUJx35xWIGCAR6tAQBAcmGNPwAAAA+wS0oUOecct2OkrJhl6+rZ1Uqwn4emlGbq2wOyHM8EAABwIHwsCQAA4AXV1fL/7W9SdbXbSVLS8yvrNW9HJO54lk+6nw09AABAkqLwBwAA4AFmeblyzzlHZnm521FSzrbGmO78ojbh2DXj8jQwj0k0AAAgOfGUAgAA4AHWmDGqXbdOdh4bULTVHZ/XqjYcP8l3SL5PV4zhv08AAJC8KPwBAAB4gd8vu6jI7RQp5/PtYb24uiHh2AOTC5XlZ4ovAABIXkz1BQAA8ACjvFzZ//u/Mpjq22qWbev6/1QnHDt9YLaOL2VDDwAAkNwo/AEAAHiAEY3K3LxZRjTqdpSU8YdVDZqbYEOPHL+hew4tcCERAABA2zDVFwAAwAOsoUNV//e/ux0jZVQ3Wy1u6HHtuDyV5vocTgQAANB2dPwBAAAA/+WXC2q1o8mKOz4wz6dLRwddSAQAANB2FP4AAAA8wFy4UPl9+shcuNDtKElveXVETy+tTzj2i0ML2NADAACkDAp/AAAAHmD37q2mn/1Mdu/ebkdJarZt64b/1Chqx499rTRT3+jHhh4AACB1sMYfAACAB9jduyt80UVux0h6b25o0qwvm+OO+w3pF4cVyDDo9gMAAKmDjj8AAAAvqK2V//33pdrEG1ZAaozaumVOTcKxi0cHNawg4HAiAACAjqHwBwAA4AHm2rXKPeMMmWvXuh0laT26uE4bQrG44z2zTf10fJ4LiQAAADqGqb4AAAAeYI0apdolS2R37+52lKS0IRTVQwvrEo7dcUiB8jP4vBwAAKQeCn8AAABekJEhu7TU7RRJ6/bPatUU3+ynSd0DOmtItvOBAAAAOgEfXQIAAHiAsXGjsq66SsbGjW5HSTr/qWjWX8ob444bkn45uVAmG3oAAIAUReEPAADAA4zGRvkWLJDRGF/g8jLLbnlDjx8Oy9GEbhkOJwIAAOg8TPUFAADwAGv4cNX/619ux0g6r6xt1Bc7InHH8wKGbjs434VEAAAAnYeOPwAAAHhSQ9TSnZ/XJhy7ZlyeemT7HE4EAADQuSj8AQAAeIC5eLHyhgyRuXix21GSxuOLQ9rcEL+jR/+gTxePCrqQCAAAoHNR+AMAAPAAu3t3hS+9VHb37m5HSQpfNsT08KJQwrE7D8lXlp8NPQAAQOpjjT8AAAAPsHv2VPM117gdI2nc/UWtGqJ23PHJPTJ02sBsFxIBAAB0Pjr+AAAAvCAUkm/2bCmUuMvNS+bvCOuPqxsSjv380AIZBt1+AAAgPVD4AwAA8ABz9WoFv/lNmatXux3FVbZt65bPahTf6yd9b0i2JnbPcDwTAABAV2GqLwAAgAdYI0ao7rPPZPXr53YUV725oUn/3hqOO57tM/SzifkuJAIAAOg6FP4AAAC8ICtL1rBhbqdwVXPM1s8+q0k4dtmYoPoGeTQGAADpham+AAAAHmBs3qysm2+WsXmz21Fc8/SykNbVxeKO98o2deXYoAuJAAAAuhaFPwAAAA8w6urk/+ADGXV1bkdxxc6mmB5YkPjvftvB+QoGeCwGAADph/kMAAAAHmCNGKHQf/7jdgzXPLgwpJpw/JYe40sC+sHQHBcSAQAAdD0+2gQAAEBaK6+LasayUMKxew8tkGkYDicCAABwBoU/AAAADzCXLlXe2LEyly51O4rj7p1bq7AVf/xb/bN0VK9M5wMBAAA4hMIfAACAB9hFRQqfdZbsoiK3ozhq/o6w/ry2Me64z5DuODjfhUQAAADOYY0/AAAAD7B791bzrbe6HcNRtm3rts9qEo6dMzxHwwsDDicCAABwFh1/AAAAXtDQIHP+fKmhwe0kjvnn5mZ9tDUcdzzXb+jGMrr9AABA+qPwBwAA4AHmypXKO+44mStXuh3FETHL1u0tdPtdNiaonjk+hxMBAAA4j8IfAACAB1jDh6tu5kxZw4e7HcURf1zToKXV0bjjPbJNXTYm6EIiAAAA57HGHwAAgBfk5MgqK3M7hSMaopZ+Prc24diNZfnKC/DZNwAA8AaeegAAADzA+PJLZd5zj4wvv3Q7Spd7cmm9tjRYcceHFfj1o+E5LiQCAABwB4U/AAAADzCqqpTx8ssyqqrcjtKldjTF9NDCuoRjtx+cr4BpOJwIAADAPUz1BQAA8ABr1CjVLVrkdowud//8OtVF7Ljjk3tk6OT+WS4kAgAAcA8dfwAAAEgLa2ujenZ5fcKxuyblyzDo9gMAAN5C4Q8AAMADzOXLFZw8Weby5W5H6TL3zK1VNL7ZT1MHZOnQHpnOBwIAAHAZhT8AAAAPsPPyFD3hBNl5eW5H6RLzd4T12rrGuON+Q/rZwfkuJAIAAHAfa/wBAAB4gF1aqqaf/9ztGF3m7rm1CY+fd1CuhhYEHE4DAACQHOj4AwAA8IKmJpmrVklNTW4n6XQffdms9zc3xx3P9Ru6viw9OxwBAABag8IfAACAB5jLlytv0qS0W+PPtm3d9UVNwrGLRwfVI9vncCIAAIDkQeEPAADAA6yhQxV6+21ZQ4e6HaVTvbWhSZ9tj8QdL8o0dPmYoAuJAAAAkgdr/AEAAHhBMKjY4Ye7naJTxSxb97Swtt81Y/NUkMFn3AAAwNt4GgIAAPAAo6JCmdOny6iocDtKp/nT2kYtq47GHe+TY+onI+n2AwAAoPAHAADgAcb27cp44gkZ27e7HaVTNMds/WJe4m6/GyfkK9tvOJwIAAAg+TDVFwAAwAOsMWNUt2aN2zE6zfMr6rUhFIs7PjTfr7OH5riQCAAAIPnQ8QcAAICUEopYun9BXcKxWyfmy2/S7QcAACBR+AMAAPAEc+VK5R5/vMyVK92O0mG/XhLSjiYr7nhZSUBTB2a5kAgAACA5UfgDAADwADs7W7Hx42VnZ7sdpUMqm2J6bHEo4djPDs6XadDtBwAAsAdr/AEAAHiA3a+fmh5+2O0YHfbQwpBqI3bc8aN7Zej4PpkuJAIAAEhedPwBAAB4QTgsY/NmKRx2O0m7ba6PacbyxN1+tx9SIINuPwAAgH1Q+AMAAPAAc+lS5Y8eLXPpUrejtNt982vVHL+Rr07un6VDumc4HwgAACDJUfgDAADwAGvwYNW/+qqswYPdjtIuq2si+sOqhrjjprFrJ18AAADEY40/AAAAL8jPV/TEE91O0W73za9TLH5pP31/SI5GFgWcDwQAAJAC6PgDAADwAGP7dmU8+aSM7dvdjtJmS6siemVtY9zxgCndOCHPhUQAAACpgcIfAACABxhffqmsu+6S8eWXbkdps1/Mq1WCZj+dd1Cu+geZwAIAANASnpQAAAA8wBo3TrVbtrgdo83m7wjrjfVNccezfNK14+j2AwAA2B86/gAAAJC0fjGvNuHxC0YG1SvH53AaAACA1ELhDwAAwAPM1auVe/LJMlevdjtKq83Z1qx/bGqOO57rN3Tl2KALiQAAAFILhT8AAAAPsP1+WaWlsv2ps9LLvXPrEh6/eFRQ3bLo9gMAADiQ1HnyAwAAQLvZAweq8emn3Y7Rah992axZX8Z3++VnGLpsDN1+AAAArUHHHwAAgBdEozKqqqRo1O0kB2Tbtn7ewtp+l48OqjCTR1gAAIDW4KkJAADAA8zFi5U/aJDMxYvdjnJAH2xp1uyKcNzx4kxTF42m2w8AAKC1KPwBAAB4gDVwoOp/9ztZAwe6HWW/bNvWPXMTd/tdNTaovACPrwAAAK3FGn8AAABeUFio6NSpbqc4oLc2NGnejkjc8R7Zpn4yMteFRAAAAKmLj0wBAAA8wKisVOB3v5NRWel2lBZZ+1nb79pxecrx8+gKAADQFjw9AQAAeICxcaNyrrhCxsaNbkdp0V/LG7WkKn7zkb65Pp13EN1+AAAAbcVUXwAAAA+wyspUU13tdowWRS1bP59Xl3DsuvF5yvQZDicCAABIfXT8AQAAwHV/XtuoVTXx3X4D83yaNizHhUQAAACpj8IfAACAB5hr1yrne9+TuXat21HiRCxb981PvLbfDWX5Cph0+wEAALQHhT8AAAAPsE1TysjY9TXJvLiqQeV1sbjjwwv8+t7gbBcSAQAApAfW+AMAAPAAe+BANfz+927HiBOO2XpgYeK1/W4sy5OPbj8AAIB2S76PfAEAAND5LEtqbt71NYn8cXWDNobiu/1GFfl12iC6/QAAADqCwh8AAIAHmAsXqqBnT5kLF7odZa9wzNb9CxJ3+900IV+mQbcfAABAR3So8Pf666/r5JNP1oABA9SnTx8deeSReuSRRxSJRNp9zb///e/6/ve/r+HDh6t79+4aOnSoTjrpJN13330diQoAAOBp9oABanjqKdkDBrgdZa8XVzdoU318t9+Y4oBO7p/lQiIAAID00u7C34033qjzzjtPn376qQ4++GCdeOKJ2rRpk26//XZNnTpVjY2NbbpeOBzWeeedp2nTpmnWrFkaMWKETj31VI0cOVLr1q3TU0891d6oAAAAnmcXFSly1lmyi4rcjiJp99p+LXT73VCWR7cfAABAJ2jX5h5vvvmmnnzySQWDQb355psqKyuTJFVWVurb3/62Zs+erXvvvVf33HNPq695xRVX7O0gfPTRR1VSUrJ3zLIsffHFF+2JCgAAAElGVZX877+v6IknJkXx7w+rEnf7jS0O6BS6/QAAADpFuzr+pk+fLkm66qqr9hb9JKmkpEQPPvigJGnGjBmqqalp1fVmzZqll156SaNGjdLzzz+/T9FPkkzT1KRJk9oTFQAAAJKM9euV85OfyFi/3u0oCsdsPdjCTr43lOXJoNsPAACgU7S58LdlyxbNnTtXknTmmWfGjR9++OHq27evmpub9d5777Xqmnum8V500UUKBAJtjQQAAIADsMaOVc3mzbLGjnU7in6/n24/1vYDAADoPG2e6rtw905wRUVFGjhwYMJzysrKtGnTJi1cuDBhcfCrYrGYPvzwQ0nSkUceqYqKCr366qtavXq1MjIyNG7cOE2dOlXBYLCtUQEAALCHzyfl5rqdQs0xW9Nb6Pa7kW4/AACATtXmwt/63dND+vbt2+I5paWl+5y7P+Xl5QqFQpKkzz77TNddd93eP+/xs5/9TM8++6yOPfbYA16vqanpgOekmnA4vM9XAO3DvQR0nH/3/ROJRCRxP6US3/r1Ct59t0K33aaYizv7/nZVU+KdfAt9OqFHej7LHUg6/X7yf+XvEvXg/5ZwVzrdS4DbuJ+SV1ZW22ZHtLnwt6col7ufT4z3dOfV1SX+NPerdu7cuff7yy+/XIceeqjuueceDRs2TOvWrdPdd9+td999d+9uv0OGDNnv9bZs2aJYLP5hMh1UVFS4HQFIC9xLQPvlVFSoRLt/f/fowf2UQjI3bVL/HTv05aZNajbbtcxzh4Ut6cGFWUq02sx5vRu0adOBnx3TWTrcT3t+RlRUVKhh40a348Cj0uFeApIF91Ny8fl8Gjx4cJte065dfTuTbdt7v+/du7dee+01ZWZmSpLGjh2rP/7xjzr66KO1dOlSPfTQQ3r88cf3e70+ffp0aV43hMNhVVRUqGfPnsrIyHA7DpCyuJeAjvNXVUmSiouL1SBxP6WSfv3UdOSR6uFihOdXNWlbuD7u+Ngin6aN7+3Zab7p9Ptpz8+Inj17Ktqvn8tp4DXpdC8BbuN+Sh9tLvzt6earr49/aNtjT1dgXl5eq68nSWefffbeot8ePp9P5513nq6//nrNnDnzgNdra8tjKsnIyEjrvx/gFO4loP3M3Q9+ezbj4n5CazXHbD22tDrh2E0TC5Sdne1soCSUDvfTnp8RGRkZ8qf43wWpKx3uJSBZcD+lvjbP8+jfv78kafPmzS2es2dsz7kHut6eT3db2ixkz3FaTAEAANrHnD9f+SUlMufPd+X9X1hZr80N8cuxjC8J6Jv9+AcFAABAV2hz4W/cuHGSdq3tU15envCc+bsfKMePH3/A6wWDQQ0bNkySVFlZmfCcPcf3t64gAAAAWmb37aumBx6QvZ8N2roKO/kCAAC4o82Fv9LSUk2cOFGS9Morr8SNz549W5s2bVJmZqamTJnSqmueeuqpkqRZs2YlHP/Xv/4lSTr44IPbGhcAAACS7G7dFD7/fNndujn+3r9bWa8tDVbc8fElAX2Dbj8AAIAu064t3a655hpJ0sMPP7y3u0/a1QV47bXXSpIuuOACFRQU7B174403NGnSJE2dOjXuehdddJEKCwv17rvv6rnnnttn7NVXX9Wf//xnSdKFF17YnrgAAACorpb/rbek6mpH37Ypaushuv0AAABc0a5dfU855RRdeOGFeuqppzRlyhQde+yxysnJ0axZs1RTU6PJkyfrlltu2ec1tbW1WrVqlZqamuKuV1JSoueee04/+MEPdPXVV+vpp5/W8OHDtW7dOi1cuFCS9NOf/lQnnXRSe+ICAAB4nllertyzz1bdzJmyysoce98XViXu9iuj2w8AAKDLtavwJ0n33XefJk+erBkzZmjOnDmKRCIaNGiQrr76al1yySVt3u75+OOP18cff6wHH3xQs2bN0ltvvaW8vDyddNJJuuiii3TCCSe0NyoAAIDnWaNHq3b1atlfmZHR1Zqi+1nbbwLdfgAAAF2t3YU/STr99NN1+umnt+rcadOmadq0afs9Z+jQofr1r3/dkUgAAABIJBBwfH2/362s15cJuv0mdAvo633p9gMAAOhq7VrjDwAAAKnFWL9e2RdfLGP9ekferylq66FFLa3tl0+3HwAAgAMo/AEAAHiAEQ7LXLdORjjsyPvtr9vvpL6ZjmQAAADwug5N9QUAAEBqsIYNU/077zjyXs0xWw/T7QcAAOA6Ov4AAADQqV5c1ZBwJ9+JdPsBAAA4isIfAACAB5gLFyq/Xz+ZCxd26ftErJbX9ru+jJ18AQAAnEThDwAAwAPsXr3UdMMNsnv16tL3eXlNgzaEYnHHxxWzky8AAIDTWOMPAADAA+wePRS+7LIufY+oZWv6gsTdfteNp9sPAADAaXT8AQAAeEFtrXwzZ0q1tV32Fq+ta9Tauvhuv1GFfp0ygG4/AAAAp1H4AwAA8ABz7VoFTztN5tq1XXL9mGXrgRa6/a4dnyeTbj8AAADHMdUXAADAA6yRI1W7YEGXrfH3t/WNWlkTjTs+rMCv0wZmd8l7AgAAYP8o/AEAAHhBZqbsAQO65NKWbev+lrr9xuXJZ9LtBwAA4Aam+gIAAHiAsXGjsq67TsbGjZ1+7bc2NGlpVXy336A8n84cTLcfAACAWyj8AQAAeIDR0CD/nDkyGho69br2frr9rh6XJz/dfgAAAK5hqi8AAIAHWAcdpNCHH3b6dd/b1KwFlZG4431zffr+kJxOfz8AAAC0Hh1/AAAAaBfbtvXLBbUJx64eF1SGj24/AAAAN1H4AwAA8ABz8WLlHXSQzMWLO+2aM7c06/Pt8d1+vXNMTRua22nvAwAAgPah8AcAAOABdrduCv/kJ7K7deu0a/6yhbX9rhiTpyw/3X4AAABuY40/AAAAD7B79VLzT3/aadf7eGuzZleE4473yDZ17kGs7QcAAJAM6PgDAADwglBIvjlzpFCoUy53//zE3X6Xjw4qx88jJgAAQDLgqQwAAMADzNWrFTzpJJmrV3f4WnO2NWvWl81xx4szTZ0/grX9AAAAkgVTfQEAADzAOugg1c2eLWvgwA5fq6Vuv0tHBxUM8LkyAABAsqDwBwAA4AXZ2bJGjuzwZebtCOu9zfHdfgUZhi4YSbcfAABAMuEjWQAAAA8wNm9W1m23ydi8uUPXub+FnXwvGhVUfgaPlgAAAMmEpzMAAAAPMGpr5X/7bRm1te2+xqKdEb21oSnueF7A0MWjgh2JBwAAgC7AVF8AAAAPsEaOVOjzzzt0jQcWJC4aXjAyV4WZfJ4MAACQbHhCAwAAwAEtr47ob+Xx3X65fkOXjqbbDwAAIBlR+AMAAPAAc9kyBSdMkLlsWbte/+CCOtkJjv/PiFyVZPk6Fg4AAABdgsIfAACAB9gFBYqcdprsgoI2v3ZNTVSvrmuMO57lky6j2w8AACBpscYfAACAB9h9+qj59tvb9doHF9bJStDud+7wXPXModsPAAAgWdHxBwAA4AWNjTIXL5Ya4zv39qe8LqqX1zTEHc8wpSvH5nVWOgAAAHQBCn8AAAAeYK5YobyjjpK5YkWbXvfQwjrFEnT7/XBYrvrk0u0HAACQzCj8AQAAeIA1bJhCH3wga9iwVr9mYyiqF1fHd/v5DemqcaztBwAAkOxY4w8AAMALcnMVmzixTS95dFFIESv++PeH5qh/kMdIAACAZEfHHwAAgAcYW7cq8xe/kLF1a6vO39oQ0+9W1ccd9xnSteNY2w8AACAVUPgDAADwAKOyUhkvvCCjsrJV5z+6uE7NsfjjZw7O1qB8uv0AAABSAU9tAAAAHmCNHq26pUtbde72xpieWx6/tp8huv0AAABSCR1/AAAA2McTS0JqTLCV7+mDsjW8MOBCIgAAALQHhT8AAAAPMJcvV/CII2QuX77f83Y2xfTMsvi1/SS6/QAAAFINhT8AAAAPsINBRY86SnYwuN/zfrW0XqFofLffKf2zNLqYbj8AAIBUwhp/AAAAHmD37aumX/5yv+dUN1t6emko4dh14+n2AwAASDV0/AEAAHhBU5PMtWulpqYWT3l6WUi1kfhuv6/3y1JZt4yuTAcAAIAuQOEPAADAA8zly5U3cWKLa/zVRSz9uoVuv+vp9gMAAEhJFP4AAAA8wBoyRKE33pA1ZEjC8WeX1auqOb7b74Q+mTq4O91+AAAAqYg1/gAAALwgL0+xo49OOFQfsfT4ksTdfj8to9sPAAAgVdHxBwAA4AHGtm3KePRRGdu2xY09v7JBO5qsuONH9crQ4T0znYgHAACALkDhDwAAwAOMigplTp8uo6Jin+ONUVuPLqpL+Jqfjs93IhoAAAC6CFN9AQAAPMAaO1Z15eVxx19YWa+Kxvhuv8N6ZOiY3qztBwAAkMro+AMAAPCo5pitRxa1sLbf+DwZhuFwIgAAAHQmCn8AAAAeYK5apdwpU2SuWrX32B9XN2hzQyzu3IndAjqxlLX9AAAAUh2FPwAAAA+wMzNljRghO3NXQS9i2Zq+sKW1/ej2AwAASAes8QcAAOABdv/+anzssb1//tOaBm0IxXf7jS0O6Bv9spyMBgAAgC5Cxx8AAIAXRCIytm6VIhHF9tPtdx3dfgAAAGmDwh8AAIAHmEuWKH/ECJlLlui1dY1aUxvf7Tey0K9vD6DbDwAAIF1Q+AMAAPAAa9Ag1b/8sqIDB+qBBYm7/a4dnyeTbj8AAIC0QeEPAADACwoKFP361/W3qkytqInGDQ/N9+v0gdkuBAMAAEBXYXMPAAAADzB27JD/tdf0TNbRkvLjxq8dnyefSbcfAABAOqHjDwAAwAOMzZuVecutCq3fHDc2MM+n7w6m2w8AACDd0PEHAADgAbFx43TIs4s1vzISN3bNuDz56fYDAABIO3T8AQAAeMA/NzcnLPr1zfXp+0NyXEgEAACArkbhDwAAIM3Ztq0/vrNQ7/3qxxq6ff0+Y1eNDSrDR7cfAABAOqLwBwAAkOZmfdmsudW2tgeLFDV9e4/3yjb1w2G5LiYDAABAV2KNPwAAgDT3y/l1Ki/pq7PPeWCf41eMzVOWn24/AACAdEXHHwAAQBr7eGuzPqkIy7RiymsKybRikqTuWabOO4i1/QAAANIZhT8AAIA0dv/8OknS+M0rVHvTYRq/eYUk6fIxQeX4eRQEAABIZzztAQAApKk525o168tmSdK6klJ999zpWldSquJMU/8zgrX9AAAA0h1r/AEAAKSpPd1+klSdU6BXyr4uSbptdFDBAJ//AgAApDue+AAAANLQ3O1hvbe5ee+fi+urde6cv2hguEYXjKTbDwAAwAso/AEAAKSh+xfU7fPnATu36Pk/3qqrC6uUn8EjIAAAgBcw1RcAACDNLNoZ0dsbm/Y5Nq/vSBU9slDzTy11KRUAAACcxse9AAAAaeaBBbXxBw1DPx5ToMIsn/OBAAAA4AoKfwAAAGlkWVVEfy1vijs+pmqj7rzvQpnr1rmQCgAAAG6g8AcAAJBGHlxYl/D4d4fkiKX9AAAAvIU1/gAAANLEqpqIXlvXGHc822foByeNVsOpL7mQCgAAAG7hc18AAIA08eCCOll2/PFzD8pRjyxTikYlO8EJAAAASEsU/gAAANJAeV1Uf14b3+2X6ZOuHJsnc8ECFXTrJnPBAhfSAQAAwA0U/gAAANLA9IV1iiVo5vvRsFz1zvHJ7t9fDU88Ibt/f+fDAQAAwBWs8QcAAJDiNoSienFVQ9zxgCldOTYoSbKLixWZNs3paAAAAHARHX8AAAAp7pFFIUUTdPudPTRH/YK7P+etrpb/9del6monowEAAMBFFP4AAABS2Jb6mF5YWR933GdIV4/L2/tns7xcueedJ7O83MF0AAAAcBNTfQEAAFLYI4vqFLbij39vSI4G5v3/Rz1r7FjVbNgg5eY6mA4AAABuovAHAACQoioaYvptgm4/05CuHRfc96DPJ+XnO5QMAAAAyYCpvgAAACnq8SUhNcXij58xKFtDCwL7HDPKy5X94x/LYKovAACAZ1D4AwAASEE7mmJ6dnl8t58h6drxefHHYzGZO3bIiCWoFAIAACAtMdUXAAAgBf1qSUgNCbbyPXVgtkYUBuKOW0OGqP6vf3UiGgAAAJIEHX8AAAAppqrZ0oxl8d1+knRdgm4/AAAAeBOFPwAAgBTz5NKQ6iLx3X7f6p+lMcXx3X6SZC5YoPwePWQuWNDV8QAAAJAkKPwBAACkkJqwpV8vDSUcu34/3X52aama7r1XdmlpV0UDAABAkmGNPwAAgBQyY1m9asPx3X4n9c1UWbeMFl9nd+um8AUXdGU0AAAAJBk6/gAAAFJEKGLpV0sSd/v9dHz+/l9cUyP/P/4h1dR0QTIAAAAkIwp/AAAAKeKZZfXa2WzFHT+uT6Ym9Wi520+SzHXrlHvWWTLXreuqeAAAAEgyTPUFAABIAaGIpUcXt31tvz2s0aNVu3y57JKSzo4GAACAJEXhDwAAIAU8uzxxt9+RvTJ0RK/MA18gEJDdq1cXJAMAAECyYqovAABAkgtFLD26KHG3341lB1jbbzdjwwZlX365jA0bOjMaAAAAkhiFPwAAgCT3m+X1qmyh2+/o3q3o9pNkNDfLXL5cRnNzZ8cDAABAkmKqLwAAQBKrj1h6pIPdfpJkDRum+vfe66xYAAAASAF0/AEAACSxZ1vo9juiZ+u7/QAAAOBNFP4AAACSVP1+dvK9cULru/0kyVy0SHkDB8pctKgzogEAACAFUPgDAABIUr9ZXq8dTfHdfof3zNDRvTLadC27Z081X3ON7J49OyseAAAAkhxr/AEAACSh+oilR1rq9ivLl2EYbbqe3aOHwldc0RnRAAAAkCLo+AMAAEhCv1nRcrffMb3b1u0nSaqrk++jj6S6uk5IBwAAgFRA4Q8AACDJ1EcsPdriTr55be72kyRzzRoFv/1tmWvWdDQeAAAAUkSHCn+vv/66Tj75ZA0YMEB9+vTRkUceqUceeUSRSKTDwd59910VFhaqsLBQp556aoevBwAAkCp+s6Je21vs9mvfTr7WiBGqmztX1ogRHY0HAACAFNHuwt+NN96o8847T59++qkOPvhgnXjiidq0aZNuv/12TZ06VY2Nje0OVV1drSuvvLJdn2YDAACksoZoy91+N7Sz20+SlJUla/BgKSurA+kAAACQStpV+HvzzTf15JNPKhgM6p///Kdee+01vfDCC5o7d65GjRql2bNn69577213qOuvv17btm3T//zP/7T7GgAAAKnoN8sTd/tN7pGhY9vZ7SdJxqZNyrr+ehmbNnUkHgAAAFJIuwp/06dPlyRdddVVKisr23u8pKREDz74oCRpxowZqqmpafO133jjDf3pT3/SpZdeqokTJ7YnHgAAQEpqiFp6tKWdfCd0oNtPkhEKyf/xxzJCia8PAACA9NPmwt+WLVs0d+5cSdKZZ54ZN3744Yerb9++am5u1nvvvdema1dWVuqaa67RsGHDdPPNN7c1GgAAQEp7bkWDtjXGd/sd1sFuP2nXGn+hTz5hjT8AAAAPaXPhb+HChZKkoqIiDRw4MOE5e7oA95zbWtdcc40qKyv12GOPKYv1ZwAAgIc0RC09sqgu4Vh7d/IFAACAt/nb+oL169dLkvr27dviOaWlpfuc2xqvvvqq/vrXv+qiiy7S5MmT2xprr6ampna/NlmFw+F9vgJoH+4loOP8u++fSCQiifupMz2zvDFht98h3fyaXGx3+BnHv2yZCs8+W9UvvqjoyJEduhY6Vzr9fvJ/5e8STcPnciS3dLqXALdxPyWvtjbKtbnwF9q9Lkxubm6L5wSDQUlSXV3iT63/W0VFha677joNGjRIP/vZz9oaaR9btmxRLBbr0DWSVUVFhdsRgLTAvQS0X05FhUok7dy5U+rRg/upkzTFpEcWZ0uK7+o7t2dImzbVdvg9Ak1Naj7lFG1valJk48YOXw+dLx3upz0/IyoqKtTA/8/gknS4l4Bkwf2UXHw+nwYPHtym17S58NcVrrzySlVXV+t3v/udcnJyOnStPn36dFKq5BEOh1VRUaGePXsqIyPD7ThAyuJeAjrOX1UlSSouLlaDxP3USZ5e3qjKSEPc8UO6+XXm2D6dM823Xz9pwgT16viV0MnS6ffTnp8RPXv2VLRfP5fTwGvS6V4C3Mb9lD7aXPjb081XX1/f4jl7ugLz8vIOeL0XX3xR77zzjn784x/r6KOPbmucOOm8NmBGRkZa//0Ap3AvAe1n7n7wCwQCkrifOkNj1NYTy6sSjt00sUDZ2Z303299vXwrVih20EHSfmZuwD3pcD/t+RmRkZEhf4r/XZC60uFeApIF91Pqa3Phr3///pKkzZs3t3jOnrE95+7Pm2++KUmaO3euTj755H3Gtm3bJkmaP3/+3rHf/OY36tmzZ1tjAwAAJKVnl4dUkWBtv0ndAzqhT8d28v0qc9UqBU84QXUzZ8ravREbAAAA0lubC3/jxo2TtGttn/Ly8oQ7+86fP1+SNH78+FZfd968eS2O1dTU6N///rek9Ny8AwAAeFN9xNLDi0IJx26ckN+pO/laBx2kuo8/ljVkSKddEwAAAMnNbOsLSktLNXHiREnSK6+8Ejc+e/Zsbdq0SZmZmZoyZcoBr/fiiy+quro64X+eeOIJSdKxxx6799iAAQPaGhkAACApzVhWrx1NXd/tJ0nKzpY1ZoyUnd251wUAAEDSanPhT5KuueYaSdLDDz+8t7tP2tUFeO2110qSLrjgAhUUFOwde+ONNzRp0iRNnTq1A3EBAADSQ23Y0iOL6xKO3TKxc7v9JMnYskWZd94pY8uWTr0uAAAAkle7Cn+nnHKKLrzwQoVCIU2ZMkVnnnmmzjnnHE2YMEFLly7V5MmTdcstt+zzmtraWq1atUrr1q3rlOAAAACp7KmlIVU123HHj+iZoWN7d3K3nySjpkaB11+XUVPT6dcGAABAcmrzGn973HfffZo8ebJmzJihOXPmKBKJaNCgQbr66qt1ySWXsN0zAABAC6qbLT2+JPHafjd3QbefJFkjRyq0nzWVAQAAkH7aXfiTpNNPP12nn356q86dNm2apk2b1qbrt+c1AAAAye5XS0OqCcd3+x3bO1NH9er8bj8AAAB4U7um+gIAAKB9djbF9OuWuv0m5HXZ+5rLlil4yCEyly3rsvcAAABAcqHwBwAA4KDHFodUF4nv9vtaaaYO69l13X52fr6i3/ym7Pz8LnsPAAAAJJcOTfUFAABA621vjOnpZfUJx26e0LUFObu0VE13392l7wEAAIDkQscfAACAQx5ZFFJ9NL7b75v9sjSxexdvjNbYuGuab2Nj174PAAAAkgaFPwAAAAdsbYjpmeWJ1/a7qQvX9tvDXLFCeYcfLnPFii5/LwAAACQHCn8AAAAOeGhhnZpi8cenDsjSuJIu7vaTZA0dqtC778oaOrTL3wsAAADJgTX+AAAAutjm+pieWxG/tp8h6cYuXttvr2BQsUMPdea9AAAAkBTo+AMAAOhi0xfWKWzFH//OoGyNKgo4ksHYulWZ998vY+tWR94PAAAA7qPwBwAA0IU2hKL63cr4bj/TkG4o6/q1/fYwduxQxjPPyNixw7H3BAAAgLuY6gsAANCFHlhQp0iCbr/vDs7W8EJnuv0kyRozRnVs7AEAAOApdPwBAAB0kXW1Uf1hVUPccZ8h3VDm0Np+AAAA8CwKfwAAAF3kF/NrFbPjj589NEeD852deGGuWKHgMcfIpOsPAADAMyj8AQAAdIGlVRH9eU1j3PGAKV033rm1/fawc3IUPfRQ2Tk5jr83AAAA3MEafwAAAF3gnrm1StDspx8Ny9WAPOcfwex+/dT0wAOOvy8AAADcQ8cfAABAJ/t8e1hvbWiKO57lk37q4E6++2hulrF+vdTc7M77AwAAwHEU/gAAADrZ3V/UJjz+vyOD6p3jczjNLuayZcofP17msmWuvD8AAACcR+EPAACgE83a0qRZX8Z31eUHDF01NuhCol2swYMVev11WYMHu5YBAAAAzmKNPwAAgE5i27buaqHb77IxQRVnudPtJ0nKz1fsuOPce38AAAA4jo4/AACATvLWhiZ9sSMSd7wk09TFo93r9pMkY9s2ZTz+uIxt21zNAQAAAOdQ+AMAAOgEMcvWvXMTd/tdMz5PeQF3H7uMrVuVdd99MrZudTUHAAAAnMNUXwAAgE7w6rpGLa2Oxh0vzfHpxwflupBoX9a4carduNHtGAAAAHAQHX8AAAAdFLFs/Xxe4m6/GybkKctvOJwIAAAAoPAHAADQYS+sbFB5XSzu+JB8n34wNMeFRPHMVauU+41vyFy1yu0oAAAAcAiFPwAAgA5ojNr65fzE3X43T8hXwEyObj87I0PWoEGyMzLcjgIAAACHsMYfAABABzyzLKStjVbc8THFAZ0+KNuFRInZAwao8de/djsGAAAAHETHHwAAQDvVhi1NX1SXcOy2ifkyjeTo9pMkRSIyduyQIhG3kwAAAMAhFP4AAADa6fElIVU123HHD+uRoZP6ZrqQqGXmkiXKHzpU5pIlbkcBAACAQyj8AQAAtMO2xpieWBxKOHbbwfkykqnbT5I1cKDqX3xR1sCBbkcBAACAQ1jjDwAAoB3un1+n+mh8t9+JpZk6qldydftJkgoLFf3Wt9xOAQAAAAfR8QcAANBGa2ujem5FfcKx2ybmO5ymdYwdO5Tx3HO71vkDAACAJ1D4AwAAaKO7v6hVgmY/fWdQtsq6ZTgfqBWMTZuUdd11MjZtcjsKAAAAHMJUXwAAgDaYuz2sv5Q3xh33G8nb7SdJVlmZaisr3Y4BAAAAB9HxBwAA0Eq2bev2z2sSjp0/IleD8vlMFQAAAMmDwh8AAEArvb+5WR9tDccdD/oNXT8+z4VErWeuWaOc73xH5po1bkcBAACAQyj8AQAAtIK1n26/y8cG1T3b53CitrF9Pikvb9dXAAAAeALzUQAAAFrhz2sbtaQqGne8e5apS0cHXUjUNvbAgWr47W/djgEAAAAH0fEHAABwAM0xW/fMrU04dkNZnoKBFHikisWk+vpdXwEAAOAJKfCUCgAA4K5nltdrYyi+YDY4z6dzD8p1IVHbmYsWqaC0VOaiRW5HAQAAgEMo/AEAAOxHTdjSAwsSd/v97OACBUzD4UTtYw8YoIZnnpE9YIDbUQAAAOAQ1vgDAADYj0cX1amq2Y47PrFbQKcOzHIhUfvYRUWKnHmm2zEAAADgIDr+AAAAWrClPqZfLalPOHbHIQUyjNTo9pMko6pKgZdfllFV5XYUAAAAOITCHwAAQAt+Ma9WjbH4br8ppZk6pnemC4naz1i/XjkXXihj/Xq3owAAAMAhTPUFAABIYPHOiH6/qiHuuCHpZ4cUOB+og6xx41RTUSEFAm5HAQAAgEMo/AEAAPwX27Z122c1iu/1k743JFtji1OweGaaUmZqdSkCAACgY5jqCwAA8F/+ublZ/9rSHHc8yyfdOjHfhUQdZ5SXK+eHP5RRXu52FAAAADiEwh8AAMBXRK1d3X6JXDI6qH7B1JwwYViWFA7v+goAAABPSM0nVwAAgC7ywsoGLa+Oxh3vnmXqqrF5LiTqHNbgwWr405/cjgEAAAAH0fEHAACwW23Y0s/n1SYcu2lCvvIzeHQCAABA6uDpFQAAYLdHFtVpe1P8VNgRhX6dMzzHhUSdx5w/XwWFhTLnz3c7CgAAABxC4Q8AAEDSplBUTywJJRy765AC+U3D4USdy+7XTw2PPiq7Xz+3owAAAMAhrPEHAAAg6e65tWqKxR8/tnempvTNdD5QJ7NLShQ55xy3YwAAAMBBdPwBAADPm78jrJfXNMYdNyTdc2iBDCO1u/0kSdXV8v/tb1J1tdtJAAAA4BAKfwAAwNNs29Ytn9UkHDt7WI7GFgccTtQ1zPJy5Z5zjszycrejAAAAwCFM9QUAAJ721oYm/XtrOO54jt/QrRPzXUjUNawxY1S7bp3svDy3owAAAMAhFP4AAIBnhWO2fvZ54m6/y8cE1TvH53CiLuT3yy4qcjsFAAAAHMRUXwAA4FlPLQtpTW38jh69sk1dMSboQqKuY5SXK/t//1cGU30BAAA8g8IfAADwpG2NMd0/vy7h2M0T85UbSK/HJCMalbl5s4xo1O0oAAAAcAhTfQEAgCfdM7dWtRE77vi44oCmDc1xIVHXsoYOVf3f/+52DAAAADgovT7KBgAAaIX5O8J6YWVDwrH/O6xAPtNwOBEAAADQ+Sj8AQAAT7FtWzfNqVF8r5/0nUHZOqJXpuOZnGAuXKj8Pn1kLlzodhQAAAA4hMIfAADwlL+sa9TsinDc8SyfdOch+S4kcobdu7eafvYz2b17ux0FAAAADmGNPwAA4BkNUUs/+7w24diVY/PUL5i+j0Z29+4KX3SR2zEAAADgIDr+AACAZzy6KKRN9bG446U5Pl05NuhCIgfV1sr//vtSbeLCJwAAANIPhT8AAOAJG0NRPbIolHDszkn5yvGn92ORuXatcs84Q+batW5HAQAAgEPSdz4LAADAV9zxea0aY/FbekzukaEzBmW7kMhZ1qhRql2yRHb37m5HAQAAgEMo/AEAgLT3ydZmvbquMe64Ien/DiuQYRjOh3JaRobs0lK3UwAAAMBB6T2nBQAAeF7MsnXTnJqEY9OG5aisW4bDidxhbNyorKuukrFxo9tRAAAA4BAKfwAAIK09v7JeCyojccfzAoZum5jvQiJ3GI2N8i1YIKMxvvMRAAAA6YmpvgAAIG3taIrp7i8S72L70/F56pnjcziRe6zhw1X/r3+5HQMAAAAOouMPAACkrTs/r1V1OH5DjyH5Pl04KuhCIgAAAMA5FP4AAEBa+mxbWC+sakg49svJhcr0eWBDj68wFy9W3pAhMhcvdjsKAAAAHELhDwAApJ2YZeu6/1QnHJs6IEsnlmY5GygJ2N27K3zppbK7d3c7CgAAABzCGn8AACDttLShR47f0L2HFriQyH12z55qvuYat2MAAADAQXT8AQCAtLK/DT2uG5+nfkGPfu4ZCsk3e7YUCrmdBAAAAA6h8AcAANLK/jb0uHS0dzf0MFevVvCb35S5erXbUQAAAOAQj37kDQAA0hEberTMGjFCdZ99JqtfP7ejAAAAwCEU/gAAQFrY34Ye3/bohh77yMqSNWyY2ykAAADgIKb6AgCAtNDShh7ZPkM/9+iGHl9lbN6srJtvlrF5s9tRAAAA4BAKfwAAIOVtbYjpTjb02C+jrk7+Dz6QUVfndhQAAAA4hKdgAACQ8m6eU6PaFjb0uGyMdzf0+CprxAiF/vMft2MAAADAQXT8AQCAlPbPTU16bV1jwrH7Pb6hBwAAALyNwh8AAEhZDVFL186uTjh25uBsneD1DT2+wly6VHljx8pcutTtKAAAAHAIhT8AAJCyHlhQp/WhWNzx/AxD905iQ4+vsouKFD7rLNlFRW5HAQAAgENY4w8AAKSkpVURPboolHDszoML1DPH53Ci5Gb37q3mW291OwYAAAAcRMcfAABIOZZt65pPqhWN389Dh3bP0LkH5TgfKtk1NMicP19qaHA7CQAAABxC4Q8AAKScF1Y26D/bwnHH/Yb00BGFMg029Phv5sqVyjvuOJkrV7odBQAAAA6h8AcAAFLKtsaYfvZ5TcKxy8YENbo44HCi1GANH666mTNlDR/udhQAAAA4hDX+AABASrl1To1qwvFzfPsHfbq+LM+FRCkiJ0dWWZnbKQAAAOAgOv4AAEDKeHdjk/60tjHh2IOHFyrHz6NNS4wvv1TmPffI+PJLt6MAAADAITwdAwCAlFAbtnTN7OqEY6cNzNaUvlnOBkoxRlWVMl5+WUZVldtRAAAA4BCm+gIAgJRw1xe12lQfizueHzD0i8MKXEiUWqxRo1S3aJHbMQAAAOAgOv4AAEDS+2Rrs55ZXp9w7O5JBeqd43M4EQAAAJD8KPwBAICk1hi1dfm/E09PPbpXhs4ZnuNwotRkLl+u4OTJMpcvdzsKAAAAHELhDwAAJLX75tdqTW38FN9sn6FHjyySYRgupEo9dl6eoiecIDuPnY8BAAC8gjX+AABA0pq/I6zHFocSjt0yMU+D8nmUaS27tFRNP/+52zEAAADgIDr+AABAUopYti77d7VidvzYwd0CunhU0PlQqaypSeaqVVJTk9tJAAAA4BAKfwAAICk9siikxTsjcccDpvTYUUXymUzxbQtz+XLlTZrEGn8AAAAeQuEPAAAknWVVEf1yfm3CsWvG5WlUUcDhRKnPGjpUobffljV0qNtRAAAA4BAWxgEAAEklYtm66KMqha34sVGFfl07js0p2iUYVOzww91OAQAAAAfR8QcAAJLK9IV1WlAZP8XXNHZN8c3wMcW3PYyKCmVOny6josLtKAAAAHAIhT8AAJA0FlSGdf/8uoRjl4wK6uDuGQ4nSh/G9u3KeOIJGdu3ux0FAAAADulQ4e/111/XySefrAEDBqhPnz468sgj9cgjjygSif+Ufn8WLFig6dOna+rUqRo2bJi6deumAQMG6Jvf/KZmzJjR5usBAIDU0xyzdfFHVYom2MX3oAK/bp2Y73yoNGKNGaO6NWtkjRnjdhQAAAA4pN1r/N1444168skn5ff7dcwxxyg3N1cffvihbr/9dr3zzjt67bXXlJ2dfcDrRKNRHXvssZKkYDCoCRMmqEePHtqyZYvmzJmj2bNn66WXXtKrr76qwsLC9sYFAABJ7r75tVpaFY077jOkXx9dpCw/U3wBAACAtmhXx9+bb76pJ598UsFgUP/85z/12muv6YUXXtDcuXM1atQozZ49W/fee2+rr1dWVqbnn39ea9as0RtvvKFnn31Wb7/9tj788EP16tVLX3zxhW655Zb2RAUAACng8+1hPbwolHDs6rF5msgU3w4zV65U7vHHy1y50u0oAAAAcEi7Cn/Tp0+XJF111VUqKyvbe7ykpEQPPvigJGnGjBmqqak54LX8fr9mzpyp0047TZmZmfuMjR49Wnfeeack6bXXXmPKLwAAaagxumuKr5Vgiu/oIr+uL2MX385gZ2crNn687FbMyAAAAEB6aHPhb8uWLZo7d64k6cwzz4wbP/zww9W3b181Nzfrvffe63DAcePGSZIaGxtVWVnZ4esBAIDkcvfcGq2qiZ/iGzClJ48pZhffTmL366emhx+W3a+f21EAAADgkDYX/hYuXChJKioq0sCBAxOes6cLcM+5HbFmzRpJUkZGhoqKijp8PQAAkDw+/LJZv15Sn3Ds+vF5GlsccDhRGguHZWzeLIXDbicBAACAQ9q8ucf69eslSX379m3xnNLS0n3ObS/btvXoo49Kkr7+9a/HTQVOpKmpqUPvmYzCux/QwzyoAx3CvQR0nH/3/bNn+Y2O3E/VYUsXfVijBDN8VVbs08XDA2n5e90t/oULVXLSSap8911Fd8+oQHJIp99P/q/8XaLcv3BYOt1LgNu4n5JXVlZWm85vc+EvFNq18HZubm6L5wSDQUlSXV1dWy+/j//7v//TnDlzFAwGdccdd7TqNVu2bFEsFuvQ+yariooKtyMAaYF7CWi/nIoKlUjauXOn1KNHu+8n25ZuXpGhLQ3xjyIZhq2bB4b05eaOPUdgX2YgoMpHH1UoEJC1caPbcZBAOvx+2vMzoqKiQg38/wwuSYd7CUgW3E/JxefzafDgwW16TZsLf0754x//qF/+8pcyTVOPP/64hgwZ0qrX9enTp4uTOS8cDquiokI9e/ZURga7GgLtxb0EdJy/qkqSVFxcrAap3ffTn9Y16587Eu/ie0tZro45qFtHYqIlI0eqwO0MiJNOv5/2/Izo2bOnoqwnCYel070EuI37KX20ufC3p5uvvj7xejzS/+8KzMtr3y58r7/+ui677DJJ0iOPPKLTTjut1a9ta8tjKsnIyEjrvx/gFO4loP3M3Q9+gcCutffacz+V10V1yxc7E44d1ydTl48vlGmwoUdnM7ZvV+DVVxU54wzZ3bu7HQcJpMPvpz0/IzIyMuRP8b8LUlc63EtAsuB+Sn1t3tyjf//+kqTNmze3eM6esT3ntsXf/vY3/eQnP5FlWXr44Yf1ox/9qM3XAAAAySlq2brwwyrVReJX9ivKNPTro4so+nUR48svlXXXXTK+/NLtKAAAAHBImwt/43YvBr1z506Vl5cnPGf+/PmSpPHjx7fp2m+++aZ+/OMfKxaLafr06Tr33HPbGg8AACSx6Qvr9Om2xItEP3JEkXrn+BxO5B3WuHGq3bJFFht7AAAAeEabC3+lpaWaOHGiJOmVV16JG589e7Y2bdqkzMxMTZkypdXXffvtt3X++ecrGo1q+vTpOv/889saDQAAJLHPt4d13/zEG3b8cFiOpg7MdjgRAAAAkN7aXPiTpGuuuUaS9PDDD+/t7pN2dQFee+21kqQLLrhABQX/f/noN954Q5MmTdLUqVPjrvfuu+/q3HPPVTQa1UMPPUTRDwCANFMXsfS/s3YqFj/DV4PyfPq/w9hyoquZq1cr9+STZa5e7XYUAAAAOKRdu/qecsopuvDCC/XUU09pypQpOvbYY5WTk6NZs2appqZGkydP1i233LLPa2pra7Vq1So1NTXtc3z79u360Y9+pHA4rNLSUn366af69NNPE77vPffco5KSkvZEBgAALrFtW1d/Uq21dbG4MZ8hzTi2WMFAuz6LRBvYfr+s0lLZ/nY9/gEAACAFtfvJ77777tPkyZM1Y8YMzZkzR5FIRIMGDdLVV1+tSy65pNXbPTc0NKi5uVnSrk1B/vjHP7Z47o033kjhDwCAFPPCqga9srYx4dj1ZXk6pHvrnhnQMfbAgWp8+mm3YwAAAMBBHfrI9/TTT9fpp5/eqnOnTZumadOmxR0fMGCAqqurOxIDAAAkqWVVEd3wn5qEY4f1yNC14/IcTuRh0aiMujrZeXkSXX8AAACewLwaAADQJRqils6fuVONCRb2K8wwNOPYIvlNw4Vk3mQuXqz8QYNkLl7sdhQAAAA4hMIfAADoEjf8p0bLq6MJx544qkj9g3SdOckaOFD1v/udrIED3Y4CAAAAh/DEDQAAOt2f1zTohVUNCccuHJmrkwdkO5wIKixUdOpUt1MAAADAQXT8AQCATrWmJqqrP6lOODa+JKC7JhU4GwiSJKOyUoHf/U5GZaXbUQAAAOAQCn8AAKDTNEZtnTdzp0LR+HX98gKGnjuuWJk+1vVzg7Fxo3KuuELGxo1uRwEAAIBDmOoLAAA6hW3bunZ2tRbtjCQcf/iIQg3O59HDLVZZmWqqq92OAQAAAAfR8QcAADrF71Y26MXVidf1O3d4js4YnONwIgAAAMDbKPwBAIAOm7cjrJ/+pzrh2KhCv35xGOv6uc1cu1Y53/uezLVr3Y4CAAAAh1D4AwAAHbKzKaZz/rVTYSt+LD9g6IUTSpTj55HDbbZpShkZu74CAADAE1hoBwAAtFvMsnXBx1XaGIolHP/V0UUaUsDjRjKwBw5Uw+9/73YMAAAAOIiPfAEAQLs9uKRR729uTjh25ZigThmQ7XAitMiypObmXV8BAADgCRT+AABAu3y809T0xY0Jx47ulaHbDs53OBH2x1y4UAU9e8pcuNDtKAAAAHAIc28AAECbbai3dOvGzIRjvXNMPXtcsfym4XAq7I89YIAannpK9oABbkcBAACAQyj8AQCANrtjbkj1xfGFPb8hPX9csXpk+1xIhf2xi4oUOesst2MAAADAQUz1BQAArWbZu75urLcTjt9zaIEO65m4ExDuMqqqFHjlFRlVVW5HAQAAgEMo/AEAgFZ7almoxbGzhmTrwpG5DqZBWxjr1yvnJz+RsX6921EAAADgEAp/AACgVV5a3aCXVifezOPgbgE9ckSRDIN1/ZKVNXasajZvljV2rNtRAAAA4BAKfwAA4IC+2B7WlZ8kniLaK9vU708sUZafol9S8/mk3NxdXwEAAOAJFP4AAMB+ba6P6YcfVKo5Fj+WaUq/P7FEvXMoJiU7o7xcOeeeK6O83O0oAAAAcAiFPwAA0KK6iKWz/lmpLxushOP3HxrUId0zHE6F9jBiMamubtdXAAAAeILf7QAAACA5RS1bP565U4t3RhKOn90nou8NYgffVGENGaKG115zOwYAAAAcROEPAAAkdNOcGr27qTnh2CHd/PqfQYkLggAAAACSA1N9AQBAnCeXhjRjWX2L47eOzxZ7eaQWc/585ZeUyJw/3+0oAAAAcAiFPwAAsI+3NzTqpk9rEo4VZe6q9uUGeIRINXbfvmp64AHZffu6HQUAAAAOYaovAADYa/6OsH4yq0p2grEsn/SLwwqdjoROYnfrpvD557sdAwAAAA7i43oAACBJWlcb1Xffq1R9NFHZT3rqmGKNLOQzw5RVXS3/W29J1dVuJwEAAIBDKPwBAABta4zp9Hd3aHuTlXD8rkPyderAbIdToTOZ5eXKPftsmeXlbkcBAACAQ/jYHgAAj6sNWzrz3UqV18USjp87PEeXjwk6nAqdzRo9WrWrV8suKHA7CgAAABxC4Q8AAA9rjtn60Qc7tXBnJOH4iaWZeuDwQhkGW/imvEBAdrdubqcAAACAg5jqCwCAR1m2rYs/qtKsL5sTjk/sFtBvjy9WwKTolw6M9euVffHFMtavdzsKAAAAHELhDwAAD7JtWzd9WqPX1jUmHB+a79efppQoGOBRIV0Y4bDMdetkhMNuRwEAAIBDmOoLAIAH3TuvTk8tq0841ivb1Ksnlahbls/hVOhK1rBhqn/nHbdjAAAAwEF8jA8AgMc8tLBODyyoSziWHzD0ykndNCCPzwYBAACAVEfhDwAAD3lqaUh3flGbcCzTJ734tRKNKQ44nApOMBcuVH6/fjIXLnQ7CgAAABxC4Q8AAI94YWW9bvi0JuGYaUgzjinWUb0yHU4Fp9i9eqnphhtk9+rldhQAAAA4hHk8AAB4wCtrG3TFv6sTjhmSfnVUkaYOzHY0E5xl9+ih8GWXuR0DAAAADqLjDwCANPfG+kZd+GGV7BbGpx9eqO8PzXE0E1xQWyvfzJlSbeKp3gAAAEg/FP4AAEhjfy1v1Pn/2qlYC1W/ew8t0Pkjcp0NBVeYa9cqeNppMteudTsKAAAAHMJUXwAA0tRf1jXoJ7OqWiz63TIhT5eODjobCq6xRo5U7YIFrPEHAADgIRT+AABIQ6+sbdCFH7Zc9LtqbFDXjc9zNhTclZkpe8AAt1MAAADAQUz1BQAgzby8pkH/u5+i38WjcnX7wfkyDMPZYHCVsXGjsq67TsbGjW5HAQAAgEMo/AEAkEb+uLpBF31YJauFot9lo4P6+aEFFP08yGhokH/OHBkNDW5HAQAAgEOY6gsAQJp4ZllIP/1PTYu79145Jqg7DqHTz6usgw5S6MMP3Y4BAAAAB1H4AwAgxdm2rQcW1OneeXUtnnPNuKBum0jRDwAAAPASpvoCAJDCbNvWrZ/V7rfod934PIp+kLl4sfIOOkjm4sVuRwEAAIBD6PgDACBFRS1bV31Srd+vannNtuvL8nRTWR5FP8ju1k3hn/xEdrdubkcBAACAQyj8AQCQgppjti6YtVN/W9/U4jl3HZKvK8bmOZgKyczu1UvNP/2p2zEAAADgIKb6AgCQYqqaLZ3+jx0tFv0MSY8eWUjRD/sKheSbM0cKhdxOAgAAAIdQ+AMAIIWsr4vq63/frk8qwgnHA6b03HHFOmd4rsPJkOzM1asVPOkkmatXux0FAAAADmGqLwAAKWL+jrC+989KbWu0Eo7n+A29cEKxTizNcjgZUoF10EGqmz1b1sCBbkcBAACAQyj8AQCQAt7d2KTzZ+5UfdROOF6QYehPXyvRYT0zHU6GlJGdLWvkSLdTAAAAwEFM9QUAIMk9uzykH7xf2WLRr2+uT+98qztFP+yXsXmzsm67TcbmzW5HAQAAgEMo/AEAkKQilq1rZ1fr2tk1iiWu+WlscUDvndJdI4sCzoZDyjFqa+V/+20ZtbVuRwEAAIBDmOoLAEAS2tkU07n/2qmPtibexEOSTizN1PPHFysvwOd4ODBr5EiFPv/c7RgAAABwEIU/AACSzPLqiL7/z0qV18VaPOdHw3I0/YhCBUzDwWQAAAAAUgktAgAAJJF3NjZqypvb91v0u2VCnh49kqIf2sZctkzBCRNkLlvmdhQAAAA4hI4/AACSQMyy9Yv5dXpgQV2L5+T4Df366CKdOjDbwWRIF3ZBgSKnnSa7oMDtKAAAAHAIhT8AAFy2oymmn8yq0swtzS2e0zfXpxdPLNa4kgwHkyGd2H36qPn2292OAQAAAAdR+AMAwEWfbQvrvH/t1OaGlqf2HtYjQy+cUKwe2T4HkyHtNDbKXLNG1pAhUjZdowAAAF7AGn8AALjAtm09vTSkb729fb9Fv2nDcvS3b3Sj6IcOM1esUN5RR8lcscLtKAAAAHAIHX8AADisqtnSFf+u0hvrm1o8J2BK904q0AUjc2UYbOKBjrOGDVPogw9kDRvmdhQAAAA4hMIfAAAO+ujLZl344U5tabBaPKc0x6fnjy/WpB6s54dOlJur2MSJbqcAAACAg5jqCwCAAyKWrXu+qNXUd3bst+h3fJ9MzTq1O0U/dDpj61Zl/uIXMrZudTsKAAAAHELhDwCALlZeF9W33tquBxbWyd7PeT8dn6dXppSoWxbr+aHzGZWVynjhBRmVlW5HAQAAgEOY6gsAQBexbVvPr2jQbZ/VKBRtueRXkmnq10cX6aR+WQ6mg9dYo0erbulSt2MAAADAQRT+AADoAhtDUV3+72rN3NK83/OO75OpXx9dpF45dPkBAAAA6FxM9QUAoBPZtq3frazXEa9v22/RL2BKdx+Sr1dPKqHoB0eYy5creMQRMpcvdzsKAAAAHELHHwAAnWRDKKprPqnWPzfvv8tvSL5Pzx5brLJubOAB59jBoKJHHSU7GHQ7CgAAABxC4Q8AgA6KWrZ+vTSkX8yrU8N+1vKTpHOH5+jeQwsUDNB0D2fZffuq6Ze/dDsGAAAAHEThDwCADvh8e1hXfVKtxTsj+z2vT46px44q0omlbOABlzQ1ydyyRVafPlIW/z8EAADwAtoNAABoh5qwpZ/OrtaUN7cfsOg3bViOPjmtJ0U/uMpcvlx5Eyeyxh8AAICH0PEHAEAbxCxbf1jdoLu/qNX2Jmu/5/bKNvXIkUX6ej8KfnCfNWSIQm+8IWvIELejAAAAwCEU/gAAaKXZFc268dMaLajcf4efJJ0zPEd3HlKgokya65Ek8vIUO/pot1MAAADAQRT+AAA4gI2hqO74vFavrms84LkjCv166IhCHd4z04FkQOsZ27Yp8NJLinz/+7J79HA7DgAAABxA4Q8AgBZUN1t6ZFGdnlxar8bY/nfrzfJJ15fl67LRQWX4DIcSAq1nVFQoc/p0RY8/nsIfAACAR1D4AwDgvzRGbT29LKSHFtapOrz/gp8knViaqQcmF2pQPr9WkbyssWNVV17udgwAAAA4iH+hAACwW9Sy9eLqBv3fvFptadj/xh2SNDjPp58fVqCv982SYdDlBwAAACC5sOI4AMDzopatP65u0GF/qdAV/64+YNEvL2DorkPyNfv0nvpGv2yKfkgJ5qpVyp0yReaqVW5HAQAAgEPo+AMAeFY4ZuulNQ2avrBO5XWxA55vSJo2LEe3TcxXzxxf1wcEOpGdmSlrxAjZmWw8AwAA4BUU/gAAntMcs/XiqgZNX1SnjaEDF/wk6aS+mbrt4AKNLQ50cTqga9j9+6vxscfcjgEAAAAHUfgDAHjGzqaYfrOiQTOWhVTReOA1/CTp0O4Zuv2QfB3Ziy4ppLhIREZlpeySEilAARsAAMALKPwBANLe2tqofrUkpBdXN6gheuBdeiVpRKFft03M17f6s3EH0oO5ZInyjjtOdTNnyiorczsOAAAAHEDhDwCQlmzb1sdbw3pyaUhvbWhS68p90kEFfl03Pk/fGZQtn0nBD+nDGjRI9S+/LGvQILejAAAAwCEU/gAAaaW62dIfVzfouRX1WlkTbfXrRhX5df34fE0dmCWTDj+ko4ICRb/+dbdTAAAAwEEU/gAAKc+2bc3bEdGzK+r12tpGNcZa298njSsO6PqyPH2rPwU/pDfj/7V35/FRlWf/xz9ntiSTEJZAEgiBgGAB+7DzCC5AVRQVXFEE/T2lWqooWNAiWNRShVZFNvvwIEWKRVBoFVAiRRBNoIitFtmRHUJYwmb2bZbz+yOZISETSFgyWb7v1yuvmTnnvs+5ZibXycyV+9zn9Gnsy5bhuv9+zMaNgx2OiIiIiFQBFf5ERKTGOpnn4e8H8vhwXy7bz7oq1fe2uBBG/jSCPk1DNIef1AnG0aOETpiA+7//W4U/ERERkTpChT8REalR8t0mq47k8+G+HL44WkAlBvfhsMDD1zh55roI2jfUVU2lbvF26kTmyZPBDkNEREREqpAKfyIiUu25vSb/PFHA8oN5LDuUR0ZhJap9QONQC8N+Es7wduHEOK1XKUoREREREZHqRYU/ERGpltxekw0nClh2MI8Vh/M5U+Ct9DZuiHHwRLtwBrYMw2HV6bxSt1n27yfsuefImzYN7zXXBDscEREREakCKvyJiEi1kec2WXe8gH+k5JGYks/p/MoX+yLtBoPbOHn8J+E6nVekBNNqxdu4MaZVo15FRERE6goV/kREJKiO5XhYnZrPP47ks+5YQaWuyFvSTbEOhrRxcl9CGOF2yxWOUqTmMxMSyJs3L9hhiIiIiEgVUuFPRESqVIHH5NtThSQdK2D1kXy2VvJqvCW1rmflkTZOBl/jpGU9/UkTuSCPB3JyIDwcNOpPREREpE7QtyQREbmqvKbJ9rMuko8VkHS8gI1pheS6L21UH0BUiIV7EkJ55Bon/x3twDA0d59IRVi2baNe375kJSXh7dw52OGIiIiISBVQ4U9ERK4ot7eo0LcxrZB/nSxk/fGCS7owR0m+Yt99CWHcGBuCzaJin0hleRMSyHnvPbwJCcEORURERESqiAp/IiJyWTILvXx3qpBvThbyTVoh/zlVSM5ljOjziQ6zcFd8KPe3UrFP5Ipo0AD3ffcFOwoRERERqUIq/ImISIXluLxsO+ti8xkX358uZPNpF3sy3Fx+ma9Ix0Z2+rcIpX/zUDo3tmPRabwiV4xx9iy2f/wD9513YjZqFOxwRERERKQKqPAnIiIBnc73sPNHNzt/dLH1jIvNpwv5IcON90pV+QCnzeDmWAf948O4PT6UuHBdcEDkajFSUnA+8wxZSUkq/ImIiIjUESr8iYjUcVkuL7vTiwp8O390setHN7vSXZzMu7x5+QKxGtC9iYM+zULo0zSEHk0cOKwa1SdSFbydOpFx+rSu6CsiIiJSh6jwJyJSB+S7TQ5mudmfee5nX4abA5luTlyFAp+PAVzXyM5NsQ76NgvhhpgQIh2Wq7Y/EbkAwwCbPvqJiIiI1CX69CciUgsUekyO5XpIyfZwJNvNkWwPR3I8HMn2cDDLTWq254rNw3ch4TaDbk0c9Ixx0DPaQfcmDhX6RKoJy8GDhL74Ivl//CPeVq2CHY6IiIiIVAEV/kREqjHTNMlymaTleTie6yUt18OJPA9puV5O5BUV9o5kuzme662Swl5JBvCTBjY6Rdnp0rio0PfTRnZdfbeOsRw7RmTPnnjj48n+9luwlC70GidPEnHbbRhHj5L7wQe477gjSJGKSDAYR49Sr0sXHSNERESC5LIKf8uXL2fu3Lls374dl8tFq1atePjhh3n66aex2+2V3t7mzZuZPn06X3/9NZmZmcTExHDHHXfwwgsv0KRJk8sJVUSk2shzm5wt8HIm38PZAi9n872cKfBypvj2VJ6XtDwPJ3I9pOV5yXVXdUkvsLb1bXSJstOpsYMuUXY6RtmJsGs0X13nbdYM15AhOP76V+xLl+IaNOjcypwcnA8/jCUlhbzp0/WFPsi8rVqRu3hxsMOQOsaMi9MxQkREJIguufA3fvx43nnnHWw2G7179yY8PJx169bxu9/9jlWrVrF06VLCwsIqvL1PPvmEJ554ArfbTdeuXWnZsiXff/89c+fO5ZNPPmHVqlW0bt36UsMVEbliCjwmmYVeMgtNslxeMgpNMl1e/7Ki+8Vtiu+fLS7snS2oPoW88sSEWWjf0E77BjY6NLTToaGdnzSwqcgn5cofMwb7okWETJuG68EHi+aS83hwPv44ts2byR8zhsJf/CLYYYppgsdTdHEPQyNzperoGCEiIhI8l1T4S0xM5J133iEiIoLExEQ6d+4MwJkzZxg4cCAbN25k8uTJTJo0qULbO378OCNGjMDtdjNjxgyGDRsGgMfjYcSIEfztb3/jl7/8JWvXrsXQB1UROY/ba1LgMSn0FhXliu6bFHiK5r4r8JoUekyy8gs5dtpKpLeAQsNDntsk122S4zaL73tL3C/9k+c2yXEXFe0KPMF+xpfPYkCLCCttIm20jrTRJtJG+4Z2OjS0ERWqK35K5ZgJCbgGDcKxeDG2zz7DPWAAoS+8gP3zzyl86CEKXnkl2CEKYNmyhXp9+5KVlISRlUXEwIHkjxuH+5ZbCH3tNaybN2OGhOC67z7yJ02CsDBsn39OyFtvYd2xAzM8HNeQIeS/8kqZi4TYPvuMkDlzsG7ZAvn5eFu3pnDoUAqffrr0VYQzMnDMn4999WosBw5gnDmDGRWFu08fCsaPLzP3YMgf/0joG2+QvWIFlhMnCJk5E8u+fZj16xfFOXEiVOIfzRIcOkaIiIgEzyUV/qZNmwbA6NGj/UU/gKioKKZOncqdd97J3LlzGTt2LPXr17/o9mbPnk1ubi59+/b1F/0ArFYr06ZNY9WqVWzatIkvv/ySW2+99VJCrtEKPCanC8GR5yXEW1RxOH+8kBlgAFGgMUXmeQ0DtgnY7+JtAqlIv7Jtyra61JguuV8FXs9Lfn0r8OJVJiavCV7TxFvcxlu8zDTNEuuLl1HctkQ7Si4zy27zXJtzy0ttt7g/JnhMcJtFhTi3CZ7i23OPwW2auItvSz8ublfOOo+3RDHPV+jzQIHX9MdYMSFAdmU61Fh2C8SFW4kPt3JNpI1r6hcV+K6JtJFQz4bDqn+kyJVT8Pzz2P/2N0KmTsWyfz8h8+bhvukm8mbN0uiyasJs0YLcWbMwW7TA2LEDAOt//kPIzJm4b7mFwmHDsK1fT8i8eRhZWbj79yfs6adx3XUXnh49sK1eTcjbb2OGh1Mwbpx/uyG//z2h06cXnfY9cCBmZCTWjRsJe/llbN99R+5f/+pva92zh9A//AH3zTfjGjAAnE4se/Zg/+gjbKtXk52cjNmiRZnYQ+bOxbZ2La677sLduze2tWsJmTMH4+xZ8ubOvfovnlw2HSNERESCo9KFv2PHjrFp0yYABpWco6NYr169aN68OampqaxZsyZgm/MlJiaWu72IiAjuvPNOlixZwooVK+pk4e/rky6G/NsJ/BjsUESkGom0GzQrLuzFR9iIj7AW/RQ/jgmzYNWFNqSKeNu2xXXvvTiWLcP2/fd42rUjZ+FCcDiCHZoUMxs1wvXoo6WW2b/4gpxFi3DffXfRApeLiL59sf/979jWriVn5Uo8XbsWrXvxRep17YrjnXcoeO45sNuxffUVodOn47r1VnIXLIDw8OKdmYQ+/zwhf/kLtk8+wX3vvQB4rr2WrN27MRs2LBWHdd06wu+7j9C33iLv7bfLxG5LSiI7KQlv27ZFC/LyiLj5Zuwff0z+q69iNm165V4ouSp0jBAREQmOShf+tm7dCkDDhg1JSEgI2KZz586kpqaydevWixb+srKyOHDgAABdunQJ2KZLly4sWbLEv28RkdrKABqGWIgNsxDjtBITZiHWaSUmzEqss+h+bJiV6DAL4ZpzT6oZ9x134Fi2DDM0lJy//Q0aNAh2SFJSejq2pCTcffv6F7lvvvlc0Q/Absd1772E7tiBq3//c0U/gHr1it7jhQsxjh7FTEjA8ec/A5A3Y8a5oh+AYZD/u9/hmD8fx8cf+wt/1K8fcFS7p3dvvO3aYUtKChh6wVNPnSv6AYSF4XrwQULfeAPr5s24VfirESpzjAgdOxYjI4O84t8xERERuTSVLvwdPnwYgObNm5fbJi4urlTbC0lJSfHfL2+bldlefn7+RdvUNG6XO9ghiMglCLNCPbtBpN2gQYiFRiEGjRxFtw1DLESFGDTyLQ+x0DDEoIHduMgoPRNwgwfya8Fcg1Lz2AoLAXC5XAAUFj+27t5NveLTP438fNx79+KKjg5OkBKQbc8e6g8bxpnVq/EUv28FHTqU+exkREURCuS3b19mnbVxYxyAOyUFV2wsEd9+i9fpxPLee4F3GhqKsXt3qe3YN2zAOXcu9k2bsJw9i+E+9znHdDhKtbUWr8u/7joKzo8zOppQwH36dI3//OfLI99tTWYr8VzcJd/LSh4jwrZto6Bfvxr/3krVqk25JBJsyqfqKzQ0tFLtK134y84umhsrvOR/dc8TEREBFI3mq+j2LrTNymzv2LFjeDy169vwj+kWoHJvrIhUnsMwCbVCqMUkzAqhFgizmmVuw60QYSu+tZpE2Hy3JuG++1awVWRAngnkF/3kUvQjUp0509KIAs6ePQvR0aSlpWE/dYp2jz8OOTkcHTGCuNmzsb3xBgdmzQp2uFJSZCSHv/oKb1gY9Q4coBGQ4fVy7MiRUs2iMjKIBM4UFnLmvHXNcnKIAE4dO0bWkSM0+fFHLB4PEVOnlrtbT1YWR4q30/CLL2j929/idTrJ6NmTwqZN8YaGgmEQlZhIyPHj/rYAzTIziQDS8vLIKifOs6dOlYmzpkpLSwt2CJfNd4xIS0sjt/h9uZRjRNT27RwfOpTMWvLeStWqDbkkUl0on6oXq9VK69atK9Xnki7uUZ01a9Ys2CFccT+YuUBesMMQuSw2o6gQZjXAZhhYLb5lRvGy0veL1hul+tgsEGIFh8XAYTHO3bdCSPGtw2IQYgGH1cBhgZAStxavm+yMH4mNakRkqB2nzSDMZuC0QZjVwKb58EQuyvZj0XyzjRo1IheIDQ8nZtgw7CdOkDFzJrbBgynYvp3I9etpdeoU7pKnipYQMXkyIatWYU1NxRsZSd7QoeSUuGCEXF32o0cBiIyMxBofX2pdaKNGQNF77DxvXXhkJABNmjShQXw8REbiNQxO7dx5wf35thI1fz6EhvLjmjV4WrfGAHzX/LV+9VVR2xL7LLO/CsZZ0xQWFpKWlkZMTAyOGj7nne8YERMTgzs+HiM7m4aVPEZYUlKwZWcT7XTSavhwbLt3U9itG5lvv423Fn7WlyunNuWSSLApn2qPShf+fKPvcnJyym3jG8VXr169Cm/Pt81AVwGuzPYqO+SxJri2kYdnEzKo36ABdtu5t6xMiSJAzSJQGcM478ppAdsE7FeBNpfaL2DsFYjzErdddl8Vjaki/couLdPvkrdddpnVKHqtDAMsBlgoujUMsGAULTOKtle03PC3M/ztjfPaFC3zPS613eJtGqW2e26bRYW6oiKdzTCwW87tN9jy8/M5whnim4bVymOFSFWwFH/ws9vtGG43TUaMwL5jB/kTJsDPf04o4Bo3jpD164mcOZPcJUvKbsTlwup0kj97Nt4mTbB+/z3hI0Zg3Hwz7ltuqdonVIcYhw4R+tpr5L/8sv99tNlsZY6Hdrv93O1562zFn0McDgfW0FA83btjX7MG59GjeK+55qIxWA8fxtuuHfYOHbCXjO3ECazFU7qUjOf8/VU0zprK4XDU+L9Pvt8th8OBzWrFOXx4pY8Rtr17MS0WIubNI3/aNPKtVpwjRtDgpZfI/eCDKn5GUhPVhlwSqS6UTzVfpQt/LVq0AOBo8X+KA/Gt87W9kJL/1U1NTQ1Y+KvM9mqjlhFW/l9zN/HxKlaIiEj10XLSJEKSkyn8+c8pGDvWv9xz0024e/XC/vnnWLZtw/tf/1W6o91OwYsv+h+6W7bEM3s2lr17QYW/q8bweLCcPo1xBadEKXzySexr1hA2ciS5ixZhFo/C8+8zLQ0jPR3vT34CgDc+HsvBgxgnT2L65nfLzyfsuecwiueNlNojbNQo7F99VeljhHX7doiIIOfDD/0XACkYM4aw55+vyvBFRERqhUpfErJjx45A0dw+hw4dCthm8+bNAHTq1Omi24uMjPSfn/z9998HbONbXpHtiYiIyNUXNn8+jT/7jIJbbyVv2rQy6wt+8xsAQgLM/WYcOkTo6NFEXH89kS1aEBkXh/Xbb3UK31XmveYacj75pEIj8yrKfdtt5I8di23jRup16ULYE08QMnEiYc8+S/iAAdTr0AH7ypX+9oW/+hVGZiYRvXsT+sILhD7/PBE33IBl1y48P/3pFYtLgs/x7rs4Fi/GdfvtlT5GWLdvp3Dw4FJX/TWdTjADXRNaRERELqTShb+4uDi6Fs/F8dFHH5VZv3HjRlJTUwkJCaFfv34V2uaAAQPK3V52djarVq0CYODAgZUNV0RERK4C54cfktO+Pel//jNYrWXWu2+9FXfXrtg//RTLnj3+5capU0TccgtGfj55b75J9po15CxejOH14jl/ZKDUCAUTJpC9fDnuXr2wJScTMmsWts8/h8JCCsaPp/Chh/xtC4cPJ2/6dMyGDXEsWIA9MRHPjTeSs2YNZoCzPqTmClm4EHfnzuTOn1+pYwSAZfv2MoVg69atOkaIiIhcAiM9Pb3S/zpLTEzkscceIyIigsTERDp37gwUjQIcMGAAO3fuZOTIkUyaNMnfZ8WKFbz66qs0bdqUTz/9tNT2jh8/Trdu3cjNzWXmzJn8/Oc/B8Dj8fD000+zZMkSunbtytq1a6vFPGFVLT8/nyNHjhAfH69TfUUug3JJ5PJZNm+mXt++nFm9moMNG1Y6n+wLFhD6hz+Q9cMP/mUhv/89IfPmkXn4cMUmZpVLYtmyhYh+/cheswavzqKoVmrT3yffMSIrKQlv8XeESsnOJjI+nvypUyl8/PGiZfn51OvShfyXXsL16KNXNF6pXWpTLokEm/Kp9rikq/oOGDCAJ598kjlz5tCvXz/69OmD0+kkOTmZjIwMevbsyYQJE0r1yczMZO/eveTn55fZXtOmTfm///s/nnjiCX7961/z/vvv06JFCzZt2sShQ4eIjo7m3XffrZNFPxERkdrEbNQI4+xZbF98gTchAfvHHxMybx6e665T0e8qM+PiyJ88GTMuLtihiJTLumMHhITgmDcPd/fuYLcT9sILeFu1wvXII8EOT0REpMap9Km+Pm+88Qbz58+nR48e/Pvf/2bNmjXExcUxceJEPv30U8LCwiq1vfvuu4+1a9cycOBADh06RGJiIh6Ph+HDh/PPf/7TPw+giIiI1Fzuu+7CNXgwzmHDCB8wADweXLfcovndqoDZuDGFw4djNm4c7FBEymXdvh1Pu3YUPPMM4YMGEXH77XjatCHn738PeMqwiIiIXNglneorVUtDbEWuDOWSyOW73FN9JYgyMrB98w3unj1B8+lVK7Xp79Nln+orchlqUy6JBJvyqfa45BF/IiIiIlJzWA4eJHzwYCwHDwY7FBERERGpIpc0x5+IiIiI1Cze664j84cfMKOigh2KiIiIiFQRFf5ERERE6gK7HTM2NthRiIiIiEgV0qm+IiIiInWAkZJC2KhRGCkpwQ5FRERERKqICn8iIiIidYBRUIDlhx8wCgqCHYqIiIiIVBGd6isiIiJSB3jbtiVnzZpghyEiIiIiVUgj/kRERERERERERGohFf5ERERE6gDLtm3US0jAsm1bsEMRERERkSqiwp+IiIhIHWDGxFDw3HOYMTHBDkVEREREqojm+BMRERGpA8zoaAqffTbYYYiIiIhIFdKIPxEREZG6ICsL6/r1kJUV7EhEREREpIqo8CciIiJSB1j27ydi4EAs+/cHOxQRERERqSI61VdERESkDvC2a0fWpk14mzULdigiIiIiUkVU+BMRERGpC0JD8bZuHewoRERERKQK6VRfERERkTrASE0l9IUXMFJTgx2KiIiIiFQRFf5ERERE6gAjOxvbP/+JkZ0d7FBEREREpIroVN8awmq1BjsEkVpBuSRyeUyrFW9UFNhsyqcaxtuuHdlffx3sMKQctSWffMcIs5Y8H6l5aksuiVQHyqfawUhPTzeDHYSIiIiIiIiIiIhcWTrVV0REREREREREpBZS4U9ERERERERERKQWUuFPRERERERERESkFlLhT0REREREREREpBZS4U9ERERERERERKQWUuFPRERERERERESkFlLhT0REREREREREpBZS4a8aW758OXfffTctW7akWbNm3HjjjcycOROXyxXs0ESqlMvlIjk5mZdffpmf/exntGjRgsaNG3Pt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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "ax.plot(x, y);\n", + "for q, t, s in zip(qr, [\"$X_a$\", \"mean\", \"$X_b$\"], [\"-\", \":\", \"-\"]):\n", + " ax.axvline(q, c='r', lw=1, ls=s)\n", + " ax.text(q, -0.01, t, color=\"r\")" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "13da581c-e016-4566-a657-37a52f185970", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.1499999999999999, 0.8999999999999999)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Check the probabilities for the regions delimited by Xa & Xb\n", + "norm.cdf(qr[0], loc=mean, scale=sdev), norm.cdf(qr[2], loc=mean, scale=sdev)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "7dd7b607-2d21-4354-b1d9-cbf238ab9c0f", + "metadata": {}, + "outputs": [], + "source": [ + "def plot_quartiles(ax: plt.Axes):\n", + " for q, s in zip(qr, [\"-\", \":\", \"-\"]):\n", + " ax.axvline(q, c='r', lw=1, ls=s)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "39d29de0-2c60-44e6-81a9-a2c0e3598909", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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rt5Rp7FRrs2bpUbr/3P0PIkel76RE2cZ/7Lar21VPgciAgAAXaHdScr+/ftr9OjRkqTXXnvN8vj69eu1d+9excXFaeLEiW2ac8qUKSHnq6ur08qVKyXJ0m275by3337btgS7Zb4Tz5OOJRRnzJihDz/88HiCsk+fPieN86KLLlJWVpaam5u1bNkyy+PLli2T1+tVv379dMEFF5x0LgAA0HZ/PdCsKq+1k++UvAS5TqdzBsKSa/t2pVx6qVzbtzsdCsJEqBXTy4tJZAMAEC3anaSUpAceeECS9Pjjjx9fNSkdW105d+5cSdJdd93Van/J5cuX68ILL9S0adMs882ePVuJiYlas2aNXnjhhePjgUBAc+fOVXV1tUaPHq2rrrqq1XkTJ05UQUGBqqurNXfu3FadshctWqS1a9cqOTlZ3/ve91qd19TUpO985zv64IMP2pyglCSXy6X77rtPkvTzn/+81UrS4uJi/eIXv5Ak3X///XK5OvStBQAANpaV2CcipuVT6h2NgkOHqm71agWHDnU6FISJb+bGK8bm9pqSbwAAokeH2uFNmTJFd999t55++mlNnDhR48ePV2JiotauXavq6mqNGTNGP/nJT1qdU1NTox07dtiWSffr109PPvmk7rjjDt1333166aWXNGDAABUWFqq4uFiZmZl69tlnLV07DcPQc889p0mTJmnx4sX6+OOPNXr0aJWUlOjTTz+Vx+PRU089paysrFbn/fKXv9SaNWskSTk5OfrpT39q+3WOHTtWt956a6uxu+++Wx999JFWrFihSy65ROPHj5ckrV27Vg0NDbr22mt15513tuv7CQAAQgsETa2wSUScEe/S2Ew6OEalpCQFvqrcASQpLdalK7Pj9M7e5lbjG4/6VFzrV35Kx7t8AwCA8NDhv+aPPPKIxowZo4ULF2rDhg3y+XwaOHCg7r//ft1zzz3tbvs+ffp05efna/78+Vq/fr02btyorKws3XXXXZo3b54yMzNtzxs6dKg+/PBDPfroo1q5cqVWrFih1NRUTZ06VXPnztWoUaMs51RWVh7/91/+8peTxnViktLtduvFF1/UCy+8oBdffFHr1q2TJA0fPlzf/e53NWvWLEsyFQAAdNzHh7w63BS0jE8eEC+3i7+50cg4eFCxzz8v7223yezb1+lwECam5CVYkpSStLykUT84J8WBiAAA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Wp1TU1OjHTt2qKnJuuKiX79+evLJJ3XHHXfovvvu00svvaQBAwaosLBQxcXFyszM1LPPPmt5wWMYhp577jlNmjRJixcv1scff6zRo0erpKREn376qTwej5566illZWVZnvPFF1/Uiy1dI/X3LlD333//8VWQWVlZevnll48fs3nzZv3rv/6rMjMzde6556p3796qqKjQli1bdOjQIUnSD37wA916660d+bYCABBRFu+0f8F+M6XeOE2uHTuUfNVVql2zRsFRo5wOBz3MVf3jlBHvUkVT63dhlhc36tExaUqK6dA6DwAAcAodblH3yCOPaMyYMVq4cKE2bNggn8+ngQMH6v7779c999zT7o5K06dPV35+vubPn6/169dr48aNysrK0l133aV58+YpMzPT9ryhQ4fqww8/1KOPPqqVK1dqxYoVSk1N1dSpUzV37lyNCnFju2/fPv3tb3+zjG/btu34v09stjNu3DjdcccdKioq0pYtW1RZWSmXy6W+ffvq5ptv1m233aaLL764XV83AACRaHeNXxsOW0sfLzwjRoPT6ICL0xMcNky1f/2rgoMHOx0KeqAYl6EbBiVowRetV/LW+U29WdrEnrsAAHQRo6qqih2g0SmamppUVlam3NxcOmoBp4nrCeHu3z+r0W+Kai3j88em6Y7h4bEvs6uoSClXXKEj77yjPb16cT0BnSCa/j61/I6wW7FbVOHVFcsPW86Z0D9Or38zo5siRDSLpmsJcBrXU/SgVgEAALSLaZp61abUO8YlXZef4EBEiDbG/v2K+8UvZOzf73Qo6KFG9onR8HTrqvD39zfrYEPA5gwAAHC6SFICAIB2+fiQVyV11hfp38qJV+94twMRIdoY1dWKWbJERnW106GghzIMQzNsyrqDpvSn3TTQAQCgK5CkBAAA7WK3ilKSZgxhnzZ0juBZZ6nus88UPOssp0NBD3bjoAQZNuOhmoYBAIDTQ5ISAAC0WZPf1BvFjZbxXnGGvpnDHkAAokdOskeX9YuzjG+p9GvTUZ8DEQEAEN1IUgIAgDZbWdakGq+15963ByYqzm235ghoP9fWrUq+4AK5tm51OhT0cDcPtt9nN9SKcgAA0HEkKQEAQJst3mX/wvxmm73bgI4yU1PlnzRJZmqq06Ggh5uan6AEmzdg/rS7Qf6g9Q0bAADQcSQpAQBAm1Q0BfTu3ibL+OBUty44I8aBiBCtzP791fSrX8ns39/pUNDDpcS4NDXPupVFeWNQaw80OxARAADRiyQlAABok9d3N8pvs3BoxuBEGQal3uhEjY3HSr0brfufAt0tVFMwSr4BAOhcJCkBAECbhCr1volSb3Qy1/btShk7Vq7t250OBdD4fnHqm2B92bS8pEm1vqADEQEAEJ1IUgIAgFPaXuXTZxXWbrZjs2KVn+JxICJEs+CQIap75x0FhwxxOhRAHpehGwZZ34xpDJhaXsxqXwAAOgtJSgAAcEqv0jAH3Sk5WYGLLpKSk52OBJAk3Ryi5HvxLpKUAAB0FpKUAADgpAJBU3+0eSEe55auzU9wICJEO+PgQcX99rcyDh50OhRAknRO7xiN6GVdNf7BgWaV1fkdiAgAgOhDkhIAAJzU2gPN2lsfsIxPyk1Qehy3Euh8RkWFYp99VkZFhdOhAMfZraY0JS2mgQ4AAJ2CVxYAAOCkXt5h/wL8OyHKH4HTFTznHNVu367gOec4HQpw3I2DEuUyrOOv7GyQaZrdHxAAAFGGJCUAAAipqjmoFaXWUu++CS5N6B/nQEQA4Iy+iW59w+b33p7agD4q9zoQEQAA0YUkJQAACOn1PQ1qtlZ6a8bgRHnslhQBncC1fbuSL79cru3bnQ4FaOWWoUm246FWnAMAgLYjSQkAAEIK9cL7lqGUeqPrmImJ8l90kcxEfs4QXiblxqu3zV68S4sbVesLOhARAADRgyQlAACwtbXSp8IKn2X8wjNidGZ6jAMRoacwc3PV9OijMnNznQ4FaCXWbejGQQmW8Xq/qSV7rFtjAACAtiNJCQAAbIVeRWlf7gh0muZmGSUlUnOz05EAFqFWkr9Cl28AAE4LSUoAAGDhC5p6dZf1BXeC29B1A62riIDO5Nq6VakjR8q1davToQAWBX1iVdDbupp8fblXu6r9DkQEAEB0IEkJAAAs3ilr0uEm6/5qU/PilRbL7QO6VnDQINUtWaLgoEFOhwLYCr2asr6bIwEAIHrwKgMAAFi8HKJskYY56BapqQpccYWUmup0JICtGwclyO79mv/d2aBA0Oz+gAAAiAIkKQEAQCuHGwN6p6zJMp6b7NZl/eIciAg9jXHokGL/+79lHDrkdCiArd7xbk0aEG8Z398Q1Pv72UsVAICOIEkJAABaeXVXg/w2C4G+MyRRLsPo/oDQ4xgHDyr+kUdkHDzodChASP8YoolYqKZjAADg5DxOBwAAAMKHaZp6JcQL7H8YQqk3ukewoEA1ZWVOhwGc1FXZceqX6NKBhtb7975Z2qjK5qB6xbEeBACA9uAvJwAAOK7oiE9fVFm7017WN1b5Kby3CQAt3C5DNw+2vnnjDUqv7WY1JQAA7UWSEgAAHBeqTPGWEGWNQFdw7dihpKuvlmvHDqdDAU4qVDOxP1DyDQBAu5GkBAAAkqQGf1B/sln9kxJjaFq+tUEE0FXM2FgFBw6UGRvrdCjASQ1Ji9HFmdaf08+P+LTpqM+BiAAAiFwkKQEAgCRpaXGTqr3WjjnXDUxQoodbBnQfMy9PjU89JTMvz+lQgFMKtZrypS/ruzkSAAAiG684AACAJOnFEC+ov0upN7qbzyejokLysRIN4e/YGzmGZfzVXQ1q9Fvf+AEAAPZIUgIAAG2v8ml9udcyfna6RxecEeNAROjJXFu2KHXIELm2bHE6FOCUUmJcum5ggmW82mtqWUmjAxEBABCZSFICAAC9+KV9k4dbhyXJMKwrhICuFMzPV/0rryiYn+90KECbzDzTvuR70XZKvgEAaCuSlAAA9HDNAVP/u9OapIxzSzMG27/wBrpUerr811wjpac7HQnQJheeEauz0z2W8fXlXn1ZxbYFAAC0BUlKAAB6uDdLGnW0OWgZvzYvQb3iuFVA9zMqKhT7/PPH9qUEIoBhGLp1mP3+vaFWqgMAgNZ45QEAQA/3wklKvQEnGHv3Kv6f/1nG3r1OhwK02YzBiYpzW8df2dmg5gANdAAAOBWSlAAA9GB7avxae6DZMj4k1aNxWbEORARIwVGjVHPkiIKjRjkdCtBmveJcujbf2kDnaHNQb9JABwCAUyJJCQBAD/bSDvumDreemUjDHABop5ln2q9AD7ViHQAA/B1JSgAAeihf0NTLO6wvnGNc0neG0DAHznHt2qXEb39brl27nA4FaJdLsmI1NM3aQGftgWbtqfE7EBEAAJGDJCUAAD3UX8qaVN5obZgzeUCCzkiw2VgN6Cam2y2lpBz7CEQQwzB065n2b/K8+KX9ynUAAHAMSUoAAHqoUC+YZ4Z4gQ10FzM/Xw0vvCAzP9/pUIB2+86QRMXYvMp6eWeDfEEa6AAAEApJSgAAeqC9dX69u8/aMCcv2a3x2XEORAR8TSAg1dcf+whEmIx4t6YMsDbQOdQY1NulTQ5EBABAZCBJCQBAD/SHHQ2yW9Dz3TOT5KJhDhzm2rRJaf37y7Vpk9OhAB0yaxgl3wAAtBdJSgAAehh/0LR9oew2pFuGUuoN55l5eWp49lmZeXlOhwJ0yGX94pSfYt1T9b19zSqppYEOAAB2SFICANDDvF3WpP0N1oY538yJV79EGpXAeWavXvLdcIPMXr2cDgXoEJdh6NYzkyzjpqRF21lNCQCAHZKUAAD0MM9ts3+BfMdw6wtqwAlGZaViXn1VRmWl06EAHXbLkER5bHbPeGlHg5oDNNABAOBEJCkBAOhBdlb7tGa/tWFOfopbV/WnYQ7Cg1FSosS775ZRUuJ0KECHZSW6NTXP2kCnoimoZcWNDkQEAEB4I0kJAEAP8v9ClBnePoyGOQgfwYICVZeXK1hQ4HQowGm5PcQK9VAr2gEA6MlIUgIA0EM0+IN6ZUeDZTzOTcMchBmXS4qLO/YRiGCX9o3VsDSPZfzjQ15tPupzICIAAMIXd34AAPQQb+xpVJXXug/a9PwE9Yn//+3deXhTVfoH8O/N1i3dS0s3KEvZKVCtgiAgitJhcRkUtxkZFZVRBxAd8YcLLow6KqKjAgMKAy7oKGtFBHEoigUUKGWVza6U0r1N0zTLvb8/SiolN6UtbW6Sfj/P0yfNOffcvFc5Te6bs3DDHHIfQnY2/O+9F0J2ttKhEF0WQRCcrvf7EUdTEhERNcIkJRERUQfh7IaYG+aQuxFEETCb6x+JPNyUnv7wl9lB5/NTRlSZ+W+ciIjIjklKIiKiDmB/iRn7ShynFg4M0yKlk06BiIicE7t3h/GLLyB27650KESXLVinwh3dHTfQqbFK+PyU4xIcREREHRWTlERERB2As00aHugTAIEb5hARtStnG+h8dKwGkuS4DAcREVFHxCQlERGRl6uoE/HV6VqH8iCtgMkyo3uIlKbKzERwSAhUmZlKh0LUJpLCdbg60nHU+tEKK34qMisQERERkfthkpKIiMjLfXrSiFqb40idKT39odfyowC5Hyk+HsZ334UUH690KERtxtloSmcj3YmIiDoa3pkQERF5MUmSsPxXbphDnkUKD4flz3+GFB6udChEbebmrn4I93G8/dqQXYsio02BiIiIiNwLk5RERERebPuZOpyotDqUD++sQ58QrQIRETVDRQU0GzYAFRVKR0LUZnw1Av7Uy9+h3CoBK49zNCURERGTlERERF5s8VEnoyh7cxQluS9VdjYC/vxnqLKzlQ6FqE1N7R0Aua3Klv9aA4vIDXSIiKhjY5KSiIjIS52usmJLnsmhvLOfChO6csMccl/igAGo+u03iAMGKB0KUZtKCNRgbJyPQ/kZo4iN2Y4bnBEREXUkTFISERF5qX8fNUBuXM79fQKgU8uN5SFyExoNpNBQQKNROhKiNvdQX71s+eIjnPJNREQdG5OUREREXqjaIuKTE0aHcp2qfrohkTsTsrPh99BDEDjdm7zQmFgf9AxyTMDvKTZjX7FZgYiIiIjcA5OUREREXuizE0ZUWxzHUd7WzQ+RfmoFIiJqPsFqhaqgAILVcdMnIk+nEgQ83E/+y6LFRw0ujoaIiMh9MElJRETkZURJwr+dbJjzSD/5aYZE7kTs2RM1X38NsWdPpUMhahd39vRHkNZx2Y21v9WiyGhTICIiIiLlMUlJRETkZb4vqMPJKscRaEMjdRgcoVMgIiIiulCgVoV7e/k7lFvE+p2+iYiIOqLLSlKuW7cO48ePR9euXRETE4Phw4fjnXfegcViadX5MjMzcd999yExMRFRUVFISkrCU089heLi4ibbnTt3Dk899RSSkpIQGRmJxMRE3HfffcjMzHTaZufOnXjrrbfwpz/9CQMHDkRISAhCQkKQkZFxyThFUcTy5ctx/fXXIy4uDnFxcbj++uuxYsUKSJLcFgVERESus+SI/HRBZ9MLidyNKisLQTExUGVlKR0KUbt5qK8ecluYffRrDepsvKcgIqKOp9VJyjlz5mDq1KnYvXs3rrjiClx//fXIz8/HCy+8gEmTJqG2trZF51u/fj1uuOEGrF+/HvHx8fjDH/4AlUqFpUuXYvjw4Th9+rRsu5MnT2L48OFYunQpVCoVxo8fj/j4+Ibzbdy4Ubbd008/jZdffhkbN25EXl5es+O02Wy47777MGvWLBw9ehQjRozAiBEjcOTIEcycORN/+ctfIIpii66diIiorZystGBrQZ1DeYy/ChO6+ikQEVHLSdHRMD3/PKToaKVDIWo3CYEajIv3dSg/VytiXXbL7qWIiIi8QauSlGlpaVi8eDH0ej2+++47rFmzBqtWrcK+ffvQr18/ZGRkYP78+c0+X2FhIaZPnw6r1YqFCxfi+++/x/Lly7F3717ccccdOHfuHB588EGHUYqSJOH+++9HcXExpkyZgr1792L58uX4/vvvsXDhQlitVkyfPh1FRUUOr3nddddhzpw5+Oyzz3DkyBHEx8c3K9YlS5Zg48aNiImJwU8//YTVq1dj9erVyMjIQHR0NNatW4dly5Y1+9qJiIja0hIna1E+0EcPrUpuzA6R+5E6dYL5kUcgdeqkdChE7eoRZxvoHDFwhhYREXU4rUpSLliwAAAwc+ZMDB48uKE8PDwcb731FgBg6dKlqKysbNb5Fi1aBKPRiNGjR2Pq1KkN5Wq1GgsWLEBQUBD27duH77//vlG7rVu3IisrC8HBwXjrrbegVv++W+nUqVMxatQoGAwGLF682OE1X375ZcyZMwepqamIiYlpVpyiKOKdd94BAMybNw8JCQkNdQkJCZg3bx4A4O233+ZoSiIicrlKs4jPThgdyn3UwH29Hdc+I3JbVVXQbNsGVFUpHQlRuxoZ7YO+IRqH8v0lFvxcbFYgIiIiIuW0OEl55swZ7Nu3DwAwefJkh/phw4YhLi4OdXV12Lp1a7POmZaW5vR8er0eqampAOAwddveLjU1FXq9426l9vM5m/LdUnv27EFRURF8fHwwadIkh/pJkyZBp9OhsLAQv/zyS5u8JhERUXN9csIIg9Vx5M3k7v6I8FXLtCByT6rTpxHwxz9C5WS5HyJvIQgCHu7neB8DAIuPcAMdIiLqWFqcpMw6v4B5aGhoo5GEF7KPrsxqxmLn1dXVDetNDhkyRPYYe/nF57M/v1S7U6dOoabm8t/k7a/Xp08f+Po6rh/j5+eHPn36yMZKRETUnqyihEVONsx5qC83zCHPIvbrh6rDhyH266d0KETt7o4efgjROS7HsT67FnkGqwIRERERKcNxbsEl5OTkAADi4uKcHhMbG9vo2Kbk5uY2/O7snM7Od6lY7OWSJCE3Nxd9+/a9ZDxNae61Z2VlNevaTSbTZcXjbsxmc6NHImo99idqqXU5dcgz2BzKh3bSoHeA6HXvOc2hOd9/LBYLAPYnjxMeDogi0AH/7bozb3p/0lxwLVYF/52pANzTwwfvH20cg00C3j9YiXlD+EWTN/KmvkSkNPYn9yU3wK8pLU5SGgz1ozQCApy/WdqnXldXVzf7fE2d09n5LhXLheXNieVS2vraz5w5A5vN8YbS08ltVERErcP+RM0hScC7WT4AHKd0T46oQV5ex1zXz7+oCOEAysrKgMhI9icPojt7FtEffYTC+++HuXNnpcMhGd7Qn+x/I4qKimDMy1M0lnEBAhbDFzY0HlG56kQtpoSUQd/iuzbyFN7Ql4jcBfuTe1Gr1ejevXuL2vDtTkHN3bDHU5jNZhQVFSEqKgo6nU7pcIg8GvsTtcSucxYcMTgmIrsHqnD3oGiohI65q7emvBwAEBYWBiPA/uRB1CYTgk+fhhASAlt8vNLh0AW86f3J/jciKioKVoX/ncUDmFRcjbU5jUcB1dgEbDdFYHpfP2UCo3bjTX2JSGnsT96jxUlK+0jBptZ4tI84DAwMbPb57OcMDg5u9vn0ej3Ky8udxnJheXNiaW6sbXXtLR326il0Op3XXhuRq7E/UXP8+4T8+9JjA4Lg79dxb2xV5z+karVaAOxPHmXgQBjT06EFoFU6FpLlDf3J/jdCp9NB4wbXMiNJhbU5xQ7ly47X4bFBIdCqOuYXTt7OG/oSkbtgf/J8Ld44p0uXLgCAgoICp8fY6+zHNiX+gm8t8/PzW3Q++3Nn7ezlgiA0ep3WutTrNRUrERFRezhZacE3uY5rqYX5qHBnz46boCQi8jSDI3S4trPjCKACow1rf6tVICIiIiLXanGSMikpCUD9+k7Z2dmyx2RmZgIABg0adMnzBQUFNcxR379/v+wx9vKLz2d/fql2PXr0aDRis7Xsr3fs2DHZDQhqa2tx7Ngx2ViJiIjawweHayDJlD/QJwD+mha/zRO5BdWhQwjs0QOqQ4eUDoXIpR4fID8b671DBkiS3F97IiIi79Hiu5fY2FgkJycDAL788kuH+oyMDOTn58PHxwdjx45t1jknTJjg9HwGgwGbN28GAEycOFG23TfffCM7Bdt+vovbtdZVV12FqKgo1NXVYcOGDQ71GzZsgNlsRnR0NK688so2eU0iIiJnSk02fHrS8f3PRw1M68vdYMlzSZ06wfzoo5A6dVI6FCKXuiHOB72DHVfkyiqzYEchd60lIiLv1qohFk888QQAYOHChQ2jJoH60ZWzZ88GAEybNq3R+pIbN25ESkoKJk2a5HC+6dOnw9/fH9u3b8d//vOfhnKbzYbZs2ejsrISycnJGDNmTKN2Y8eORVJSEiorKzF79uxGO2WvWLEC6enp0Ov1eOSRR1pzmQ5UKhVmzJgBAJg3b16jkaTZ2dl48cUXAQCzZs2CSsXRK0RE1L4+PFYDk82xfEoPf0T6Oe70TeQppKgo1D3xBKSoKKVDIXIplSDg0QHyM8DeP1zt4miIiIhcq1W7e0+YMAEPP/wwlixZgrFjx2LUqFHw9/dHeno6KisrMXToUMydO7dRm6qqKpw4cUJ2mnR0dDQ++OADPPDAA5gxYwZWrVqFLl26YN++fcjOzkZkZCSWLVsG4aLdSQVBwIcffojU1FSsXr0au3btQnJyMnJycrB3715oNBosWrQIUTIfcFeuXImVK1c2PLdvVT9r1qyGqeFRUVH45JNPGrV7+OGH8dNPPyEtLQ3XXHMNRo0aBQBIT0+H0WjEzTffjAcffLAV/1WJiIiaz2SVsPSo/IY5j/a//CVOiBRlMEB98CBsAwcCbbBkD5EnuaO7P17ZV4VztWKj8i35dThWYUGfEG4nRURE3qnVw/1ef/11LF++HCkpKdizZw+2bt2K2NhYzJs3Dxs2bIBfC3cTveWWW7Bt2zZMnDgR2dnZSEtLg81mw7Rp0/Djjz82rFt5scTEROzcuRPTpk2DzWZDWloacnJyMHHiRHz33XdOp3oXFBTgl19+afgxm+unTxw7dqyhLCsry6GdWq3GypUr8fbbb6N3797YsWMHduzYgT59+uDtt9/GihUrOIqSiIja3RenjSg2iQ7lN8X5oDdvYMnDqU6ehD41FaqTJ5UOhcjlfDUCpvWRX7Lj/UMGF0dDRETkOkJFRQVXYKY2YTKZkJeXh/j4ePj6+iodDpFHY3+ipthECVetLcKpKse53hvGRWBktI8CUbkfVWYmAkePRumWLfgtNJT9yZOYTFDl5UGMjwf4/8yteNP7k/1vRPX27RAHD1Y6nEbKTDb0/6IItbbGt2o6FXDw9s6I8ueSHp7Om/oSkdLYn7wHh/wRERF5mLRck2yCMilMi2s76xSIiKiN+fpCTExkgpI6rDBfNe5N9HcoN4vAoiMcTUlERN6JSUoiIiIPIkkSFmTJb54wc6DeYf1mIk8kFBTA9//+D0JBgdKhEClmen895P6if3isBhV1jst9EBEReTomKYmIiDzI/87U4UCpxaG8W6AakxJath40kbsSqquh+f57CNXczZg6ru5BGkxKcBxNXG2RsOyY/MZpREREnoxJSiIiIg/ibBTljIGB0Kg4ipK8g9inDwy7dkHs00fpUIgUNWtgoGz5osMGGK0cTUlERN6FSUoiIiIP8fM5M348a3Yo7+ynwl09HdcuIyIizzY4QofrYx03QyutE7HyuFGBiIiIiNoPk5REREQe4u2D8qMo/9pfDx81R1GS91AdOYLAgQOhOnJE6VCIFDcrSX405XuHDDBftPs3ERGRJ2OSkoiIyAMcLbdgU67JoTxYJ+AvfQIUiIio/UihoTBPmQIpNFTpUIgUNzxKh6sjdQ7l+TU2fHGaoymJiMh7MElJRETkARY6GUU5ra8egVq+nZN3kaKjUffss5Cio5UOhUhxgiBgVpJetu6dgwbYRI6mJCIi78C7GiIiIjeXU23Fl6drHcr91AIe6cdRlOSFjEaoMjMBI0eJEQHATXG+6BeqcSg/UWlFmswoeyIiIk/EJCUREZGb+9chA+SWHftTL39E+KpdHxBRO1MdP47A0aOhOn5c6VCI3IIgCHjCydqUC7KqIUkcTUlERJ6PSUoiIiI3dqbGhpXHaxzKNQLw2AD56X9Enk7s1QvV27dD7NVL6VCI3MYtCX5ICHT8YupAqQXbCuoUiIiIiKhtMUlJRETkxhYerIZZdCyf3N0PXfSOU/+IvIK/P8TBgwF/f6UjIXIbGpWAGQPkR1P+M5OjKYmIyPMxSUlEROSmCo02/EdmFKVKAGYPkr9RJfIGQmEhfF55BUJhodKhELmVu3r6o7Of4y3cnmIz/neGoymJiMizMUlJRETkpt49WI06m2P5H7v5ITFY6/qAiFxEKC+H7vPPIZSXKx0KkVvx1Qj420D5L6le52hKIiLycExSEhERuaEiow3Lf3UcRSkAeJKjKMnLif36ofrgQYj9+ikdCpHb+UvvAETKjKbcfc6M7RxNSUREHoxJSiIiIjf07iEDTDKjKG/r5ofeIRxFSUTUUflpBMxwMpryNY6mJCIiD8YkJRERkZsprrXho2PyoyifGsxRlOT9VMeOQT90KFTHjikdCpFb+ktvf6ejKdMLOZqSiIg8E5OUREREbuZfhwyotTmOhLklwQ99OIqSOgApMBDWMWMgBTIpTyTHX6PC3wboZete28/RlERE5JmYpCQiInIjJSYblsmMogS4FiV1HFJsLEz/+Aek2FilQyFyW/f3CUAnX8fbuV0cTUlERB6KSUoiIiI38u5BA4xWxxEwk7r6on8YR1FSB2EyQXXiBGAyKR0Jkdvy16jwt4Hyoym50zcREXkiJimJiIjcxFmjDUuPyo+i/PvgIBdHQ6Qc1bFjCExJ4ZqURJdwf2/50ZQZRRxNSUREnodJSiIiIjfx1oFq2bUoJ3TxxQCOoqQOROzZE4ZvvoHYs6fSoRC5tQCt87UpX9lXxdGURETkUZikJCIicgM51VasOC6/o/f/JXMUJXUwej1sw4YBevnkCxH97v4+AYiQGU35S7EF3+RxyQQiIvIcTFISERG5gdczq2ERHcsnd/dDv1COoqSORSgqgs+CBRCKipQOhcjtBWhVmOlkbcpX9lbBJnI0JREReQYmKYmIiBR2vMKC1aeMDuVqAXhmCEdRUscjFBdD9/77EIqLlQ6FyCM80EePGH/HW7sjFVZ89VutAhERERG1HJOURERECnt1fzXkBrrcm+iP7kEa1wdEpDBxwABUnzoFccAApUMh8gh+GsHpBmv/2F8FC0dTEhGRB2CSkoiISEEHSs1Ym+04ykWnAp4aFKhARERE5InuSfRH90C1Q3l2tQ0fH3ccrU9ERORumKQkIiJS0D/2VcmW398nAHF6jqKkjkl1/DgCrrsOquPHlQ6FyGNoVYLTjdb+eaAKtVaOpiQiIvfGJCUREZFCdhXV4dv8Oodyf42AJ5I4ipI6LsnPD7ZBgyD5+SkdCpFHua2bH/qHOn7BVWgUseyoQYGIiIiImo9JSiIiIgVIkoTnf5YfRflIvwBE+jlO2SPqKKT4eJgWLoQUH690KEQeRSUIeO4K+dGUCw5Wo9IsujgiIiKi5mOSkoiISAEbc0zYU2x2KA/SCfjbAI6ipA7ObIZQUACYHfsIETXtpjhfXNVJ51BeXifh3YPVCkRERETUPExSEhERuZhFlPDi3krZupkDAxHiw7dn6thUR44gqH9/qI4cUToUIo8jNDGa8v3DBuQbrC6OiIiIqHl4F0RERORiK36twakqm0N5rL8a0/vpFYiIyL2I3buj5quvIHbvrnQoRB7p2mgfjInxcSg32YD5+zmakoiI3BOTlERERC5UZRbxeqb8DeLc5ED4aQQXR0TkhoKCYL3+eiBIfjQYEV3aSynBkHtHWX3SiKxSLqVARETuh0lKIiIiF3r3oAElJseNC/qHajClh78CERG5H6G4GLrFiyEUFysdCpHHGhCmxV09Hd9XJADP/VwFSZJcHxQREVETmKQkIiJykTM1Nrx/2CBb91JKMNQqjqIkAgChsBC+L70EobBQ6VCIPNrc5CD4qR3fW9IL6/BdQZ0CERERETnHJCUREZGLvLq/CrU2x5Ero2Pk1w4j6qjEpCRUnTkDMSlJ6VCIPFpsgBqP9pdf6/j5nythFTmakoiI3AeTlERERC5wqMyCT04aHcoFAC9eGQRB4ChKIiJqezOS9Ojk63jbd7TCik9l3peIiIiUwiQlERFRO5MkCc/sroDcgJU7evhhULjO9UERuTHVyZMIGD8eqpMnlQ6FyOMFalWYMyRQtm7+vioYLI7rJBMRESmBSUoiIqJ2tjHHhB/OOu6k6qOuXy+MiBqTNBqIsbGQNBqlQyHyCn/uFYBewY79qahWxIKsagUiIiIicsQkJRERUTsyWSU8+3OlbN1j/fXoomcShuhiUkICav/9b0gJCUqHQuQVtCoB866U/1LsvUMGnK6yujgiIiIiR0xSEhERtaP3DxuQa7A5lHf2U2FWkvz0O6IOz2qFUF4OWJk4IWorqfG+uLaz4/IiZhGYu0f+yzQiIiJXYpKSiIionZypsTmdRjfvymDotXwbJpKjOnQIQd26QXXokNKhEHkNQRDw6tUhUMns0/ZNngnbCkyuD4qIiOgCvDsiIiJqJy/urUSN1XG3nCs7aXFHDz8FIiLyDGJCAmpWroTI6d5EbWpAmBYP9A6QrZuzuxJmm8wOb0RERC7CJCUREVE7+PmcGZ+fqpWte+3qEKgEmaEsRFQvJATWSZOAkBClIyHyOv+XHIRQH8f3oBOVVvz7qEGBiIiIiOoxSUlERNTGbKKEp3dXyNbd2cMPV3ZyXBOMiH4nlJZCu3IlhNJSpUMh8jqhPio8myy/ic4/M6txrtZxHWUiIiJXYJKSiIiojf3nuBH7SiwO5QEaAS9cGaxARESeRcjLg//f/gYhL0/pUIi80tReAegfqnEor7JIeGlvlQIRERERMUlJRETUps7V2vDiXvldUmcPCkS0v9rFERF5HnHwYFRWVEAcPFjpUIi8klol4PWhIbJ1H58wYndRnWsDIiIiApOUREREber5nytRaXbceKBHkBp/7adXICIiIiJHIzr74NYE+U3cZmVUwCJyEx0iInItJimJiIjayI9n67DayWY5bwwNga+Gm+UQNYfq9Gn433EHVKdPKx0KkVd7KSUIfmrH96Yj5VYsPsxNdIiIyLWYpCQiImoDZpuEJzMqZOtuTfDDmFhf1wZE5MEklQrQ6eofiajdxOs1eHpwoGzdq5nVyDNYXRwRERF1ZPzkR0RE1AYWHTHgWIXjzZxeI2D+Vdwsh6glpIQEGD/+GFJCgtKhEHm9Rwfo0TfEcRMdo1XC07vl11gmIiJqD0xSEhERXaY8gxWvZ1bL1j2THISYAG6WQ9QiogjU1dU/ElG70qoEvDUsRLZuU64JX+fIL2NCRETU1pikJCIiugySJGF2RgWMVscNBvqHavBw3wAFoiLybKqsLARHRUGVlaV0KEQdwjWdfXBvor9s3dO7K2Gw8AsDIiJqf0xSEhERXYYvT9diS36dbN2CYSHQqLhZDlFLSV27wrhkCaSuXZUOhajDePHKIIT5ON4e5tfY8Op++dkCREREbYlJSiIiolYqMdkwx8l6Xfcm+uPqKB8XR0TkHaTQUFimTIEUGqp0KEQdRrivGi+nBMnWLTpiwN5is4sjIiKijoZJSiIiolZ6ZnclSuscp8BF+qnwcgo3yyFqLaG8HNovv4RQXq50KEQdyt09/XFNlM6hXJSAx34sR53NcWkTIiKitsIkJRERUSt8m2fCf0/LbybwxtAQhMpMmSOi5hFycuD/4IMQcnKUDoWoQxEEAW9fEwKdzFvY0Qor3sritG8iImo/vIMiIiJqoSqziNkZFbJ147v4YlJXX9cGRORlxIEDUVlQAHHgQKVDIepweodo8dSgQNm6BQeqcajM4uKIiIioo2CSkoiIqIVe2luF/BqbQ3mQTsCbw0IgCNwsh+iyqNVAQED9IxG53MykQAwM0zqUW89P+7aKnPZNRERtj0lKIiKiFthRWIdlx2pk615JCUa0P5MqRJdLyM6G/333QcjOVjoUog5JqxLw3ogQqGW+c8ssteC9QwbXB0VERF6PSUoiIqJmqjSL+OsP8ht5XNtZhz8l+rs4IiLvJNhsQHV1/SMRKWJQuA4zB+pl617NrMKvFZz2TUREbYtJSiIiomb6vz2VstO8/dQC3hkeymneRG1E7NEDxjVrIPbooXQoRB3aU4OC0CtY41BeZwMe3lEOC6d9ExFRG7qsJOW6deswfvx4dO3aFTExMRg+fDjeeecdWCyt+1YtMzMT9913HxITExEVFYWkpCQ89dRTKC4ubrLduXPn8NRTTyEpKQmRkZFITEzEfffdh8zMzCbbmc1mLFy4EMOHD0dMTAy6du2K8ePHY/369U7bTJ8+HSEhIU3+mEym1lw+ERG5sW9ya/HJCaNs3XNXBKF7kONNHBERkSfz1dRP+5b7Ci6z1IJ/ZnK3byIiajutvqOaM2cOFi9eDI1Gg5EjRyIgIAA7duzACy+8gM2bN2PNmjXw8/Nr9vnWr1+PBx54AFarFcnJyejatSv279+PpUuXYv369di8eTO6d+/u0O7kyZNITU1FcXExEhISMH78eOTk5GD9+vX4+uuvsXz5ckycONGhndFoxK233ordu3cjODgY119/PWpqarBjxw7s3LkTjz32GF555RWn8Q4dOhTdunWTrVNzkXciIq9SarJhxk8VsnXXdtbhkX4Brg2IyMupMjOhv/56GLZtgzh4sNLhEHVoV0X6YHr/AHxw2HE95reyqnFjnC9SInUKREZERN6mVUnKtLQ0LF68GHq9HmlpaRh8/sNjaWkpJk6ciIyMDMyfP7/JJN+FCgsLMX36dFitVixcuBBTp04FANhsNkyfPh1ffPEFHnzwQWzbtq3RVDpJknD//fejuLgYU6ZMwQcffNCQIFyxYgVmzpyJ6dOn46qrrkJUVFSj13zppZewe/du9OvXDxs3bkR4eDiA+tGcEyZMwHvvvYcRI0Zg3LhxsjH/6U9/wj333NOS/2xEROSBJEnCExkVOFcrOtQFagW8f20oVJzmTdSmpLg4mN58E1JcnNKhEBGA55KDsS2/Dr9WWhuVixLw8I4y/HBzJAK0XEmMiIguT6veSRYsWAAAmDlzZkOCEgDCw8Px1ltvAQCWLl2KysrKZp1v0aJFMBqNGD16dEOCEqgfkbhgwQIEBQVh3759+P777xu127p1K7KyshAcHIy33nqr0QjGqVOnYtSoUTAYDFi8eHGjdhUVFfjoo48arsWeoASAwYMHY8aMGQDQcC1ERNRx/fd0LdZnyy/j8Y+rgtFFz2neRG1NioiA+S9/gRQRoXQoRATATyNgychQaGS+kztdbcNzP1e5PigiIvI6LU5SnjlzBvv27QMATJ482aF+2LBhiIuLQ11dHbZu3dqsc6alpTk9n16vR2pqKgBg48aNsu1SU1Oh1zvuPGc/38XttmzZArPZjLi4OAwdOtSh3e233w4A+Pnnn1FYWNisayAiIu+TXW3FkxkVsnXj4n1xL3fzJmofFRXQbNoEVFQoHQkRnTc4Qoc5Q4Jk6z76tQZb8rguPxERXZ4WJymzsrIAAKGhoUhISJA9xj660n5sU6qrq3H69GkAwJAhQ2SPsZdffD7780u1O3XqFGpqaprdLiEhAaGhoQCAgwcPyh7zww8/YO7cuZgxYwZefPFFbNy4EXV1dbLHEhGR57GIEh5ML0OVxXHn0jAfFd65JoS7eRO1E1V2NgLuvhuq7GylQyGiC8wcqMdVneTXn3z0x3IUGW0ujoiIiLxJi+eo5eTkAADimlgjKDY2ttGxTcnNzW343dk5nZ3vUrHYyyVJQm5uLvr27dvsa4iJiUF5ebnTa1i9erVDWefOnfHee+/hhhtucHreC3nbLuBms7nRIxG1HvuT8v5xwIhfii2yda9f6Y9glQUmk3w9uQfN+f5jsdT/f2J/8iA9eqD20CFIwcGAl31e8nTe9P6kueBarPx31mzvXO2P6zebYWy8PCWKTSIeSi/FZ6MDuVZzM3hTXyJSGvuT+/L19W3R8S1OUhoMBgBAQIDznUztU6+rq6ubfb6mzunsfJeK5cLyC9tezjUMGDAAr732GkaNGoW4uDiYTCYcOnQIr732Gnbv3o277roLa9aswbXXXuv03HZnzpyBzeZ93zYWFRUpHQKR12B/UsaeChX+dcQHgONN1sRIKwYL55CX5/q4qGX8i4oQDqCsrAyIjGR/8kS1tUpHQE54Q3+y/40oKiqCkX/Um00DYEaCGq+e9HGoSz9rwfyMs5gab3VsSLK8oS8RuQv2J/eiVqvRvXv3FrXhav8t9OijjzZ6HhgYiOuuuw6jR4/GPffcg02bNuGZZ57Bjz/+eMlzxcTEtFeYijCbzSgqKkJUVBR0OvlpIETUPOxPyikxiXhpbwUkOE7z7hGowsKRkQjQcoSIJ9CUlwMAwsLCYATYnzyIKjcX+jffhOHJJyF26aJ0OHQBb3p/sv+NiIqKgjU+XuFoPMvf4iTsra3GlgLHGQWLc3UYlxiBlE5aBSLzHN7Ul4iUxv7kPVqcpLSPMLxwjceL2UcqBgYGNvt89nMGBwc3+3x6vR7l5eVOY7mw/MK2bX0NACAIAp555hls2rQJhw4dQn5+fpPTyYGWD3v1FDqdzmuvjcjV2J9cS5QkzP6hFEW1jglKnQr46LpwhAfyg4+nUJ3/kKrV1t8osz95DpUgQJubC19BgMj/Z27JG/qT/W+ETqeDxsOvRQmLR+owYv05nDGKjcptEjA9owY/3hyJEJ8Wb4HQ4XhDXyJyF+xPnq/F7xpdzn+bXVBQ4PQYe12XZnzzHX/Bt5b5+fktOp/9ubN29nJBEBq9zqXaAfVTseVesym9e/d2aE9ERJ7j3YMGfJsvvwnavCuDMSicCUoiVxATE1GzeTPExESlQyEiJ8J81Vg2KgwqmckF+TU2PPZjOSTJ8Us/IiIiZ1qcpExKSgJQv75TtpMdFzMzMwEAgwYNuuT5goKCGuao79+/X/YYe/nF57M/v1S7Hj16NBqxeal22dnZKD8//cN+vc1RVlbW8PuFr0dERO5vR2EdXtpXJVt3Y5wPpvdzvo4xERFRR3RNZx/MGSw/8ywt14QlR53PXCMiIrpYi5OUsbGxSE5OBgB8+eWXDvUZGRnIz8+Hj48Pxo4d26xzTpgwwen5DAYDNm/eDACYOHGibLtvvvlGduq2/XwXt7vxxhuh0+mQn5+PXbt2ObT773//CwBISUlBdHR0s64BAL766isA9YnXRH7zT0TkMQqNNjywvQyizICPKD8V3h8RCoE7lRK5jCorC0Hx8VBlZSkdChFdwuykQFzbWX6mwbN7KpFRJD9DgYiI6GKtWiTkiSeeAAAsXLiwYdQkUD+ScPbs2QCAadOmNVpfcuPGjUhJScGkSZMczjd9+nT4+/tj+/bt+M9//tNQbrPZMHv2bFRWViI5ORljxoxp1G7s2LFISkpCZWUlZs+e3Win7BUrViA9PR16vR6PPPJIo3YhISG4//77AQCzZ89uNAIyMzMT77zzTkPdhbKysrBp0yZYrY13qxNFEStXrsTLL78MAHjooYca1r8iIiL3ZhEl3L+9DMUm0aFOJQBLR4Whk59agciIOi6pc2eYnn4aUufOSodCRJegVgn496gwRPg63lpaJWDq/8pw1miTaUlERNRYq3b3njBhAh5++GEsWbIEY8eOxahRo+Dv74/09HRUVlZi6NChmDt3bqM2VVVVOHHiBEwmk8P5oqOj8cEHH+CBBx7AjBkzsGrVKnTp0gX79u1DdnY2IiMjsWzZModRLIIg4MMPP0RqaipWr16NXbt2ITk5GTk5Odi7dy80Gg0WLVqEqKgoh9d8/vnnsW/fPuzZswfJyckYOXIkjEYj0tPTYbFY8Oijj2LcuHGN2uTm5uLee+9FSEgIBg0ahMjISFRWVuLIkSMN61tOnjwZc+bMac1/ViIiUsCLv1Qho8gsW/dcchBGRvu4OCIikiIjYX7sMaXDIKJmivZXY/G1oZi8tdShrqhWxF+2l2HDuAho5RawJCIiOq/V2629/vrrWL58OVJSUrBnzx5s3boVsbGxmDdvHjZs2AA/P78Wne+WW27Btm3bMHHiRGRnZyMtLQ02mw3Tpk3Djz/+2LBu5cUSExOxc+dOTJs2DTabDWlpacjJycHEiRPx3XffOUz1tvP390daWhpeeOEFxMTEYOvWrdizZw9SUlKwYsUKzJ8/36HNgAEDMH36dPTt2xcnTpzAxo0bkZ6eDgC4+eab8cUXX2DZsmXQaFqV+yUiIhdbn12L9w4bZOtS430xYyDXFyZSRFUV1Nu3A1Xy68QSkfu5Ic4Xf3eyPmVGkRnP7ql0cURERORphIqKCm65Rm3CZDIhLy8P8fHx8PX1VTocIo/G/tT+skrNGLepBEar49tgQqAa2ydGIsSn1d/lkRtQZWYicPRolG7Zgt9CQ9mfPIj9/1319u0QBw9WOhy6gDe9P/HfWdsTJQlTtpZia4H8OpRLR4bi9h7+Lo7KPXlTXyJSGvuT9+DdFxERdTjFtTbcva1MNkHpowb+c10YE5REChL79kXVgQMQ+/ZVOhQiagGVUL8+ZVe9/FrOf9tZgcwS+SVWiIiIeAdGREQditkm4c//K0N+jfwi/m8MDcGgcPldSonIRXx8IHXtCvhwTVgiTxPqo8KqMWHwlclT1tok3L2tFIXcSIeIiGQwSUlERB2GJEl4aleF041yHuwTgD/3CnBxVER0MSEvD75PPgkhL0/pUIioFZLCdVh4Tahs3RmjiLu3lcJoFV0cFRERuTsmKYmIqMNYerQG/zlulK0b0VmHV68OdnFERCRHMBqh2bMHglG+vxKR+7uzpz+m9ZX/4m9/iQV//aECosTtEYiI6HdMUhIRUYewOa8Wc5zsLNpVr8Z/rguDViW4OCoikiP27g3Djh0Qe/dWOhQiugz/uCoYo2Pkl21Yl12L1zOrXRwRERG5MyYpiYjI6+0vMeP+7eUQZQZsBGgEfHp9OMLlFs8iIiKiVtOqBKwYHYaeQRrZ+tczq/HlaY6YJiKiekxSEhGRV8uptmLKd6WyO3kDwJKRoegfpnVxVETUFNWhQwjs3RuqQ4eUDoWILlOIjwqf3xCOEJ38bIW//lCOHYV1Lo6KiIjcEZOURETktSrqRNyxtRTnauUX538uOQgTuvq5OCoiuhQpIgLmBx+EFBGhdChE1AZ6BGuwckw4NDJ5SrMI3LutFAfLLK4PjIiI3AqTlERE5JXqbBLu+b4Uv1ZaZevv6+WPJ5L0Lo6KiJpD6twZdU89BalzZ6VDIaI2MjLaB28OC5Gtq7JIuH1LCXKq5d+ziYioY2CSkoiIvI5VlPDA9jLsPGuWrb8h1gdvDQuBIHCjHCK3ZDBAvWcPYDAoHQkRtaGpvQPwWH/5LwjP1oqYvLUUZSabi6MiIiJ3wSQlERF5FVGS8LedFUjLNcnWDwzTYvl1YdBwJ28it6U6eRL6G2+E6uRJpUMhojb2UkoQbu8uv9TKiUor7vyuDEar/DItRETk3ZikJCIiryFJEp79uRKfnpTfKTQuQI0vxoYjUMu3PyJ3JvbujeqMDIi9eysdChG1MZUg4P0RoRgV7SNbv6fYjHu2lcHkZMM7IiLyXrxLIyIir/HmgWp8cLhGti5YJ+CLseGI9le7OCoiajE/P4h9+wJ+3NiKyBvp1AJWjQnDwDCtbP3/ztRh6vYyWEQmKomIOhImKYmIyCssPmLA/P3VsnX+GgH/HRuOfqHyN0NE5F6EggL4PvcchIICpUMhonYSpFPhy7Hh6KKX//Jwc54JD6WXw8ZEJRFRh8EkJRERebx/HzFgzu5K2TqtCvh4TBiuipSfVkZE7keoqoLmm28gVFUpHQoRtaMofzXW3BiOCF/529K12bV4bGcFRImJSiKijoBJSiIi8mhLjxrwdycJSpUALBsVhjGxvi6Oioguh9i3Lwy//FI/5ZuIvFrPYC3W3hSBEJ38hnafnTRidgYTlUREHQGTlERE5LGWHTXgqV3yCUoAWHhNCG5O4Jp2RERE7mxgmBZrboxAoFY+Ubn8VyNm7Kzg1G8iIi/HJCUREXmkD48Z8GQTCcr5VwXjz70CXBgREbUV1dGj0A8ZAtXRo0qHQkQuktxJhy/GhsNfI5+oXHXCiOk/lsPKRCURkddikpKIiDzOuwerMTvDeYLylZQgPNpf78KIiKgtScHBsNxyC6TgYKVDISIXGhblg0+vD4OP/F46+OJULR5ML+eu30REXopJSiIi8hiSJOHlvZV4/hfnm2m8nBKExwYEujAqImprUkwM6l54AVJMjNKhEJGLjY7xxarrwqFzcqe6LrsW9/2vDHU2JiqJiLwNk5REROQRREnCU7sq8VaWwekxL6cE4XEmKIk8X20tVIcOAbW1SkdCRAq4Md4Xq28Ih6+TEZWbck24Y2spqsyiawMjIqJ2xSQlERG5PYso4ZEfyrHsWI3TY16+kglKIm+h+vVXBI4YAdWvvyodChEpZEysL74YG+F0jcr0wjpM+KYE52ptLo6MiIjaC5OURETk1qotIu78rhRfnHI+ourNocF4fCATlETeQkxMhOH77yEmJiodChEpaGS0D766Mdzprt9ZZRbc+HUxTldZXRwZERG1ByYpiYjIbZ2pseEPm0qwraBOtl4tAEtGhuLBvtwkh8irBATAlpwMBAQoHQkRKWxYlA/W3hSBIJ18ojK72oabvi5GZonZxZEREVFbY5KSiIjc0uEyC8amFeNgmUW23kcNrBoThik9/F0cGRG1N+HsWfi8+iqEs2eVDoWI3MCVnXT4OrUTovzkb1+LTSLGf1OCTblcx5aIyJMxSUlERG5n+xkTUjcVo8Aov85UgEbAFzdE4A9d/FwcGRG5glBaCt2qVRBKS5UOhYjcxMAwLbaM74SeQRrZ+hqrhHu2leHdg9WQJO78TUTkiZikJCIityFJEhYfMeCPW0pRZZG/wYjyU+Hr1AiMivFxcXRE5Cpi//6oPnIEYv/+SodCRG6ka6AGm8dH4IoIrWy9BOD5X6rw6I8VqLMxUUlE5GmYpCQiIrdgskp49McKzNldCWf3FX1CNNg6oRMGR+hcGxwRERG5hQhfNTaMi8DYWOdfVn560ohbvi1BiYk7fxMReRImKYmISHFnamwY/00xPj1pdHrMiM46bP5DJ3TRy0/zIiLvoTp2DPprroHq2DGlQyEiNxSgVeHTG8Lxp0Tn61JnFJkxekMx9hZzQx0iIk/BJCURESlqV1Edrtt4DntL5DfIAYA7evjhqxsjEOLDty2ijkDS62EdMQKSXq90KETkprQqAe8OD8H8q4Ihv+83kF9jQ+qmYnx0rIbrVBIReQDe7RERkSJEScLCrGqM/6YERbWi0+P+b0ggllwbCh+1s1sQIvI2UlwcTP/8J6S4OKVDISI3JggCHu2vx+obwqHXyH9OMIvAExkVmP5DOYxW5583iIhIeUxSEhGRy5WYbJiytRTz9lY5XX8yUCvgs+vD8PfBQRAEJiiJOhSTCarTpwGTSelIiMgD3BTviy0TOqGLXu30mNWnanFDWjGOVzifuUFERMpikpKIiFzqp7N1GLn+HLYW1Dk9pkeQGt9N6ITULn4ujIyI3IXq2DEEJidzTUoiarZ+oVp8P7ETru3sfHO9I+VWjNpQjOWc/k1E5JaYpCQiIpcw2yS8srcKEzaX4IzR+XSrsbE+2DYhEr1DtC6MjojcidijBwwbN0Ls0UPpUIjIg0T4qrH2pgjMGuh8Pdtam4RZGRW49/sylHH3byIit8IkJRERtbuj5RbckFaMN7OqIToZuKASgGeTg/D52HBukEPU0QUGwnbttUBgoNKREJGH0agEvHBlMD4ZE4YgnfPlYr7ONWH4+nPYfobLShARuQveBRIRUbsRJQnvHarG6I3nkFXmfA2ozn4qbBgXgScHBULF9SeJOjzh3Dno3n0XwrlzSodCRB5qfFc/bJ8Yif6hGqfHFBpF3PJtKWb9VI4qMzfVISJSGpOURETULo5XWDD+mxI8+3MV6pqYTTUmxgc/3ByJEZ19XBccEbk1oagIPgsWQCgqUjoUIvJg3YM0+G5CJKb1DWjyuOW/GnHNunPYVsBRlURESmKSkoiI2lSdTcJr+6swYv05ZBSZnR6nEYAXrgjClzeGo5Of8904iajjEQcORHV2NsSBA5UOhYg8nJ9GwBtDQ/D5DeGI8HV++5tfY8Mft5Ti0R/LUVHHUZVEREpgkpKIiNpMRlH9zt2vZVajqVlTfUM02DaxE2YlcXo3ERERtb+b4n2x8+ZI3BDb9MyNT04YkbKmCJ+dNHIHcCIiF2OSkoiILtu5Whse+7EcqZtK8Gul1elxAoDH+uvxv4mRGBSuc12ARORRVCdOIGDsWKhOnFA6FCLyIlH+anwxNhz/vDoY/hrnX5IWm0RM/6Ecf/imBIebWFObiIjaFpOURETUamabhH8drMYVXxXh4xPGJo/toldjY2oEXrkqGL5N3BgQEUk+PhD79IHkw7VqiahtqQQBD/XT46dbInFt56a/MM0oMmPkhnN4ZncFKrmxDhFRu2OSkoiIWmVLngnXrDuH536pQrXF+XQolVA/ejLjFm6OQ0TNI3Xpgtp//QtSly5Kh0JEXiohUIP14yLw9rAQBGqdf3lqk4BFR2qQ/GUR/n3EAIvIKeBERO2FSUoiImqRfcVm3Ly5BHd8V4qTVc6ndgNAUpgW30/ohFeuCkaAlm85RNRMFguEs2cBC6dZElH7UQkC/tInAD/dEokb45r+IrW0TsTfd1di6NoibMiu5XqVRETtgHeMRETULL9WWPCn70sxJq0Y6YV1TR7rpxbw8pVB+H5iJwyO4NqTRNQyqsOHEdSnD1SHDysdChF1APF6DT6/IRwfjwlDXIC6yWNPVdnw5/+VIXVTCX462/TnISIiahmN0gEQEZF7y6624s0D1fj0pBHNmeF0Wzc/vHhlEOL1fIshotYRu3VDzeefQ+zWTelQiKiDEAQBE7r64boYH7yVVY1/HTLA0sQylLvOmfGHb0owKtoHc4YEYlgUl7QhIrpcvIMkIiJZv1ZYsCCrGl+eroWtGcnJgWFavH51MK7hupNEdLmCg2G96SaloyCiDihAq8LzVwTjrp7+mLO7EtsKmh4tmV5Yh/TCOiYriYjaAJOURETUyIFSM946UI2NOSY0Z7WlCF8Vnk0Owp8S/aFWcdduIrp8QkkJtGvXwnLrrZAiIpQOh4g6oMRgLb66MQLfF5jw3M+VOFze9Drc9mTlNVE6PD5Aj5vifaES+LmIiKglmKQkIiKIkoRv80xYfKTmkutN2gVqBTw2QI+/9tcjkJviEFEbEgoK4Dt3LqxXXcUkJREpakysL0ZF+2D1KSPm76vCGWMTc8AB/FRkxk9FZUgM1uCx/npM6eEPXw2TlUREzcEkJRFRB1ZtEfHJCSP+fcSA09W2ZrXRqYAH+wbgiaRARPg2vbg8EVFriIMGoercOaXDICICAKhVAu5JDMCt3fyw5EgN3j1UjfK6puebnKi0YsZPFXhlXxX+0icA9/UKQOwlNuUhIuromKQkIuqADpZZsOp4DVafNKLK0pxJ3YBGAO7q6Y+/Dw7kpjhERETU4fhrVJiVFIgH+gRg6dEavHf40snKYpOIf2ZW460D1RgX74v7+wTguhiuW0lEJId3mUREHUSVWcRXp2ux8kQN9pdYmt3OVw38qVcA/jZAz+QkEbmE6tQp+D3xBGoXLIDYo4fS4RARNRKkU2H2oEBM69v8ZKVNAr7ONeHrXBMSAtW4p7sPhusExLsoZiIiT8C7TSIiL2YVJfxQWIf/nq7FuuxaGK3NGzUJAHqNgAf6BODRAXpE+nF6EhG5jqRWQ4yIgKTm3x4icl/2ZOVD/QKw6rgRHxw2IL/m0svnZFfbMP+AESr4YmReFe7qJWJCF18EcI1vIurgmKQkIvIykiTh52JzfWLyt1oUm5pe4P1icQFqPNQ3AH/uFYAQH35YJiLXkxISUPvhh0qHQUTULIFaFf7aX4+H+gZgfXYt3j1kwIHSS89aESFg+1kLtp8tR4BGwMSuvri9hz9GRvtAq+JmO0TU8TBJSUTkBWxifWJyU64J67JrkWto3iY4FxoWpcMj/fQY38UXGn4wJiIl2WxATQ0QEABwNCUReQiNSsAfu/vjtm5++PGsGYuOGLA5zwSxGRNZaqwSVp+qxepTtQjWCUiN98WkBD+MifHl7uBE1GEwSUlE5KGMVhHbz9RhU64Jm/NMKGnhiEkACNAIuLWbHx7sE4DBEbp2iJKIqOVUBw8icPRoVG/fDnHwYKXDISJqEUEQcG20D66N9kFBjQ0rj9dg5fEaFBqb91mt0vx7wlKvEXBjvC/Gxfvi+lgfhPvyixsi8l5MUhIReQhJkvBrpRX/K6jD9jMm7Cg0o9bW/DUmL3RlJy3+3CsAt3bzQyDXPyIiNyMmJKBmxQqICQlKh0JEdFliA9R4ZkgQnhwUiM15Jiw/VoP/nalDcz/BGawS1vxWizW/1UIAkByhxdg4X4yN88WQCC1UAkdZEpH3YJKSiMiNFdeK2FVgxP/O1CcmzzTzG3g5kX4q3NbND39KDED/MG0bRklE1MZCQmC95RaloyAiajNalYCJXf0wsasfCmps+PTXKnx2woDTxuZ/WSwB2Ftiwd4SC17LrEa4jwojo30wIlqHEZ190CtYA4FJSyLyYExSEhG5CUmScLrKhoxzddh5phY7C32RW1t+WecM0tV/IJ7czQ/XRvtwrUki8ghCWRk033wDa2oqpLAwpcMhImpTsQFqPN7PDzfrS1Cpj8aaPCu++q0W52pb9mV0aZ2Itdm1WJtdCwDo5KvCiM71ScthUT7oHayBmp/9iMiDMElJRKSQijoRB0otyCw145diM3YVmS/aibt107D1GgFj43xxW3c/jI3lYutE5HmE3Fz4P/ooqrdvZ5KSiLyWIAADwzRIidHjlZRg7DpnxobsWqTlmFBgbPkmiMWmxknLQK2AweFaXNlJhys66XBlJx06+3NNSyJyX0xSEhG5QHmdiINlFmSWmJFZasH+EjN+q275h09nov1VSI33wx+6+OLaaB/4qJmYJCLPJQ4ahMqSEu7sTUQdhlolYHhnHwzv7INXr5awr8SCDdm1+Dq3FqeqWveZsdoi4YezZvxw1txQFhegxqBwLQaE1f8MDNOii17NtS2JyC0wSUlE1IYqzSJ+rbDgaLkVRyssOFZhxdFyC4paOH3nUuwLp18X64vxXXwxOFzLNYiIyHsIAqDhx1Qi6phUgoArz498fCklGKerrNiab8J3+Sb8cLYOpsv4nju/xob8Ghu+zjU1lAVqBfQPrU9a9gvVIjFYg8RgDaL8VPx8SUQuxU9/REQtVGMR8Vu1DaerrPit2orTVfYfW6um5jRXV70a18X44LpYX4yM9kGoD3flJiLvpPrtN/g+8wxMr74KsVs3pcMhIlJU9yANHu6nx8P99Ki1Sth5tg7fFZjwQ2EdDpdbL/v81RYJu86ZseucuVF5kFZAz2ANegZrkBikQWKwFt2C1Oiq1yCEn0OJqB0wSUlEdAFJklBhlpBnsKKgxtboJ6/Ght+qrDjbxqMinYnzFXFNtB+GR/thZLQPugXxTzYRERFRR+anEXBDnC9uiPMFAJSZbNhZZMaPhXXYWWTGoTJLm71WlaV+2vm+EsdzBukEdNFr0FWvRhe9uv73QDXiAtSICVAjzEfFKeRE1GKXdce7bt06LF26FIcOHYLFYkG3bt1wxx134K9//Su0Wm2Lz5eZmYm3334bP/30E6qqqhAVFYWbbroJf//739GpUyen7c6dO4c33ngD3377Lc6ePYvg4GBcc801mDVrFgYPHuy0ndlsxgcffID//ve/+O2336DVajFgwAA89NBDuPnmm1167UTUviyihBKTiHO1NhTXnn80ifW/m2w4Vys2JCONVsnl8WkEYECYFkOj6ndjHBwswVxSgPj4TvD19XV5PEREShK7dYNx9WqlwyAicnthvmpM7OqHiV39ANQnLfcUm/FLsQV7i83YW2JGlbntP9tWmSUcKrM4TYpqVUCUnxrR/ip09lejs78a0f5qdParfx7uq0K4jwoRvmpu8khEDVqdpJwzZw4WL14MjUaDkSNHIiAgADt27MALL7yAzZs3Y82aNfDz82v2+davX48HHngAVqsVycnJ6Nq1K/bv34+lS5di/fr12Lx5M7p37+7Q7uTJk0hNTUVxcTESEhIwfvx45OTkYP369fj666+xfPlyTJw40aGd0WjErbfeit27dyM4OBjXX389ampqsGPHDuzcuROPPfYYXnnlFZdcOxE1jyRJMItAtUVEeZ2IijoJFWb77yLKzecf60RUmCVUmkWUmUQUm0SU1blm9GNzaASgb6gWg8O1GByhxZBwHfqFaht9QDOZTMhTMEYiIkVJEmCz1W+cw5E4RETNFuarxrh4P4yLr78fFSUJJyut+OV84vJAqRlHyq2otbXvl/IW8ff1L4GmR3cGaASE+aoQcT5x+fvvagTrBATpVAjSCQjSqhCkUzWUBWoFjtYk8jKtSlKmpaVh8eLF0Ov1SEtLaxitWFpaiokTJyIjIwPz5893muS7WGFhIaZPnw6r1YqFCxdi6tSpAACbzYbp06fjiy++wIMPPoht27Y1WrhXkiTcf//9KC4uxpQpU/DBBx9AfX4XyBUrVmDmzJmYPn06rrrqKkRFRTV6zZdeegm7d+9Gv379sHHjRoSHhwOoH805YcIEvPfeexgxYgTGjRvXrtdO5E1sooQ6UYLJKsFkA0w2CSabhDqbhFpr/aOp4Qeos0mosUqosYgwWOp/r7b/bpFgsIiosUownP/dYJGgwCDHyxLpp0LfEC36hGjQN7R+B8X+FyUkiYioMdWBAwgcPRrV27dDbGJWDBERNU0lCOgVokWvEC3uTqwvs4kSTldbG0ZC1v9Y23Vt9abUWCXUGGzIM7Ts9QXUb/oTpFMhSCsgUKeCv0aAv0ZAwPlHP42AAI0K/lrBoc5fU3+8Tg34qAX4qIT6RzWgO/9cqwI3DyJyIaGioqLFt/xjxozBvn378Oyzz+LJJ59sVJeRkYHU1FT4+Pjg+PHjCA4OvuT5nn/+ebz77rsYPXo01q1b16jOYDCgX79+qKqqwldffYXrr7++oW7Lli244447EBwcjMOHD0Ov1zdqe/PNNyM9PR2zZs3CCy+80FBeUVGBXr16wWw2Y/PmzRg6dGijdm+88Qbmz5+PlJQUbN26tV2v3ZuYTCYc/S0PoVGx0Pn4AADs/7gkSWr0vHEdHOrkyn9/LsmWNyq75DkuLpeJ76KALn2Oi+K7RFw2CRCl+uPFC56L0u/PJdQ//73u9+f1dYDt/PH2H5skQZIAsaG+8TmtYn2izyJKsIr1jxaxvtxy/rlVuui5CFik+ue2i8rN4vkkpK2+vCNSCUB8gBrdgzToHqRB3xAN+oRq0TdEg3BfdavOaTKZkJeXh/j4eE73JmolVWYmAkePRumWLfgtNJT9yYMIZWXQfPMNrKmpkMLClA6HLuBN70/2vxFMhpMS3LEvVdSJOFFpxYlKy/lHK05WWXGqytphP+cLgEMSU6eqf25PZGpUgEYlQCMAGhWgFuqTm/Yy9flkp0YQoFbh/HH1ZWrhfPvzbVRCfZlKwO8/qH8uNDyvTz7b6wXYjxUu+L1x29+Pvfj5+R/Bfr3CBb///nhxGS4qsydyhQvbCfLtZevPlwqCYz0uaiNcVAYAdXV1OFNYiJjoaPicz0U0+v/YzERzS9LRLcldN+dQnap+JHRH1+KRlGfOnMG+ffsAAJMnT3aoHzZsGOLi4pCfn4+tW7fKHnOxtLQ0p+fT6/VITU3F559/jo0bNzZKUtrbpaamOiQo7edLT0/Hxo0bGyUpt2zZArPZjLi4OIcEJQDcfvvtmD9/Pn7++WcUFhYiOjq63a7d2yzP12LlrnKlwyBqcwEaAbEB9QuDdwvSoEeQBt0DNegeVL9QuE7Nb1iJiNqKFBYGyz33KB0GEVGHEuKjQkqkDimRukblVlFCrsGGU1VW5BqsyKm2IddgQ67BilyDDSUm781gSgDqzs8AcxxWQ+7FD0CF0kG02ojOOqSlOt+LpaNocZIyKysLABAaGoqEhATZYwYPHoz8/HxkZWVdMlFXXV2N06dPAwCGDBkie8yQIUPw+eefN7z2xbE01Q4ATp06hZqaGgQEBDSrXUJCAkJDQ1FeXo6DBw82JCnb+tqJyD0EaQVE+KoQHaBGbED9roT1j5qG58E6gVM9iIhcpaICmu3bYR09GggJUToaIqIOTaMSGmYMyTFYROQZ6hOXhcb6n7PnfwqNIgqN9RtWEhFdSouTlDk5OQCAuLg4p8fExsY2OrYpubm5Db87O6ez810qFnu5JEnIzc1F3759m30NMTExKC8vb/SabX3tJpPpksd4ErPZ3KLh0UTtRa8REOIjIEQrIFgnINxXhU6+KnTyFc4/qhBx/vcIHxX8mlwf0gZINtTVuSx8APX96cJHImo5zfn+Y7HUL9jP/uQ5NMePI3jqVJRu2QJrUpLS4dAFvOn9SXPBtVi97HM5uT+v6ksAuvnV/wDq8z+NWUQJ52pFFNWKOGeSUFYnorSu/rGsTkLp+Ud7ebWFoxapYxFF0etyRABavJxFi5OUBoMBABpGJcqxT72urq5u9vmaOqez810qlgvLL2zb2mto62s/c+YMbDZlFiduP1qlAyAPphEkBKgBP7UEfzXgb39U1T/6qX+vD9IAQRoJgRoJwVrUP2ok6DX167w0SQRgrP8pccF1XY6ioiKlQyDyWP5FRQgHUFZWBkRGsj95kqAg5PzvfxD9/IC8PKWjIRne0J/sfyOKiopg5L8zUog39KWW6HT+B7rzP4Hyx1lEoNIKGKwCDDYBBit+f7QKqLYJqLmgrNoqoFYEam31jyabAJMI1IkcRkOeoa6uDnle9l6kVqvRvXv3FrVp1e7e1DZiYmKUDqFNmc1mCNllSodBLaA9v3Cz9vyCz/YFnTUqQHvBgs4alXD++e/H2hd81qkA3/O74Pmo6nfQ8zm/mLSvWoCv2v77+UeVAF8Nzi88Xd9WrxWg1whc1/ECZrMZRUVFiIqKgk6nu3QDInKgKa9fIzksLAxGgP2JqA140/uT/W9EVFQUrPHxCkdDHY039SV3ZhMl1NoAo7V+o0+j1f7ze5lZrF9zsk6UYLbZNwatLzOLvz9vKG90XP0GpfUbk9ZvYmoVz29Y2rDxaP3vtoZjlP6vQu7Ix8cH8fGRSoehuBYnKe0jBWtqapweYx9xGBjo5GsRmfPZzym3I7az8+n1epSXlzuN5cLyC9u29hra+trdZRe3tnRNqA1dIoKh1WgatrD6fScuodHzxnUXPXdWfsGuY3Llzsqa91oy8TU3LmfxyeTc7EVqwXH3NrVQH4d91za10HjnNvuubSoAapV9Z7eLjkH9c/UFbdSC0LAbnH3nOPtrkXvT6XRe+beCyBVU52/6tNr6Uf7sT55DyM6G78svw/Tcc5CcrANOyvKG/mT/G6HT6aDx8Gshz+UNfcndOZ8HqQzpfMLSej552ehRlCACECVAkuofRdQnQht+AIiSdEF9/fPG9fWvc+Hz+h/pomMA6fyGQNL55OmFWwTV1/9e7lB2vtHFbS483uHcF9VLkBzLLvW6F/03tVosqKioQEhICDTaxrM77TFeSotyxy04uLmHxgao+bcArUhSdunSBQBQUFDg9Bh7nf3YpsRf8K1lfn6+bJLS2fm6dOmC8vJy5Ofny57bXi4IQqPXsZ/HWTugfir2xa/Z1tfujYYEi5gU78fORURERK0m2GxQlZRAsNm4lyoREXkVQRDOz0oDwF0d2oTJZEJeXgnimYvweKqWNkg6v3h5WVkZsrOzZY/JzMwEAAwaNOiS5wsKCmqYo75//37ZY+zlF5/P/vxS7Xr06NFoxOal2mVnZ6P8/PSPpAsWa2/rayciIiIiR2KPHqhZvx5ijx5Kh0JERERELtLiJGVsbCySk5MBAF9++aVDfUZGBvLz8+Hj44OxY8c265wTJkxwej6DwYDNmzcDACZOnCjb7ptvvpGdgm0/38XtbrzxRuh0OuTn52PXrl0O7f773/8CAFJSUhAdHd1Q3h7XTkRERERERERE1NG1OEkJAE888QQAYOHChQ0jB4H6EYazZ88GAEybNq3R1O2NGzciJSUFkyZNcjjf9OnT4e/vj+3bt+M///lPQ7nNZsPs2bNRWVmJ5ORkjBkzplG7sWPHIikpCZWVlZg9e3ajnbJXrFiB9PR06PV6PPLII43ahYSE4P777wcAzJ49u37Xz/MyMzPxzjvvNNS1xbUTERERUfOpDhxAUGQkVAcOKB0KEREREblIq3b3njBhAh5++GEsWbIEY8eOxahRo+Dv74/09HRUVlZi6NChmDt3bqM2VVVVOHHiBEwmk8P5oqOj8cEHH+CBBx7AjBkzsGrVKnTp0gX79u1DdnY2IiMjsWzZModNPgRBwIcffojU1FSsXr0au3btQnJyMnJycrB3715oNBosWrQIUVFRDq/5/PPPY9++fdizZw+Sk5MxcuRIGI1GpKenw2Kx4NFHH8W4cePa5NqJiIiIqPmk2FiY5s+HFBurdChERERE5CKtGkkJAK+//jqWL1+OlJQU7NmzB1u3bkVsbCzmzZuHDRs2wM/Pr0Xnu+WWW7Bt2zZMnDgR2dnZSEtLg81mw7Rp0/Djjz82rFt5scTEROzcuRPTpk2DzWZDWloacnJyMHHiRHz33XcOU73t/P39kZaWhhdeeAExMTHYunUr9uzZg5SUFKxYsQLz58932bUTERER0e+kiAiYp02DFBGhdChERERE5CJCRUUFN02kNlG/o1Ye4uPjuaMW0WVifyK6fKrMTASOHo3SLVvwW2go+5MnqayEZtcuWIcOBbiEjlvxpvcn+9+I6u3bIQ4erHQ41MF4U18iUhr7k/do9UhKIiIiIqL2oPrtNwRMmQLVb78pHQoRERERuUir1qQkIiIiImovYv/+qDp2DFJ4uNKhEBEREZGLMElJRERERO5Fq4XUubPSURARERGRC3G6NxERERG5FSE3F36PPw4hN1fpUIiIiIjIRZikJCIiIiK3ItTVQXXsGIS6OqVDISIiIiIX4XRvIiIiInIrYmIiarZuVToMIiIiInIhjqQkIiIiIiIiIiIiRTFJSURERERuRXXwIAITEqA6eFDpUIiIiIjIRZikJCIiIiK3IkVFoe6JJyBFRSkdChERERG5CNekJCIiIiK3IkVGwvy3vykdBhERERG5EEdSEhEREZF7qa6G+ocfgOpqpSMhIiIiIhdhkpKIiIiI3Irq1CnoJ06E6tQppUMhIiIiIhfhdG8iIiIicitinz6o3rcPYkyM0qEQERERkYswSUlERERE7sXXF2L37kpHQUREREQuxOneRERERORWhPx8+P797xDy85UOhYiIiIhchElKIiIiInIrgsEAzY8/QjAYlA6FiIiIiFyE072pTanVaqVDIPIa7E9El0dSqyGGhwMaDfuThxH79IHhp5+UDoOc8Jb+ZP8bIXnJ9ZDn8Za+ROQO2J+8g1BRUSEpHQQRERERERERERF1XJzuTURERERERERERIpikpKIiIiIiIiIiIgUxSQlERERERERERERKYpJSiIiIiIiIiIiIlIUk5RERERERERERESkKCYpiYiIiIiIiIiISFFMUhIREREREREREZGimKSkNrFu3TqMHz8eXbt2RUxMDIYPH4533nkHFotF6dCIXMZisSA9PR3PPfccrrvuOnTp0gURERHo1asX7rzzTnz77bdNtt++fTtuv/12dO/eHZ07d0ZKSgpefvllGAyGJtudPn0a06dPR79+/RAZGYl+/fph+vTpyM7ObsOrI3IPzz//PEJCQhASEoI33njD6XHsT0TyzGYzFi9ejHHjxiEhIQFRUVHo168fJk+ejDVr1si2YX8iaiwvLw9PPfUUrrzySnTu3BlRUVFISkrCI488goMHDzptx75EHdGJEyewZMkSTJ8+Hddccw3Cw8Mv+TnOztV9prq6Gi+99FJD3+7evTvuuOMOpKent+SS6TIIFRUVktJBkGebM2cOFi9eDI1Gg5EjRyIgIAA7duxAZWUlhg0bhjVr1sDPz0/pMIna3fbt23HLLbcAAKKiojB48GD4+/vj119/xZEjRwAAU6dOxdtvvw1BEBq1ff/99zF37lwIgoBhw4YhMjISGRkZKCoqQmJiIjZv3ozw8HCH19y1axduu+02GI1G9O3bF3379sXRo0dx9OhRBAQEYN26dUhJSWn3aydyhd27dyM1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uXPnQhAEDB8+HJ06dUJGRgbOnj2LxMREbN68WXbzkF27duG2226D0WhEv3790LdvXxw9ehRHjhxBQEAA1q1bh5SUlLa/WCIFTZ8+HZ999hnmzp2Lp556yqGe/YlI3htvvIH58+dDo9HgiiuuQGRkJA4cOIDc3Fz4+flhxYoVuOmmmxq1YX8iauzzzz/Ho48+CqvVioiICCQnJ0Oj0SAzMxNnzpyBSqXCm2++2bBesh37EnVUmZmZePLJJxue//bbbygtLUVsbGzD6GQA+Pjjj9G5c+eG567uM8XFxRg3bhxOnTqFzp07Y9iwYSguLsbOnTshSRJee+01PPLII238X4cuxiQltYm1a9di6dKlOHToECwWC7p164Y77rgDf/3rX6HT6ZQOj8glPvnkEzz66KOXPC4+Pr5heuqFtm/fjvfeew979+6F0WhEXFwcbr75ZsyaNavJtY9Onz6Nf/7zn0hPT0dJSQkiIiIwatQoPP300+jWrdtlXRORO7pUkhJgfyJy5vvvv8eiRYvwyy+/wGAwICoqCiNHjsTMmTMdRqTYsT8RNXbw4EEsWrQIP/30EwoLCyFJEqKiojBs2DA8/PDDDcsmXIx9iTqiH374oVlLEhw4cKBhmQQ7V/eZqqoqvP3229iwYQPy8/Ph7++PK664Ao8//jhGjRrV/IumVmOSkoiIiIiIiIiIiBTFNSmJiIiIiIiIiIhIUUxSEhERERERERERkaKYpCQiIiIiIiIiIiJFMUlJREREREREREREimKSkoiIiIiIiIiIiBTFJCUREREREREREREpiklKIiIiIiIiIiIiUhSTlERERERERERERKQoJimJiIiIiIiIiIhIUUxSEhERERERERERkaKYpCQiIiIiIiIiIiJFMUlJREREREREREREivp/xBfBoZ/CgcIAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gauss_pdf = norm.pdf(x, loc=mean, scale=sdev)\n", + "\n", + "fig, ax = plt.subplots()\n", + "ax.plot(x, gauss_pdf);\n", + "plot_quartiles(ax)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "5f48fd92-9dde-4424-866d-45db2f0a67f2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9999985080935955" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# area should be 1\n", + "sum(gauss_pdf)*(x[1]-x[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "86326b43-6e15-447d-8862-b01391563e2e", + "metadata": {}, + "outputs": [], + "source": [ + "pdf_max = np.max(gauss_pdf)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "6896daba-3ffa-4e79-a4fe-4e827add12c0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.0036956421869327907, 0.003695642737133491)" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pdf_max, norm.pdf(mean, loc=mean, scale=sdev)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "608e0200-a168-40ac-969b-78498379174f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABP4AAAK0CAYAAACTE/PwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC4RUlEQVR4nOzdeXxcddn38e85M5lM9qRJm7ZZu5fuFAtUZBEsspQCst4UAUVuXBHQW1HchUfxVgQEBNFbBEFAwNKWRfZNKkVKF7pvSZu0TdfsmUxmznn+KEXqOdNmnTPL5/16Pa/cz+9MJ99ITjJz5Xf9LqOxsdEWAAAAAAAAgJRieh0AAAAAAAAAQP+j8AcAAAAAAACkIAp/AAAAAAAAQAqi8AcAAAAAAACkIAp/AAAAAAAAQAqi8AcAAAAAAACkIAp/AAAAAAAAQAqi8AcAAAAAAACkIAp/AAAAAAAAQAqi8AcAAAAAAACkIAp/SSAUCmnTpk0KhUJeRwGSGvcS0HfGihXKGzVKkSVLuJ+AfpJKv58O/IwwVqzwOgrSUCrdS4DXuJ9SB4W/JBGNRr2OAKQE7iWgb4xoVOaePVIkwv2UZMylS5VfXCxz6VKvo8BFqtxPB35GGCny9SD5pMq9BCQC7qfUQOEPAAAgDdjl5Qr98peyy8u9jgIAAIA48XsdAAAAAAPPLilR+HOf8zoGAAAA4ogdfwAAAOmgsVH+Z56RGhu9TgIAAIA4ofAHAACQBsyaGuVcconMmhqvowAAACBOaPUFAABIA9bEiWresEF2QYHXUQAAABAnFP4AAADSQUaG7JISr1MAAAAgjmj1BQAASANGba2yvvQlGbW1XkcBAABAnFD4AwAASANGOCxz82YZ4bDXUQAAABAntPoCAACkAWvMGLU995zXMQAAABBH7PgDAAAAAAAAUhCFPwAAgDRgLl+u/IoKmcuXex0FAAAAcULhDwAAIA3YQ4cq9O1vyx461OsoAAAAiBPO+AMAAEgD9pAhCn/1q17HAAAAQByx4w8AACAdNDfL9+qrUnOz10kAAAAQJxT+AAAA0oC5aZNyzzlH5qZNXkcBAABAnNDqCwAAkAasI45Q87JlnPEHAACQRij8AQAApIPMTNlVVV6nAAAAQBzR6gsAAJAGjK1bFfzmN2Vs3ep1FAAAAMRJrwp/69ev17333qsvfelL+vjHP67i4mIVFhbqf//3f/sU5tVXX9UFF1ygkSNHaujQoZoxY4Z++tOfqrW1tU/PCwAAkO6M9nb5Fy+W0d7udRQAAADESa9aff/whz/onnvu6dcgd911l2688UYZhqGZM2dqyJAhWrRokX71q19p/vz5eu6551RcXNyvnxMAACBdWOPGqfX1172OAQAAgDjq1Y6/CRMm6Gtf+5ruu+8+LV68WBdddFGfQixbtkzf+9735PP59Nhjj+mZZ57R/fffr/fee08nnnii1q9fr+uuu65PnwMAAAAAAABIJ73a8XfZZZcd9P83zb4dFfjrX/9atm1r7ty5mjVr1ofr2dnZ+s1vfqNp06Zp/vz5WrduncaOHdunzwUAAJCOzPffV85556ntiSdkTZrkdRwAAADEgefDPcLhsJ5//nlJ0vnnn++4XllZqWOOOUaStHDhwrhmAwAASBV2SYnCX/iC7JKSD9cilq36tqg2NkW0el+XNjZF1NhpybJtD5MCAACgv/Rqx19/2rBhg9o/OGT6yCOPdH3MkUceqUWLFmn58uXxjAYAAJAyIkNKteiya/RWQ1iL39+jVfu6VN8WVdSlxhcwpTEFfk0sytDRQwI6pSyoEfmev2wEAABAD3n+Cq62tlaSVFBQoLy8PNfHlJWVHfRYAAAAdM+7u8J6cF2bXl23R0Nr1mrFsDFqy8w55L8JW9LKfRGt3BfRY5s6JDVpTIFfF43K1sWjslSe6/lLSAAAAHSD56/aWltbJUk5ObFfgObm5kqSWlpaDvt8oVCof4IlkHA4fNBHAL3DvQT0nf+D+6erq0sS91Oiilq25m8J63frQnpvT0SSdOTWzVp0+1xNv/6veq9iQo+fc31TRDctadbNS5p1ZkVAX5+QpcmDPH8pmRJS6feT/yNfSyQFX5cjsaXSvQR4jfspcQWDwR49PuVerW3btk3RaNTrGAOioaHB6whASuBeAnovu6FBxZL27t0rDRnC/ZRgbFv6xz5Td9UEtKH94KOcV5eO1MRvPaVNxeV9+xySFm4Na+HWsD5RFNXXR4RVnc2ZgP0hFe6nAz8jGhoa1L51q9dxkKZS4V4CEgX3U2Lx+XwaOXJkj/6N54W/A7v52traYj7mwK7AWK3AHzV8+PD+CZZAwuGwGhoaVFpaqkAg4HUcIGlxLwF959+3T5I0aNAgtUvcTwmktjWqb7/Tpld3dLleDwWCWjVsdL9+zjf3+fR2U5auGhvU9ZOylZth9Ovzp4tU+v104GdEaWmpIhUVHqdBukmlewnwGvdT6vC88FdZWSlJampqUktLi2txr76+/qDHHkpPtzwmk0AgkNJfHxAv3EtA75kfvPDLyMiQxP2UCCzb1j2r2nTTkma1R2LvvCtr3KGvv/5n3X7Cpdo1aKimFmfoiKIMVeb6VRgwlGEa6oja2hOytLklopV7u7S6MXLYz99lSXevCenpui7de0KRji3N7M8vL62kwv104GdEIBCQP8m/FiSvVLiXgETB/ZT8PC/8jRkzRtnZ2Wpvb9d7772nE044wfGY9957T5I0derUeMcDAABIWHtCUV39+j69WN952MeWRVp16bpXdeS1l2vyccMV9B9+d97uUFQv13fqiU3teqG+U9YhOnprW6M649ndunZyrr57ZL78Jrv/AAAAvGYe/iEDKxAI6NRTT5UkPf74447rW7Zs0eLFiyVJs2fPjms2AACARPV2Q6dOeGrXYYt+I/N8unVmoZ689nhlr3xPM06c1q2inySVBH26cFS2Hp1VopUXDtU1k3KVe4h/a9nSrctb9Znn92hPKDXPXAYAAEgmcSv8/e53v9OMGTN09dVXO65de+21MgxDDz30kF588cUP19vb2/W1r31N0WhUc+bM0dixY+MVFwAAIGE9urFds5/brfr22MW1IVmmbp1ZqLc/U6rPj89RbkbfXvYNy/bpJzMKtOLCofrShBz5DlE7fH17p05asEvL9zAJEAAAwEu9avVdunSpvvnNb374/9+8ebMk6f7779ff//73D9f//Oc/a+jQoZKkPXv2aP369RoyZIjj+aZNm6abbrpJN954oy644AIdd9xxGjx4sBYtWqQdO3ZozJgx+vWvf92bqAAAACnDtm39clmLbn6v5ZCP+9y4bP3wqAIVZv672GeuXq3sSy5R+8MPyzriiF5nKMo09bNjCnX5uBxd91ajFjW4F/e2tkZ15rO79eeTi3XicM79AwAA8EKvCn8tLS3617/+5Vivr6//cBCHJHV2Hv68mQO+8pWvaOLEibrzzjv17rvvqr29XeXl5br++ut13XXXdWuiLwAAQKqybFvfWNSoP65tj/mYYdmm7j1hkE4Y5iy02QUF6jrnHNkFBf2SZ3xhhhaeVqI7V7bqpiXN6rKcj2npsnXBC7t134mD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J56o999/X7/5zW/03e9+95DP1dMtj8kkEAik9NcHxAv3EtB75gcv/DIyMiQl1v00b6v7kIVLxuYpGOzeIDHgcC4YFdZv3m89aK0jKj2/w9IlY2J3xHRHIt1PvXXgZ0QgEJA/yb8WJK9UuJeARMH9lPx6PNyjsrJSklRfXx/zMQeuHXjsoWzbtk2vvPKKJOm8885zXM/IyNDZZ58tSXrttdd6GhcAAKSB5rClp7d0ONbLsn06fhh/pZYkc/165Zx2msz1672OktQuHuU+3ffRjc7vPwAAAK/1uPA3ZcoUSfvP9qmpqXF9zNKlSyVJU6dOPezz1dXVffh/x9ohmP/B9Ln/nPgLAAAgSfNrOxRyOeL3/JFZMo3etV+mGjsQkDVihGzadfpk4qAMTRqU4Vh/fXun6ttS85xpAACQvHpc+CsrK9P06dMlSY8//rjj+qJFi1RXV6fMzEzNmjXrsM/30aEd7777rutj/vWvf0mSqqqqehoXAACkgUc3uLf5XjTafXdWOrKrqtTx29/K5vVUn100KsuxZkv660b370MAAACv9LjwJ0nXX3+9JOm22277cHeftH8X4De+8Q1J0lVXXaWCgoIPry1YsEAzZszQnDlzDnquioqKDwuJN9xwg2praw+6/uijj+rJJ5+UJJ1//vm9iQsAAFJYXWtEb+5wTlSdPChDE4qcO7PSVleXjN27pa4ur5MkvQtGZst02Uj6KIU/AACQYHo11Xf27Nm6+uqrde+992rWrFk68cQTlZ2drddee01NTU069thjdeONNx70b5qbm7V+/XqFQiHH8915550666yztHbtWh1zzDH62Mc+puLiYq1bt06rV6+WJF144YW68MILexMXAACksMc3dch2WXfblZXOzJUrlXfSSWp59VVZ06Z5HSepDc326aRhmXp5W+dB66sbI1q5t0sTXVqBAQAAvNCrwp8k3XLLLTr22GN13333afHixerq6tKIESN03XXX6ctf/nKPxj1PmDBBixYt0t13360XXnhB7733njo7O1VYWKhTTjlFl156qc4999zeRgUAACnssU3OXVamIZ0/kjbfj7Kqq9X28MOyqqu9jpISLhqd7Sj8SdITm9s1cVCBy78AAACIv14X/iTp3HPP7XZBbu7cuZo7d27M60OGDNGPfvQj/ehHP+pLJAAAkEZW7evSqn0Rx/pJwzI1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GSKbzaZVq1Zp3759slgsevLJJ2vnoPWjPaE9WrVqlX7729/Wbu/YsUP5+fnq0qVLbQ9aSXr99deVmZlZux3q9nLo0CFddNFF2rZtmzIzMzV8+HAdOnRIy5Ytk2maevzxx3Xbbbe18H8dHI7EXys2d+5czZo1S+vWrZPb7VbPnj11zTXX6Ne//rWioqLCHR4QMm+88YZuv/32I9br1q1b7fDEupYuXaq//e1v+u677+R0OtW1a1ddeuml+s1vftPoXDLbt2/XE088oezsbOXl5SktLU0jR47Ufffdp549ex7TewJamyMl/iTaEhDMJ598oueff14rVqxQWVmZMjIydM455+juu+9u0HPCj/YENLR27Vo9//zz+vLLL7V//36ZpqmMjAwNHz5ct956a+2w+cPRntDefP75500air569era4fF+oW4vJSUlevrpp/X+++8rJydHDodDp512miZPnqyRI0c2/U3jqJH4AwAAAAAAACIQc/wBAAAAAAAAEYjEHwAAAAAAABCBSPwBAAAAAAAAEYjEHwAAAAAAABCBSPwBAAAAAAAAEYjEHwAAAAAAABCBSPwBAAAAAAAAEYjEHwAAAAAAABCBSPwBAAAAAAAAEYjEHwAAAAAAABCBSPwBAAAAAAAAEYjEHwAAAAAAABCB/h93IR4AZZVBeAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "ax.plot(x, gauss_pdf/pdf_max);\n", + "plot_quartiles(ax)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "c4731ed9-de6c-4b9c-bd68-1b2c08f67d06", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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t9tm0qRJGT16dJo3b5477rgjJ554YpKkvr4+Z555ZiZMmJCLLrooP/vZzzZrV19fn3PPPTf19fUZOXJkvvGNb2za9q1vfStXX311zj333DzxxBNp06bNZm2/+MUvpq6uLscdd1xuv/32tG3bNknywAMP5Mwzz8xXv/rVHHPMMXnnO9/Z1LeAJqripn5HnnD8UlIt7z9vx876/Lip2X3trALJrniuKqsY1GzatLQ9//wsHz9+hxYTFbN2rl3xM8ueyTWTHcm5C3YNTS4m/s3f/M1mP9fU1LxlmzFjxmTjxo05++yzNxUSk6Rt27a59tprc9hhh2XcuHF58cUXc+CBB27aftttt2X27NkZNGhQRo8evdlzjh49OuPGjUtdXV3uuOOOnHvuuZu2Pf/887nvvvvSvHnzXHvttZsKiUly0kkn5ayzzsrNN9+cMWPG5Cc/+UlT3wKA0rlxYmfyix5vx4Zhw7J0wQLf5AwAsJfY6V/AsmbNmjzwwANJktNPP32L7f3798973vOeTJw4Mffee29Gjhy5adu9996bJBk+fPgWRcuampqcdtppufLKK3PPPfdsVkxsaPee97wn/fv33+I1Tz/99Nx88825//77s3bt2rRs2fLtH+hu6MhH2iZZWHUMdhO7Q7FhTyu47Q7v+e7GSCf2Vjv1fNKsWdKixVZfRz+DXYvrIOxadlSfbMr117WaHWGnFxPr6upSX1+fJDn88MO3us/hhx+eiRMn5umnn97s8Yaft9fujfs1td3KlSvz8ssv5+CDD27MocAuQ5EJdj6/cO2e9qbz465yrEdcOTFj7v7nXPSxi5OuW/4RF9g97CrnFN4+9zDAzrbTi4lTp05NknTs2DHt27ff6j59+vTZbN/k9W9iXrRoUZKkb9++2223YMGCrFy5MrW1tZs9z7badejQIR06dMiyZcsyderURhUTV69e/Zb77E7WrFnTpP135PE35bl21vv+dp63jPy74/u9o17nrZ6nrNdpiob+1NR+9WY769+qqn13xf5b9HmqOpay+mQZr7G9fVv8/31n7dq1Sd5+X9oRmd5qe1nnqrK8OUPP2/935sKcM7f8gryiz1t03535b1V037ejjHNKU69NZV0z3+yNRY+mfNaqugbtLFWc75vable4rlf1OW2sXfG6vrv9LtDUfav4XO4KfWFHPlfZn8vGXJ92VqY3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e59ZHbrnqx++MLM6dK86CgAAJSi1mPiHP/wh733ve/PjH/849fX1OeGEE3LiiSemWbNmueOOO3LCCSfk7rvv3qLdddddl4997GN56KGHcvDBB+fkk0/OsmXLctVVV+WEE07IwoULt/p6jz32WI499tjcfvvt6dixY0455ZR07Ngxt99+e4455pg88cQTO/mIAQD2bPPbd8m17/tU5rfvUnUUAABKUGox8Ytf/GKWL1+ec845J5MmTcrtt9+eW265JU8++WS+/OUvZ926dfniF7+Y1atXb2ozadKkjB49Os2bN88vfvGL3Hfffbnpppvy5JNP5rjjjstLL72Uiy66aIvXqq+vz7nnnpv6+vqMHDkyEydOzE9/+tNMnDgxI0eOzMqVK3Puuedm1apVZb4FAAB7lParV+Sk5x9J+9Xbny0CAMCeobRi4qJFi/Lss88mSUaPHp2WLVv+b4iamnz1q19NmzZtsnTp0rzwwgubto0ZMyYbN27M2WefnRNPPHHT423bts21116bmpqajBs3Li+++OJmr3fbbbdl9uzZGTRoUEaPHr3ZttGjR2fQoEGZMWNG7rjjjp1xuAAAe4VB86fl1z/6bAbNn1Z1FAAASlBaMbFVq1aN3rdLl9enyaxZsyYPPPBAkuT000/fYr/+/fvnPe95T5Lk3nvv3Wxbw8/Dhw9PTc3mh1lTU5PTTjstSXLPPfc0OhcAAJv7c69B6fvN/86few2qOgoAACUorZjYrl27HH300UmSyy67LGvXrt20bcOGDfnOd76TVatW5cQTT0zfvn2TJHV1damvr0+SHH744Vt93obHn3766c0eb/i5qe0AAGi8tS1aZWannlnbovF/OAYAYPfVoswX+5d/+ZecccYZuemmm/LAAw/ksMMOS/PmzfP0009n9uzZ+eQnP5krr7xy0/5Tp05NknTs2DHt27ff6nP26dNns32TZPny5Vm0aFGSbCpMbqvdggULsnLlytTW1r79AwQA2Mv0Wzwrox78t1x+4t9l+r69q44DAMBOVmoxcfDgwXnwwQfz2c9+Ng8//HBmzZq1advBBx+cY489Nh06dNj02IoVry/kvb1CX7t27ZK8XkB8c7vttW1o19D2rYqJb/xSmD3BmjVrqo4AAOwB2q5ZnSNmPJe2a/aseyUAgK3Z0+pDDVq3bt3ofUstJj722GP5P//n/6RF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y7HHHpvbb789HTt2zCmnnJKOHTvm9ttvzzHHHJMnnnhiZx82AMAebf8F0/OLmy7K/gumVx0FAIASlFZMbNasWU499dTcd999eeGFF/Lzn/88N954Y373u9/lpz/9aZo3b56bbropd9xxx2btJk2alNGjR6d58+b5xS9+kfvuuy833XRTnnzyyRx33HF56aWXctFFF23xevX19Tn33HNTX1+fkSNHZuLEifnpT3+aiRMnZuTIkVm5cmXOPffcrFq1qqy3AABgj9N844Z0WL0izTduqDoKAAAlKK2YeNxxx+VnP/tZ3vve926xbfjw4TnrrLOSZIti4pgxY7Jx48acffbZOfHEEzc93rZt21x77bWpqanJuHHj8uKLL27W7rbbbsvs2bMzaNCgjB49erNto0ePzqBBgzJjxowtXg8AgMar67ZfTv7cj1PXbb+qowAAUIJd5tucDz300CTJzJkzNz22Zs2aPPDAA0mS008/fYs2/fv3z3ve854kyb333rvZtoafhw8fnpqazQ+zpqYmp512WpLknnvu2UFHAAAAAAB7tl2mmPjyyy8nSXr06LHpsbq6utTX1ydJDj/88K22a3j86aef3uzxhp+b2g4AgMY7fPpzWfulQ3P49OeqjgIAQAlaVB0gSebOnZvbbrstSXLqqaduenzq1KlJko4dO6Z9+/ZbbdunT5/N9k2S5cuXZ9GiRUmSvn37brfdggULsnLlytTW1m434+rVqxtzKLuNNWvWVB0BANgDTN+3Z87/+OhM37dn1VEAAHa6Pa0+1KB169aN3rfyYuK6devyd3/3d1m2bFmGDh2ac889d9O2FStWJMl2C33t2rVL8noB8c3ttte2oV1D27cqJs6aNSvr16/f7j67n7ZVBwAAdnML2nXOv733E1XHAAAoxfTp06uOsMM1b948AwcObPT+lRcTL7rookyYMCGdO3fOz372s7Rq1arqSFvVu3fvqiPsUK+PTFz+lvsBAGxPx1XL8r6X/5DfHPDuLG3Toeo4AAA7Vb9+/aqOULlKi4kXX3xxbr755nTq1Cljx47NoEGDNtveMHpw5cqV23yOhlGIb5wG/cZRh9tq+8bRi9uaQv1GTRnuCQCwtxi4YEbG/eSCHDHyP/Jkv6FVxwEA2KnUhyr8ApZRo0blRz/6UTp27JixY8dm2LBhW+zTv3//JMnSpUs3m8b8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kktyzjnn5Pe//33e9a535QMf+EBmzJiRb37zmzn11FOzatWqqiMCAOy2Xmu5T17utl9ea7lP1VEAACjBHl1MvPfee3P99denXbt2eeihh3LXXXfl5ptvzp/+9KcMHTo0EydOzOWXX151TACA3VbfxbPz/bv+KX0Xz646CgAAJdiji4lXX311kuTCCy/MYYcdtunxLl265KqrrkqS/PjHP87SpUuriAcAsNtr/9rKHF/3RNq/5gtYAAD2Bi2qDrCzzJo1K3/605+SJKeffvoW248++uj07ds3M2bMyIMPPrjVffZ0XfbZo2vJAOwmOrZtmQ1duqRj25auTbuhefsdmPd//T+TJF0qzsKeyTkCAHYte2wx8emnn06S7LvvvhkwYMBW9znssMMyY8aMPP3003tdMbF169Z5+axeVccAgCS9svzLL+fuqmMAuyjnCADYleyxf9qbOnVqkqRv377b3KdPnz6b7QsAAAAAbNseW0xcsWJFkqS2tnab+7Rr1y5Jsnz58lIyAQAAAMDubI8tJgIAAAAAO9YeW0xsGHW4cuW2v1mwYfRi+/btS8kEAAAAALuzPbaY2L9//yTJzJkzt7lPw7aGfQEAAACAbdtji4mHHnpokmTRokWZMmXKVvd56qmnkiTDhg0rKRUAAAAA7L722GJinz59csQRRyRJ7rzzzi22T5w4MTNmzMg+++yTE088sex4AAAAALDb2WOLiUkycuTIJMk111yzaRRi8vpoxS996UtJks985jPp2LFjFfEqcffdd+fDH/5w9ttvv/Tu3TvHHHNMvv/972ft2rVVR4NSrV27NhMmTMjXv/71nHDCCenfv3+6du2aAw88MCNGjMivf/3r7bYfP358zjjjjAwcODA9e/bMkUcemW9/+9ub1mLdlldeeSXnnXdehg4dmu7du2fo0KE577zztjmCGnZX3/jGN9KpU6d06tQpV1555Tb305dg69asWZPrr78+J598cgYMGJAePXpk6NChOf3003PXXXdttY3+BFuaPn16vvKVr+Td7353evbsmR49euTQQw/N5z73uTzzzDPbbKc/sTd66aWX8qMf/SjnnXde3vve96ZLly5veS/XoOw+s3z58nzrW9/a1LcHDhyYT3ziE5kwYUJTDpmCmi1ZsmRj1SF2posvvjg/+tGP0rJlyxx33HFp27ZtJkyYkKVLl+ao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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "interval = [0, qr[2]+qr[0]]\n", + "width = interval[1] - interval[0]\n", + "\n", + "# we generate random data on the interval \n", + "data_unif = uniform.rvs(*interval, 300000)\n", + "\n", + "# Let's plot the distribution for the test data. Should be flat\n", + "fig, ax = plt.subplots()\n", + "ax.hist(data_unif, bins=300);\n", + "plot_quartiles(ax)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "6de1d210-28cd-4308-b4db-270d5f34b996", + "metadata": {}, + "outputs": [], + "source": [ + "def subsample_gauss(data: np.ndarray, mean: float, sdev: float, norm_factor: float) -> np.ndarray:\n", + " \"\"\"\n", + " Vectorized subsampling: process the whole dataset\n", + " \"\"\"\n", + " # Create the gaussian weight for each data point\n", + " p = norm.pdf(data, loc=mean, scale=sdev)/norm_factor\n", + " #print(p)\n", + " # Subsample data with probability according to the weight\n", + " return data[ uniform.rvs(size=len(p)) < p ]" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "0485d7fb-bc65-4cf0-b9c1-848c67bd885e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.2586459880256598" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ratio = 1/(width*pdf_max)\n", + "ratio\n" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "3cac0c03-45b9-487f-80a8-bd73d6d86bcf", + "metadata": {}, + "outputs": [], + "source": [ + "data_unif_sub = subsample_gauss(data_unif, mean, sdev, pdf_max)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "c8a461df-801a-4dcf-a33b-6b9d39a5bea5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.25728" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(data_unif_sub)/len(data_unif)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "cbbccdf5-a5cb-47b6-843d-1ecacfea6db2", + "metadata": {}, + "outputs": [], + "source": [ + "def check_regions(data: np.ndarray):\n", + " ra = len(data[data < qr[0]]) / len(data)\n", + " print(\"Probability mass below Pa:\", ra)\n", + " rb = len(data[data > qr[2]]) / len(data)\n", + " print(\"Probability mass above Pb:\", rb)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "b9270b56-f415-4e50-ad1e-c9f3215bb6aa", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probability mass below Pa: 0.15082141376451078\n", + "Probability mass above Pb: 0.10037054311774461\n" + ] + } + ], + "source": [ + "check_regions(data_unif_sub)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "ed1c063a-e712-49db-8d4a-8cfd38b95c4c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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zyWXXJLly5fnqKOOyt5775177rknxx13XH70ox9t66kDALANZnTvn898/J8yo3v/0lEAAChkm4uPo0aNyumnn56rrroqDz/8cD7+8Y+/5pjHH38848ePT+vWrfOzn/0sd955Z6699tpMnjw5hx56aJ599tmceeaZm4xraGjI2LFj09DQkHHjxmXSpEm55pprMmnSpIwbNy4rVqzI2LFjs3Llyk3GfulLX0pdXV0OPfTQPProo7n22mtz55135j//8z9TU1OTr371q/nTn/60racPAMDrtKBT9/z4wBOyoFP30lEAAChkmx8486lPfarJ65qa165fXnrppdmwYUNOPvnkHHHEERu3d+zYMZdffnn23Xff3H777Zk6dWr23HPPjftvuOGGzJ49O8OHD8/48eObvOf48eNz++23p66uLjfddFPGjh27cd+f//zn3HnnnWndunUuv/zydOzYceO+I488MieddFJ++tOf5tJLL82Pf/zjbf0SAAC7oG4T6ktH2OV0a1iSw+sezu+G/1UWd+xaOg4AAAVU/sCZ1atX5+67706SnHDCCZvsHzJkSN71rnclSe64444m+xpfH3/88ZsUOWtqavKRj3wkSfKrX/1qs+Pe9a53ZciQIZt8ZmOOu+66K2vWrNnmcwIA4LXtsaA+t0w4I3ssUNgFAGipKi8+1tXVpaGhIUmy3377bfaYxu1Tpkxpsr3xdVXjVqxYkeeee+41zwEAgG03ZcCe6XHBg5kyYM/XPhgAgF3SNi+73lbTp09PknTt2jWdO3fe7DEDBw5scmzyypOqFy5cmCQZNGjQVsfNnz8/K1asSG1tbZP32dK4Ll26pEuXLlm6dGmmT5+evffe+zXPY9WqVa95DLB9rV69usnfwM6nzf/N38aVBuZzy7KudZssqu1WOkaLt72vY1vSv89tXnWua/08wC6oJc1n2NW92fncvn377RmnicqLj8uXL0+SjYXBzenUqVOSVwqOfzlua2MbxzWObTzu9XxmbW1tli5d2uQzt2bWrFmv+8newPY1d+7c0hGAN6jj3LnpmbzyC8U+fXag+dzxtQ/hTRu6YGbO/83l+foHTs+0npv/pTDVe/HFFyt53x1nPlen8XvY3Llz01DR1xF2BC1hPkNL8Ubmc+vWrTNs2LAK0ryi8uLjrmLAgAGlI0CLs3r16sydOzd9+/ZNu3btSscB3oA2ixYlSXr06JGGZAeazwtKB2gR2q5bm0GL56bturWlo7RogwcP3q7v15L+fW78Hta3b9+s3c5fR9gRtKT5DLu6HXk+V158bOxOXLFixRaPaexUfPWy7Fd3NW5p7Ku7Izc3dmuf2bhvS0vB/1KV7afA1rVr184chJ1Uzf9d+LRt2zaJ+dzSPNtnaA7/4rWlY7R4Vc25ljCfG7+HtWvXLm128XOlZWsJ8xlaih1xPlf+wJnGp00vWbJki0uc6+vrmxybvFIU7N69e5Jk5syZWx3Xs2fPJkusG99nS+OWLl2apUuXbvKZAAAAAMD2U3nxccSIEenY8ZX7Kk2ePHmzxzRuHz16dJPtja+rGldbW5vhw4e/5jkAALDtRtc/neVnvzOj658uHQUAgEIqLz62a9cuRx55ZJLk5ptv3mT/jBkz8vDDDydJjj766Cb7Gl/fcsstWb9+fZN969evz6233pokOeaYY5rs+9CHPpQk+f3vf7/ZG2w35jjqqKM2LgMDAGD7mtWlT776oTMyq0uf0lEAACik8uJjkpxxxhlp1apVrr/++tx7770btzc0NOT000/PunXrcuyxx2bPPfdsMu6kk05K//79U1dXlwsvvLDJvgsvvDB1dXUZOHBgxowZ02TfyJEj88EPfjDr1q3L6aefnpUrV27cd8899+SGG25ITU1NzjzzzArOFgCAJJnXuWcuf88nM69zz9JRAAAoZJsfOPPYY4/lK1/5ysbXL7zwQpLk2muvzW9/+9uN26+77rr069cvSbLvvvvmggsuyLnnnpsTTzwxBx98cHr37p1JkyZlzpw5GTFiRC699NJNPqtjx46ZMGFCjj/++Fx88cX5zW9+k5EjR+bpp5/OU089ldra2lx77bXp0KHDJmP/9V//Nc8880zuv//+7LfffjnooIMyb968PPjgg9mwYUO+853v5G1ve9u2nj4AAK9T51XLc9C0xzJp6L5Z1r7Taw8AAGCXs83Fx2XLluUPf/jDJtvr6+s3PgAmSV5++eUm+0877bS89a1vzfe///388Y9/TENDQwYNGpRx48blzDPP3OJTpw888MA88MAD+e53v5uJEyfm9ttvT69evTJmzJicffbZ2WOPPTY7rnfv3vnd736XSy+9NLfffnvuvPPOdOzYMe973/ty+umn59BDD93WUwcAYBsMnzcjv/3R57L/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9tlnn3z+85/PE088scVx999/f0488cQMGzYs/fr1ywEHHJDzzz8/y5cv3+rnPf/88zn11FMzatSo9OnTJ6NGjcqpp56aadOmbeczAwDg1V7s3i+nfXR8Xuzer3QUAAAKadbi4x/+8Ie8+93vzlVXXZWGhoYcfvjhOeKII9KqVavcdNNNOfzww3PbbbdtMu6KK67Icccdl3vvvTd77713jjrqqCxdujQXX3xxDj/88CxYsGCzn/fQQw/lkEMOyY033piuXbvm6KOPTteuXXPjjTfm4IMPziOPPFLxGQMAtFzzO/XIv7/7Y5nfqUfpKAAAFNKsxccvfelLWbZsWU455ZQ8/vjjufHGG3Pddddl8uTJ+cpXvpK1a9fmS1/6UlatWrVxzOOPP57x48endevW+dnPfpY777wz1157bSZPnpxDDz00zz77bM4888xNPquhoSFjx45NQ0NDxo0bl0mTJuWaa67JpEmTMm7cuKxYsSJjx47NypUrm/NLAADQYnRduTTH/Om+dF25tHQUAAAKabbi48KFC/Pkk08mScaPH5+2bdv+/yFqavLVr341HTp0yJIlS/LMM89s3HfppZdmw4YNOfnkk3PEEUds3N6xY8dcfvnlqampye23356pU6c2+bwbbrghs2fPzvDhwzN+/Pgm+8aPH5/hw4dn5syZuemmm6o4XQCAFm/Y/Jm5/cenZ9j8maWjAABQSLMVH9u1a/e6j+3Zs2eSZPXq1bn77ruTJCeccMImxw0ZMiTvete7kiR33HFHk32Nr48//vjU1DQ9zZqamnzkIx9JkvzqV7963bkAAHj9nhgwIr3P/588MWBE6SgAABTSbMXHTp065aCDDkqSXHDBBVmzZs3GfevXr8+3v/3trFy5MkcccUQGDRqUJKmrq0tDQ0OSZL/99tvs+zZunzJlSpPtja+3dRwAANvH2tZtM79Tj6xt3fa1DwYAYJfUpjk/7N/+7d9y4okn5tprr83dd9+dfffdN61bt86UKVMye/bsfPzjH89FF1208fjp06cnSbp27ZrOnTtv9j0HDhzY5NgkWbZsWRYuXJgkGwuZWxo3f/78rFixIrW1tVvN/ur7UALNY/Xq1U3+BnY+bf5v/jb+0tF8bll2X1if8+66IucddVqm9xhYOg47oB39GrvNq65F1u7gWeGNcL0Nu443O5/bt2+/PeM00azFxxEjRuSee+7J5z73udx3332ZNWvWxn177713DjnkkHTp0mXjtuXLlyfJVguDnTp1SvJKwfEvx21tbOO4xrGvVXycNWtW1q1bt9VjgGrMnTu3dATgDeo4d2565pV7P6dPn63M547NGYtmstva1Rk+f0Z2W+uHWjbvxRdfLB1hqxq/h82dOzcNO3hWeDNcb8Ou443M59atW2fYsGEVpHlFsxYfH3roofy///f/0qZNm1x99dV5z3vek3bt2uWhhx7Kueeem9NPPz2///3v8/3vf785Y70uAwYMKB0BWpzVq1dn7ty56du37zbdNxbYcbRZtChJ0qNHjzQkW5nPC5o1F81jap898tf/cF3pGOzABg8eXDrCVjV+D+vbt2/W7uBZ4Y1wvQ27jh15Pjdb8XHx4sX55Cc/mQULFuSee+7JO9/5zo37jjrqqOy9995597vfneuuuy4f+9jH8p73vGdjd+KKFSu2+L6NXY6vXpb96q7GLY19dXfklpZ0v1qV7afA1rVr184chJ1Uzf9d+LRt+8o9/8xn4NV29O8Hjd/D2rVrlzY7eFZ4M/z7DLuOHXE+N9sDZ+6+++7Mnz8/Q4cObVJ4bDR06NC84x3vSJJMnDgxyStPs06SJUuWNFlW/Wr19fVNjk1eKSZ27949STJz5sytjuvZs+drLrkGAGDbja5/OkvO+auMrn+6dBQAAApptuJjYxFwa12Gjfd7XPR/yxtGjBiRjh1fuQfU5MmTNzumcfvo0aObbG98va3jAADYPmZ36Z3zjvpCZnfpXToKAACFNFvxsX///kmSZ599NkuWLNlk/5o1a/L4448nSXbfffckr7SKHnnkkUmSm2++eZMxM2bMyMMPP5wkOfroo5vsa3x9yy23ZP369U32rV+/PrfeemuS5JhjjnnD5wQAwJa91LlXLj3slLzUuVfpKAAAFNJsxccjjjgitbW1WblyZb70pS81uefi6tWr87WvfS0zZ85M27Zt8+EPf3jjvjPOOCOtWrXK9ddfn3vvvXfj9oaGhpx++ulZt25djj322Oy5555NPu+kk05K//79U1dXlwsvvLDJvgsvvDB1dXUZOHBgxowZU9EZAwC0bJ1XLc/7npmUzquWv/bBAADskprtgTO9evXKJZdcktNOOy233XZbHnjggey///5p06ZNHnvsscyaNSs1NTX5l3/5lwwdOnTj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/vrce++9G7c3NDTk9NNPz7p163Lsscdmzz33bPJZJ510Uvr375+6urpceOGFTfZdeOGFqaury8CBA3e4B9sAAOwqRsybnvuvGJsR86aXjgIAQCHN9sCZJDn00ENz7rnn5sILL8wHPvCBvOMd70ifPn3y+OOPZ8aMGenQoUOuvvrq9OnTZ+OYfffdNxdccEHOPffcnHjiiTn44IPTu3fvTJo0KXPmzMmIESNy6aWXbvJZHTt2zIQJE3L88cfn4osvzm9+85uMHDkyTz/9dJ566qnU1tbm2muvTYcOHZrzSwAA0GI81e8tGf61OzOzW7/SUQAAKKRZOx+T5Kyzzsott9ySww8/PFOnTs1dd92V9evX56STTsrEiRPz/ve/f5Mxp512Wm677ba8733vy5NPPpk777wztbW1GTduXO6777707Nlzs5914IEH5oEHHsiYMWOyaNGi3H777Vm0aFHGjBmTBx54IAcccEDVpwsA0GK93Ha3PNd797zcdrfSUQAAKKRZOx8bvfe978173/vebRpz2GGH5bDDDtvmzxo2bFiuvPLKbR4HAMCbM2jR7Jz1uwm56PCxmdm9f+k4AAAU0OydjwAAtAydX16Rw+oeSeeXPXAGAKClKtL5CADAru/pfsMz+h9vLR0DAICCFB8BYBfUbUJ96QgAAACWXQMAUI23zZqaF897b942a2rpKAAAFKL4CABAJebXds/VB34082u7l44CAEAhll0DAFCJOV1755+OOq10DAAACtL5CABAJTq+3JB3zngiHV9uKB0FAIBCFB8BAKjEXi9NyyOXjsleL00rHQUAgEIsuwYAoBJP9x2Wfc66Jc/22r10FAAAClF8BACgEqvatc8TA/YqHQMAgIIsuwYAoBIDFs/NP99xaQYsnls6CgAAhSg+AgBQiW4rl+XEx3+bbiuXlY4CAEAhll0DAFCJp/oPz4hz7yodAwCAgnQ+AgAAAACVUHwEAKASo2bX5c///KGMml1XOgoAAIUoPgIAUIklHTrl9rcdniUdOpWOAgBAIe75CABAJeq79cs/HvuV0jEAAChI5yMAAJVov3pVRs2uS/vVq0pHAQCgEMVHAAAqMXLu83nyux/OyLnPl44CAEAhll0DAFCJqX12z0Ffuj5T++xeOgpsF90m1G+ybfHYgQWSAMDOQ/ERAIBKrNitNg8N3bd0DAAACrLsGgCASvRbMi/n3n1l+i2ZVzoKAACF6HwEgJ3Y5pYAwo6i94qFOe2BG3P72w7PnK69S8cBAKAAxUcAACrxxIC9MuBbE0vHAACgIMuuAQAAAIBKKD4CAFCJvec+lz9+74TsPfe50lEAAChE8REAgEqsaNchk4aOzop2HUpHAQCgEPd8BACgEi92H5AvnvD10jEAAChI5yMAAJVot3Z1dl9Yn3ZrV5eOAgBAITofAQCoxFtn1+XRS07M/uN+nsmDR5WOA5XoNqF+s9sXjx3YzEkAYMek8xEAgErU9R6Sv/n81anrPaR0FAAACtH5CABAJZa175T/2uug0jEAAChI5yMAAJXos2x+zrz/2vRZNr90FAAAClF8BACgEv2Xzst5d/0g/ZfOKx0FAIBCLLsGAKASjw8cma7febh0DAAACtL5CAAAAABUQucjAACV2POlF/Ljm76eT485P1P77FE6DjSrbhPqN9m2eOzAAkkAoCydjwAAVOLlNu1S12tIXm7TrnQUAAAK0fkIAEAlpvcYmLEn/XPpGAAAFKTzEQCASrRZtya9li9Mm3VrSkcBAKAQnY8AUMjm7geWuCcYu463z3o2j15yYvYf9/NMHjyqdBwAAArQ+QgAQCWe7zUox3768jzfa1DpKAAAFKLzEQCASizp0CW/ett7S8cAAKAgnY8AAFSi1/KF+fv//Vl6LV9YOgoAAIUoPgIAUInBi+bkil9ckMGL5pSOAgBAIZZdAwBQicmDR6XtxVNKxwAAoCCdjwAAAABAJRQfAQCoxPB503PXlZ/N8HnTS0cBAKAQxUcAACqxrlVNlrbvlHWtXHICALRU7vkIAEAlXug1OB875dLSMQAAKEjxEQB2At0m1JeOANusZv26tF/zcla13S3ra1qXjgMAQAHWwAAAUInR9c9kxTkHZHT9M6WjAABQiOIjAACVmNZjQD7x/76baT0GlI4CAEAhll0DAFCJRbXdctP+HyodAwCAgnQ+AgBQie4rFufkP/wq3VcsLh0FAIBCFB8BAKjE0IWzct3152TowlmlowAAUIhl1wAAVOKxgXtnt4smZ02NS04AgJbKlSAANINuE+pLR4Bmt6GmJqtr2pWOAQBAQZZdAwBQiT3mv5hfXPOl7DH/xdJRAAAoRPERAIBK1GxYn93Wrk7NhvWlowAAUIhl1wAAVOK53rvn6L//YekYAAAUpPMRAAAAAKiEzkcA2MF4OA27iv1efCqPXnJi9h/380wePKp0HAAACtD5CABAJWZ075/PfPyfMqN7/9JRAAAoROcjAACVWNCpe3584AmlYwAAUJDiIwBsR5ZMw/+vW8OSHF73cH43/K+yuGPX0nEAACjAsmsAACqxx4L63DLhjOyxQFEeAKCl0vkIAEAlpgzYMz0ueDBL23cqHQUAgEIUHwEAqMS61m2yqLZb6RgAABRk2TUAAJUYumBmfnrd2Rm6YGbpKAAAFKL4CABAJdquW5tBi+em7bq1paMAAFCIZdcAAFTi2T5Dc/gXry0dAwCAgnQ+AgAAAACVUHwEAKASo+ufzvKz35nR9U+XjgIAQCGKjwAAVGJWlz756ofOyKwufUpHAQCgEPd8BACgEvM698zl7/lk6Riww+g2oX6z2xePHdjMSQCg+RTtfPzGN76Rbt26pVu3brnooou2eNz999+fE088McOGDUu/fv1ywAEH5Pzzz8/y5cu3+v7PP/98Tj311IwaNSp9+vTJqFGjcuqpp2batGnb+UwAAPhLnVctz5F/fiCdV239mg0AgF1XseLj73//+3z/+99Pq1attnrcFVdckeOOOy733ntv9t577xx11FFZunRpLr744hx++OFZsGDBZsc99NBDOeSQQ3LjjTema9euOfroo9O1a9fceOONOfjgg/PII49UcVoAAPyf4fNm5Lc/+lyGz5tROgoAAIUUKT42NDTkC1/4Qvr165cPfvCDWzzu8ccfz/jx49O6dev87Gc/y5133plrr702kydPzqGHHppnn302Z5555mbff+zYsWloaMi4ceMyadKkXHPNNZk0aVLGjRuXFStWZOzYsVm5cmWVpwkA0KL9qf/wDPrmf+VP/YeXjgIAQCFFio//9E//lOeeey6XXXZZunTpssXjLr300mzYsCEnn3xyjjjiiI3bO3bsmMsvvzw1NTW5/fbbM3Xq1CbjbrjhhsyePTvDhw/P+PHjm+wbP358hg8fnpkzZ+amm27avicGAMBGa9q0S323flnTpl3pKAAAFNLsxcf/+Z//yb//+79nzJgxOfLII7d43OrVq3P33XcnSU444YRN9g8ZMiTvete7kiR33HFHk32Nr48//vjU1DQ9xZqamnzkIx9JkvzqV7964ycCAMBWDV40K1f+7LwMXjSrdBQAAApp1uLj8uXL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7Lx2X1if8+66IucddVqm9zCXAQBaIsVHAHZoHiwDO6/d1q7O8Pkzstva1aWjAABQiOIjAACVmNpnj/z1P1xXOgYAAAUpPgIAAPCmuX0KAJtTUzoAAAC7ptH1T2fJOX+V0fVPl44CAEAhio8AAFRidpfeOe+oL2R2l96lowAAUIhl1wAAVOKlzr1y6WGnlI4BAEBBio8AAFSi86rl+avpT+Th3d+eZe07lY4DFLC5+0Am7gUJ0JI027LrNWvWZOLEifn617+eww8/PEOGDEmvXr2y5557ZsyYMfntb3+71fH3339/TjzxxAwbNiz9+vXLAQcckPPPPz/Lly/f6rjnn38+p556akaNGpU+ffpk1KhROfXUUzNt2rTteHYAAPyl4fNm5N4rP5Ph82aUjgIAQCHNVnx88MEH8+EPfziXX355Zs2alYMOOijHHHNMevXqlbvuuisf//jHc8YZZ2TDhg2bjL3iiity3HHH5d57783ee++do446KkuXLs3FF1+cww8/PAsWLNjsZz700EM55JBDcuONN6Zr1645+uij07Vr19x44405+OCD88gjj1R92gAALdaT/Ydn6NfvzpP9h5eOAgBAIc1WfGzVqlWOPfbY3HnnnXnmmWfyn//5n5kwYUL+93//N9dcc01at26da6+9NjfddFOTcY8//njGjx+f1q1b52c/+1nuvPPOXHvttZk8eXIOPfTQPPvssznzzDM3+byGhoaMHTs2DQ0NGTduXCZNmpRrrrkmkyZNyrhx47JixYqMHTs2K1eubK4vAQBAi7K6TbtM7zEwq9u0Kx0FAIBCmq34eOihh+YnP/lJ3v3ud2+y7/jjj89JJ52UJJsUHy+99NJs2LAhJ598co444oiN2zt27JjLL788NTU1uf322zN16tQm42644YbMnj07w4cPz/jx45vsGz9+fIYPH56ZM2du8nkAAGwfgxfNyvdvPj+DF80qHQUAgEKarfj4WvbZZ58kSX39/39D4tWrV+fuu+9OkpxwwgmbjBkyZEje9a53JUnuuOOOJvsaXx9//PGpqWl6mjU1NfnIRz6SJPnVr361nc4AAIBXq129MgdNezy1q600AZrqNqF+kz8A7Jp2mOLjc889lyTp27fvxm11dXVpaGhIkuy3336bHde4fcqUKU22N77e1nEAAGwff+77lrzjKzfnz33fUjoKAACF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X2/2gsl8hh3TypUrc+ihh2bq1Kk555xz8uUvfzlt27bduL+hoSF1dXUb752emM+wozr44IPz5JNP5pRTTslFF120cS6vX78+//zP/5zvfe976dq1a5555pm0b98+ifkMJf3kJz/Js88+m3322SejR4/OxRdfnP/8z//cavGxxJw96aSTcuedd+bQQw/NjTfemI4dOyZJ7r777nziE5/Ihg0b8t///d9529vetk3nv0svu270kY98JHfeeWdmzJiR2bNn53//939zxhlnKDxCBQ499ND85Cc/2aTwmCTHH398TjrppCTJTTfd1GTfpZdemg0bNuTkk09uch/Wjh075vLLL09NTU1uv/32TJ06tcm4G264IbNnz87w4cMzfvz4JvvGjx+f4cOHZ+bMmZt8HrDt/umf/inPPfdcLrvssnTp0mWLx5nPsGO65JJLMnXq1Jxyyik555xzmhQek1fm6KsLj4n5DDuihQsX5sknn0zyynx69VyuqanJV7/61XTo0CFLlizJM888s3Gf+QzlfOpTn8r555+fE088MXvuuWdqal67HNfcc/bPf/5z7rzzzrRu3TqXX375xsJjkhx55JE56aSTsn79+lx66aXbfP4tovgI7Dgaf6ipr6/fuG316tW5++67kyQnnHDCJmOGDBmSd73rXUmSO+64o8m+xtfHH3/8Jt/Aa2pq8pGPfCRJ8qtf/Wo7nQG0TP/zP/+Tf//3f8+YMWNy5JFHbvE48xl2TGvWrMk111yTJPmHf/iH1zXGfIYd07Y00TQuxzSfYedSYs42jnvXu96VIUOGbPKZjTnuuuuurFmzZpvOR/ERaFbPPfdcklfuB9morq4uDQ0NSZL99ttvs+Mat0+ZMqXJ9sbX2zoOeP2WL1+eL37xi+nTp0++853vbPVY8xl2TI8//ngWLFiQ/v37Z9iwYXnyySfzne98J2eccUbOO++8/Pa3v8369eubjDGfYcfUqVOnHHTQQUmSCy64oEkRYP369fn2t7+dlStX5ogjjsigQYOSmM+wsykxZ1/vuBUrVmz8uf71arNNRwO8CXPnzs0NN9yQJDn22GM3bp8+fXqSpGvXruncufNmxw4cOLDJsckrT+FauHBhkmy8sNrSuPnz52fFihWpra19k2cBLc/Xv/71TJ8+Pdddd126deu21WPNZ9gxNS7RHDBgQM4777z867/+azZs+P9v/X7ZZZdln332yfXXX5/BgwcnMZ9hR/Zv//ZvOfHEE3Pttdfm7rvvzr777pvWrVtnypQpmT17dj7+8Y83eYqu+Qw7lxJztvF9tjSuS5cu6dKlS5YuXZrp06dn7733ft3no/MRaBZr167N3//932fp0qUZNWpUxo4du3Hf8uXLk2SrFyqdOnVK8so3078ct7WxjeP+cizw+tx3332ZMGFCPvrRj+boo49+zePNZ9gxNf4gMmXKlFx22WX5zGc+kz/84Q+ZMWNGbrvttgwfPjxTpkzJxz/+8Y1dVOYz7LhGjBiRe+65J+9973sza9as3HnnnfnVr36V6dOnZ9iwYTnkkEOa3J/ZfIadS4k5+3o+s3Hfts51xUegWZx55pmZOHFievTokZ/85Cce+AQ7gSVLluT0009Pr1698t3vfrd0HOBNaOxyXLNmTU444YRcdNFFGT58eLp06ZLDDjsst956a9q3b5+nnnoqv/jFLwqnBV7LQw89lHe/+915+umnc/XVV2fq1KmZNm1abrrppqxZsyann356vvjFL5aOCZBE8RFoBmeffXZ++tOfplu3brn11lszfPjwJvsbf/OyYsWKLb5H429hXt1y/urf2Gxp7Kt/87OldnVg87761a+mvr4+F1100cYb1r8W8xl2TK+eY6eccsom+wcPHrzxYVL3339/kzHmM+xYFi9enE9+8pOZP39+fvrTn+aEE05Inz590q1btxx11FH5xS9+kY4dO+a6667Lf//3fycxn2FnU2LOvp7PbNy3rXNd8RGo1Lnnnpsf/ehH6dq1a2699daMHj16k2Man6S1ZMmSLbZvNz4d+9VP3ercuXO6d++eJJk5c+ZWx/Xs2dP9Z2Ab3XHHHWnTpk2uvvrqfOhDH2ry57/+67+SJD/96U/zoQ99KH/3d3+XxHyGHdXQoUM3+9+bO2bu3LlJzGfYUd19992ZP39+hg4dmne+852b7B86dGje8Y53JEkmTpyYxHyGnU2JOdv4Plsat3Tp0ixdunSTz3w9FB+BynzjG9/IFVdckS5duuTWW2/d4lOzRowYkY4dOyZJJk+evNljGrf/ZfGy8fW2jgNen7Vr1+bBBx/c5M9LL72UJJkxY0YefPDBPPLII0nMZ9hRjR49Oq1atUqSLFiwYLPHNG5v/EHEfIYdU2NhYGudR433e1y0aFES8xl2NiXm7OsdV1tbu8lqxtei+AhU4rzzzsu//du/pUuXLrntttuy//77b/HYdu3abVzqdfPNN2+yf8aMGXn44YeTZJMHXjS+vuWWW7J+/fom+9avX59bb701SXLMMce88ZOBFmrGjBlZvHjxZv984hOfSPJKd/PixYvzxBNPJDGfYUfVt2/fHHjggUn+/06oV1uzZk0efPDBJNnYMWU+w46pf//+SZJnn302S5Ys2WT/mjVr8vjjjydJdt999yTmM+xsSszZD33oQ0mS3//+93nxxRc3+czGHEcddVTatm27Teej+AhsdxdccEEuu+yydO3a9TULj43OOOOMtGrVKtdff33uvffejdsbGhpy+umnZ926dTn22GOz5557Nhl30kknpX///qmrq8uFF17YZN+FF16Yurq6DBw4MGPGjNk+Jwe8JvMZdkznnHNOkuSSSy7Z2K2cvNLhfO6552batGnp3LlzTj755I37zGfY8RxxxBGpra3NypUr86UvfanJ/dtWr16dr33ta5k5c2batm2bD3/4wxv3mc+wc2nuOTty5Mh88IMfzLp163L66adn5cqVG/fdc889ueGGG1JTU5Mzzzxzm8+l1eLFizds8yiALbjzzjtz0kknJUn222+/7L333ps9rmfPnrnggguabLviiity7rnnplWrVjn44IPTu3fvTJo0KXPmzMmIESNy1113bfahFw899FCOP/74NDQ0ZNSoURk5cmSefvrpPPXUU6mtrc1tt92WAw44YPufLLRgp556am688cace+65OeusszbZbz7Djumiiy7KhRdemDZt2uQd73hH+vTpk8cffzwzZsxIhw4dcu211+b9739/kzHmM+x4/vM//zOnnXZa1q5dm169emX//fdPmzZt8thjj2XWrFmpqanJ9773vY33ZG5kPkMZjz32WL7yla9sfP3CCy9kwYIFGThw4MZu5iS57rrr0q9fv42vm3vOzps3L0cddVSee+659OvXLwcddFDmzZuXBx98MBs2bMh3vvOdfP7zn9/m81d8BLar66+/PqeddtprHjd48OCNyzRf7f7778/3v//9/PGPf0xDQ0MGDRqUD3/4wznzzDO3el+b559/Pt/97nczceLEzJ8/P7169cqhhx6as88+O3vsscebOidgU69VfEzMZ9hR3XffffnhD3+YP/zhD1m+fHn69u2b97znPTnjjDM26Z5oZD7DjueJJ57ID3/4w/zv//5vZs+enQ0bNqRv37456KCD8rnPfW7jLRT+kvkMze9//ud/XtetCR5//PGNt0to1NxzdunSpbn00ktz++23Z+bMmenYsWPe8Y535PTTT8+hhx76+k/6VRQfAQAAAIBKuOcjAAAAAFAJxUcAAAAAoBKKjwAAAABAJRQfAQAAAPj/2rFjAQAAAIBB/taj2FcYwUI+AgAAAAAL+QgAAAAALOQjAAAAALCQjwAAAADAQj4CAAAAAAv5CAAAAAAs5CMAAAAAsJCPAAAAAMAiAM3z1u8SjewAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "ax.hist(data_unif_sub, bins=200);\n", + "plot_quartiles(ax)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "e3265730-13b3-4f2e-af55-60ea13d69453", + "metadata": {}, + "outputs": [], + "source": [ + "# Let's seek a sampling ratio of 20%\n", + "desired_sampling_ratio = 0.20\n", + "\n", + "# With this desired fraction, we compute the new normalization factor\n", + "unif_norm_factor = 1/(width*desired_sampling_ratio)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "d37df65d-ea77-4743-b424-5d94dedc873d", + "metadata": {}, + "outputs": [], + "source": [ + "data_unif_sub2 = subsample_gauss(data_unif, mean, sdev, unif_norm_factor)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "afddd196-15aa-42f8-88b5-aca67385dee9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.19953666666666667" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Now we have our desired sampling ratio\n", + "len(data_unif_sub2)/len(data_unif)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "dceb49cc-2b80-4490-b01c-4f65d979ec34", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probability mass below Pa: 0.152854112026194\n", + "Probability mass above Pb: 0.09983127578891098\n" + ] + } + ], + "source": [ + "# And the probability masses stay as before\n", + "check_regions(data_unif_sub2)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "eb4a19f7-591a-454a-b077-9311d9617b13", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABRMAAAK0CAYAAACQgarxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABqUUlEQVR4nO3deZheZX0//ncmISSZLJN9DyEmQIISFilrBbVQVERBwAC2Ja1WEamQakETlQpUKkKwiGJFQ5WtLsAvUkSgllgwCGgICIEwLFkmC9m3Scj6+4MmX8YkMBGYkzPn9bquXDDnnPt53idwT5585nPfp83y5cu3BAAAAADgddQUHQAAAAAAKAfFRAAAAACgWRQTAQAAAIBmUUwEAAAAAJpFMREAAAAAaBbFRAAAAACgWRQTAQAAAIBmUUwEAAAAAJpFMREAAAAAaBbFRAAAAACgWRQTgWZZt25dnn/++axbt67oKMCboM0TT6TL296WNk88YX5DK1Wluf3q72nQ2lVpbkOVlGluKyYCzbZp06aiIwBvkjabNqVmyZK0+b95bX5XU81jj6Vrz56peeyxoqPwFqnK3P7j72nQ2lVlbkPVlGVuKyYCAFTUlkGDsu4b38iWQYOKjgIAQEm0KzoAAADF2NKrV9aPHVt0DAAASkRnIgBAVS1fnnZ33ZUsX150EgAASkIxEQCgompefDG1Z56ZmhdfLDoKAAAlYZkzAEBFbd5//6ysr8+Wbt2KjgIAQEkoJgIAVNUee2RLr15FpwAAoEQscwYAqKg2s2al4znnpM2sWUVHAQCgJBQTAQAqqs369al54YW0Wb++6CgAAJSEZc4AABW1ecSIrLn77qJjAABQIjoTAQAAAIBmUUwEAKiomscfT9fBg1Pz+ONFRwEAoCQUEwEAKmpLv35Zd+GF2dKvX9FRAAAoCXsmAgBU1JY+fbL+M58pOgYAACWiMxEAoKpWrkzb++9PVq4sOgkAACWhmAgAUFE1zz+fzh/+cGqef77oKAAAlIRlzgAAFbV55MisnD7dnokAADSbYiIAQFXtuWe27LVX0SkAACgRy5wBACqqzZw56fC5z6XNnDlFRwEAoCQUEwEAKqpNY2PaPfxw2jQ2Fh0FAICSsMwZAKCiNu+7b1b/+tdFxwAAoER0JgIAAAAAzaKYCABQUTV/+EO67Ltvav7wh6KjAABQEoqJAAAVtaVXr6z/+MezpVevoqMAAFAS9kwEAKioLf365eXPf77oGAAAlIjORACAqlq9Om0ffjhZvbroJAAAlIRiIgBARdXU16fz8cenpr6+6CgAAJSEZc4AABW1ed99s2rq1GweOrToKAAAlIRiIgBAVXXsmM0jR76hl6ib1LDdseVjB76h1wQAYPdlmTMAQEW1aWhIhy99KW0ati8IAgDAjigmAgBUVJuVK9PuF79Im5Uri44CAEBJWOYMAFBRm0eOzOpHHy06BgAAJaIzEQAAAABoFsVEAICKqpkxI50POig1M2YUHQUAgJJQTAQAqKgt3bplw4c/nC3duhUdBQCAkrBnIgBARW0ZMCAvf+UrRccAAKBEdCYCAFTV2rWp+cMfkrVri04CAEBJKCYCAFRUzTPPpMvRR6fmmWeKjgIAQEkoJgIAVNTmESOy+le/yuYRI4qOAgBASdgzEQCglaub1LDD48vHDsymgw9u4TQAAJSZzkQAgIpqs2BB9vza19JmwYKiowAAUBKKiQAAFdVmyZK0/9GP0mbJkqKjAABQEpY5AwBU1Ob998+qp54qOgYAACWiMxEAAAAAaBbFRACAiqp5+ul0PvLI1Dz9dNFRAAAoCcVEAICK2tK5czYefXS2dO5cdBQAAErCnokAABW1ZdCgrPv614uOAQBAiehMBACoqnXrUvP888m6dUUnAQCgJHa5mPjss8/mu9/9bs4555wceeSR6dmzZ+rq6nLFFVe87tj7778/p512WoYNG5Z+/frl0EMPzSWXXJLVq1e/5rjnn38+55xzTkaNGpU+ffpk1KhROeecc/Liiy++5rhVq1blq1/9at75znemX79+GTZsWE4//fRMmTJlV24ZAKBVqnn66XQ5+OBC90ysm9Sww18AAOyednmZ8/e///1cd911u/xG1157bcaPH582bdrkiCOOSJ8+fTJ16tRceeWVmTx5cu6+++707Nlzu3EPPfRQTjnllDQ2NmbkyJE5/PDDM2PGjNxyyy2ZPHly7rjjjhx66KHbjVu0aFHe9773pb6+Pv369csJJ5yQl156Kffee2/uvffeXH755fnkJz+5y/cBANBaDJjaKYecOym/m9opq6f9vwLe8rEDC0wFAMDubJc7E0eNGpXzzjsv3/ve9/Lwww/nox/96OuOmT59eiZMmJC2bdvmxz/+ce66667ccMMNmTZtWo455pg8++yzueCCC7Yb19jYmLFjx6axsTHjxo3L1KlT84Mf/CBTp07NuHHjsmbNmowdOzZr167dbuxnP/vZ1NfX55hjjsnvf//73HDDDbnrrrvyn//5n6mpqckXvvCF/OEPf9jV2wcAaDVWd6jNlOF/ltUdaouOAgBASexyMfGv//qvc8kll+S0007LPvvsk5qa13+JiRMnZsuWLTnrrLNy3HHHbTveqVOnXHPNNampqcnkyZMzc+bMJuNuvvnmzJ8/P8OHD8+ECROanJswYUKGDx+euXPn5tZbb21y7umnn85dd92Vtm3b5pprrkmnTp22nTv++ONz5plnZvPmzZk4ceKu3j4AQKvRZ9XifO5XP0ifVYuLjgIAQEm85Q9gWb9+fe65554kyamnnrrd+SFDhuSwww5Lktx5551Nzm39+pRTTtmuaFlTU5OTTz45SfLzn/98h+MOO+ywDBkyZLv33Jrj7rvvzoYNG3b5ngAAWoN+KxfnC//9vfRbqZgIAEDzvOXFxPr6+jQ2NiZJDjrooB1es/X4448/3uT41q/fqnFr1qzJc88997r3AADQGj0+cL/0vGxqHh+4X9FRAAAoiV1+AMuumjVrVpKkW7du6dKlyw6vGThwYJNrk1eexLx06dIkyaBBg15z3OLFi7NmzZrU1tY2eZ2djevatWu6du2alStXZtasWdlvv9f/AL1u3brXvQZas/Xr1zf5J1Bu7V41p81v/tgb/dzzZnxu8tnrjavS3H7197SN/t+hlavS3IYqKXpud+jQodnXvuXFxNWrVyfJtkLfjnTu3DnJKwXEPx73WmO3jts6dut1zXnP2trarFy5ssl7vpZ58+Zl06ZNzboWWrOFCxcWHQF4E3RauDA988qcbuzePYn5vTs79IFO2x175OjGXXiF7ccnyT4vvZAbbh6fs8+8LDP77L3t+Jw5c97Qa7/R8bv+GryWKsztJt/T/L9DRVRhbkMVFTG327Ztm2HDhjX7+re8mNhaDBgwoOgIUKj169dn4cKF6du3b9q3b190HOANardsWZKkb9++aezb1/ze7S3Z7sjgwYPf0PgkWdduzzzZb3jWtdvzTX3tNyPbrr0GO1KlP7tf/T1to/93aOWqNLehSso0t9/yYuLW7sE1a9bs9JqtnYSvXgb96q7DnY19dffijsa+1ntuPbezpdd/bFfaPaE1a9++vfkArUDN/31Aad++fTa+6t/N7/J4M/5bze4xIJ8Y89U3/bXfjGz+X3zzVGFuv/p7WrtWfq+wVRXmNlRRGeb2W/4Alq1PU16xYsVOlxQ3NDQ0uTZ5pcjX/f+WXc2dO/c1x/Xs2bPJkuatr7OzcStXrszKlSu3e08AgCppt2lD+q1YlHabNhQdBQCAknjLi4kjRoxIp06v7IUzbdq0HV6z9fjo0aObHN/69Vs1rra2NsOHD3/dewAAaI3eMe/ZzL/42Lxj3rNFRwEAoCTe8mJi+/btc/zxxydJfvrTn253fvbs2Xn44YeTJCeeeGKTc1u/vu2227J58+Ym5zZv3pzbb789SfLBD36wybkPfOADSZLf/va3O9y8e2uOE044IXvssccu3xMAQGvwXK/B+cDHv53netljDgCA5nnLi4lJcv7556dNmza56aabct9992073tjYmPPOOy+bNm3KSSedlH322afJuDPPPDP9+/dPfX19LrvssibnLrvsstTX12fgwIEZM2ZMk3MjR47M+9///mzatCnnnXde1q5du+3cvffem5tvvjk1NTW54IIL3oK7BQAoh5Udu+Su/Y/Jyo7N20MaAAB2+QEsjz32WD73uc9t+/qFF15Iktxwww355S9/ue34jTfemH79+iVJDjzwwFx66aUZP358TjvttBx11FHp3bt3pk6dmgULFmTEiBGZOHHidu/VqVOnTJo0KaecckquvPLK/OIXv8jIkSMzY8aMPPXUU6mtrc0NN9yQjh07bjf2m9/8Zp555pncf//9Oeigg3LEEUdk0aJFefDBB7Nly5Zcfvnlefvb376rtw8A0Gr0Wr00pz92d3584AlZ3LnHtuN1kxq2u3b52IEtGQ0AgN3ULhcTV61alUcffXS74w0NDdseiJIkL7/8cpPz5557bvbff/9861vfyu9+97s0NjZm0KBBGTduXC644IKdPlX58MMPzwMPPJCvf/3rmTJlSiZPnpxevXplzJgxufDCC7P33nvvcFzv3r3zP//zP5k4cWImT56cu+66K506dcp73/venHfeeTnmmGN29dYBAN40u0PBbtDyhbnqjq/nN0MPalJMBACAndnlYuKf//mfZ/ny5X/Smx177LE59thjd3ncsGHDct111+3yuK5du+YrX/lKvvKVr+zyWACA1u6xQSPT4RuPNevaHRU/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mDAhe+yxx/8LUVOTL3zhC+nYsWNWrFiRZ555Ztu5iRMnZsuWLTnrrLNy3HHHbTveqVOnXHPNNampqcnkyZMzc+bMJu938803Z/78+Rk+fHgmTJjQ5NyECRMyfPjwzJ07N7feeutbcbsAALu9vRfPyc9+8NnsvXhO0VEAACiJFismtm/fvtnX9uzZM0myfv363HPPPUmSU089dbvrhgwZksMOOyxJcueddzY5t/XrU045JTV/9NP2mpqanHzyyUmSn//8583OBQDQmtRs2Zw9N65PzZbNRUcBAKAkWqyY2Llz5xxxxBFJkksvvTQbNmzYdm7z5s352te+lrVr1+a4447LoEGDkiT19fVpbGxMkhx00EE7fN2txx9//PEmx7d+vavjAACq4rnee+XEv/9Onuu9V9FRAAAoiXYt+Wb/9m//ltNOOy033HBD7rnnnhx44IFp27ZtHn/88cyfPz8f/ehHc8UVV2y7ftasWUmSbt26pUuXLjt8zYEDBza5NklWrVqVpUuXJsm2wuTOxi1evDhr1qxJbW3ta2Z/9T6OUEXr169v8k+g3Nq9ak6b39CyWupzZZXm9qu/p230uZ1WrkpzG6qk6LndoUOHZl/bosXEESNG5N57780nP/nJ/OpXv8q8efO2ndtvv/1y9NFHp2vXrtuOrV69Okles9DXuXPnJK8UEP943GuN3Tpu69jXKybOmzcvmzZtes1roAoWLlxYdATgTdBp4cL0zCtzurF79yStdX53KjrAbu2gOU/l91edloPH/STTBo8qOk5lzJnTsntUts653VST72kt/PsLRanC3IYqKmJut23bNsOGDWv29S1aTHzooYfyV3/1V2nXrl2uv/76vOtd70r79u3z0EMPZfz48TnvvPPy29/+Nt/61rdaMlazDBgwoOgIUKj169dn4cKF6du37y7tgQrsntotW5Yk6du3bxr79m3F83tJ0QF2a7O798/HP/rPmd29f9FRKuXQB3Zc5F5wRs839X2q9Gf3q7+nbRw8uOA08Naq0tyGKinT3G6xYuLy5cvzsY99LEuWLMm9996bd77zndvOnXDCCdlvv/1y5JFH5sYbb8zpp5+ed73rXdu6B9esWbPT193ahfjqZdCv7jrc2dhXdy/ubAn1q+1Kuye0Zu3btzcfoBWo+b8PKO3bt8/GV/27+V0tSzp3z/cP3/4hdxTj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cdasWZPa2trXzb5u3brXvQZas/Xr1zf5JwDl12fV4pz1uztz0yEn5qUuvYqOA28pn+dpLXwuh9ap6LndoUOHZl/bYsXEX/3qV5k0aVI+8pGP5MQTT3zd61evXp0kr1no69z5lZ+ir1q1artxrzV267itY5tTTJw3b142bdr0utdBa7dw4cKiI8BurlPRAaDZ+q9clIvv/nZ+NeIwxURavTlz5hQdAd5UPpdD61TE3G7btm2GDRvW7OtbpJi4YsWKnHfeeenVq1e+/vWvt8RbvukGDBhQdAQo1Pr167Nw4cL07ds37du3LzoOtKh+tyzZ4fEFZ/TcwdEdXwu7o+kDR6bb5Q8XHQNaxKEP7PiHPTv+Xg67L5/LoXUq09xukWLiF77whTQ0NGTSpEnp2bN5f1hv7R5cs2bNTq/Z2oX46mXQr+463NnYV3cv7mwJ9R/blXZPaM3at29vPsD/MRcAys/3csrK53Joncowt1ukmHjnnXemXbt2uf7663P99dc3Offss88mSX70ox/l/vvvT9++ffODH/wgQ4a88lTBFStWZNWqVTss+jU0vPJ0zK3XJq8UB7t3755ly5Zl7ty5ecc73rHTcT179mzWEmcAgNZon5deyPdv/VL+bswlmdln76LjAABQAi22Z+LGjRvz4IMP7vT87NmzM3v27AwePDhJMmLEiHTq1CmNjY2ZNm1a3vWud203Ztq0aUmS0aNHNzk+evTo3H///Zk2bVre9773NXscAECVvNyufep7DcnL7XbvpTQAAOw+alriTWbPnp3ly5fv8NcZZ5yRJBk/fnyWL1+eJ554IskrbZ3HH398kuSnP/3pDl/z4Ydf2ePnjx/osvXr2267LZs3b25ybvPmzbn99tuTJB/84AffxLsEACiXWT0GZuyZ/5JZPQYWHQUAgJJokWLin+r8889PmzZtctNNN+W+++7bdryxsTHnnXdeNm3alJNOOin77LNPk3Fnnnlm+vfvn/r6+lx22WVNzl122WWpr6/PwIEDM2bMmBa5DwCA3VG7TRvSa/XStNu0oegoAACUxG5dTDzwwANz6aWXZtOmTTnttNNy4oknZuzYsTn44IMzZcqUjBgxIhMnTtxuXKdOnTJp0qR06tQpV155ZY488sj83d/9XY488shceeWVqa2tzQ033JCOHTsWcFcAALuHd8x7Nou+9Od5x7xn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yYoVK5osY361rU9/3npt8kpxsHv37kmSuXPnvua4nj17vu4SZwCA1uigOU9lwz8ekIPmPFV0FAAASqKQYuKXv/zlXHvttenatWtuv/32nT5xecSIEenU6ZV9taZNm7bDa7Ye/+Ni5Navd3UcAEBVzOneL+d+ZELmdO9XdBQAAEqixYuJF198cf7t3/4tXbt2zR133JGDDz54p9e2b98+xx9/fJLkpz/96XbnZ8+enYcffjhJcuKJJzY5t/Xr2267LZs3N91UfPPmzbn99tuTJB/84Af/9JsBACixxZ175N+PPD2LO/coOgrQguomNWz3CwCaq0WLiZdeemmuvvrqdOvW7XULiVudf/75adOmTW666abcd9992443NjbmvPPOy6ZNm3LSSSdln332aTLuzDPPTP/+/VNfX5/LLrusybnLLrss9fX1GThwYMaMGfPm3BwAQMl0W7syH/zDr9Jt7cqiowAAUBIt9gCWu+66K9/4xjeSJMOGDcv3vrfjJwf27Nkzl1566bavDzzwwFx66aUZP358TjvttBx11FHp3bt3pk6dmgULFmTEiBGZOHHidq/TqVOnTJo0KaecckquvPLK/OIXv8jIkSMzY8aMPPXUU6mtrc0NN9yQjh07vjU3DACwmxu2eG4mf/+8HDzuJ5k2eFTRcQAAKIEWKyYuW7Zs279PmzZtp3sZDh48uEkxMUnOPffc7L///vnWt76V3/3ud2lsbMygQYMybty4XHDBBTt9GvPhhx+eBx54IF//+tczZcqUTJ48Ob169cqYMWNy4YUXZu+9937zbhCg4iyRgvJ5YsCI9L7kf7O8444/SwEAwB9rsWLiWWedlbPOOutPHn/sscfm2GOP3eVxw4YNy3XXXfcnvy8AQGu1se0e9ksEAGCXFPI0ZwAAirfX0oZMuvmL2WupzmIAAJpHMREAoKL23Lg+wxfPzp4b1xcdBQCAkmixZc4AAOxeZvbZO3/+DzcWHQPYDexs7+PlYwe2cBIAdnc6EwEAAACAZlFMBACoqNENM7Lioj/L6IYZRUcBAKAkFBMBACpqftfeufiET2d+195FRwEAoCTsmQgAUFEvdemViceeXXQMAABKRGciAEBFdVm3Ou99Zmq6rFtddBQAAEpCMREAoKKGL5qd+677eIYvml10FAAASsIyZwCAinqy//AM/dI99kwEAKDZFBMB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O71m4MCBTa4FAAAAAHau1RYTV69enSSpra3d6TWdO3dOkqxatapFMgEAAABAmbXaYiIAAAAA8OZqtcXErV2Ha9bs/OmEW7sXu3Tp0iKZAAAAAKDMWm0xcciQIUmShoaGnV6z9dzWawEAAACAnWu1xcQDDjggSbJ06dK8+OKLO7zmscceS5KMHj26hVIBAAAAQHm12mLiwIEDc/DBBydJfvrTn253furUqZk7d2723HPPHHfccS0dDwAAAABKp9UWE5Nk3LhxSZKrr756Wxdi8kq34j/+4z8mST7xiU+kW7duRcSDFrFhw4ZMmTIlX/rSl/Lud787Q4YMSa9evbLPPvtkzJgx+eUvf/ma4++///6cdtppGTZsWPr165dDDz00l1xyybY9R3fm+eefzznnnJNRo0alT58+GTVqVM4555yddgoDb9yXv/zl1NXVpa6uLldcccVOrzOvoRzWr1+f6667LieccEKGDh2avn37ZtSoUTn11FNz22237XCM+Q27tzlz5uTzn/983vnOd6Zfv37p27dvDjjggHzqU5/KE088sdNx5jYU69lnn813v/vdnHPOOTnyyCPTs2fP1/3MvVVLz99Vq1blq1/96rbvM8OGDcvpp5+eKVOm7Motv6Y2y5cv3/Kmvdpu6MILL8x3v/vd7LHHHjnmmGPSqVOnTJkyJStWrMjhhx+e22+/PR07diw6Jrxl7r///nz4wx9OkvTt2zcHHnhgOnXqlGeeeSZPPfVUkuTss8/OxIkT06ZNmyZjr7322owfPz5t2rTJEUcckT59+mTq1KlZuHBhRowYkbvvvjs9e/bc7j0feuihnHLKKWlsbMzIkSMzcuTIzJgxIzNmzEhtbW3uuOOOHHrooW/5vUOV/Pa3v8373ve+bNmyJVu2bMn48ePz+c9/frvrzGsoh4aGhnzkIx/J008/nZ49e+ad73xnamtr09DQkCeeeCJ/8Rd/kR/+8IdNxpjfsHt79NFHc/LJJ2fVqlUZMGBARo8enbZt2+aJJ57IrFmz0q5du1x//fXbPrtvZW5D8S666KJcd9112x3f2WfurVp6/i5atCjve9/7Ul9fn379+uXwww/PSy+9lKlTpyZJLr/88nzyk598A78Tr2j1xcQkuf322/O9730vf/jDH7Jhw4bsvffeOf300/PpT3867du3LzoevKWmTJmS73//+/nUpz6VI488ssm52267LZ/4xCeyadOmfOc738kZZ5yx7dz06dNz7LHHpqamJrfeeuu27QAaGxtzxhlnZMqUKTnppJO2+4tMY2NjDjnkkMyfPz/jxo3Ll7/85W3nvvrVr+aqq67KoEGD8sgjjyjkw5uksbExf/7nf561a9fmoIMOyn/913/t8IONeQ3lsHbt2hxzzDGZOXNmLrroovzjP/5j9thjj23nGxsbU19fv22P8MT8hjI46qij8uSTT+bss8/OFVdcsW1eb968Of/yL/+Sb3zjG+nWrVueeeaZdOjQIYm5DbuLH/7wh3n22WdzwAEHZPTo0bnyyivzn//5n69ZTCxi/p555pm56667cswxx+SWW25Jp06dkiT33HNPzjjjjGzZsiW//vWv8/a3v/0N/X606mXOW5188sm56667Mnv27MyfPz+/+c1vcv755yskUgnHHHNMfvjDH25XSEySU045JWeeeWaS5NZbb21ybuLEidmyZUvOOuusJvuKdurUKddcc01qamoyefLkzJw5s8m4m2++OfPnz8/w4cMzYcKEJucmTJiQ4cOHZ+7cudu9H/Cn++d//uc899xzufrqq9O1a9edXmdeQzlcddVVmTlzZs4+++xcdNFFTQqJyStz9tWFxMT8ht3d0qVL8+STTyZ5ZW69el7X1NTkC1/4Qjp27JgVK1bkmWee2XbO3Ibdw1//9V/nkksuyWmnnZZ99tknNTWvX05r6fn79NNP56677krbtm1zzTXXbCskJsnxxx+fM888M5s3b87EiRP/lN+CJipRTAR2butfRhoaGrYdW79+fe65554kyamnnrrdmCFDhuSwww5Lktx5551Nzm39+pRTTtnuG2xNTU1OPvnkJMnPf/7zN+kOoNr+93//N//+7/+eMWPG5Pjjj9/pdeY1lMOGDRvygx/8IEnyD//wD80aY37D7m9XGlm2Lnk0t6G8ipi/W8cddthhGTJkyHbvuTXH3XffnQ0bNuzyPTXJ8YZGA6X33HPPJXllP8Wt6uvr09jYmCQ56KCDdjhu6/HHH3+8yfGtX+/qOGDXrV69Op/5zGfSp0+fXH755a95rXkN5TB9+vQsWbIk/fv3z7Bhw/Lkk0/m8ssvz/nnn5+LL744v/zlL7N58+YmY8xv2P117tw5RxxxRJLk0ksvbfIX+c2bN+drX/ta1q5dm+OOOy6DBg1KYm5DmRUxf5s7bs2aNdvqAH+qdm9oNFBqCxcuzM0335wkOemkk7YdnzVrVpKkW7du6dKlyw7HDhw4sMm1yStPjVq6dGmSbPsQtLNxixcvzpo1a1JbW/sG7wKq60tf+lJmzZqVG2+8MXV1da95rXkN5bB1GeSAAQNy8cUX55vf/Ga2bPl/W5xfffXVOeCAA3LTTTdl8ODBScxvKIt/+7d/y2mnnZYbbrgh99xzTw488MC0bds2jz/+eObPn5+PfvSjTZ4Ma25DeRUxf7e+zs7Gde3aNV27ds3KlSsza9as7Lfffrt6W9voTISK2rhxY/7+7/8+K1euzKhRozJ27Nht57Y+ov61PlR07tw5ySvf7P543GuN3Truj8cCu+ZXv/pVJk2alI985CM58cQTX/d68xrKYetfIB5//PFcffXV+fjHP55HH300s2fPzh133JHhw4fn8ccfz0c/+tFtnU3mN5TDiBEjcu+99+Y973lP5s2bl7vuuis///nPM2vWrAwbNixHH310k72PzW0oryLmb3Pec+u5NzrvFROhoi644IJMmTIlPXr0yA9/+EMPJIISWbFiRc4777z06tUrX//614uOA7yJtnYhbtiwIaeeemquuOKKDB8+PF27ds2xxx6b22+/PR06dMhTTz2Vn/3sZwWnBXbFQw89lCOPPDIzZszI9ddfn5kzZ+bFF1/Mrbfemg0bNuS8887LZz7zmaJjArwuxUSooAsvvDA/+tGPUldXl9tvvz3Dhw9vcn7rTzrWrFmz09fY+lOPV7dsv/onJDsb++qftOys3Rt4bV/4whfS0NCQK664Ytsm7a/HvIZyePWcO/vss7c7P3jw4G0PW7r//vubjDG/Yfe1fPnyfOxjH8vixYvzox/9KKeeemr69OmTurq6nHDCCfnZz36WTp065cYbb8yvf/3rJOY2lFkR87c577n13Bud94qJUDHjx4/Pd7/73XTr1i233357Ro8evd01W5/8tGLFip22P299+vOrnxLVpUuXdO/ePUkyd+7c1xzXs2dPe7PAn+jOO+9Mu3btcv311+cDH/hAk1///d//nST50Y9+lA984AP527/92yTmNZTF0KFDd/jvO7pm4cKFScxvKIN77rknixcvztChQ/POd75zu/NDhw7NIYcckiSZMmVKEnMbyqyI+bv1dXY2buXKlVm5cuV27/mnUEyECvnyl7+ca6+9Nl27ds3tt9++06c8jRgxIp06dUqSTJs2bYfXbD3+x8XIrV/v6jhg12zcuDEPPvjgdr9eeumlJMns2bPz4IMP5pFHHkliXkNZjB49Om3atEmSLFmyZIfXbD2+9S8Q5jfs/rb+5f61uoG27pe4bNmyJOY2lFkR87e542pra7dbnbirFBOhIi6++OL827/9W7p27Zo77rgjBx988E6vbd++/bYlVD/96U+3Oz979uw8/PDDSbLdgx+2fn3bbbdl8+bNTc5t3rw5t99+e5Lkgx/84J9+M1Bxs2fPzvLly3f464wzzkjyShfy8uXL88QTTyQxr6Es+vbtm8MPPzzJ/+tOerUNGzbkwQcfTJJtXUzmN+z++vfvnyR59tlns2LFiu3Ob9iwIdOnT0+S7LXXXknMbSizIubvBz7wgSTJb3/728yZM2e799ya44QTTsgee+yxy/f0aoqJUAGXXnpprr766nTr1u11C4lbnX/++WnTpk1uuumm3HfffduONzY25rzzzsumTZty0kknZZ999mky7swzz0z//v1TX1+fyy67rMm5yy67LPX19Rk4cGDGjBnz5twc0GzmNZTDRRddlCS56qqrtnUXJ690JI8fPz4vvvhiunTpkrPOOmvbOfMbdm/HHXdcamtrs3bt2nz2s59tsufZ+vXr88UvfjFz587NHnvskQ996EPbzpnbUF4tPX9HjhyZ97///dm0aVPOO++8rF27dtu5e++9NzfffHNqampywQUXvOF7a7N8+fItb/hVgN3WXXfdlTPPPDNJctBBB2W//fbb4XU9e/bMpZde2uTYtddem/Hjx6dNmzY56qij0rt370ydOjULFizIiBEjcvfdd+/w4Q8PPfRQTjnllDQ2NmbUqFEZOXJkZsyYkaeeeiq1tbW54447cuihh775NwvknHPOyS233JLx48fn85///HbnzWsohyuuuCKXXXZZ2rVrl0MOOSR9+vTJ9OnTM3v27HTs2DE33HBD/vIv/7LJGPMbdm//+Z//mXPPPTcbN25Mr169cvDBB6ddu3Z57LHHMm/evNTU1OQb3/jGtv2OtzK3oXiPPfZYPve5z237+oUXXsiSJUsycODAbZ3HSXLjjTemX79+275u6fm7aNGinHDCCXnuuefSr1+/HHHEEVm0aFEefPDBbNmyJZdffnk+9alPveHfD8VEaOVuuummnHvuua973eDBg7cth3y1+++/P9/61rfyu9/9Lo2NjRk0aFA+9KEP5YILLnjNPV+ef/75fP3rX8+UKVOyePHi9OrVK8ccc0wuvPDC7L333m/onoCde71iYmJeQ1n86le/yne+8508+uijWb16dfr27Zt3vetdOf/887frYtjK/Ibd2xNPPJHvfOc7+c1vfpP58+dny5Yt6du3b4444oh88pOf3LZ9wR8zt6FY//u//9usbQGmT5++bauCrVp6/q5cuTITJ07M5MmTM3fu3HTq1CmHHHJIzjvvvBxzzDHNv+nXoJgIAAAAADSLPRMBAAAAgGZRTAQAAAAAmkUxEQAAAABoFsVEAAAAAKBZFBMBAAAAgGZRTAQAAAAAmkUxEQAAAABoFsVEAAAAAKBZFBMBAAAAgGZRTAQAAAAAmkUxEQAAAABoFsVEAAAAAKBZ/n95nL7RP0CvvwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "ax.hist(data_unif_sub2, bins=200);\n", + "plot_quartiles(ax)" + ] + }, + { + "cell_type": "markdown", + "id": "cee4297c-dfad-494f-9696-f10dbc346691", + "metadata": {}, + "source": [ + "## Applying gaussian sampling" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "1e270d91-f208-4a04-a296-c150cd11da4b", + "metadata": {}, + "outputs": [], + "source": [ + "# Let's seek a sampling ratio of 20%\n", + "desired_sampling_ratio = 0.20\n", + "\n", + "# With this desired fraction, we compute the new normalization factor\n", + "unif_norm_factor = 1/(width*desired_sampling_ratio)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "a20f8ef7-5cd5-4f6f-bc82-5e418bbdf992", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 44.1 ms, sys: 12.2 ms, total: 56.3 ms\n", + "Wall time: 54.3 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "data_sub = subsample_gauss(data, mean, sdev, unif_norm_factor)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "614012b5-900b-4e17-bf4d-2b679bd8cef0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.396047" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Compute the sampling ratio we have achieved\n", + "len(data_sub)/len(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "8eb74f54-c7e9-45dd-ba1a-1cb7ba1bc9f4", + "metadata": {}, + "outputs": [], + "source": [ + "def plot_subsample(orig: np.ndarray, sub: np.ndarray, \n", + " name: str = 'Gaussian subsampling'):\n", + " fig, ax = plt.subplots()\n", + " if orig is not None:\n", + " ax.hist(orig, bins=1000, range=[0, qr[2]*3]);\n", + " ax.hist(sub, bins=1000, range=[0, qr[2]*3], color=\"g\");\n", + " if orig is not None:\n", + " ax.legend(['original', 'subsampled'])\n", + " plot_quartiles(ax)\n", + " ax.set_title(\"Perplexity distribution \" + (\"before and after \" if orig is not None else \"for \") + name);" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "1cab5b83-1f40-41db-87ae-33d67775142e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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s7OzXnjhBbVs2dL4N/n69es6dOhQsvczBnFxcfL391eHDh1Uv359lSlTRvny5dPVq1f1559/6ocfftD9+/f10ksvaefOnWZbAt+4cUP9+vWTt7e33n33XdWrV0/R0dFau3atvv32W92+fVvDhw/Xxx9/rFdeeUXly5fX0KFDVb16dUVERGjRokX68ccfdeXKFY0dO1Zz5sxJ9VgPHjzQCy+8oNDQUA0bNkxt2rSRu7u7jh49qunTp+vSpUtatmyZ/P39kyVVrWnEiBH6888/1aNHD3Xp0kXFixfXjRs3NGvWLP322286c+aM3nnnHc2aNStZ2YsXL6pXr16KiIiQk5OT+vXrp2effVZeXl46efKkZsyYoY8++sik9xeQ15FgBGBi2rRpxp+bNGli/PmTTz7RoUOH5OnpqZ9++kkNGjQwKffEE0+oV69eatu2rc6cOaMxY8YYP5in5NSpU/rxxx/VqlUr47LUPsAePHhQ1atX14YNG0ySc02aNFHz5s3Vo0cPRUdH64033tDmzZszdL4LFizQxo0b5eTkpPnz56tDhw4m6+vWrauePXuqW7du2rt3r/773/+qZcuWJq1OWrVqpZdfflnfffedfvnlF82bN0/9+vWTJH355ZfGrqijR4/OUGsJDw8PVa1a1aT7VPny5VNNDBm6Ql68eFGLFi1KNcG4du1aY2uAPn36pDsegxMnThjfiFWtWlWbNm0yuS9NmzbVE088oVdeeSXD+zZYs2aN4uPj5eHhoa1btyZrRdGwYUP17t1bkZGRJt98V6hQwWS7lCY0Ss2JEyc0atQovf/++xbHbZCVdTYtGa03aYmJidGIESOMycW1a9eqfv36xvX16tVT165d1bZtW509e1ZfffWVunXrppo1a6a4vyNHjqhGjRpat26dSbK3Xr16qlu3rjp06KCYmBjNnTs3za5taTl48KD69OljMgyAoWuiodXNxYsX9dlnn5mMPytl7tlguAfS/4+h5+3tnWpd/OSTT4zJxVdffVUff/yxSbyBgYF677339OWXX+rixYuaNGmSyTaPSuv5au3neWpatmypbt26JUt21apVS23atNHLL7+s9u3b68SJE5o8ebLZBOOdO3cUHR2tzZs3q3r16ibn1bJlSzVo0EB37tzR7NmzkyUYo6Oj9d///ldSYmu5jRs3qlq1aibn265dO7Vp08Z4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+vTpatCggQoWLCg3Nzc99thjeuONN7Rv3z7jpEUpsfTZYImAgADt3LlT06dPV9OmTeXr6ysXFxcVLlxYTz/9tKZNm6bdu3dnqDukObZ4nrdo0ULbt29Xjx49VKxYMbm4uMjX11eNGjXSF198obVr1yZrgZaVhg0bpk2bNqljx47y8/Mz1t8+ffpo+/btyZJVlggICNCuXbs0fPhwVahQQfny5ZOXl5eqV6+ut956S3v27LFaa53ixYtr27Zt6tu3r8qVK5fmh9uWLVvqyJEjmjRpkpo1ayZ/f3+5urrKzc1NAQEBatGihd577z0dOHBAzz//vFViTK+WLVtq//79Wrp0qQYOHKjq1avLz89PLi4u8vT0VEBAgJo1a6Y33nhD27dv1969e1O9X2+99ZaWL1+u5s2by8fHR66uripRooQ6duyoVatWacKECemK6eWXX9aaNWvUunVrFSpUyOQZvmPHDnXs2DHVsqVKldK2bdv0zjvvqGXLlsZW+M7OzipYsKAaNGigsWPH6u+//zYZf09KHF5j4cKFGjRokJ544gmVLFlSbm5uypcvnwICAtShQwfNmzdP69evz/DMuy4uLlq+fLmmTJmiOnXqyN3dXfnz51e5cuU0YMAA7dy5U507d87QPrOKNa5DZu5hSr766ivNnTvX+IzOly+fypYtq1deeUV//PGHnnjiiWRlunXrppUrV2ro0KF68sknVaZMGXl4eMjV1VX+/v5q1aqVvvzyS+3cuVMlS5ZMVr5Pnz7auHGjAgMDjX8X/P391bJlS82dO1dz5szJVn93k6pTp4527dqlIUOGqHz58sqfP798fHz09NNPa968eZo1a1am3pfYQrNmzbRv3z71799fJUuWlKurq4oUKaI2bdrop59+0pgxY4xDBZmbaRrIKxxCQkKyx3RyAPAIwxvGt956K9NdAvOq5cuXG1v4/fzzz2revLmdIwIAAEBuNGTIEC1dulQlS5bUsWPH7B2OTXTq1Mk45EdKvQ+AvCR7ft0BALCKhQsXSpJKliyZLWfpAwAAAHKi69evG7vwP/7443aOBrA/EowAkEsdPHjQOAB6v379sm0XGgAAACC7MTcm74MHD/Tqq68qJiZGkumwREBexSQvAJCLXL58WdHR0Tpz5ozGjRsnKXFWw5RmWgYAAACQslGjRik0NFRdunRR7dq1VbBgQd2/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4ZtvKsHf396hAAAAAACsJMMJxsuXL6tXr16qUKGCOnXqpJdeekk9evRQzZo1NXz4cEVFRalbt256++23TcoVK1ZM33zzjZycnDRixAi1bNlSAwYMUL169fTjjz+qSJEi+v7775MNUung4KAffvhBvr6+WrZsmerVq6cBAwaoRYsWGjlypJydnTVz5swUB61877339MQTT+jEiROqW7euXnjhBXXr1k2tWrXS/fv3NXToULVt2zajlwAAYCGHiAg5/fmn9L9JtgAAAIC8Yvfu3XrxxRdVpUoV+fv7q2rVqurcubMWLVpk0pjKYNKkSfLx8VFgYKAkac2aNerSpYsqVKigggULatKkScZtfXx85OPjo927d6d47Lt372rMmDGqVauWihYtqscee0wvvviiDh8+bLb8pUuXjOsuXbqU7HwM6yTpn3/+0dChQ1WtWjUVKVJEVatW1fDhw43zXzwqPj5eO3fu1H//+1+1bNlSVatWlZ+fn8qWLav27dtrzpw5zLKdg2R4kpfq1atryJAhOnz4sM6dO6c//vhDCQkJ8vPzU6dOndS7d2+1bt06xbKdO3dWmTJlNG3aNO3fv19Hjx5V0aJF9dJLL+nNN99UkSJFUixXsWJF7d27V1OnTtWmTZu0fv16eXl5qWPHjho9erRxRqNHubu7a/369fr666+1YsUKbd26VS4uLqpfv74GDx6szp07Z/T0AQCZ4HThgjxbt1b4jh2KT+XZDQAAAOQ277zzjr755htJiQ2pvLy8FBoaql27dmnXrl1avny5Fi9erAIFCqRYfuzYsfr666/l4OAgb2/vDE1qcv78eXXs2FHXr1+XJOXLl08PHjzQmjVrtHHjRpNeppbatWuXevXqpfv376tAgQKKj4/XtWvXtGDBAm3dulW//fZbsi7WV65cUadOnYz/9/T0VP78+RUcHKx9+/Zp3759WrFihX7++Wflz58/0zEia2U4wVimTBmTLHlG1a5dWwsXLsxwuaJFi+rTTz/Vp59+mqFyrq6uGjVqlEaNGpXhYwIArCu2YkWF79+v+DJl7B0KAAAAYBOzZs0yJhf79eunMWPGyM/PT8HBwVq2bJnef/997dq1SyNGjNCcOXOSlT9y5Ij27t2rkSNH6rXXXpOvr68ePnyomzdvpnnsmJgYvfDCC7p+/boKFy6szz//XO3bt5eTk5POnj2r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uDExMerUqZP2798vZ2dneXh4KDQ0VDt27NCOHTv01ltvacyYMSZl4uLi1L17d23fvt24zMvLS5GRkQoODtb58+e1atUqvfDCCyblZs6cqSlTpkiSnJycVKBAAUlSUFCQVq5cqZ9++kmTJk3SK6+8Yjbmjz/+WJ988okcHR3l6emp8PBw/fnnn+rTp4+mT5+ufv366dVXX9XSpUvl7Oys/PnzKyIiQvv371fXrl21ZMkStWnTJtX9//333xoxYoTCw8Pl6ekpJycnBQUFae7cuVq9erVWrVql2rVrZ+QyKzg4WL1799a+fftMrtndu3e1fft2bd++XT/99JPmz58vV1dXk7IPHz5Ur1699Ntvv0mSHB0d5eLion379mnv3r0aOXJkhmKxJ1owAkAuk9FkY9Lts7oLtdP163IbO1YOV/PuOJQAAADIO/bv36/FixfL0dFR48eP17///qugoCAFBQXp5MmTWrlypZ5//vlkiSdr+P7773Xw4EFNnz5dQUFBunTpko4fP65OnTpJkqZMmaINGzaYlFm5cqW2b98uNzc3ffnllwoKCtLly5d148YNnTt3TgsXLjSWT6pYsWJ66623tGPHDl2/fl0XL17UjRs3dPjwYWNScezYsTpy5Eiq8R47dkzTpk3Tu+++q3///VeXL1/WyZMn1aJFC0nSe++9p0mTJmn16tWaPn26Ll++rCtXrujvv/9WnTp1FBcXp9GjRys+Pj7VY4wcOVKlSpXSb7/9pqCgIF27dk0///yzAgICFBwcrD59+ig8PDzd1zguLk59+vTRvn37VKNGDS1btkzXrl3T5cuXdfXqVc2cOVN+fn7auHGj3n///WTlx48fr99++00ODg4aN26cLl68qEuXLuns2bMaOHCgPv/8cx07dizd8dgTCUYAyAZyWldpS8XWqKGwW7cUX6uWvUMBAAAAstyff/4pSXrmmWc0YsQIFSxY0LiuUKFCat68uWbOnKlixYpZ/dhhYWGaOnWq+vfvLzc3N0lSQECA5s6dq6eeekqS9NFHH6UYb8+ePfXCCy/I09NTkuTg4CA/Pz917NhR8+fPT3asfv36acyYMapdu7YxWerg4KAyZcpo8uTJGjRokOLi4vT999+bjXfMmDEaPXq0vP83pFLx4sU1d+5ceXh4KDw8XJ988om++OIL9e/fX+7u7pKk8uXLa86cOZIS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g8cJxrCwMI0dO1aZmZnas2eP1qxZo7S0NP373//WK6+8ooiICK1YsUJvvPFGle127typuXPnKiIiQm+++aYyMzO1YsUKbd++XUlJSdq7d6+mT59e4/VKSko0ZcoUlZSUaMaMGcrJydErr7yinJwczZgxQ8XFxZoyZYrOnz9fY9tHHnlEubm5SkpK0rZt27RixQplZmZqzZo1Cg8P1+zZs/X55597+isAAAAAAAAA8H88TjAmJSVp5cqVuu6662osGz9+vCZNmiRJNRKMqampKi8v1+TJk3XTTTdVPB4ZGanFixcrPDxcGRkZ+vrrr6tst3r1ah07dkzdunXT3LlzqyybO3euunXrpry8vBqv99VXXykzM1MRERFavHixIiMjK5aNGjVKkyZNUllZmVJTUz39FQAAvJT4rfTVYiMGlYLeTJkGAAAAABd8fpOXfv36SZKOHPnuovGXLl3S+++/L0m68847a2zTuXNnDRkyRJK0fv36KsscP48fP17h4VWbGx4erjvuuEOS9O677zrdbsiQIercuXON13S0IysrS5cvX3bz3QEA6qOgsZTxPSMCAAAAAOzB5wnGffv2SZLatm1b8Vhubq5KSkokSQMHDnS6nePxXbt2VXnc8bO/tisuLq5oMwDAv47ESL8cZUQAAAAAgD34NMF44sQJrV69WpI0duzYiscPHTokSYqJiVHz5s2dbtuhQ4cq60rGHaBPnz4tSerYsWOt2508eVLFxcU1XtPVdtHR0YqOjq7xmgDMF5t2pO6VYAtNLhvTo5tQOA4AAAAAttHAV0905coVPfTQQyosLFRiYqKmTJlSsezcuXOSpKioKJfbN2vWTJKRVKy+XW3bOrZzbOtYz53XjIqKUmFhYZXXdOXChQt1rhNMLl26VCUC7vJX37lw4YLi053fSR720Stf2vZHadBD0vb2VrcmNFVO6Dv2bYG6j2NfBW/Rd+AN+g28Qb+Bt+g78IY/+02TJk3qtb3PEozTp09Xdna2WrZsqZUrV6pRo0a+euqAcPToUZWWllrdDJ87ceKE1U1AkPJt34nU4cOHJUXWuSaC29dx0rAfGxHWc3zujBi42FfBW/QdeIN+A2/Qb+At+g684et+ExERoYSEhHo9h08SjLNmzdJrr72m2NhYrV27Vt26dauy3FFlWHkKc3WOisPKU6grVye62rZylaOzbWt7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Pf/883Vuu2nTJk2YMEEJCQmKj4/X4MGDNW/evIrrarvibd8oKirSM888o2uvvVbx8fFKSEjQXXfdpezsbE/eMnzA035TVlamjz76SAsWLFBycrK6du2qVq1aKSEhQePGjdObb76p8vJyp9uuWrWqzrFo48aNLtvKfixweDPeWLUvYrwJLN70HXePfdLT06tsx5hjD96eczvY4RingddbBoHbbrtNP/3pT7Vs2TLddNNNSkpKUmRkpLKzs1VQUKChQ4dqzpw5VjfTVI8//riWLl2qBg0a6Ic//KGioqL0r3/9S0899ZSysrL09ttvq2nTplY3Ez62detWjRs3TpLUtm1bDRs2TJGRkdqzZ4+ysrKUlZWlBx54QKmpqQoLC6uxfZ8+fdS3b1+nzx0dHe308Q8//FDjx49XSUmJevXqpaFDh+rLL79Uenq6MjIytG7dOg0ePNhn7xH+NXToUHXt2tXpsoiIiBqPvfPOO/rxj3+sK1euaNCgQbrqqqu0fft2LV++XO+8846ysrKUkJBQY7vc3Fzdcsstys/PV5cuXTR69GgdOnRI77zzjv72t78pLS1NY8aM8fn7g281a9ZM99xzj8vle/bs0bZt29S8eXMNGDCgxnLGHHv785//rKVLl3q83ZIlSzRnzhyFhYVp2LBhatOmjXJycrRw4UJlZGQoKytLcXFxNbbztm/k5+frlltuUW5uruLj45WcnKxvv/1WGzZs0IYNG/Tss8/qpz/9qVe/A3jO035z8OBB3XzzzZKkFi1aaODAgYqNjdXBgwe1adMmbdq0SX/961/12muvqVGjRk6fo2vXrho6dKjTZe3atXP6OPuxwOLteCOZuy9ivAk83vSd2o598vLytHnzZoWFhWn48OFO12HMCW71Oee2yzGOrROMkvTb3/5WQ4cO1fLly/Xxxx/r8uXL6tq1q6ZPn66f//znLg8o7Gj9+vVaunSpmjVrpvXr11ec1J06dUpjxoxRTk6OFixYoPnz51vbUPhcWFiYxo4dq5/97Ge67rrrqix7++239eCDD2rFihUaMmSI0x3j6NGjNXv2bLdfr6SkRFOmTFFJSYlmzJihJ598smLZM888o0WLFmnKlCn65JNPSGgHifvuu0+TJ092a91jx44pJSVFV65c0YsvvqgHHnhAklRaWqqUlBS9+eab+slPfqIPPvigys61vLxc//M//6P8/Hzdfffd+v3vf1+RvFyxYoWmTZumlJQUff/731fbtm19/h7hO3FxcfrDH/7gcvmECRMkSePHj1dUVFSN5Yw59paYmKipU6eqX79+6t+/vxYuXKg1a9bUus3OnTs1d+5cRURE6I033qi4vE1JSYnuueceZWdna/r06Vq5cmWV7erTNx555BHl5uYqKSlJ6enpioyMlCS9//77uueeezR79mwNHz5cffr08cWvBXXwtN+EhYXphz/8oX7xi19o5MiRVb4M27Jli+6++2699957Sk1N1axZs5w+x9ChQ2sdy6pjPxZ4vBlvHMzcFzHeBB5v+k5t48XMmTO1efNmjRgxwuVNZhlzgpu359x2Osax9RRphzvuuEOZmZn65ptvdOzYMf373//WtGnTQiq5KEmLFi2SJE2bNq1KxUhcXJwWLlwoSVq+fLkKCgqsaB78KCkpSStXrqwx0EnGCf6kSZMkSW+88YZPXm/16tU6duyYunXrprlz51ZZNnfuXHXr1k15eXk+ez0Elj/84Q8qKSnRiBEjKpKLklHpuGjRIkVHR2vbtm36xz/+UWW7DRs2aNeuXYqJidHChQurnAw+8MADSkpK0rlz57yuREBgOHr0qD744ANJRuLaFxhzgsuPfvQjzZs3TxMmTFCPHj0UHl734WhqaqrKy8s1efLkKtfOjoyM1OLFixUeHq6MjIwa0xa97RtfffWVMjMzFRERocWLF1cceEvSqFGjNGnSJJWVlSk1NdWbXwG84Gm/6dq1qzIyMnTjjTfWqLS//vrrNW3aNEm+O/aR2I8FIm/GG28x3tiLL/vOhQsXKu4L4atjH4kxJ9B4e85tp2OckEgwwjih27ZtmyTpzjvvrLF82LBh6tixoy5evKgNGzaY3TxYzHHX9SNHjvjk+davXy/JGEir74zDw8N1xx13SJLeffddn7weAovj7+9srGnWrJluueUWSTX//o7tbrnlFjVr1qzGto7no98Et9WrV6usrEy9evXStdde65PnZMyxt0uXLun999+X5Hxc6dy5s4YMGSLpu77g4G3fcGw3ZMgQp5UmjnZkZWVxDesg5etjH4n9WKhjvIErGRkZKigoUIsWLTR69GifPS9jTnBxtt+x2zGO7adIw7Br1y5JxjVounTp4nSdAQMGKC8vT7t27XLauWFf+/btkySXpfM7d+7U008/rTNnzig6Olr9+vVTcnKymjdv7nR9R38bOHCg0+WOxx3rIfBt3rxZu3fv1rlz59SyZUsNGjRIo0aNUuPGjausV1RUpP3790uq/e+/Zs2aGn9/d/vNvn37VFxc7HRqLQLf6tWrJUn33nuvy3UYc1BZbm6uSkpKJNX+N87JyfF6XPF2u+LiYu3bt089e/Z0560ggNR17CNJBw4c0Pz585Wfn6+oqCj16tVLt956q9PrYEnsx+zGrH0R4439vf7665Kku+66q8axc2WMOfbmbL9jt2McEowh4tChQ5Kkjh07ulynQ4cOVdZFaDhx4kTFCf/YsWOdruO4KG1l0dHR+u1vf1vjmo1FRUU6ffq0JNf9zdHXTp48yc4uSDibQhYfH6+XX35ZN954Y8Vj33zzTcX/6/r7Vx9r6hqnHI+Xl5frm2++Ua9evTx4BwgEW7Zs0f79+9WoUSNNnDjR5XqMOajMMTbExMS4PLF3Nq7Up2/UNR5FR0crOjpahYWFOnToECf8QaakpETLli2T5PrYRzIunv/hhx9Weeyxxx7T448/XjHFujL2Y/Zi1r6I8cbeDh06pM2bN0uqe3o0Y459uTrnttsxDlOkQ4Tj1ua1nVQ5yqqLiopMaROsd+XKFT300EMqLCxUYmKipkyZUmV5165d9eSTT+pf//qXDh48qIMHDyorK0s333yzCgsLK27YUZmjr0mu+1vlEn76W2Dr06ePnn32WeXk5Ojw4cPau3ev1q5dqyFDhuj48eO65557Kg6aJM/+/tX/9nWNU5Ufp98EJ8c3+LfccovTb+MZc+CMt8cw9ekb7rymYxl9KvjMnDlThw4dUrt27TRz5sway9u2batHH31UH3zwgfbt26fDhw/rn//8pyZOnKiLFy/q6aefrrh+eWXsx+zB7H0R4429rVq1SuXl5Ro4cKDLG2Yw5thbbefcdjvGoYIRCGHTp09Xdna2WrZsqZUrV9a48ZGzCqOhQ4dqzZo1+uUvf6k//vGP+tWvfqVx48aF3E2TQsXDDz9c5efmzZtr5MiRGjFihCZPnqzMzEzNnj1bW7ZssaiFCBaFhYXKyMiQ5Hp6NGMOAH977rnnlJ6eriZNmigtLU0tW7assc6NN95YpTpfMqaMLV26VH369NHcuXP13HPP6b777lObNm3MajpMwr4IvlJWVubWpWEYc+ytrnNuO6GCMUQ4stfFxcUu13Fksl2V5sJeZs2apddee02xsbFau3atunXr5tH2s2fPVkREhE6ePKlPP/204vHK35S46m+Vv3GhvwWnsLAwzZ49W5L0+eefKy8vT5Jnf//qf/u6xqnKj9Nvgs/bb7+tkpISdejQQTfccIPH2zPmhC5vj2Hq0zfceU3HMvpU8Hj55Zf161//Wo0bN9brr7+uoUOHevwcKSkpiouL08WLF/WPf/yjyjL2Y/bnj30R4419bdq0SXl5eWratKnX9zhgzAludZ1z2+0YhwRjiHDcHai2O+U5ljm7kxDsZc6cOVq2bJliYmK0du1a9e/f3+PnaNGihVq3bi3JuEu5Q/PmzdWiRQtJqkg6Vefoa3FxcVwLLYh973vfq/i/ow906tSp4rG6/v7VxxrHz662czweFhZW5XUQHBzTo++5554ad7pzB2NO6HKMDQUFBS6n6jgbV+rTN+oajwoLC1VYWFjjNRG4li1bprlz56pRo0ZauXJljWohd0VEROjqq6+WVHUsktiPhQJ/7IsYb+zLcewzZswYxcTEePUcjDnBy51zbrsd45BgDBGOW6KfPn1aBw8edLrOjh07JMmrZBOCx5NPPqklS5YoOjpaa9eudXn3qLqUlpZWDDyVv0GRvutD27dvd7qt43H6WnBzXFhY+q4PREdHKyEhQZLnf393+83VV19do88hsH311Vf69NNPFRYWVusUodow5oSu7t27KzIyUpL/xhVvt4uKivJ4BgDMt3z5cs2aNasiuXjzzTfX6/kc+z9vxyL2Y8HLH/sixht7OnPmjP72t79JqvvmLnVhzAk+7p5z2+0YhwRjiOjQoYMGDRokSXrrrbdqLM/JyVFeXp4aN26sm266yezmwSRPP/20fve73yk6Olrr1q2r6BPeyMzMVElJicLCwmoMmLfddpskY0pkWVlZlWVlZWVau3atJOPbPASvv/71r5KMpGL37t0rHnf8/Z2NNefOnau4I2P1v79ju7///e9OS/Ydz0e/CT6vvfaaJOkHP/iBunTp4tVzMOaErkaNGmnUqFGSnI8r33zzjT7++GNJ3/UFB2/7xujRoyVJH330kQ4fPlzjNR3tSE5OVsOGDT1+TzDPK6+8oscee6wiuZicnFyv59uxY4dyc3MlSddcc02VZezH7M8f+yLGG3t68803dfHiRXXt2lXXX3+918/DmBN8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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_subsample(data, data_sub)" + ] + }, + { + "cell_type": "markdown", + "id": "c444f307-d5a3-4ec1-845d-340e3de9ed06", + "metadata": {}, + "source": [ + "## Using PerplexitySubsampler" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "a6d52c72-b54f-43d6-91f2-99a771335bee", + "metadata": {}, + "outputs": [], + "source": [ + "from subsampler import PerplexitySubsampler" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "b305f48b-e44c-4585-9c93-a1d9b0ac41f8", + "metadata": {}, + "outputs": [], + "source": [ + "subsampler = PerplexitySubsampler(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "3f3dd948-d3fa-4168-9653-cf6135c89490", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: 0.000000\n", + " Iterations: 81\n", + " Function evaluations: 156\n" + ] + } + ], + "source": [ + "subsampler.set(ratio=0.30, pa=0.20, pb=0.05)" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "0a3232d5-ac30-4118-9ac5-6278da937416", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.006131260240020625, 488.615463864415, 124.17368632962524)" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "subsampler.norm, subsampler.mean, subsampler.sdev" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b82b081d-5f9e-4dd1-b5f3-c6aa2b2b4aa0", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/perplexity.py b/perplexity.py new file mode 100644 index 0000000000000000000000000000000000000000..370e70cea9ddf030353d24622f780aa482d4500b --- /dev/null +++ b/perplexity.py @@ -0,0 +1,449 @@ +import argparse +import json +import re +import os +from functools import cache +from pathlib import Path +from typing import Iterator, List, NoReturn, Optional, Tuple, Union + +import kenlm +import msgspec +import sentencepiece +from numpy.random import default_rng +from scipy.stats import norm +from tqdm import tqdm + +from normalization import normalize_text + + +RNG = default_rng() +LANGS = ("no", "nn", "nob", "nno", "da", "sv", "is", "en") +DEFAULT_LANG = "no" +BASEPATH = Path(os.environ.get("PERPLEXITY_BASEPATH", "/nfsmounts/datastore/mimir/perplexity")) +CONFIG = { + "harmful": { + "no": {"model": BASEPATH / "kenlm" / "harmful" / "no.bin", "normalize": True}, + "nn": {"model": BASEPATH / "kenlm" / "harmful" / "no.bin", "normalize": True}, + "nob": {"model": BASEPATH / "kenlm" / "harmful" / "no.bin", "normalize": True}, + "nno": {"model": BASEPATH / "kenlm" / "harmful" / "no.bin", "normalize": True}, + "da": {"model": BASEPATH / "kenlm" / "harmful" / "da.bin", "normalize": True}, + "sv": {"model": BASEPATH / "kenlm" / "harmful" / "sv.bin", "normalize": True}, + "is": {"model": BASEPATH / "kenlm" / "harmful" / "is.bin", "normalize": True}, + "en": {"model": BASEPATH / "kenlm" / "harmful" / "en.bin", "normalize": True}, + }, + "wikipedia": { + "no": { + "model": BASEPATH / "kenlm" / "wikipedia" / "no.arpa.bin", + "tokenizer": BASEPATH / "spm" / "wikipedia" / "no.sp.model", + "normalize": True + }, + "nn": { + "model": BASEPATH / "kenlm" / "wikipedia" / "nn.arpa.bin", + "tokenizer": BASEPATH / "spm" / "wikipedia" / "nn.sp.model", + "normalize": True + }, + "nob": { + "model": BASEPATH / "kenlm" / "wikipedia" / "no.arpa.bin", + "tokenizer": BASEPATH / "spm" / "wikipedia" / "no.sp.model", + "normalize": True + }, + "nno": { + "model": BASEPATH / "kenlm" / "wikipedia" / "nn.arpa.bin", + "tokenizer": BASEPATH / "spm" / "wikipedia" / "nn.sp.model", + "normalize": True + }, + "da": { + "model": BASEPATH / "kenlm" / "wikipedia" / "da.arpa.bin", + "tokenizer": BASEPATH / "spm" / "wikipedia" / "da.sp.model", + "normalize": True + }, + "en": { + "model": BASEPATH / "kenlm" / "wikipedia" / "en.arpa.bin", + "tokenizer": BASEPATH / "spm" / "wikipedia" / "en.sp.model", + "normalize": True + }, + "is": { + "model": BASEPATH / "kenlm" / "wikipedia" / "is.arpa.bin", + "tokenizer": BASEPATH / "spm" / "wikipedia" / "is.sp.model", + "normalize": True + }, + "sv": { + "model": BASEPATH / "kenlm" / "wikipedia" / "sv.arpa.bin", + "tokenizer": BASEPATH / "spm" / "wikipedia" / "sv.sp.model", + "normalize": True + }, + }, + "books": { + "model": BASEPATH / "kenlm" / "books.norm.sp.arpa.bin", + "tokenizer": BASEPATH / "spm" / "books.norm.sp.model", + "normalize": True + }, + "newspapers": { + "model": BASEPATH / "kenlm" / "newspapers.norm.sp.arpa.bin", + "tokenizer": BASEPATH / "spm" / "newspapers.norm.sp.model", + "normalize": True + }, + "maalfrid": { + "model": BASEPATH / "kenlm" / "maalfrid.norm.sp.arpa.bin", + "tokenizer": BASEPATH / "spm" / "maalfrid.norm.sp.model", + "normalize": True + } +} + +# Not used anymore, speed is almost same as naive algorithm +# class PerplexityDoc(msgspec.Struct): +# id: str +# doc_type: str +# publish_year: int +# lang_fasttext: str +# lang_fasttext_conf: Union[str, float] +# text: str +# perplexity: float | None = -1.0 +# perplexity_model: str | None = None +# harmful_pp: float | None = None +# # wikipedia_pp: float | None = None +# # books_pp: float | None = None +# # newspapers_pp: float | None = None +# # maalfrid_pp: float | None = None + + +def should_keep( + perp: float, dist_norm: float, dist_mean: float, dist_std: float +) -> bool: + """ + Decide if a doc is to be retained based on its perplexity value + Note: set() must have been called previously + """ + p = norm.pdf(perp, loc=dist_mean, scale=dist_std) / dist_norm + return RNG.uniform() < p + + +def fix_language(language: str) -> str: + if language not in LANGS: + return DEFAULT_LANG + else: + return language + + +def pp(log_score, length): + return 10.0 ** (-log_score / length) + + +@cache +def load_kenlm(model: str) -> kenlm.Model: + lm_config = kenlm.Config() + lm_config.load_method = 2 + return kenlm.Model(str(model), lm_config) + + +@cache +def load_sentencepiece(model: str) -> sentencepiece.SentencePieceProcessor: + sp = sentencepiece.SentencePieceProcessor() + sp.load(str(model)) + return sp + + +def get_perplexity( + document: str, + model: str, + tokenizer: str=None, + normalize: bool=False +) -> float: + lines = document.split("\n") + model = load_kenlm(model) + if not lines or not model: + return 0.0 + if tokenizer: + sp = load_sentencepiece(tokenizer) + doc_log_score, doc_length = 0, 0 + for line in lines: + if not line: + continue + if normalize: + line = normalize_text(line) + if tokenizer: + line = " ".join(sp.encode_as_pieces(line)) + log_score = model.score(line) + length = len(line.split()) + 1 + doc_log_score += log_score + doc_length += length + + return round(pp(doc_log_score, doc_length), 1) + + +def get_perplexity_local( + document: str, + model: kenlm.Model, + tokenizer: sentencepiece.SentencePieceProcessor=None, + normalize: bool=False +) -> float: + lines = document.split("\n") + if not lines or not model: + return 0.0 + doc_log_score, doc_length = 0, 0 + for line in lines: + if normalize: + line = normalize_text(line) + if tokenizer is not None: + line = " ".join(tokenizer.encode_as_pieces(line)) + log_score = model.score(line) + length = len(line.split()) + 1 + doc_log_score += log_score + doc_length += length + + return round(pp(doc_log_score, doc_length), 1) + + +def harmful_perplexity(document: str, language: str) -> float: + params = CONFIG["harmful"][fix_lang(language)] + return get_perplexity(document=document, **params) + + +def wikipedia_perplexity(document: str, language: str) -> float: + params = CONFIG["wikipedia"][fix_lang(language)] + return get_perplexity(document=document, **params) + + +def books_perplexity(document: str) -> float: + params = CONFIG["books"] + return get_perplexity(document=document, **params) + + +def newspapers_perplexity(document: str) -> float: + params = CONFIG["newspapers"] + return get_perplexity(document=document, **params) + + +def maalfrid_perplexity(document: str) -> float: + params = CONFIG["maalfrid"] + return get_perplexity(document=document, **params) + + +def source_perplexities( + document: str, + language: str, + model: str | None = None, + include_harmful: bool=True) -> float: + """Calculates all models perplexities at once""" + # Since normalization is applied to all, we normalize first and set it to False + normalized_document = "\n".join(normalize_text(line) for line in document.split("\n")) + language = fix_language(language) + + if model is not None: + params = CONFIG[model] + if model == "wikipedia": + params = params[language] + params.update({"normalize": False}) + perplexity = get_perplexity(document=normalized_document, **params) + perplexities = { + f"{model}_pp": perplexity, + } + else: + params = CONFIG["wikipedia"][language] + params.update({"normalize": False}) + wikipedia_perplexity = get_perplexity(document=normalized_document, **params) + + params = CONFIG["books"] + params.update({"normalize": False}) + books_perplexity = get_perplexity(document=normalized_document, **params) + + params = CONFIG["newspapers"] + params.update({"normalize": False}) + newspapers_perplexity = get_perplexity(document=normalized_document, **params) + + params = CONFIG["maalfrid"] + params.update({"normalize": False}) + maalfrid_perplexity = get_perplexity(document=normalized_document, **params) + perplexities = { + "wikipedia_pp": wikipedia_perplexity, + "books_pp": books_perplexity, + "newspapers_pp": newspapers_perplexity, + "maalfrid_pp": maalfrid_perplexity, + } + if include_harmful: + params = CONFIG["harmful"][language] + params.update({"normalize": False}) + harmful_perplexity = get_perplexity(document=normalized_document, **params) + perplexities.update({ + "harmful_pp": harmful_perplexity, + }) + return perplexities + + +def get_model_for(doc_type: str) -> (str, bool): + """Returns model type and if it needs a language variant""" + doc_type = doc_type.split("_", 1)[0] + if "-" in doc_type: + doc_type = doc_type.split("-", 1)[-1] + if doc_type in ("book", "books"): + return "books", False + elif doc_type in ("culturax", "slimpajama", "wikipedia", "digimanus", "pg19", "hplt", "starcoder"): + return "wikipedia", True + elif doc_type in ("newspaper", "newspapers"): + return "newspapers", False + elif doc_type in ("evalueringsrapport", "lovdata", "maalfrid", "parlamint"): + return "maalfrid", False + else: + return "wikipedia", True + + +def preload_models_tokenizers() -> List: + print("Preloading models...", end=" ") + models = { + "books": ( + load_kenlm(BASEPATH / "kenlm" / "books.norm.arpa.bin"), + load_sentencepiece(BASEPATH / "spm" / "books.norm.sp.model") + ), + "newspapers": ( + load_kenlm(BASEPATH / "kenlm" / "newspapers.norm.arpa.bin"), + load_sentencepiece(BASEPATH / "spm" / "newspapers.norm.sp.model") + ), + "maalfrid": ( + load_kenlm(BASEPATH / "kenlm" / "maalfrid.norm.arpa.bin"), + load_sentencepiece(BASEPATH / "spm" / "maalfrid.norm.sp.model") + ), + } + for lang, params in CONFIG["harmful"].items(): + model = load_kenlm(params["model"]) + models[f"harmful-{lang}"] = model, None + + for lang, params in CONFIG["wikipedia"].items(): + model = load_kenlm(params["model"]) + tokenizer = load_sentencepiece(params["tokenizer"]) + models[f"wikipedia-{lang}"] = model, tokenizer + print("Done") + return models + + +# Not used anymore, speed is almost same as naive algorithm +# def process_file_binary(input_file, output_path, cutoff=None, overwrite_output=True): +# input_file = Path(input_file) +# output_file = Path(output_path) / input_file.name +# if not overwrite_output and output_file.exists(): +# print(f"Skipping {output_file} as it already exists") +# return +# models = preload_models_tokenizers() +# encoder = msgspec.json.Encoder() +# decoder = msgspec.json.Decoder(PerplexityDoc) +# buffer = bytearray(64) +# with (open(output_file, 'wb') as f, +# open(input_file, 'r', encoding='utf-8') as lines): +# for line_count, line in tqdm(enumerate(lines), desc=f"Processing {input_file.name}"): +# doc = decoder.decode(line) +# if "code" not in doc.doc_type: +# # Perplexity +# model_type, needs_lang = get_model_for(doc.doc_type) +# if needs_lang: +# model_key = f"{model_type}-{fix_language(doc.lang_fasttext)}" +# else: +# model_key = model_type +# model, tokenizer = models[model_key] +# text = "\n".join(normalize_text(line) for line in doc.text.split("\n")) +# score = get_perplexity_local( +# text, model=model, tokenizer=tokenizer, normalize=False +# ) +# doc.perplexity = score +# doc.perplexity_model = model_type +# # Harmfulness +# harmful_key = f"harmful-{fix_language(doc.lang_fasttext)}" +# harmful_model, harmful_tokenizer = models[harmful_key] +# harmful_pp = get_perplexity_local( +# text, model=harmful_model, tokenizer=harmful_tokenizer, normalize=False +# ) +# doc.harmful_pp = harmful_pp + +# encoder.encode_into(doc, buffer) +# buffer.extend(b"\n") +# f.write(buffer) +# if cutoff is not None and line_count >= cutoff: +# break + + +def process_file(input_file, output_path, cutoff=None, model=None, overwrite_output=True): + """ + Processes a file by reading its contents, analyzing each line for language and document type, + computing perplexities using specified models, and writing the modified content to a new file. + + This function performs several steps: + 1. Determines the output file path and checks for its existence if overwrite is not desired. + 2. Reads the input file line by line, processing each line as a separate JSON document. + 3. For each document, identifies its language using a fastText model. If the document type is "starcoder", + it defaults the language to English. + 4. Depending on the model parameter, computes perplexities for the document text either using a + single document type model or a specified general model. + 5. Updates the document with computed perplexities and writes it to the output file in JSON format. + 6. Optionally stops processing after a specified number of lines determined by the cutoff parameter. + + Parameters: + - input_file (str or Path): Path to the input file to be processed. + - output_path (str or Path): Directory path where the output file will be saved. The output file + will have the same name as the input file. + - cutoff (int, optional): If provided, processing will stop after this number of lines. Defaults to None. + - model (str, optional): Specifies the model to use for computing perplexities. If 'single', uses a + model specific to the document's type. Otherwise, uses the model specified. + Defaults to None. + - overwrite_output (bool): If True, will overwrite the output file if it already exists. If False, + will skip processing if the output file exists. Defaults to True. + + Returns: + None. Writes processed documents to an output file in the specified output path. + """ + input_file = Path(input_file) + output_file = Path(output_path) / input_file.name + if not overwrite_output and output_file.exists(): + print(f"Skipping {output_file} as it already exists") + return + with (open(output_file, 'w', encoding='utf-8') as f, + open(input_file, 'r', encoding='utf-8') as lines): + for line_count, line in tqdm(enumerate(lines), desc=f"Processing {input_file.name}"): + doc = json.loads(line) + language = doc["lang_fasttext"] + if doc["doc_type"] == "starcoder": + language = "en" + if model == "single": + doc_type_model, _ = get_model_for(doc["doc_type"]) + perplexities = source_perplexities(doc["text"], language, model=doc_type_model) + perplexities["perplexity"] = perplexities.pop(f"{doc_type_model}_pp") + perplexities["perplexity_model"] = doc_type_model + else: + perplexities = source_perplexities(doc["text"], language, model=model) + doc.update(perplexities) + f.write(json.dumps(doc) + "\n") + if cutoff is not None and line_count >= cutoff: + break + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Calculate perplexity values for a given JSON Lines file and output the result to a new file.') + parser.add_argument('-i', '--input_file', type=str, + help='Input file path') + parser.add_argument('-o', '--output_path', type=str, + help='Output path to write enriched file') + parser.add_argument('-c', '--cutoff', required=False, type=int, + help='Max number of lines to process') + parser.add_argument('-m', '--model', required=False, type=str, + help='Run "single" model per doc type, "all" the models, ' + 'or a specific model to choose from ' + '"books", "wikipedia", "newspapers" or "maalfrid". ' + 'Defaults to "single"') + parser.add_argument('--overwrite_output', + action=argparse.BooleanOptionalAction, default=True, + help="Whether to overwrite the output file if exists.") + + args = parser.parse_args() + + if args.model == "single": + process_file( + args.input_file, args.output_path, args.cutoff, + model="single", overwrite_output=args.overwrite_output, + ) + elif args.model in ("books", "wikipedia", "newspapers", "maalfrid"): + process_file( + args.input_file, args.output_path, args.cutoff, + model=args.model, overwrite_output=args.overwrite_output, + ) + else: + process_file( + args.input_file, args.output_path, args.cutoff, + overwrite_output=args.overwrite_output, + ) diff --git a/plots/all_doc_types_plots.png b/plots/all_doc_types_plots.png new file mode 100644 index 0000000000000000000000000000000000000000..c9739ac8a2d5033749d107d1ce460f55c50931eb Binary files /dev/null and b/plots/all_doc_types_plots.png differ diff --git a/plots/book_no_book.png b/plots/book_no_book.png new file mode 100644 index 0000000000000000000000000000000000000000..c5ea467ee36bc58da968a9eea0aac3de1af87cfc Binary files /dev/null and b/plots/book_no_book.png differ diff --git a/plots/books_pdf_no_books_pdf.png b/plots/books_pdf_no_books_pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..691b7edbd4381bda95d81428b9847949d303abed Binary files /dev/null and b/plots/books_pdf_no_books_pdf.png differ diff --git a/plots/combined_plots.png b/plots/combined_plots.png new file mode 100644 index 0000000000000000000000000000000000000000..faaa5a20c7ba1f36b632a4c042fcce08b268ea6e Binary files /dev/null and b/plots/combined_plots.png differ diff --git a/plots/culturax_nob_all_plots.png b/plots/culturax_nob_all_plots.png new file mode 100644 index 0000000000000000000000000000000000000000..41552542cd153cc00a72ea1bee18713d5048a5f6 Binary files /dev/null and b/plots/culturax_nob_all_plots.png differ diff --git a/plots/culturax_nob_culturax.png b/plots/culturax_nob_culturax.png new file mode 100644 index 0000000000000000000000000000000000000000..f67022fc3b4e9151256e0a88d3ae85187866904f Binary files /dev/null and b/plots/culturax_nob_culturax.png differ diff --git a/plots/plots_book.png b/plots/plots_book.png new file mode 100644 index 0000000000000000000000000000000000000000..19f30d2084e5aa1fc8d107897e01b749de2617b4 Binary files /dev/null and b/plots/plots_book.png differ diff --git a/plots/plots_books_pdf.png b/plots/plots_books_pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..9b562fcb555def7435b05c41892a739d2e38cb18 Binary files /dev/null and b/plots/plots_books_pdf.png differ diff --git a/plots/plots_culturax.png b/plots/plots_culturax.png new file mode 100644 index 0000000000000000000000000000000000000000..2cd5207b90a055f1a0695f521e98cafce4b70ad0 Binary files /dev/null and b/plots/plots_culturax.png differ diff --git a/plots/plots_evalueringsrapport_pdf.png b/plots/plots_evalueringsrapport_pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..89899b7768a0bc63bfd5d5e97eb7864b138e3a30 Binary files /dev/null and b/plots/plots_evalueringsrapport_pdf.png differ diff --git a/plots/plots_evalueringsrapport_pdf_no.png b/plots/plots_evalueringsrapport_pdf_no.png new file mode 100644 index 0000000000000000000000000000000000000000..48bcd87823e2cbfd56e7b6cc01f9f7b3485b1ce8 Binary files /dev/null and b/plots/plots_evalueringsrapport_pdf_no.png differ diff --git a/plots/plots_lovdata_cd_lokaleforskrifter_2005.png b/plots/plots_lovdata_cd_lokaleforskrifter_2005.png new file mode 100644 index 0000000000000000000000000000000000000000..022ca0456fffa242097e0ca8cbfac07a9f87304a Binary files /dev/null and b/plots/plots_lovdata_cd_lokaleforskrifter_2005.png differ diff --git a/plots/plots_lovdata_cd_lokaleforskrifter_2005_no.png b/plots/plots_lovdata_cd_lokaleforskrifter_2005_no.png new file mode 100644 index 0000000000000000000000000000000000000000..2fdf3746457fd8f3a8a1c21c44410f1cbec63001 Binary files /dev/null and b/plots/plots_lovdata_cd_lokaleforskrifter_2005_no.png differ diff --git a/plots/plots_lovdata_cd_norgeslover_2005.png b/plots/plots_lovdata_cd_norgeslover_2005.png new file mode 100644 index 0000000000000000000000000000000000000000..03a1f54493992f2902fca6693b6231aed63e7d49 Binary files /dev/null and b/plots/plots_lovdata_cd_norgeslover_2005.png differ diff --git a/plots/plots_lovdata_cd_norgeslover_2005_no.png b/plots/plots_lovdata_cd_norgeslover_2005_no.png new file mode 100644 index 0000000000000000000000000000000000000000..a26537580997ec61af8ff402176d9c259ae2d54f Binary files /dev/null and b/plots/plots_lovdata_cd_norgeslover_2005_no.png differ diff --git a/plots/plots_lovdata_cd_odelsting_2005.png b/plots/plots_lovdata_cd_odelsting_2005.png new file mode 100644 index 0000000000000000000000000000000000000000..b4df64bc8e7d2a59dcf4ddad8ae0b28503e8fb01 Binary files /dev/null and b/plots/plots_lovdata_cd_odelsting_2005.png differ diff --git a/plots/plots_lovdata_cd_odelsting_2005_no.png b/plots/plots_lovdata_cd_odelsting_2005_no.png new file mode 100644 index 0000000000000000000000000000000000000000..3422dc69a6e4c9ece7e788c0b7a8fb8e3de216ce Binary files /dev/null and b/plots/plots_lovdata_cd_odelsting_2005_no.png differ diff --git a/plots/plots_lovdata_cd_rtv_rundskriv_2005.png b/plots/plots_lovdata_cd_rtv_rundskriv_2005.png new file mode 100644 index 0000000000000000000000000000000000000000..c92d0bbc3a972b783ff1f7dc80fba912fbe5417b Binary files /dev/null and b/plots/plots_lovdata_cd_rtv_rundskriv_2005.png differ diff --git a/plots/plots_lovdata_cd_rtv_rundskriv_2005_no.png b/plots/plots_lovdata_cd_rtv_rundskriv_2005_no.png new file mode 100644 index 0000000000000000000000000000000000000000..162cf5190bcae8a6fee828f81c4f10f9f82dc3e3 Binary files /dev/null and b/plots/plots_lovdata_cd_rtv_rundskriv_2005_no.png differ diff --git a/plots/plots_lovdata_cd_rundskriv_lovavdeling_2005.png b/plots/plots_lovdata_cd_rundskriv_lovavdeling_2005.png new file mode 100644 index 0000000000000000000000000000000000000000..d7ddbd05189bd8817c3a83f85d71a9db93cb9fa7 Binary files /dev/null and b/plots/plots_lovdata_cd_rundskriv_lovavdeling_2005.png differ diff --git a/plots/plots_lovdata_cd_rundskriv_lovavdeling_2005_no.png b/plots/plots_lovdata_cd_rundskriv_lovavdeling_2005_no.png new file mode 100644 index 0000000000000000000000000000000000000000..854093f8c70366dcc62e68f0504387f909b2f6ef Binary files /dev/null and b/plots/plots_lovdata_cd_rundskriv_lovavdeling_2005_no.png differ diff --git a/plots/plots_lovdata_cd_sentrale_forskrifter_2005.png b/plots/plots_lovdata_cd_sentrale_forskrifter_2005.png new file mode 100644 index 0000000000000000000000000000000000000000..bf575557900247926cf433866d25d0a1e44f05d1 Binary files /dev/null and b/plots/plots_lovdata_cd_sentrale_forskrifter_2005.png differ diff --git a/plots/plots_lovdata_cd_sentrale_forskrifter_2005_no.png b/plots/plots_lovdata_cd_sentrale_forskrifter_2005_no.png new file mode 100644 index 0000000000000000000000000000000000000000..62a31669fd4b7c01cd8da911c6c14091fc9bfbc7 Binary files /dev/null and b/plots/plots_lovdata_cd_sentrale_forskrifter_2005_no.png differ diff --git a/plots/plots_lovdata_cd_skatt_rundskriv_2005.png b/plots/plots_lovdata_cd_skatt_rundskriv_2005.png new file mode 100644 index 0000000000000000000000000000000000000000..da6dfbd48901da00fd61d80d8f841fbffb7dc4c8 Binary files /dev/null and b/plots/plots_lovdata_cd_skatt_rundskriv_2005.png differ diff --git a/plots/plots_lovdata_cd_skatt_rundskriv_2005_no.png b/plots/plots_lovdata_cd_skatt_rundskriv_2005_no.png new file mode 100644 index 0000000000000000000000000000000000000000..93e926d6b3fc2b433918c7c6b8a214fd7c2c217e Binary files /dev/null and b/plots/plots_lovdata_cd_skatt_rundskriv_2005_no.png differ diff --git a/plots/plots_lovdata_cd_somb_rundskriv_2005.png b/plots/plots_lovdata_cd_somb_rundskriv_2005.png new file mode 100644 index 0000000000000000000000000000000000000000..d9ae825140a28b8dc7aed90cc05632ad97c3c639 Binary files /dev/null and b/plots/plots_lovdata_cd_somb_rundskriv_2005.png differ diff --git a/plots/plots_lovdata_cd_somb_rundskriv_2005_no.png b/plots/plots_lovdata_cd_somb_rundskriv_2005_no.png new file mode 100644 index 0000000000000000000000000000000000000000..0a2725722de25659576fa2c06b3340f230217044 Binary files /dev/null and b/plots/plots_lovdata_cd_somb_rundskriv_2005_no.png differ diff --git a/plots/plots_maalfrid_crawl_doc.png b/plots/plots_maalfrid_crawl_doc.png new file mode 100644 index 0000000000000000000000000000000000000000..b115c2ddc49b53bee067a4304102b59adaa2ef91 Binary files /dev/null and b/plots/plots_maalfrid_crawl_doc.png differ diff --git a/plots/plots_maalfrid_crawl_doc_no.png b/plots/plots_maalfrid_crawl_doc_no.png new file mode 100644 index 0000000000000000000000000000000000000000..03e863f4a0eba147fa491710beec32429863015e Binary files /dev/null and b/plots/plots_maalfrid_crawl_doc_no.png differ diff --git a/plots/plots_maalfrid_crawl_html.png b/plots/plots_maalfrid_crawl_html.png new file mode 100644 index 0000000000000000000000000000000000000000..a23ac4bfd8e7ecab0b473c0c3a58090abd39dc86 Binary files /dev/null and b/plots/plots_maalfrid_crawl_html.png differ diff --git a/plots/plots_maalfrid_crawl_html_no.png b/plots/plots_maalfrid_crawl_html_no.png new file mode 100644 index 0000000000000000000000000000000000000000..d2b895ae7f1d05b4add5e2cae55156df65b85cc2 Binary files /dev/null and b/plots/plots_maalfrid_crawl_html_no.png differ diff --git a/plots/plots_maalfrid_crawl_pdf.png b/plots/plots_maalfrid_crawl_pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..b132b09cb42cc0f04c0264c8680c6f5e0fbd7cff Binary files /dev/null and b/plots/plots_maalfrid_crawl_pdf.png differ diff --git a/plots/plots_maalfrid_crawl_pdf_no.png b/plots/plots_maalfrid_crawl_pdf_no.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e2dbf6d32c34623fc22eb7330ec5e9efb25e7a Binary files /dev/null and b/plots/plots_maalfrid_crawl_pdf_no.png differ diff --git a/plots/plots_maalfrid_government_html.png b/plots/plots_maalfrid_government_html.png new file mode 100644 index 0000000000000000000000000000000000000000..d83a24c4babc314109c209da8da37228ca47135b Binary files /dev/null and b/plots/plots_maalfrid_government_html.png differ diff --git a/plots/plots_maalfrid_government_html_no.png b/plots/plots_maalfrid_government_html_no.png new file mode 100644 index 0000000000000000000000000000000000000000..f29dc046d95e50709ca4c99d99d7b73925b77faf Binary files /dev/null and b/plots/plots_maalfrid_government_html_no.png differ diff --git a/plots/plots_maalfrid_government_pdf.png b/plots/plots_maalfrid_government_pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..31c164aa457267dbbbddadf1039ad9812f5a5de4 Binary files /dev/null and b/plots/plots_maalfrid_government_pdf.png differ diff --git a/plots/plots_maalfrid_government_pdf_no.png b/plots/plots_maalfrid_government_pdf_no.png new file mode 100644 index 0000000000000000000000000000000000000000..37648b087cf6c57aa67be49adb3e332b2884e8b7 Binary files /dev/null and b/plots/plots_maalfrid_government_pdf_no.png differ diff --git a/plots/plots_maalfrid_pp_no.png b/plots/plots_maalfrid_pp_no.png new file mode 100644 index 0000000000000000000000000000000000000000..0038c648f3c178918e453731669e02e8e8bf783e Binary files /dev/null and b/plots/plots_maalfrid_pp_no.png differ diff --git a/plots/plots_parlamint_xml.png b/plots/plots_parlamint_xml.png new file mode 100644 index 0000000000000000000000000000000000000000..dc37049042d2b89b2e8ee0c3b6c4a3478a577c90 Binary files /dev/null and b/plots/plots_parlamint_xml.png differ diff --git a/plots/plots_parlamint_xml_no.png b/plots/plots_parlamint_xml_no.png new file mode 100644 index 0000000000000000000000000000000000000000..9557a880bc654bbfd653a9b0aeac4d91215ec832 Binary files /dev/null and b/plots/plots_parlamint_xml_no.png differ diff --git a/samples/README.md b/samples/README.md new file mode 100644 index 0000000000000000000000000000000000000000..601c5ff3188b7d18302d57d8c6de256893043503 --- /dev/null +++ b/samples/README.md @@ -0,0 +1,19 @@ +Samples can be extracted using `shuf` from `clean_jsonl_3` folders. The need to be prefixed by the doc_type, and suffixed by the language code. + +For example: + +```bash +cat /nfsmounts/datastore/ncc_corpus/mimir/clean_jsonl_3/external-hplt*nn.jsonl |shuf -n 1000000 > hplt_nno.jsonl +cat /nfsmounts/datastore/ncc_corpus/mimir/clean_jsonl_3/external-hplt*nb.jsonl |shuf -n 1000000 > hplt_nob.jsonl +cat /nfsmounts/datastore/ncc_corpus/mimir/clean_jsonl_3/external-hplt*da.jsonl |shuf -n 1000000 > hplt_da.jsonl +cat /nfsmounts/datastore/ncc_corpus/mimir/clean_jsonl_3/external-hplt*sv.jsonl |shuf -n 1000000 > hplt_sv.jsonl +cat /nfsmounts/datastore/ncc_corpus/mimir/clean_jsonl_3/external-hplt*is.jsonl |shuf -n 1000000 > hplt_is.jsonl +``` + +Or for the restricted books (as they are longer per document, with 100,000 should be enough): + +```bash +cat /nfsmounts/datastore/ncc_corpus/mimir/clean_jsonl_3/restricted_books/restricted_books.*.jsonl|shuf -n 100000 > restricted_books_no.jsonl +``` + +Monitor memory usage while doing `shuf`. diff --git a/samples_quartiles.py b/samples_quartiles.py new file mode 100644 index 0000000000000000000000000000000000000000..087509d80730aa9ed7bb10ca5c8ff745b8e89c44 --- /dev/null +++ b/samples_quartiles.py @@ -0,0 +1,169 @@ +import argparse +import os +from collections import defaultdict +from io import StringIO + +import pandas as pd +from tqdm import tqdm + +from perplexity import get_model_for +from subsampler import PerplexitySubsampler + + +def process_files( + directory, + reject_level, + model_override, + output_file, + group_by_prefix_lang, + prefix_lang_mapping=None, + ratio=None, + ratio_per_lang=None, + pa=None, + pb=None, + include=None, +): + if ratio or ratio_per_lang: + rows = ["doc_type,model,language,reject,bad,medium,good,norm,mean,std"] + else: + rows = ["doc_type,model,language,reject,bad,medium,good"] + files = os.listdir(directory) + grouped_files = defaultdict(list) + if prefix_lang_mapping is None: + prefix_lang_mapping = {} + + # Group files by prefix and language if the option is enabled + description = "Processing files" + if group_by_prefix_lang: + description = "Processing files in groups" + for file in files: + parts = file.split('_') + prefix = parts[0] + if include and prefix not in include: + continue + lang = parts[-1].split(".")[0][:2] + group_key = prefix_lang_mapping.get(f"{prefix}_{lang}", f"{prefix}_{lang}") + grouped_files[group_key].append(file) + file_groups = grouped_files.values() + else: + file_groups = [] + for file in files: # Each file is its own group + if include and not any(file.startswith(prefix) for prefix in include): + continue + file_groups.append([file]) + + if output_file: + progress = tqdm(file_groups, desc=description) + else: + progress = file_groups + print(rows[0]) + # Process each group of files + for group in progress: + combined_perplexities = pd.DataFrame() + doc_type, lang = None, None + + for file in group: + if not doc_type or not lang: # Set doc_type and lang based on the first file + parts = file.split('_') + doc_type = file.split('_')[0] + lang = parts[-1].split(".")[0][:2] + doc_type, lang = prefix_lang_mapping.get(f"{doc_type}_{lang}", f"{doc_type}_{lang}").rsplit("_", 1) + perp = pd.read_json(os.path.join(directory, file), lines=True) + perplexities = pd.read_json(StringIO(perp["perplexities"].to_json(lines=True, orient="records")), lines=True) + combined_perplexities = pd.concat([combined_perplexities, perplexities], ignore_index=True) + + if model_override: + model = model_override + else: + model, _ = get_model_for(doc_type) + model_with_suffix = f"{model}_pp" + + # Calculate quantiles for the combined perplexities of the group + reject = round(combined_perplexities[model_with_suffix].quantile(q=reject_level), 2) + bad = round(combined_perplexities[model_with_suffix].quantile(q=0.75), 2) + medium = round(combined_perplexities[model_with_suffix].quantile(q=0.50), 2) + good = round(combined_perplexities[model_with_suffix].quantile(q=0.25), 2) + + if ratio: + subsampler = PerplexitySubsampler(combined_perplexities[model_with_suffix].values) + subsampler.set(ratio=ratio, pa=pa, pb=pb) + norm, mean, std = subsampler.norm, subsampler.mean, subsampler.sdev + sampling_stats = f",{norm},{mean},{std}" + elif ratio_per_lang: + subsampler = PerplexitySubsampler(combined_perplexities[model_with_suffix].values) + subsampler.set(ratio=ratio_per_lang.get(lang, ratio or 1.0), pa=pa, pb=pb) + norm, mean, std = subsampler.norm, subsampler.mean, subsampler.sdev + sampling_stats = f",{norm},{mean},{std}" + else: + sampling_stats = "" + + row = f"{doc_type},{model},{lang},{reject},{bad},{medium},{good}{sampling_stats}" + if output_file: + rows.append(row) + else: + print(row) + + + if output_file: + with open(output_file, "w") as f: + for row in rows: + f.write(f"{row}\n") + + +def main(): + """" + Each doc_type prefix needs to have an "no" lang, even of there's no real data. + These rows are crucial for the rest of the process. + """ + parser = argparse.ArgumentParser(description="Process files and compute perplexity metrics.") + parser.add_argument('directory', type=str, help='Directory containing the files to process') + parser.add_argument('--reject_level', type=float, default=0.95, help='Rejection quantile level (default: 0.95)') + parser.add_argument('--model_override', type=str, help='Override the model used') + parser.add_argument('--output_file', type=str, help='Output file in CSV format. If not given, prints to standard output.') + parser.add_argument('--group_by_prefix_lang', action='store_true', help='Group and calculate quantiles for files with the same prefix and language') + parser.add_argument('--overwrite_prefix_lang', type=str, help='Overwrite the assignment of languages to doc_type prefixes, e.g., "starcoder_en:starcoder_code,hplt_en:hplt_no"') + parser.add_argument('--sampling_ratio', type=float, help='Ratio of documents to keep for sampling. If passed, it generate distribution statistics (norm, mean, std) needed for sampling') + parser.add_argument('--sampling_ratio_per_lang', type=str, help='Ratio of documents per lang, e.g., "en:0.25,sv:0.34"') + parser.add_argument('--sampling_q1_prob', type=float, default=0.20, help='Probabilty for keeping documents in the Q1 range') + parser.add_argument('--sampling_q3_prob', type=float, default=0.05, help='Probabilty for keeping documents in the Q3 range') + parser.add_argument('--include', type=str, help='Comma separeted list of doc type prefixes to include') + + args = parser.parse_args() + + if args.sampling_ratio_per_lang: + # Turns "en: 0.25, sv : 0.34" into {'en': 0.25, 'sv': 0.34} + ratio_per_lang = dict( + (k.strip(), float(v.strip())) + for k, v in (item.split(":") + for item in args.sampling_ratio_per_lang.split(",") + ) + ) + else: + ratio_per_lang = None + if args.overwrite_prefix_lang: + # Turns "starcoder_en:starcoder_code,hplt_en:hplt_no" into {'starcoder_en': 'starcoder_code', 'hplt_en': 'hplt_no'} + prefix_lang_mapping = dict( + (k.strip(), v.strip()) + for k, v in (item.split(":") + for item in args.overwrite_prefix_lang.split(",") + ) + ) + else: + prefix_lang_mapping = {} + + process_files( + args.directory, + args.reject_level, + args.model_override, + args.output_file, + group_by_prefix_lang=args.group_by_prefix_lang, + prefix_lang_mapping=prefix_lang_mapping, + pa=args.sampling_q1_prob, + pb=args.sampling_q3_prob, + ratio=args.sampling_ratio, + ratio_per_lang=ratio_per_lang, + include=args.include.split(",") if args.include else None + ) + +if __name__ == "__main__": + main() diff --git a/samples_scores.py b/samples_scores.py new file mode 100644 index 0000000000000000000000000000000000000000..5b810577617a2d50595d91543a0e23742f181ef2 --- /dev/null +++ b/samples_scores.py @@ -0,0 +1,47 @@ +import pandas as pd +import argparse +import perplexity +from tqdm import tqdm +from joblib import Parallel, delayed +import os + + +def calculate_doc_perplexity(row_id, doc, doctype, lang): + id = doc["id"] + paragraphs = doc["paragraphs"] + doc_text = "\n".join(para["text"] for para in paragraphs) + perplexities = perplexity.source_perplexities(doc_text, lang, include_harmful=False) + return [id, doctype, lang, perplexities] + + +def main(args): + file = args.file + doctype = '_'.join(os.path.basename(file).split('_')[:-1]) + lang = os.path.basename(file).split('_')[-1].split('.')[0] + chunks = pd.read_json(file, lines=True, chunksize=1000) + rows = [] + for chunk in tqdm(chunks, desc=f"Processing chunks of {args.file}"): + rows.extend(Parallel(n_jobs=args.jobs)( + delayed(calculate_doc_perplexity)(row_id, doc, doctype, lang) + for row_id, doc in chunk.iterrows() + if doc["paragraphs"] + )) + df = pd.DataFrame(rows, columns=["id", "doc_type", "lang", "perplexities"]) + + # Ensure the output directory exists + os.makedirs(args.output_path, exist_ok=True) + + # Save the DataFrame with the ".jsonl" extension + output_file = os.path.join(args.output_path, f"{doctype}_{lang}.jsonl") + df.to_json(output_file, lines=True, orient="records") + + +if __name__ == "__main__": + # Set up argument parsing outside of the main() function + parser = argparse.ArgumentParser(description='Process documents to calculate perplexity.') + parser.add_argument('file', type=str, help='Input file path') + parser.add_argument('--output_path', type=str, default='tmp/', help='Output file path') + parser.add_argument('--jobs', type=int, default=10, help='Number of jobs to use for parallel processing') + args = parser.parse_args() + + main(args) diff --git a/scores/book_no.jsonl b/scores/book_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..4ec572805994fe35028935b5fde88b6b42ed8240 --- /dev/null +++ b/scores/book_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8aae3dd33d686be5c3203781cbc6593f90f26ef199b8552e05b2e16d9719d1b +size 11325991 diff --git a/scores/books_pdf_no.jsonl b/scores/books_pdf_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..55b33d6b681dbc0b2a1e716e3862bc1393cc26f1 --- /dev/null +++ b/scores/books_pdf_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f424799588d6a9bace6751a3c0130716adbf601b8aa9d10469c1d8c187aaedc +size 70980 diff --git a/scores/culturax_da.jsonl b/scores/culturax_da.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..a8a5ce8f7e532bd90f65581f388ed7bdef124ad3 --- /dev/null +++ b/scores/culturax_da.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:076ce2540dea80d3b70a0ad6bf0b89c3f1dc8b8d8c7ae92d711f1811351c0d50 +size 186957751 diff --git a/scores/culturax_is.jsonl b/scores/culturax_is.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..9b29ab0b615a9dbe9bbedf9cfafe9ed3edc21d67 --- /dev/null +++ b/scores/culturax_is.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:059faa1d8facabde167e9b4a77fcf8ab759fb7f62b4f8b0525c9b9744b48ef00 +size 189711856 diff --git a/scores/culturax_nno.jsonl b/scores/culturax_nno.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..e0c74ef63b0fca1070cc582d8d11dfad2dfd6bbd --- /dev/null +++ b/scores/culturax_nno.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4203b071daa6ef2050b952ae936af65c9887617d2397c52b911993b6605f42c2 +size 23340707 diff --git a/scores/culturax_nob.jsonl b/scores/culturax_nob.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..664bca7cf7ded2cabf814f997ebbd507ad9a5dfd --- /dev/null +++ b/scores/culturax_nob.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a60a36a7dac765fd9aa3703503da74eba7d13420cb30bd69de105ac1b6cda231 +size 187737650 diff --git a/scores/culturax_sv.jsonl b/scores/culturax_sv.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..a613d4daca96fef9df91db8ed97857693f3ccb52 --- /dev/null +++ b/scores/culturax_sv.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:825bb6c7ebbe471f341477c232acf2f15f5435791813e0a296177f203753c11a +size 187913372 diff --git a/scores/digimanus_ocr_no.jsonl b/scores/digimanus_ocr_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..8da600889b6e0bb6ddc9cc4e81da3c45ce403408 --- /dev/null +++ b/scores/digimanus_ocr_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2edff4b2c531bd2fa92a48c8efdf4d9d4ec300b37e5bc6ff777993c5414b07c8 +size 936772 diff --git a/scores/evalueringsrapport_pdf_no.jsonl b/scores/evalueringsrapport_pdf_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..6b5e73444c4bfd49c6beae7a182361085c3fd3ac --- /dev/null +++ b/scores/evalueringsrapport_pdf_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70cd4683a5b8dc5d542bb7c50b4da19b55fddbe2e926ae6527420ee1ffbd24ca +size 621232 diff --git a/scores/hplt_da.jsonl b/scores/hplt_da.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..d10d76f3c54a71ca27183b0bc4ba6fe658f4a3b8 --- /dev/null +++ b/scores/hplt_da.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29af33daae286d4c09ef40a4e7a8ba84e7945a77e08dba56f1ed3e865fae87a6 +size 171044178 diff --git a/scores/hplt_is.jsonl b/scores/hplt_is.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..86fed8579f060d5b3cffe911e876c5573730dafb --- /dev/null +++ b/scores/hplt_is.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:876a3bf83a742378658419c2653ed7c995e9458e065d9bd6792f556284d2bd96 +size 83002563 diff --git a/scores/hplt_nno.jsonl b/scores/hplt_nno.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..a40e54cc22d31ce477f2ed4cc0a9ae1b65784139 --- /dev/null +++ b/scores/hplt_nno.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e3ed48eca8b1141ec51551133f0d7fa212689c59995455182f7778b96cd7206 +size 37998921 diff --git a/scores/hplt_nob.jsonl b/scores/hplt_nob.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..a2f85c8d3405ceff37dd626783729b5ab2382966 --- /dev/null +++ b/scores/hplt_nob.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c44c989a06146ef6c7de7f4fc728e20374e475dae8659638902c91a35beaee27 +size 171422934 diff --git a/scores/hplt_sv.jsonl b/scores/hplt_sv.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..2fe5da6ba7fab2d42f5a277267458d1eecfbfbfa --- /dev/null +++ b/scores/hplt_sv.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e3f55974157c89177c1df8a51298b102c892c074e231ff070e95a80f3a35ae0 +size 171561680 diff --git a/scores/lovdata_cd_lokaleforskrifter_2005_no.jsonl b/scores/lovdata_cd_lokaleforskrifter_2005_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..7c8c9c1130fc251b24aa5ff64eabac8bf0b419c8 --- /dev/null +++ b/scores/lovdata_cd_lokaleforskrifter_2005_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad69f5d1a04a6b17189bb100d3c5053872397f04b25686954893609b2a2f3cf8 +size 4621545 diff --git a/scores/lovdata_cd_norgeslover_2005_no.jsonl b/scores/lovdata_cd_norgeslover_2005_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..3309446990ef3e54783ad3a05201c88f35141ed9 --- /dev/null +++ b/scores/lovdata_cd_norgeslover_2005_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3ca595f8cf74bcbcc1578c2aa898f9f6555af368f207ead11f8bc675a7c06a9 +size 276413 diff --git a/scores/lovdata_cd_odelsting_2005_no.jsonl b/scores/lovdata_cd_odelsting_2005_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..1fa2260380ad0d871d045cc390dc3c1a116d474f --- /dev/null +++ b/scores/lovdata_cd_odelsting_2005_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83e64dbc1588a9105a9f3e06d44c803d4d61239a393267c1e5155c5ca6bcfec4 +size 377267 diff --git a/scores/lovdata_cd_rtv_rundskriv_2005_no.jsonl b/scores/lovdata_cd_rtv_rundskriv_2005_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..6d3037537845ddca8af3562341733e328361a06a --- /dev/null +++ b/scores/lovdata_cd_rtv_rundskriv_2005_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee95ad8b5b0cf98927ab6a6e3e003edc62ee875b6b278eeb859018623fbeca75 +size 1943796 diff --git a/scores/lovdata_cd_rundskriv_lovavdeling_2005_no.jsonl b/scores/lovdata_cd_rundskriv_lovavdeling_2005_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..b9740bccb85b4d706f33b2ad8f5392bc200b84a3 --- /dev/null +++ b/scores/lovdata_cd_rundskriv_lovavdeling_2005_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e028fd32b2fb1cb51643c7074cd9a4b30171ee8bc50e1019a5118cfe6fcfcb9c +size 85578 diff --git a/scores/lovdata_cd_sentrale_forskrifter_2005_no.jsonl b/scores/lovdata_cd_sentrale_forskrifter_2005_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..3e748ce6d8f6c7770e8170d64af22e6a932e34a5 --- /dev/null +++ b/scores/lovdata_cd_sentrale_forskrifter_2005_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92a8bbb6bae41aeefb5ebe0ffc654e08a6a85aa9aa6b6fd188f275f6ae8ab8cd +size 2413077 diff --git a/scores/lovdata_cd_skatt_rundskriv_2005_no.jsonl b/scores/lovdata_cd_skatt_rundskriv_2005_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..4a20515b2c18b1454500bf544bdbd075e05c5e93 --- /dev/null +++ b/scores/lovdata_cd_skatt_rundskriv_2005_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af2b87178c2080d372b56a9ecea902dd91d70a1c36163add8fb33d4904eae990 +size 81870 diff --git a/scores/lovdata_cd_somb_rundskriv_2005_no.jsonl b/scores/lovdata_cd_somb_rundskriv_2005_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..7698b1eb786ac97beb7d7b246e37416be2ae0489 --- /dev/null +++ b/scores/lovdata_cd_somb_rundskriv_2005_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c045fe7d4f7d27c09a89870580c09def9e8ba82fe2f258a7a4ac3cbd42bc3b82 +size 652618 diff --git a/scores/maalfrid_crawl_doc_no.jsonl b/scores/maalfrid_crawl_doc_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..12e272d719e02858bec57f28dfdcf3a4f28e946b --- /dev/null +++ b/scores/maalfrid_crawl_doc_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5cadd7d9ac1a480fdeab330b254c9786d63edd838f8df77206c00993ca0711f +size 3422190 diff --git a/scores/maalfrid_crawl_html_no.jsonl b/scores/maalfrid_crawl_html_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..3186cc5834b4e522526e3df35dbba05bb89ca73b --- /dev/null +++ b/scores/maalfrid_crawl_html_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21f2cc083cac84e70b6c3d8118e70cc88f14cf5386fbfd16af8af53beb17c220 +size 159121552 diff --git a/scores/maalfrid_crawl_pdf_no.jsonl b/scores/maalfrid_crawl_pdf_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..1000894ea91b46b653de353bcd788f2698d73a6e --- /dev/null +++ b/scores/maalfrid_crawl_pdf_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbdc15951e19457ca9e50c40179ca45e36d7f5b44fb2392efae5da4d4262115d +size 63212717 diff --git a/scores/maalfrid_government_html_no.jsonl b/scores/maalfrid_government_html_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..b4cd8427b7b25b7ed7a4fa734b9075c472925f99 --- /dev/null +++ b/scores/maalfrid_government_html_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2042e34eedaeca14df5c3dbd652a8967cd94d0fb3ba05b632f1d6ce24e2b5e4 +size 36810790 diff --git a/scores/maalfrid_government_pdf_no.jsonl b/scores/maalfrid_government_pdf_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..5f12caa0f8a52b253b84ecedada25ffa646379c6 --- /dev/null +++ b/scores/maalfrid_government_pdf_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:401a7bc73c5ba7bf19199ca3512fa02fc11c422cc92e11fbe53fec6984e80f28 +size 7431132 diff --git a/scores/newspaper_ocr_no.jsonl b/scores/newspaper_ocr_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..224affbc1d420324a1e8102fba270cab3ee144fe --- /dev/null +++ b/scores/newspaper_ocr_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0c2f5ea1ee8a1351256b30495f0e0df844c6727e788b98b23391267726eb985 +size 224844673 diff --git a/scores/newspaper_pdf_no.jsonl b/scores/newspaper_pdf_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..71253610fb69a3559210944186188f69054b8be1 --- /dev/null +++ b/scores/newspaper_pdf_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ec18cc1849c04aa52c06c3e33e90a1473380c0338cf9d0ca94fc57d7544a89f +size 217335950 diff --git a/scores/newspapers_online_nno.jsonl b/scores/newspapers_online_nno.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..8c0355fb3734c0cb0da192a9160a7fc4957dc601 --- /dev/null +++ b/scores/newspapers_online_nno.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ec898d11bbc90248b93a3857e53f9a6ce669ce5b7304570b8b994ee9870767b +size 32755280 diff --git a/scores/newspapers_online_nob.jsonl b/scores/newspapers_online_nob.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..5fecf42c72224e69b5b59bea19c7c08a4038baee --- /dev/null +++ b/scores/newspapers_online_nob.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39f6aff94875e18cbcf165f2d2e4468bebc8fd75db421d70787dedef9776fd3d +size 198955993 diff --git a/scores/parlamint_xml_no.jsonl b/scores/parlamint_xml_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..e6a0d1c54977977ee78faa926bceededcd9cf310 --- /dev/null +++ b/scores/parlamint_xml_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66a92226f8c9f0e6f38238809acb9dbafbb4e529928f4443639a1c4dcf3898fc +size 594737 diff --git a/scores/pg19_en.jsonl b/scores/pg19_en.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..88124691ce2a2b3e525ee0d0a0c4dba6085ee021 --- /dev/null +++ b/scores/pg19_en.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c77335a3a8dec5e52a442a45647ff8dfd71333458ff37dcd70c65250eb96f80 +size 4757688 diff --git a/scores/restricted-book_ocr_no.jsonl b/scores/restricted-book_ocr_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..f283fae421b30caafa76c176de310f53038738da --- /dev/null +++ b/scores/restricted-book_ocr_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:734e0052bb0b6fe841e2f0f71bc4ef57f92c245bec4b52e5c8df6b4d6baaad15 +size 17325447 diff --git a/scores/restricted-books_no.jsonl b/scores/restricted-books_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..c9890a1c7c6510f5fcc134575200dbd9a902a843 --- /dev/null +++ b/scores/restricted-books_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4922a90cf3edecb0d434ea8f345c2c9215b8b70c53f5c9042117914f66efb621 +size 17033509 diff --git a/scores/restricted-books_pdf_no.jsonl b/scores/restricted-books_pdf_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..23e3f20143e43b4084451b6022d82ef1ed186322 --- /dev/null +++ b/scores/restricted-books_pdf_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba1aa4a109ea6a78e36c79547a192a5c248b9b1360f8848486b7dd66c2491304 +size 3363926 diff --git a/scores/restricted-newspapers_mediafutures_amedia_no.jsonl b/scores/restricted-newspapers_mediafutures_amedia_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..5c1e30c6d134b3b46dd1d745d736261f8f1f1b0f --- /dev/null +++ b/scores/restricted-newspapers_mediafutures_amedia_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8614af91af9de6eac43193c8f34db47b6cbd0d1f05cedb2976922d86311d5e83 +size 210078668 diff --git a/scores/restricted-newspapers_mediafutures_schibsted_no.jsonl b/scores/restricted-newspapers_mediafutures_schibsted_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..3788b3b8c6eb8c997fbf5be4927263a6ed889390 --- /dev/null +++ b/scores/restricted-newspapers_mediafutures_schibsted_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12927e7ee715db39a0323207629d98c996e2707ab1340efcd831c3b562369513 +size 179386324 diff --git a/scores/restricted-newspapers_mediafutures_tv2_no.jsonl b/scores/restricted-newspapers_mediafutures_tv2_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..92b7262676d22104af1a478b706cb2f85f27c60a --- /dev/null +++ b/scores/restricted-newspapers_mediafutures_tv2_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e801d138a1a806f00feaa5e83f42e841c7fbae3a1d348e13a001fb421189461 +size 101505344 diff --git a/scores/restricted-newspapers_nrk_no.jsonl b/scores/restricted-newspapers_nrk_no.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..df18941f9e01a80d08da0787a4cf8d6f2928f765 --- /dev/null +++ b/scores/restricted-newspapers_nrk_no.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f8ff1c2c7acb1be49f38a6bf5f562d855ba572717539ab0631e93bf8b472794 +size 17139876 diff --git a/scores/slimpajama_en.jsonl b/scores/slimpajama_en.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..fdcf47840ae8930a4954f0a2cd17ee75541c54c3 --- /dev/null +++ b/scores/slimpajama_en.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31d8fc98d07df8709c57566f4cbbdd671d7349e476b1e38f899792343be172a8 +size 200105310 diff --git a/scores/starcoder_en.jsonl b/scores/starcoder_en.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..64a0a8ac105b6384fe4512524ca217144c4d2b11 --- /dev/null +++ b/scores/starcoder_en.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8d45519d5a7f04792f4de807449c75fbf6060f97b2d4aeee47efc04606e8464 +size 218627579 diff --git a/scores/wikipedia_download_da.jsonl b/scores/wikipedia_download_da.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..ae1dca5f0f63191d99de9e699bdc49c504667fdb --- /dev/null +++ b/scores/wikipedia_download_da.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70c6a4599b756fd2a02f91d1fdfee1ea6b94698c5a123bd4052399fe0c6cfe07 +size 46169353 diff --git a/scores/wikipedia_download_en.jsonl b/scores/wikipedia_download_en.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..71a74b1b0e5a283a012680cd8638b889198dd293 --- /dev/null +++ b/scores/wikipedia_download_en.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77b03e8806883dc1823fcda96c6fe410acef583caec0141aed1d06e05f3565d1 +size 222350696 diff --git a/scores/wikipedia_download_is.jsonl b/scores/wikipedia_download_is.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..cd76f597e7de790947661d173d36801d981f7b00 --- /dev/null +++ b/scores/wikipedia_download_is.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0919ccb40b7e464e2846c32bca0e54a5195b8f82732bcfcd1844262cfa4515f +size 7854490 diff --git a/scores/wikipedia_download_nno.jsonl b/scores/wikipedia_download_nno.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..06cefc58786f8e90e2e4a86540aa96e10449fbe1 --- /dev/null +++ b/scores/wikipedia_download_nno.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a25f4a41214f0a49c8368219738d22d967bb22716547225a2512e20fd13358dd +size 23833551 diff --git a/scores/wikipedia_download_nob.jsonl b/scores/wikipedia_download_nob.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..6856aea86b09eb6a4d6215d598a732b966541187 --- /dev/null +++ b/scores/wikipedia_download_nob.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3205a3a3a6cb8db1388284638c04f48c6fa24f254455bf3b83a70e01f9090e7b +size 97647834 diff --git a/scores/wikipedia_download_sv.jsonl b/scores/wikipedia_download_sv.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..d46482da0b35f5c67857c60371e22436ad943472 --- /dev/null +++ b/scores/wikipedia_download_sv.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c7ae93b0e13d8cb26ae77bd706895c566301e25d42730719432f37d85ca2ade +size 201159029 diff --git a/spm/books.norm.sp.model b/spm/books.norm.sp.model new file mode 100644 index 0000000000000000000000000000000000000000..f0f08b54f28e3275ad5e0970201b824f524880eb --- /dev/null +++ b/spm/books.norm.sp.model @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd8923187f09e14d2f81b76576effbc890469c624e4fb19293d51358d0b11cdb +size 1377561 diff --git a/spm/books.norm.sp.vocab b/spm/books.norm.sp.vocab new file mode 100644 index 0000000000000000000000000000000000000000..c1bb958cf39a0c75662e0a20b51654f6bdd222c3 --- /dev/null +++ b/spm/books.norm.sp.vocab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a72c1a45c42fc08499a99133a4ccff17a11337b72a774982d692f57478e5346 +size 1196708 diff --git a/spm/maalfrid.norm.sp.model b/spm/maalfrid.norm.sp.model new file mode 100644 index 0000000000000000000000000000000000000000..ccbf06c26d7ad69461b8d832663239dd46769ec7 --- /dev/null +++ b/spm/maalfrid.norm.sp.model @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dc6b530ea9f4de8b53fa2dc19a546d13f644cf6df3fe435a3d24c6bbabe5adc +size 1550471 diff --git a/spm/maalfrid.norm.sp.vocab b/spm/maalfrid.norm.sp.vocab new file mode 100644 index 0000000000000000000000000000000000000000..37c1ec3992730668535a6bbc2e555ed6b882f1e6 --- /dev/null +++ b/spm/maalfrid.norm.sp.vocab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9d7372035c8cc51ab4a358787ffc9dc1275fc4eda4d856880f22e56a101bfd2 +size 1369413 diff --git a/spm/newspapers.norm.sp.model b/spm/newspapers.norm.sp.model new file mode 100644 index 0000000000000000000000000000000000000000..0454d3c17ad340993dd5adf85c8c2f4fc97e21df --- /dev/null +++ b/spm/newspapers.norm.sp.model @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c161b4447b463bfd69800ca361b00461ccff20a50c0a55fc70abb215de4c56f8 +size 1430229 diff --git a/spm/newspapers.norm.sp.vocab b/spm/newspapers.norm.sp.vocab new file mode 100644 index 0000000000000000000000000000000000000000..7d824a5c5b55f4ee39c0a91c223552b43a294ae6 --- /dev/null +++ b/spm/newspapers.norm.sp.vocab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21ddf1dafe3f9c4b6ed60f1635b021b1c11dd861a52324c68a199043c55fdba5 +size 1249458 diff --git a/spm/wikipedia/.keep b/spm/wikipedia/.keep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/subsampler.py b/subsampler.py new file mode 100644 index 0000000000000000000000000000000000000000..5e4501b2fed132dc2a79e0e871b056bc09cca457 --- /dev/null +++ b/subsampler.py @@ -0,0 +1,206 @@ +""" +PerplexitySubsampler class: define and execute subsampling on a dataset, +weighted by perplexity values +""" + +from collections import namedtuple +import numpy as np +import scipy as sp +from numpy.random import default_rng +from scipy.stats import norm, uniform + +from typing import List, Tuple, Iterable + +Histo = namedtuple("HISTO", "counts edges centers") + +rng = default_rng() + + +def histo_quantile(hcounts: np.ndarray, hedges: np.ndarray, + perc_values: Iterable[float]) -> List[float]: + """ + Compute quantile values by using a histogram + """ + cs = np.cumsum(hcounts)/np.sum(hcounts) + out = [] + for p in perc_values: + idx = np.searchsorted(cs, p) + frac = (p - cs[idx-1]) / (cs[idx] - cs[idx-1]) + r = hedges[idx] + (hedges[idx+1] - hedges[idx])*frac + out.append(r) + return out + + +def _histo_inv_quantile(hedges: np.ndarray, hcounts: np.ndarray, + perp_value: float) -> float: + """ + Using an histogram of values, estimate the quantile occupied + by a given value + It is therefore the inverse function of quantile() + """ + v = np.searchsorted(hedges, perp_value, side="right") + frac = (perp_value - hedges[v-1]) / (hedges[v] - hedges[v-1]) + return hcounts[:v-1].sum() + hcounts[v-1]*frac + + +def subsample_frac(data: np.ndarray, frac: float) -> np.ndarray: + """ + Subsample an array to a given fraction + """ + return data[uniform.rvs(size=len(data)) < frac] + + + +# ------------------------------------------------------------------------- + + +class PerplexitySubsampler: + + def __init__(self, perp_data: np.ndarray = None, + perp_histogram: Tuple[np.ndarray, np.ndarray] = None, + hbins: int = 1000): + """ + :param perp_data: a dataset of perplexity values + :param perp_histo: a histogram computed over a dataset of perplexity + values, passed as a tuple (counts, edges) + :param hbins: number of bins to use for the histogram approximation + (only used if `perp_data` is passed) + + Either `perp_data` or `perp_histogram` must be passed + """ + if perp_data is not None: + + # Get the P25 and P75 quartiles + self.qr = np.quantile(perp_data, [0.25, 0.75]) + # Build an histogram of perplexities + range_max = self.qr[1]*10 + counts, edges = np.histogram(perp_data, bins=hbins, + range=[0, range_max]) + counts[-1] += len(perp_data[perp_data > range_max]) + self.histo = Histo(counts, edges, (edges[:-1] + edges[1:])/2) + + elif perp_histogram is not None: + + edges = perp_histogram[1] + self.histo = Histo(perp_histogram[0], edges, + (edges[:-1] + edges[1:])/2) + self.qr = histo_quantile(self.histo.counts, self.histo.edges, + [0.25, 0.75]) + + else: + raise Exception("Neither sample nor histogram provided") + + + def _estimate(self, m: float, s: float, + ratio: float) -> Tuple[float, float]: + """ + Estimate the quantiles to be retained in the 1st & 4th original + quartiles + """ + # Compute the normalization factor + gauss_weights = norm.pdf(self.histo.centers, loc=m, scale=s) + hcounts = self.histo.counts + adjusted_norm = (hcounts*gauss_weights).sum()/hcounts.sum()/ratio + # Subsample the histogram + hcounts_sub = self.histo.counts*gauss_weights/adjusted_norm + sub_size = hcounts_sub.sum() + # Estimate the quantiles at Xa & Xb + ra = _histo_inv_quantile(self.histo.edges, hcounts_sub, self.qr[0])/sub_size + rb = _histo_inv_quantile(self.histo.edges, hcounts_sub, self.qr[1])/sub_size + #print(f"{m:10.2f} {s:10.2f} => {ra:.4} {1-rb:.4}") + return ra, 1-rb + + + def _error(self, point: np.ndarray, ratio: float, + pa: float, pb: float) -> float: + """ + Estimate the error in probability mass results + """ + actual_pa, actual_pb = self._estimate(point[0], point[1], ratio) + return abs(pa-actual_pa) + abs(pb-actual_pb) + + + def set(self, ratio: float, pa: float, pb: float): + """ + Compute the parameters needed to achieve a desired sampling ratio & + probability distribution + :param ratio: the desired sampling ratio + :param pa: the probability mass to be left in the first original + perplexity quartile + :param pb: the probability mass to be left in the fourth original + perplexity quartile + """ + # Obtain the initial parameters for the gaussian weighting function + # (assuming uniform data) + sdev = (self.qr[0] - self.qr[1]) / (norm.ppf(pa) - norm.ppf(1-pb)) + mean = self.qr[0] - norm.ppf(pa)*sdev + # Optimize for the real data distribution + initial = np.array([mean, sdev]) + result = sp.optimize.minimize(self._error, initial, + args=(ratio, pa, pb), + method='nelder-mead', + options={'xatol': 1e-8, 'disp': False}) + self.mean, self.sdev = result.x + # Now that we have the final parameters, compute the weighting + # function over the histogram values + gauss_weights = norm.pdf(self.histo.centers, loc=self.mean, + scale=self.sdev) + # Find the normalization needed to achieve the desired sampling ratio + counts = self.histo.counts + self.norm = (counts*gauss_weights).sum()/counts.sum()/ratio + + + def subsample(self, data: np.ndarray) -> np.ndarray: + """ + Subsample a dataset according to the defined conditions + Note: set() must have been called previously + """ + # Create the gaussian weight for each data point + p = norm.pdf(data, loc=self.mean, scale=self.sdev)/self.norm + #print(p) + # Subsample data with probability according to the weight + return data[uniform.rvs(size=len(p)) < p] + + + def retain(self, perp: float) -> bool: + """ + Decide if a sample is to be retained based on its perplexity value + Note: set() must have been called previously + """ + p = norm.pdf(perp, loc=self.mean, scale=self.sdev)/self.norm + return rng.uniform() < p + + + def subsample_piecewise(self, data: np.ndarray, + pa: float, pb: float) -> np.ndarray: + """ + Creat a subsample by directly subsampling each region + """ + qr = self.qr + data1 = subsample_frac(data[data < qr[0]], pa/0.25*self.ratio) + data2 = subsample_frac(data[(data >= qr[0]) & (data <= qr[1])], + (1-pa-pb)/0.5*self.ratio) + data3 = subsample_frac(data[self.data > qr[1]], pb/0.25*self.ratio) + return np.hstack([data1, data2, data3]) + + + def verify(self, data: np.ndarray, data_sub: np.ndarray) -> Tuple: + """ + Check the statistics of a sample + """ + ratio = len(data_sub)/len(data) + ra = len(data_sub[data_sub < self.qr[0]]) / len(data_sub) + rb = len(data_sub[data_sub > self.qr[1]]) / len(data_sub) + return ratio, ra, rb + + + +def check_results(s: PerplexitySubsampler, + data_full: np.ndarray, data_sub: np.ndarray): + """ + Compute and print out the results for a subsample + """ + r, ra, rb = s.verify(data_full, data_sub) + print("Sampling ratio:", r) + print("Probability mass below Pa:", ra) + print("Probability mass above Pb:", rb) diff --git a/texts/.keep b/texts/.keep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/train_all.sh b/train_all.sh new file mode 100644 index 0000000000000000000000000000000000000000..46c6530df63fd759167313ababb81b5474aea455 --- /dev/null +++ b/train_all.sh @@ -0,0 +1,20 @@ +python normalization.py /nfsmounts/datastore/ncc_corpus/extract/newspaper.txt newspapers.norm.txt --cutoff 1000000 +python normalization.py /nfsmounts/datastore/ncc_corpus/extract/booktexts.txt books.norm.txt --cutoff 10000000 + +~/bin/spm_train --input newspapers.norm.txt --vocab_size 64000 --character_coverage=0.99 --input_sentence_size 1000000 --shuffle_input_sentence true --model_prefix newspapers.norm.sp --max_sentence_length 1000000000 --num_threads 64 +~/bin/spm_train --input books.norm.txt --vocab_size 64000 --character_coverage=0.99 --input_sentence_size 1000000 --shuffle_input_sentence true --model_prefix books.norm.sp --max_sentence_length 1000000000 --num_threads 64 + +~/bin/spm_encode --model newspapers.norm.sp.model --output_format=piece newspapers.norm.txt > newspapers.norm.sp.txt +~/bin/spm_encode --model books.norm.sp.model --output_format=piece books.norm.txt > books.norm.sp.txt + +~/bin/lmplz -o 5 -S 75% -T tmp --vocab_estimate 64000 --discount_fallback --skip_symbols < newspapers.norm.txt > newspapers.norm.arpa +~/bin/lmplz -o 5 -S 75% -T tmp --vocab_estimate 64000 --discount_fallback < newspapers.norm.sp.txt > newspapers.norm.sp.arpa + +~/bin/lmplz -o 5 -S 75% -T tmp --vocab_estimate 64000 --discount_fallback --skip_symbols < books.norm.txt > books.norm.arpa +~/bin/lmplz -o 5 -S 75% -T tmp --vocab_estimate 64000 --discount_fallback < books.norm.sp.txt > books.norm.sp.arpa + +~/bin/build_binary newspapers.norm.arpa > newspapers.norm.arpa.bin +~/bin/build_binary newspapers.norm.sp.arpa > newspapers.norm.sp.arpa.bin + +~/bin/build_binary books.norm.arpa > books.norm.arpa.bin +~/bin/build_binary books.norm.sp.arpa > books.norm.sp.arpa.bin