Skip to content

Instantly share code, notes, and snippets.

@abikoushi
Created January 31, 2023 00:31
Show Gist options
  • Save abikoushi/db199d124b89540cefcf1c6b546d97ea to your computer and use it in GitHub Desktop.
Save abikoushi/db199d124b89540cefcf1c6b546d97ea to your computer and use it in GitHub Desktop.
QC: single cell best practice
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "5a6cd732-e46a-4317-86db-211584a8e888",
"metadata": {},
"source": [
"# Quality control"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "1685ecce",
"metadata": {},
"source": [
"https://www.sc-best-practices.org/surface_protein/quality_control.html"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "e2a3ddba",
"metadata": {},
"source": [
"(要約)\n",
"CITE-seq のデータは2つのモダリティを持つ\n",
"- RNA-Seq\n",
"- ADT(Antibody-Derived Tags)\n",
"\n",
"ここではADTをユニモーダルに(=特にRNAとの関連を見ず)分析する\n",
"\n",
"+ 空のドロップレットやダブレット(ドロップレットに複数細胞が含まれる)場合のトータルカウントがどのあたりに来るかを見る\n",
"+ 外れ値として除去"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "bf583647",
"metadata": {},
"source": [
"## Motivation "
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "ffaa32f5-6882-4b8a-ba2c-a93e77cdd33f",
"metadata": {},
"source": [
"In addition to capturing only transcriptomic data with single cell analyses, we are now able to also capture the abundance of surface protein expression. The protocol used for this is usually referred to as CITE-seq{cite}`sp:Stoeckius2017`. This modality requires different preprocessing compared to what we described earlier for gene expression data since the data distributions are different. In the following, we will guide you through the process of dealing with CITE-seq data. As CITE-seq data provides you with two different modalities, you can either analyze them separately or jointly. Here, we will focus on the ADT part of the data and analyze it unimodally.\n",
"\n",
"単一細胞解析でトランスクリプトーム データのみを取得することに加えて、表面タンパク質の豊富な発現も取得できるようになりました。 これに使用されるプロトコルは通常、CITE-seq{cite}`sp:Stoeckius2017` と呼ばれます。 このモダリティでは、データ分布が異なるため、遺伝子発現データについて前述したものとは異なる前処理が必要です。 以下では、CITE-seq データを処理するプロセスについて説明します。 CITE-seq データは 2 つの異なるモダリティを提供するため、それらを個別に分析することも、まとめて分析することもできます。 ここでは、データの ADT 部分に注目し、ユニモーダルに分析します。"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "b716344a-71a9-47c0-b61f-b000c447e89f",
"metadata": {},
"source": [
"Single-cell RNA-seq data acts as a proxy for protein level with a partial correlation at various transcription estates of a cell{cite}`Liu2016`. Therefore, it is in our interest to measure the protein levels in single-cells if we are to capture a better picture of cellular processes. Quantifying these aspects of a cell is essential to understand cell differentiation and fate, cell signal transduction pathway, disease progression, perturbations, and clinical diagnostics{cite}`Xie2022`.\n",
"\n",
"単一細胞の RNA-seq データは、細胞のさまざまな転写領域での部分的な相関により、タンパク質レベルの代用として機能します{cite}`Liu2016`。 したがって、細胞プロセスをよりよく把握するためには、単一細胞のタンパク質レベルを測定することが重要です。 細胞のこれらの側面を定量化することは、細胞の分化と運命(fate)、細胞シグナル伝達経路、疾患の進行、摂動、および臨床診断を理解するために不可欠です{cite}`Xie2022`。\n",
"\n",
"We can already detect relevant populations with single-cell transcriptomics. This is a valuable piece of information, but incomplete if we want to better understand the cellular identities and dynamics happening in the biological processes we study. Having surface protein measurements allows us to close the gap between identity by transcription and identity by protein where there might be a delay in synthesis that could be important in our experiment. For example, it has been noted that ICOS, an immune checkpoint protein, was increased on the surface of treated cells, regardless of the fact that this protein’s mRNA does not differ in abundance between the treatment groups{cite}`Peterson2017`. Another advantage is that surface protein levels help us detect doublets that might not be reflected at the transcript level in our data. This is possible by looking at the co-occurrence of cell-type-specific markers{cite}`Sun2021`.\n",
"\n",
"単一細胞トランスクリプトミクスを使用して、関連する集団を検出できているとします。 これは貴重な情報ですが、私たちが研究している生物学的プロセスで起こっている細胞のアイデンティティとダイナミクスをよりよく理解したい場合は不完全です. 表面タンパク質を測定することで、転写による同一性とタンパク質による同一性との間のギャップを埋めることができます。このギャップは、実験で重要な合成の遅延がある可能性があります。 例えば、免疫チェックポイントタンパク質である ICOS は、このタンパク質の mRNA が治療群間で存在量に差がないという事実にもかかわらず、治療された細胞の表面で増加したことが注目されています{cite}`Peterson2017`。 もう 1 つの利点は、表面タンパク質レベルが、データの転写レベルでは反映されない可能性のあるダブレットを検出するのに役立つことです。 これは、細胞型特異的マーカー{cite}`Sun2021`の共起を見ることで可能です。\n",
"\n",
"By using antibodies tagged with a barcode, it is possible to first bind the antibodies to the cells and later sequence the barcodes together with the RNA. There are two main protocols CITE-seq (Cellular Indexing of Transcriptomes and Epitopes by Sequencing) and REAP-seq (RNA expression and protein sequencing assay). The main difference resides in their antibody-oligo conjugates also known as Antibody-Derived Tags (ADT). CITE-seq uses streptavidin that is noncovalently bound to biotinylated DNA barcodes. REAP-seq implements covalent bonds between the antibody and a DNA barcode{cite}`Peterson2017`. Furthermore, there have been advances integrating the CITE-seq protocol in a multimodal assay. One is DOGMA-seq{cite}`Mimitou2021`, an adaptation of CITE-seq that allows the measurement of chromatin accessibility, gene expression, and protein from the same cell. This method includes ASAP-seq, which combines scATAC-seq and ADT by adding a bridge oligo specific to the CITE-seq reagents{cite}`Mimitou2021`. The advantage of ASAP-seq is that it can measure surface and intracellular proteins. We will refer to the surface protein measurements as ADT data.\n",
"\n",
"バーコードでタグ付けされた抗体を使用することにより、最初に抗体を細胞に結合させ、後でバーコードを RNA と一緒に配列決定することができます。 CITE-seq (配列決定によるトランスクリプトームとエピトープの細胞索引付け) と REAP-seq (RNA 発現およびタンパク質配列決定アッセイ) の 2 つの主要なプロトコルがあります。 主な違いは、抗体由来タグ (ADT; Antibody-Derived Tags) としても知られる抗体-オリゴコンジュゲートにあります。 CITE-seq は、ビオチン化 DNA バーコードに非共有結合するストレプトアビジンを使用します。 REAP-seq は、抗体と DNA バーコードの間に共有結合を実装します{cite}`Peterson2017`。 さらに、CITE-seqプロトコルをマルチモーダルアッセイに統合する進歩がありました。 1 つは DOGMA-seq{cite}`Mimitou2021` で、クロマチンのアクセシビリティ、遺伝子発現、および同じ細胞からのタンパク質の測定を可能にする CITE-seq の適応です。 この方法には、CITE-seq試薬{cite}`Mimitou2021`に特異的なブリッジオリゴを追加することにより、scATAC-seqとADTを組み合わせたASAP-seqが含まれます。 ASAP-seq の利点は、表面および細胞内タンパク質を測定できることです。 表面タンパク質測定値を ADT データと呼びます。\n",
"\n",
"![CITE-Seq](https://citeseq.files.wordpress.com/2017/10/antibody_transparent.png)\n",
"\n",
"With ADT data, we can identify cell types based on conventional markers usually utilized in flow cytometry experiments. These markers are especially useful for specific immune cell populations. The advantage of ADT is that other modalities are measured simultaneously. However, the way we process ADT data differs from others. Contrary to the negative binomial distribution of UMI counts, ADT data is less sparse with a negative peak for non-specific antibody binding and a positive peak resembling enrichment of specific cell surface proteins{cite}`Zheng2022`. Many experiments only include a small number in the tens or hundreds of antibodies of interest. Moreover, sequencing resources can be concentrated enabling deeper coverage of ADTs since they are separated from transcripts. ADT data is also noisier, as unbound antibodies lead to counts in cells or empty droplets where the protein is not present.\n",
"\n",
"バーコードでタグ付けされた抗体を使用することにより、最初に抗体を細胞に結合させ、後でバーコードを RNA と一緒に配列決定することができます。 CITE-seq (配列決定によるトランスクリプトームとエピトープの細胞索引付け) と REAP-seq (RNA 発現およびタンパク質配列決定アッセイ) の 2 つの主要なプロトコルがあります。 主な違いは、抗体由来タグ (ADT) としても知られる抗体-オリゴコンジュゲートにあります。 CITE-seq は、ビオチン化 DNA バーコードに非共有結合するストレプトアビジンを使用します。 REAP-seq は、抗体と DNA バーコードの間に共有結合を実装します{cite}`Peterson2017`。 さらに、CITE-seqプロトコルをマルチモーダルアッセイに統合する進歩がありました。 1 つは DOGMA-seq{cite}`Mimitou2021` で、クロマチンのアクセシビリティ、遺伝子発現、および同じ細胞からのタンパク質の測定を可能にする CITE-seq の適応です。 この方法には、CITE-seq試薬{cite}`Mimitou2021`に特異的なブリッジオリゴを追加することにより、scATAC-seqとADTを組み合わせたASAP-seqが含まれます。 ASAP-seq の利点は、表面および細胞内タンパク質を測定できることです。 表面タンパク質測定値を ADT データと呼びます。"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "dfe41e8d-005d-4382-a9e1-760afeec7f1c",
"metadata": {},
"source": [
"この章では、scanpy と muon{cite}`Bredikhin_2022` を使用してデータを分析します。 読み込み、品質管理、正規化、および基本的な視覚化の実行方法を示します。 また、バッチ効果を削除する方法も示します。"
]
},
{
"cell_type": "markdown",
"id": "1c14a3ba-bdb2-4d72-914c-07e7e8a9a4b5",
"metadata": {},
"source": [
"## Environment setup"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "799fa1b6-4a4a-48a5-8d27-2149f5d0035c",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import scanpy as sc\n",
"import pandas as pd\n",
"import numpy as np\n",
"import muon as mu\n",
"import glob\n",
"import seaborn as sns\n",
"import warnings\n",
"import os\n",
"\n",
"warnings.simplefilter(action=\"ignore\", category=UserWarning)\n",
"warnings.simplefilter(action=\"ignore\", category=FutureWarning)\n",
"# Change directory to the root folder of the repository\n",
"os.chdir(\"../\")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "b1fd562f",
"metadata": {},
"source": [
"## データの読み込み(簡略版)\n",
"\n",
"5k PBMCs CITE-seq data is available:\n",
"https://support.10xgenomics.com/single-cell-gene-expression/datasets/3.0.2/5k_pbmc_protein_v3\n",
"\n",
"\n",
"muon でデータを読み込んでいます。\n",
"\n",
"Cell Ranger は、フィルタリングされた出力と生の出力の 2 つの出力を提供します。\n",
"生の出力には、シーケンスされたすべてのドロップレット(液滴)が含まれます。\n",
"フィルタリングされた出力は、Cell Ranger によってセルと見なされるドロップレットのみで構成されます。"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "a9d2e81b",
"metadata": {},
"outputs": [],
"source": [
"# This is the directory where those files are downloaded to\n",
"data_dir = \"data/pbmc5k_protein\"\n",
"filtered = mu.read_10x_h5(os.path.join(data_dir, \"5k_pbmc_protein_v3_filtered_feature_bc_matrix.h5\"))\n",
"raw = mu.read_10x_h5(os.path.join(data_dir, \"5k_pbmc_protein_v3_raw_feature_bc_matrix.h5\"))\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "9e9439a9",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<pre>MuData object with n_obs × n_vars = 5247 × 33570\n",
" var:\t&#x27;gene_ids&#x27;, &#x27;feature_types&#x27;, &#x27;genome&#x27;\n",
" 2 modalities\n",
" rna:\t5247 x 33538\n",
" var:\t&#x27;gene_ids&#x27;, &#x27;feature_types&#x27;, &#x27;genome&#x27;\n",
" prot:\t5247 x 32\n",
" var:\t&#x27;gene_ids&#x27;, &#x27;feature_types&#x27;, &#x27;genome&#x27;</pre>"
],
"text/plain": [
"MuData object with n_obs × n_vars = 5247 × 33570\n",
" var:\t'gene_ids', 'feature_types', 'genome'\n",
" 2 modalities\n",
" rna:\t5247 x 33538\n",
" var:\t'gene_ids', 'feature_types', 'genome'\n",
" prot:\t5247 x 32\n",
" var:\t'gene_ids', 'feature_types', 'genome'"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"filtered"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "9ef89e6f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"MIR1302-2HG Gene Expression\n",
"FAM138A Gene Expression\n",
"OR4F5 Gene Expression\n",
"AL627309.1 Gene Expression\n",
"AL627309.3 Gene Expression\n",
" ... \n",
"AC233755.2 Gene Expression\n",
"AC233755.1 Gene Expression\n",
"AC240274.1 Gene Expression\n",
"AC213203.1 Gene Expression\n",
"FAM231C Gene Expression\n",
"Name: feature_types, Length: 33538, dtype: object"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"filtered[\"rna\"].var.feature_types"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "9c62ad90",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"CD3_TotalSeqB Antibody Capture\n",
"CD4_TotalSeqB Antibody Capture\n",
"CD8a_TotalSeqB Antibody Capture\n",
"CD11b_TotalSeqB Antibody Capture\n",
"CD14_TotalSeqB Antibody Capture\n",
"CD15_TotalSeqB Antibody Capture\n",
"CD16_TotalSeqB Antibody Capture\n",
"CD19_TotalSeqB Antibody Capture\n",
"CD20_TotalSeqB Antibody Capture\n",
"CD25_TotalSeqB Antibody Capture\n",
"CD27_TotalSeqB Antibody Capture\n",
"CD28_TotalSeqB Antibody Capture\n",
"CD34_TotalSeqB Antibody Capture\n",
"CD45RA_TotalSeqB Antibody Capture\n",
"CD45RO_TotalSeqB Antibody Capture\n",
"CD56_TotalSeqB Antibody Capture\n",
"CD62L_TotalSeqB Antibody Capture\n",
"CD69_TotalSeqB Antibody Capture\n",
"CD80_TotalSeqB Antibody Capture\n",
"CD86_TotalSeqB Antibody Capture\n",
"CD127_TotalSeqB Antibody Capture\n",
"CD137_TotalSeqB Antibody Capture\n",
"CD197_TotalSeqB Antibody Capture\n",
"CD274_TotalSeqB Antibody Capture\n",
"CD278_TotalSeqB Antibody Capture\n",
"CD335_TotalSeqB Antibody Capture\n",
"PD-1_TotalSeqB Antibody Capture\n",
"HLA-DR_TotalSeqB Antibody Capture\n",
"TIGIT_TotalSeqB Antibody Capture\n",
"IgG1_control_TotalSeqB Antibody Capture\n",
"IgG2a_control_TotalSeqB Antibody Capture\n",
"IgG2b_control_TotalSeqB Antibody Capture\n",
"Name: feature_types, dtype: object"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"filtered[\"prot\"].var.feature_types"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "6d12488e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<pre>MuData object with n_obs × n_vars = 6794880 × 33570\n",
" var:\t&#x27;gene_ids&#x27;, &#x27;feature_types&#x27;, &#x27;genome&#x27;\n",
" 2 modalities\n",
" rna:\t6794880 x 33538\n",
" var:\t&#x27;gene_ids&#x27;, &#x27;feature_types&#x27;, &#x27;genome&#x27;\n",
" prot:\t6794880 x 32\n",
" var:\t&#x27;gene_ids&#x27;, &#x27;feature_types&#x27;, &#x27;genome&#x27;</pre>"
],
"text/plain": [
"MuData object with n_obs × n_vars = 6794880 × 33570\n",
" var:\t'gene_ids', 'feature_types', 'genome'\n",
" 2 modalities\n",
" rna:\t6794880 x 33538\n",
" var:\t'gene_ids', 'feature_types', 'genome'\n",
" prot:\t6794880 x 32\n",
" var:\t'gene_ids', 'feature_types', 'genome'"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"raw"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "25570ca8",
"metadata": {},
"source": [
"オブジェクト raw には 6794880 のドロップレットが含まれていますが、フィルタされたオブジェクト filtered には 5242 しか含まれていません。\n",
"'rna' には 33538、'prot' には 32 の変数があります。"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "7080390b-6ab8-427b-8ca4-84091591727a",
"metadata": {},
"source": [
"## Quality Control (QC; 品質管理)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "4ace2e46-7dfa-4014-b337-993b3aae1a6f",
"metadata": {},
"source": [
"Similar to transcriptomics data quality control and filtering, we need to remove cells that failed to capture ADTs. Solely reusing the earlier introduced transcriptomics quality control measures is inappropriate due to the above-mentioned different distributions.\n",
"Since features for CITE-seq experiments are chosen based on expected biological relevance, separating technical and biological artifacts is more challenging.\n",
"\n",
"トランスクリプトミクス データの品質管理とフィルタリングと同様に、ADT を捕捉できなかった細胞を除去する必要があります。 上記の異なる分布のため、以前に導入されたトランスクリプトミクスの品質管理手段を単独で再利用することは不適切です。\n",
"CITE-seq実験の機能は、予想される生物学的関連性に基づいて選択されるため、技術的成果物と生物学的成果物を分離することはより困難です.\n",
"\n",
"Successful capture of targeted proteins leads to a massive increase of total ADT count, due to the binary nature of surface markers. Caution is required when removing cells with low total ADT counts, since many cell types do not express the selected protein targets.\n",
"Empty droplets however still contain reads for ADT counts because unbound antibodies are sequenced.\n",
"We therefore expect non-zero counts for most ADTs.\n",
"We can, however make use of these empty droplets to normalize our count data as we can consider this as the ambient background level for each antibody.\n",
"This is discussed at a later point.\n",
"\n",
"標的タンパク質の捕捉が成功すると、表面マーカーの2値的性質により、ADT 総数が大幅に増加します。 多くの細胞タイプは選択したタンパク質標的を発現しないため、ADT の総数が少ない細胞を除去する場合は注意が必要です。\n",
"ただし、結合していない抗体が配列決定されるため、空の液滴にはまだ ADT カウントのリードが含まれています。\n",
"したがって、ほとんどの ADT でゼロ以外のカウントが予想されます。\n",
"ただし、これらの空の液滴を使用してカウント データを正規化することはできます。これは、これを各抗体の周囲のバックグラウンド レベルと見なすことができるためです。\n",
"これについては、後で説明します。"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "f21af137-90dc-4767-81fd-52021ad1bb0d",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"AnnData object with n_obs × n_vars = 5247 × 32\n",
" var: 'gene_ids', 'feature_types', 'genome'"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"filtered[\"prot\"]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "9df5b858-3129-4ec6-935b-acd6f8d9967f",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"sc.pp.calculate_qc_metrics(filtered[\"prot\"], inplace=True, percent_top=None)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "49766b78",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"AnnData object with n_obs × n_vars = 5247 × 32\n",
" obs: 'n_genes_by_counts', 'log1p_n_genes_by_counts', 'total_counts', 'log1p_total_counts'\n",
" var: 'gene_ids', 'feature_types', 'genome', 'n_cells_by_counts', 'mean_counts', 'log1p_mean_counts', 'pct_dropout_by_counts', 'total_counts', 'log1p_total_counts'"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"filtered[\"prot\"]"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "bb451c48",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"AnnData object with n_obs × n_vars = 6794880 × 32\n",
" var: 'gene_ids', 'feature_types', 'genome'"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"raw[\"prot\"]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "b0661161-8967-442f-b9be-0fb40b0fdbc8",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"sc.pp.calculate_qc_metrics(raw[\"prot\"], inplace=True, percent_top=None)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "bd99b261-96b8-402e-9e38-1573f7aa3f84",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"AnnData object with n_obs × n_vars = 6794880 × 33538\n",
" var: 'gene_ids', 'feature_types', 'genome'"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"raw[\"rna\"]"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "a51a5b7a-36d2-474e-aa17-b47d8fe0db79",
"metadata": {
"tags": []
},
"source": [
"\n",
"最初に、すべてのサンプルのセルあたりの ADT の分布を調べます。 seaborn ライブラリを使用してこれをプロットします。 最初に全体の範囲を見てみると、ほとんどの細胞が 25 ~ 32 のタンパク質を発現していることがわかります。"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "a3bcae22-46f9-4951-bdb1-adfb64e429db",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"<seaborn.axisgrid.FacetGrid at 0x7fe035b92dd0>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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0qRJGjlypLp3767777/fl0sCAKBOjHkx2TfffON1u1OnTkpLS6t2ft++fdW3b99qx0ePHq3Ro0fXW30AAPiCkWfUAACgEkENAIDB6j2of/nll/q+SwAAmqw6BXVERESVgbx7925deumlJ10UAACoZPnFZG+//bZWrFgh6cjHUDZv3txrzk8//cSbigAAUI8sB/Vll12mH3/8UVLlp15FR0erRYsWXnOCgoJ02WWX1W+FAIBGobzCLXszC+/tCS+Wg7pFixaej45s3769Bg8e7HlfbQAAamJvZtPj72/V3sLSGudGtAvR6Eu6NEBV5qvT31Ffc8012rVrlzZv3qyDBw8eNz506NCTrQsA0AjtLSxV7v6agzr0DE4ED6tTUL/88suaNWuWzjzzzOMuf9tsNoIaAIB6UqegfvXVV3X//fdr1KhR9V0PAAA4Sp3+PKusrEyXX355fdcCAACOUaegvuqqq/TGG2/I7XbXdz0AAOAodbr0XVRUpGXLlmn16tXq0KHDcX9PvXDhwnopDgCApq5OQd25c2fdfvvt9V0LAAA4Rp2C+vDfUwMAgFOrTkGdnJx8wvGUlJQ6FQMAALzVy6dnHTp0SN9//73ee+89tWrVqj7uEgAAqI5n1NWdMb/88sv69ttvT6ogAABwRL1+HvWVV16pv//97/V5lwAANGn1FtTFxcVasmSJfvOb39TXXQIA0OTV6dL3+eefL5vt+I8qczgcmj59+kkXBQAAKtUpqI99QxObzabmzZura9euCg4OrpfCAABAHYO6Z8+ekqSdO3dqx44dqqio0FlnnUVIAwBQz+oU1IWFhUpOTtZHH32kM888U+Xl5Tpw4IB69Oih1NRUnXHGGfVdJwAATVKdXkw2ffp05eXl6b333tP69ev15ZdfatWqVSouLubNTgAAqEd1Cup//OMfmjx5ss4++2zPtq5du2rSpEn66KOP6q04AACaujoFtcPhULNmx+9qs9lUXl5+0kUBAIBKdQrqAQMGaMqUKfrhhx8823bu3Knp06erb9++9VYcAABNXZ1eTHb//fdr7NixuuKKKxQSEiJJ2r9/vy655BI98sgj9VogAABNWa2DeteuXQoPD9frr7+ub775Rjt27JDD4VDnzp3VpUuXU1EjAABNluVL3263W9OnT9egQYP01VdfSZLOO+88DR48WMuXL1d8fLwef/xxud3uU1YsAABNjeWgXrhwod577z2lpqZ63vDksOeff16pqalauXKl3nzzzXovEgCApspyUC9ZskSPPPKI+vfvX+X4gAEDNH78eIIaAIB6ZDmod+/ere7du59wzkUXXaScnJyTLgoAAFSyHNStW7fW7t27TzgnLy9PLVu2PNmaAADArywH9WWXXabnnntOBw8erHL80KFDmjNnjn7/+9/XW3G5ubkaM2aMLrzwQg0YMEALFizwjG3ZskXXXXednE6nrr32Wm3evNlr39WrV2vgwIFyOp0aO3asfvnll3qrCwCAhmI5qO+8807t3btXCQkJWrJkibZs2aKcnBxt3rxZixcv1jXXXKOcnByNGzeu3oq7++67FRQUpBUrVuihhx7SM888o7///e8qLi7W6NGjFRcXpxUrVigmJkZjxoxRcXGxJGnTpk2aOHGiEhMTtXjxYs+HiAAAcLqx/HfUISEhWrJkiWbNmqXHH39cJSUlkir/bOuMM87Q4MGDNW7cOLVp06ZeCtu/f78yMjI0bdo0de7cWZ07d1afPn302Wefaf/+/XI4HJowYYJsNpsmTpyojz/+WB988IESEhKUlpamQYMGaejQoZKkGTNmqH///srJyVHHjh3rpT4AABpCrd5CtGXLlpo+fbo+//xzrV69Wm+88Ybef/99ff7555oyZUq9hbQkBQQEKDAwUCtWrNDBgwf13XffaePGjYqIiFBmZqZiY2Nls9kkVb7H+IUXXqiMjAxJUmZmpuLi4jz31a5dO4WHhyszM7Pe6gMAoCHU6S1E/f39T/m7kDkcDk2aNEnTpk3TwoULVV5eroSEBF133XX66KOP1LVrV6/5rVu3VnZ2tiTpp59+Utu2bY8bz8vLq1UNTfUDRg6vu6mu3yr6ZB29sqax98lut8vtliy9L9avc6qd7z4ywS2btX2quQtf9dtut1uaV6egbig7duxQ//79deuttyo7O1vTpk1T7969VVJSIn9/f6+5/v7+crlckqTS0tITjluVlZV1cgs4zTX19VtFn6yjV9Y0xj45HA5FRkaquLhYRUXFNc4vKXFIkkpLS1RUdKDaeUUHjoxZ3eew4uYVkqStW7eqrKysxvn1LTY21tI8Y4P6s88+07Jly7Ru3ToFBAQoKipKe/fu1QsvvKCOHTseF7oul0sBAQGSKg+IqsYDAwNrVUNUVJTl33gak/LycmVlZTXZ9VtFn6yjV9Y0hT4FBQUp+GDNz7oGBlb+PA8ICFRwsO34CW63ig4cUHCLFtKvT4PWuM9xtVTOj4iIsFq+Txgb1Js3b1anTp084StJF1xwgebOnau4uDgVFBR4zS8oKPBc7g4LC6tyPDQ0tFY12O32RvvNYkVTX79V9Mk6emVNY+6TzebJ1Romnni++6gJnvEa9qmqFsn6JWhfqdPnUTeEtm3bateuXV5nxt999506dOggp9Opr776yvMBIG63Wxs3bpTT6ZQkOZ1Opaene/bLzc1Vbm6uZxwAgNOFsUE9YMAANW/eXA8//LC+//57/eMf/9DcuXM1YsQIXXnllSosLNRjjz2m7du367HHHlNJSYkGDRokSRo+fLjeeecdLV26VNu2bdOECRPUr18//jQLAHDaMTaozzjjDC1YsED5+fkaNmyYUlJSdMcdd+iPf/yjgoOD9eKLLyo9PV0JCQnKzMzUvHnzFBQUJEmKiYnR1KlTlZqaquHDh+vMM89USkqKj1cEAEDtGfsctSR17dpV8+fPr3Kse/fuWrlyZbX7JiQkKCEh4VSVBgBAgzD2jBoAABDUAAAYjaAGAMBgBDUAAAYjqAEAMBhBDQCAwQhqAAAMRlADAGAwghoAAIMR1AAAGIygBgDAYAQ1AAAGI6gBADAYQQ0AgMEIagAADEZQAwBgMIIaAACDEdQAABiMoAYAwGAENQAABiOoAQAwGEENAIDBCGoAAAxGUAMAYDCCGgAAgxHUAAAYjKAGAMBgBDUAAAYjqAEAMBhBDQCAwQhqAAAMRlADAGAwghoAAIMR1AAAGIygBgDAYAQ1AAAGMzqoXS6XpkyZoh49euh3v/udnnrqKbndbknSli1bdN1118npdOraa6/V5s2bvfZdvXq1Bg4cKKfTqbFjx+qXX37xxRIAADgpRgf19OnT9emnn+qVV17Rk08+qSVLlmjx4sUqLi7W6NGjFRcXpxUrVigmJkZjxoxRcXGxJGnTpk2aOHGiEhMTtXjxYhUWFio5OdnHqwEAoPb8fF1Adfbt26fly5dr/vz56t69uyRp5MiRyszMlJ+fnxwOhyZMmCCbzaaJEyfq448/1gcffKCEhASlpaVp0KBBGjp0qCRpxowZ6t+/v3JyctSxY0cfrgoAgNox9ow6PT1dwcHB6tmzp2fb6NGjlZKSoszMTMXGxspms0mSbDabLrzwQmVkZEiSMjMzFRcX59mvXbt2Cg8PV2ZmZoOuAQCAk2XsGXVOTo7at2+vt99+W3PnztXBgweVkJCgO+64Q/n5+eratavX/NatWys7O1uS9NNPP6lt27bHjefl5dWqhvLy8pNbxGnq8Lqb6vqtok/W0StrGnuf7Ha73G7p15candivc6qd7z4ywS2btX2quQtf9dtut1uaZ2xQFxcXa9euXXrrrbeUkpKi/Px8TZo0SYGBgSopKZG/v7/XfH9/f7lcLklSaWnpCcetysrKOrlFnOaa+vqtok/W0StrGmOfHA6HIiMjVVxcrKKi4hrnl5Q4JEmlpSUqKjpQ7byiA0fGrO5zWHHzCknS1q1bVVZWVuP8+hYbG2tpnrFB7efnp6KiIj355JNq3769JGnPnj1688031alTp+NC1+VyKSAgQFLlAVHVeGBgYK1qiIqKsvwbT2NSXl6urKysJrt+q+iTdfTKmqbQp6CgIAUfrPlZ18DAyp/nAQGBCg62HT/B7VbRgQMKbtFC+vVp0Br3Oa6WyvkRERFWy/cJY4M6NDRUDofDE9KSdNZZZyk3N1c9e/ZUQUGB1/yCggLP5e6wsLAqx0NDQ2tVg91ub7TfLFY09fVbRZ+so1fWNOY+2WyeXK1h4onnu4+a4BmvYZ+qapGsX4L2FWNfTOZ0OlVWVqbvv//es+27775T+/bt5XQ69dVXX3n+ptrtdmvjxo1yOp2efdPT0z375ebmKjc31zMOAMDpwtigPvvss9WvXz8lJydr27Zt+ve//6158+Zp+PDhuvLKK1VYWKjHHntM27dv12OPPaaSkhINGjRIkjR8+HC98847Wrp0qbZt26YJEyaoX79+/GkWAOC0Y2xQS9KsWbP0f//3fxo+fLgeeOAB/elPf9KIESMUHBysF198Uenp6UpISFBmZqbmzZunoKAgSVJMTIymTp2q1NRUDR8+XGeeeaZSUlJ8vBoAAGrP2OeoJemMM87QjBkzqhzr3r27Vq5cWe2+CQkJSkhIOFWlAQDQIIw+owYAoKkjqAEAMBhBDQCAwQhqAAAMRlADAGAwghoAAIMR1AAAGIygBgDAYAQ1AAAGI6gBADAYQQ0AgMEIagAADEZQAwBgMIIaAACDEdQAABiMoAYAwGAENQAABiOoAQAwGEENAIDBCGoAAAxGUAMAYDCCGgAAgxHUAAAYjKAGAMBgBDUAAAYjqAEAMBhBDQCAwQhqAECtlVe4fV1Ck+Hn6wIAAKcfezObHn9/q/YWllqaH9EuRKMv6XKKq2qcCGoAQJ3sLSxV7n5rQR16huMUV9N4cekbAACDEdQAABiMoAYAwGAENQAABiOoAQAwGEENAIDBTpugHj16tB588EHP7S1btui6666T0+nUtddeq82bN3vNX716tQYOHCin06mxY8fql19+aeiSAQA4aadFUP/tb3/TunXrPLeLi4s1evRoxcXFacWKFYqJidGYMWNUXFwsSdq0aZMmTpyoxMRELV68WIWFhUpOTvZV+QAA1JnxQb1v3z7NmDFDUVFRnm3vvfeeHA6HJkyYoC5dumjixIlq0aKFPvjgA0lSWlqaBg0apKFDh+r888/XjBkztG7dOuXk5PhqGQAA1InxQf3EE0/oD3/4g7p27erZlpmZqdjYWNlsNkmSzWbThRdeqIyMDM94XFycZ367du0UHh6uzMzMBq0dAICTZfRbiH722Wf68ssvtWrVKk2ePNmzPT8/3yu4Jal169bKzs6WJP30009q27btceN5eXm1evzy8vK6FX6aO7zuprp+q+iTdfTKmtOpT3a7XW635Lb62Ry/zrO8T03z3UcmuGWr02McnuOrftvtdkvzjA3qsrIyPfroo5o0aZICAgK8xkpKSuTv7++1zd/fXy6XS5JUWlp6wnGrsrKy6lB549HU128VfbKOXlljep8cDociIyNVXFysoqJiS/uUlFS+13dpaYmKig7U2/yiA0fGavsYxc0rJElbt25VWVlZjfPrW2xsrKV5xgb1nDlzFBkZqT59+hw35nA4jgtdl8vlCfTqxgMDA2tVQ1RUlOXfeBqT8vJyZWVlNdn1W0WfrKNX1pxufQoKClLwQWvPoAYGVv58DggIVHCw7eTnu90qOnBAwS1aSL8+DVrbxwgKqpwfERFhaQ2+YmxQ/+1vf1NBQYFiYmIkyRO8a9asUXx8vAoKCrzmFxQUeC53h4WFVTkeGhpaqxrsdvtp8c1yqjT19VtFn6yjV9acLn2y2TwZaWFyLfepYb77qAme8Vo+xuE5pvfa2KB+/fXXdejQIc/tWbNmSZLGjx+vL774Qi+99JLcbrdsNpvcbrc2btyo22+/XZLkdDqVnp6uhIQESVJubq5yc3PldDobfiEAAJwEY4O6ffv2XrdbtGghSerUqZNat26tJ598Uo899phuuOEGvfXWWyopKdGgQYMkScOHD9eIESMUHR2tqKgoPfbYY+rXr586duzY4OsAAOBkGP/nWVUJDg7Wiy++6DlrzszM1Lx58xQUFCRJiomJ0dSpU5Wamqrhw4frzDPPVEpKio+rBgCg9ow9oz7W448/7nW7e/fuWrlyZbXzExISPJe+AQA4XZ2WZ9QAADQVBDUAAAYjqAEAMBhBDQCAwQhqAAAMRlADAGAwghoAAIMR1AAAGIygBgDAYAQ1AAAGI6gBADAYQQ0AgMEIagAADEZQAwBgMIIaAACDEdQAABiMoAYAwGAENQAABiOoAQAwGEENAIDBCGoAAAxGUAMAYDCCGgDQJAU7/FRe4a7VPrWdXx/8GvwRAQAwQKC/XfZmNj3+/lbtLSytcX5YSIAeHBTRAJV5I6gBAE3a3sJS5e6vOah9hUvfAAAYjKAGAMBgBDUAAAYjqAEAMBhBDQCAwQhqAAAMRlADAGAwghoAAIMR1AAAGIygBgD45D2sYQ1vIQoAqNV7Xke0C9HoS7o0QFWQDD+j3rt3r5KSktSzZ0/16dNHKSkpKisrkyTl5OTolltuUXR0tAYPHqxPPvnEa99PP/1U8fHxcjqduummm5STk+OLJQDAaePwe17X9K+gqMzXpTYpxga12+1WUlKSSkpKtGjRIj399NP65z//qWeeeUZut1tjx45VmzZttHz5cv3hD39QYmKi9uzZI0nas2ePxo4dq4SEBC1btkytWrXSnXfeKbebSzsAgNOLsZe+v/vuO2VkZOg///mP2rRpI0lKSkrSE088oUsuuUQ5OTl66623FBQUpC5duuizzz7T8uXLNW7cOC1dulSRkZEaOXKkJCklJUUXX3yxNmzYoF69evlyWQAA1IqxZ9ShoaF6+eWXPSF9WFFRkTIzM3XBBRcoKCjIsz02NlYZGRmSpMzMTMXFxXnGAgMD1a1bN884AACnC2PPqENCQtSnTx/P7YqKCqWlpemiiy5Sfn6+2rZt6zW/devWysvLk6Qax60qLy+vY/Wnt8Prbqrrt4o+WUevrPFln+x2u9xuydIzhL/OsTy/LvvUNN99ZIJbtlPzGNU8ZH39/7Hb7ZbmGRvUx5o5c6a2bNmiZcuWacGCBfL39/ca9/f3l8vlkiSVlJSccNyqrKyskyv6NNfU128VfbKOXlnT0H1yOByKjIxUcXGxioqKa5xfUuKQJJWWlqio6IClx6jtPlbnFx04MnaqHuOw4uYVkqStW7d6Xth8MmJjYy3NOy2CeubMmXrttdf09NNP69xzz5XD4dC+ffu85rhcLgUEBEiqPOiODWWXy6WQkJBaPW5UVJTl33gak/LycmVlZTXZ9VtFn6yjV9b4uk9BQUEKPljzM6KBgZU/awMCAhUcbLN037Xdp8b5breKDhxQcIsWks12ah7jGEFBlfMjIiJqnFufjA/qadOm6c0339TMmTN1xRVXSJLCwsK0fft2r3kFBQWey91hYWEqKCg4bry2zbXb7U36h0pTX79V9Mk6emWNr/pks3kyr4aJtZxfl31qmO8+aoJnvJ4f47jpv85p6P83xr6YTJLmzJmjt956S0899ZSGDBni2e50OvX111+rtPTIH+anp6fL6XR6xtPT0z1jJSUl2rJli2ccAIDThbFBvWPHDj3//PO67bbbFBsbq/z8fM+/nj17ql27dkpOTlZ2drbmzZunTZs2adiwYZKka6+9Vhs3btS8efOUnZ2t5ORkdejQgT/NAgCcdowN6o8++kjl5eV64YUX9Pvf/97rn91u1/PPP6/8/HwlJCTo3XffVWpqqsLDwyVJHTp00HPPPafly5dr2LBh2rdvn1JTU2WzfI0GAAAzGPsc9ejRozV69Ohqxzt16qS0tLRqx/v27au+ffueitIAAGgwxp5RAwAAghoAAKMR1AAAGIygBgDAYAQ1AAAGI6gBADAYQQ0AgMEIagAADEZQAwBgMIIaAACDEdQAABiMoAYAwGAENQAABiOoAQAwGEENAIDBCGoAMFx5hfuUzofZ/HxdAADgxOzNbHr8/a3aW1ha49ywkAA9OCiiAapCQyGoAeA0sLewVLn7aw5qND5c+gYAwGAENQAABiOoAQAwGEENAIDBCGoAAAxGUAMAYDCCGgAAgxHUAAAYjKAGAMBgBDUAAAYjqAEAMBhBDQAGcTgcvi4BhuFDOQCggZVXuGVvZjtuu91uV2RkpA8qgskIagBoYNV9bKXbLRUXFysoKEi2X3M8ol2IRl/SxQdVwhQENQCchOrOjmtS1cdWut1SUVGxgg828wR16BlcCm/qCGoAOAnVnR1XhzNk1BZBDQBHqcsZclVnx9XhDBm1RVADwFFqc4bM2TEaQqMN6rKyMk2ZMkUffvihAgICNHLkSI0cOdLXZQE4DVg9Q+bsGA2h0Qb1jBkztHnzZr322mvas2ePHnjgAYWHh+vKK6/0dWkAflXby8ynej5gokYZ1MXFxVq6dKleeukldevWTd26dVN2drYWLVpEUAM+UtUbedTmMnNYSIAeHBRRq8fkhV5oDBplUG/btk2HDh1STEyMZ1tsbKzmzp2riooKNWvGG7LVhHdHsqaqPpl41leXx6jPdZzojTxq80KsuuCFXjjdNcqgzs/P129+8xv5+/t7trVp00ZlZWXat2+fWrVqdcL93W63JMnlcslut598QbZmp/wHd3mFW3JX1FtNERGVZy7l5eV1rqvWNZnqBL2qqk+SNP/fO/VLsavGu24V5K+bftdZLld5jXOt1lQdqzVJUufWQRoa08HyPjXOd7tVVlZW+YvNr38gfHifdiEO+dncNT5G6BkOlZeXH9frE7Hb7ZbvX5JCW/irvLzcek21nF/jPm63ih1BCgr09/Sp1jXVoU9S7XpV7+uuy/z66FUD9bY6drtdzZo1k8124u9lm/twKjUib7/9tp599ln985//9GzLycnRwIEDtW7dOv32t7894f4ul0tZWVmnukwAQBMXHR1d4wlhozyjdjgccrm8f6s/fDsgIKDG/f38/BQVFWXpNx0AAOrKylOxjTKow8LC9N///leHDh2Sn1/lEvPz8xUQEKCQkJAa92/WrJnXZXMAAHylUb6qKiIiQn5+fsrIyPBsS09P95wlAwBwumiUqRUYGKihQ4dq8uTJ2rRpk9auXatXX31VN910k69LAwCgVhrli8kkqaSkRJMnT9aHH36o4OBgjRo1SrfccouvywIAoFYabVADANAYNMpL3wAANBYENQAABiOoAQAwGEENuVwuxcfHa/369Z5tOTk5uuWWWxQdHa3Bgwfrk08+8WGF5qiqV9OnT9d5553n9S8tLc2HVfrO3r17lZSUpJ49e6pPnz5KSUlRWVmZJI6pY52oVxxTR+zatUujRo1STEyM+vXrp5dfftkz1lSOqUb5hiewrqysTPfdd5+ys7M929xut8aOHatzzz1Xy5cv19q1a5WYmKj33ntP4eHhPqzWt6rqlSTt2LFD9913n6655hrPtuDg4IYuz+fcbreSkpIUEhKiRYsWaf/+/XrooYfUrFkzTZgwgWPqKCfq1QMPPMAx9auKigqNHj1aUVFRWrlypXbt2qV7771XYWFhio+PbzLHFEHdhG3fvl333Xefjn3h/+eff66cnBy99dZbCgoKUpcuXfTZZ59p+fLlGjdunI+q9a3qeiVVBvWoUaMUGhrqg8rM8d133ykjI0P/+c9/1KZNG0lSUlKSnnjiCV1yySUcU0c5Ua8OBzXHlFRQUKCIiAhNnjxZwcHB6ty5s3r37q309HS1adOmyRxTXPpuwjZs2KBevXpp8eLFXtszMzN1wQUXKCgoyLMtNjbW653emprqelVUVKS9e/eqc+fOvinMIKGhoXr55Zc9wXNYUVERx9QxTtQrjqkj2rZtq2eeeUbBwcFyu91KT0/XF198oZ49ezapY4oz6ibsxhtvrHJ7fn6+2rZt67WtdevWysvLa4iyjFRdr3bs2CGbzaa5c+fq448/VsuWLXXrrbd6XbJsKkJCQtSnTx/P7YqKCqWlpemiiy7imDrGiXrFMVW1AQMGaM+ePerfv7+uuOIK/fWvf20yxxRBjeOUlJQc96Ek/v7+x30iGSovYdpsNp199tn685//rC+++EKPPPKIgoODddlll/m6PJ+aOXOmtmzZomXLlmnBggUcUydwdK++/vprjqkqzJ49WwUFBZo8ebJSUlKa1M8pghrHcTgc2rdvn9c2l8tl6SNCm5qhQ4eqf//+atmypSTp/PPP186dO/Xmm2826R+qM2fO1Guvvaann35a5557LsfUCRzbq3POOYdjqgpRUVGSKl/UOX78eF177bUqKSnxmtNYjymeo8ZxwsLCVFBQ4LWtoKDguMtMkGw2m+cH6mFnn3229u7d65uCDDBt2jTNnz9fM2fO1BVXXCGJY6o6VfWKY+qIgoICrV271mtb165ddfDgQYWGhjaZY4qgxnGcTqe+/vprlZaWeralp6fL6XT6sCozPfvss8d92Mu2bdt09tln+6YgH5szZ47eeustPfXUUxoyZIhnO8fU8arrFcfUET/++KMSExO9fknZvHmzWrVqpdjY2CZzTBHUOE7Pnj3Vrl07JScnKzs7W/PmzdOmTZs0bNgwX5dmnP79++uLL77QK6+8oh9++EFvvPGG3n77bY0cOdLXpTW4HTt26Pnnn9dtt92m2NhY5efne/5xTHk7Ua84po6IiopSt27d9NBDD2n79u1at26dZs6cqdtvv71pHVNuwO12n3vuue7PP//cc3vnzp3uP/3pT+7IyEj3kCFD3P/5z398WJ1Zju3V3//+d/dVV13ljoqKcl955ZXuNWvW+LA633nxxRfd5557bpX/3G6OqaPV1CuOqSPy8vLcY8eOdV944YXuiy++2P3CCy+4Kyoq3G530zmm+JhLAAAMxqVvAAAMRlADAGAwghoAAIMR1AAAGIygBgDAYAQ1AAAGI6gBADAYQQ0AgMEIagD14rzzztP69et9XUa9ev/99/Xzzz/7ugw0cQQ1AFRh9+7duvvuu4/7KEWgoRHUAFAF3l0ZpiCogVPgxx9/1HnnnacPP/xQAwcOVFRUlMaMGaN9+/ZZ2n/BggXq06ePLrzwQk2fPl0jRozQihUrJEkul0vTp09Xr1691KtXL40fP95zv1Ye98svv1RCQoK6d++uq666SmvWrPGM7dmzRyNHjlRMTIx69+6tadOm6eDBg5bX/cUXX+jyyy+X0+nUXXfdpf3790uSbr31Vk2fPt1r7u23365nnnnG0v2+8847uvLKK+V0OnXDDTdoy5YtnrEVK1Zo0KBB6t69uxISEvTFF194xgYMGODpmyStX79e5513nqVeXXrppZ7/rlixQoWFhRo3bpzi4uLUo0cPjR8/XkVFRZZ7A9QVQQ2cQnPnztVTTz2ltLQ0ZWVlaf78+TXu8+6772r27Nl66KGHtHjxYv34449e4fPUU09p8+bNeumll7Rw4UIVFRXprrvusvS4+fn5GjNmjBISErRq1Sr95S9/0YMPPqgvv/xSkjRt2jQFBQXp7bffVmpqqtasWaMlS5ZYXu+iRYs0ceJELVq0SN9//71SUlIkSUOGDNGHH37oOUv93//+p08++cTrc5ir8+9//1sTJ07UzTffrHfffVeRkZEaM2aMXC6XVqxYoWnTpmnMmDF6++239bvf/U6jR4/2+vzimlTXq6VLl3r+O3jwYM2ePVv5+fl68803tXDhQm3btk3PP/+85ccB6srP1wUAjVlSUpK6d+8uSbrqqquUlZVV4z5vvPGGbr75Zg0aNEiS9MQTT6hv376SpJKSEqWlpWn58uWeM8MZM2aoV69e+uabb9SiRYsTPu6iRYv0u9/9Tn/+858lSZ06ddLWrVv12muvKS4uTrt371a3bt0UHh6uTp06ad68eQoJCbG83sTERE+tDz/8sG699VY9/PDDuvzyyzV58mRt3LhRsbGxWrt2rc466yydc845Nd7n4sWLFR8fr+HDh0uSJkyYoObNm2v//v16/fXXNWLECA0dOlSSNH78eH3xxRdKS0vTfffdZ6nm6nrVqlUrz38DAgK0e/dutWjRQh06dFBgYKCeffZZy30BTgZn1MAp1KlTJ8/XwcHBli4jf/PNN4qKivLcPvPMM3XWWWdJknJycnTw4EHdcMMNiomJUUxMjPr27auKigrt3Lmzxsf97rvv9M9//tOzb0xMjNLS0jz7/uUvf9GqVavUu3dv3XvvvdqzZ486dOhgeb1H133BBRfo0KFD+uGHHxQSEqJLLrlEH3zwgaTKV1MPHjzY0n1+//336tatm+e2v7+/HnjgAYWGhmrHjh2ekD0sOjpaO3bssFyz1f9HN910kzZu3KjevXvrjjvuUFZWljp37mz5cYC64owaOIWaN29e633sdvtxL2Q6fLu8vFxS5Vl3UFCQ15zWrVt7nl+t7nEPHTqkq666SrfffrvXdj+/yh8FV199tXr37q21a9fqX//6l5KSknTbbbfpnnvusVz7sTUfriU+Pl5PPPGExo0bp08//VQPP/ywpfs8XFtVHA7HcdvKy8tVUVFR5fzD/Tua1f9HvXv31rp16/TRRx/pX//6lyZNmqRPPvlEs2bNsrQ/UFecUQOG6dq1q77++mvP7aKiIu3atUuS1LFjR9ntdu3bt0+dOnVSp06dFBwcrJSUFEt/73vWWWdp165dnn07deqkjz76SKtWrZIkPf300/r55581fPhwvfjii7r77rv14YcfWq7922+/9Xy9adMmNW/e3HNGPmDAABUWFuqVV17Reeedp//7v/+zdJ+dOnXStm3bPLfLy8s1YMAApaen66yzzlJmZqbX/MzMTM8ViObNm+vAgQOesZycHMtrsdlsXrcXLFigr7/+Wtdcc42effZZpaSk1Ko3QF0R1IBhRowYoYULF+rDDz/Ujh079NBDD6m4uFg2m03BwcG67rrrNHnyZK1fv17bt2/XhAkTtGvXLkuXqG+88UZt3rxZTz/9tHbu3KlVq1bpqaeeUnh4uKTKS+NTp07Vtm3blJ2drXXr1umCCy6wXPvTTz+tzz77TBkZGZo+fbpuuOEGBQYGSpICAgJ06aWXav78+ZZeRHZ0P959912tXLlSu3btUkpKitxut7p166ZbbrlFaWlpevvtt/X9999r1qxZ2rZtm4YNGyap8lL8smXL9O2332r9+vV69dVXLT/u4bq3bdumAwcOKC8vT1OnTlVGRoZ27typNWvW1Ko3QF1x6RswzJAhQ7Rr1y49+uijKisr0x//+Ee1b9/ec4n2wQcf1BNPPKGkpCQdPHhQPXr00Lx587wuO1enffv2mjt3rmbNmqVXXnlFYWFhevDBB3X11VdLkiZPnqwpU6ZoxIgROnTokPr166eJEydarv3WW2/VxIkT9d///leDBg3S+PHjvcYHDx6s1atXW35+WpJ69OihRx99VKmpqcrPz1dkZKTmzp2rgIAADR48WAUFBZ5XZEdEROjVV19Vly5dJEl33323kpOTlZCQoLPPPlt33XWX5cv4rVq10tVXX627775b48eP11133aX//e9/uuOOO1RcXKwePXpo5syZltcB1JXNzV/1A0bZsGGDOnbsqHbt2kmqfF75oosuUmpqqnr16uXj6k7OkiVL9O677yotLc3XpQCnDc6oAcOsXbtWX331laZMmaIWLVpo4cKFCg4OVnR0tK9Lq7Ndu3Zp8+bNeuGFF3T33Xf7uhzgtEJQAw1o/vz5mj17drXjV111lSZMmKCpU6fq1ltvVVlZmWJiYvTyyy9X+QrnhpKQkKDvv/++2vGXXnpJcXFx1Y7/+OOPmjhxoi699FJdddVVnu1r1qzRgw8+WO1+sbGxevnll+tWNNBIcOkbaECFhYX673//W+14cHCwWrdu3YAVWbNnz54T/g14WFiYAgICan2/Bw4cUEFBQbXjAQEBCgsLq/X9Ao0JQQ0AgMH48ywAAAxGUAMAYDCCGgAAgxHUAAAYjKAGAMBgBDUAAAYjqAEAMNj/AxajrlLY8B4jAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 500x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.set_style(\"whitegrid\")\n",
"sns.displot(filtered[\"prot\"].obs.n_genes_by_counts, bins=30)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "babe345a-2929-49ce-a11f-317263a81da4",
"metadata": {},
"source": [
"As the cells falling below a certain threshold of present ADT markers and not following the distribution are probably not viable cells, we want to filter out those cells.\n",
"Thus, we look at the lower end of the distribution.\n",
"\n",
"現在の ADT マーカーの特定の閾値を下回り、同じ分布に従っていない細胞はおそらく生存細胞ではないため、これらの細胞を除外したいと考えています。\n",
"したがって、分布の下端を調べます。"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "fb552672-ae54-4f20-9838-bed0f0a60c48",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"<seaborn.axisgrid.FacetGrid at 0x7fdf58d9af10>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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PvvsszLfeXw1//znP5WUlKTf//73ev/99xUVFaWRI0equLhY69at04wZMzRy5Eht2LBBt956q0aMGFHm+3/Lc7Vevfvuu+4/ExIS9PLLLys3N1fvvPOOli9frn379unVV1/1+HmAqlDX3wUA1d24cePUuXNnSdLAgQOVlZVV7jZvv/22fv/73ys+Pl6SNGvWLN12222SpMLCQqWlpWnt2rXuK8PZs2erR48e+uabb1S/fv1rPu+KFSt066236ne/+50kKSIiQnv37tWbb76puLg4HTt2TJ06dVLz5s0VERGhRYsWKTQ01OPjHTNmjLvWZ555RsOGDdMzzzyju+66S1OnTtXOnTsVGxurLVu2qE2bNvr5z39e7j5XrVqlAQMGaMiQIZKkiRMnql69ejpz5ozeeustDR06VIMGDZIkTZgwQTt27FBaWpqefPJJj2q+Wq8aNWrk/jMwMFDHjh1T/fr11bJlSwUFBemll17yuC9AVeGKGqikiIgI93+HhIR4NI38zTffKDo62v24YcOGatOmjSQpJydH58+f14MPPqiYmBjFxMTotttuU0lJiY4cOVLu8x46dEh/+9vf3NvGxMQoLS3Nve0f/vAHffDBB+rZs6f++Mc/6vjx42rZsqXHx3tp3TfffLMuXLig7777TqGhoerdu7c+/vhjSaV3UyckJHi0z8OHD6tTp07uxwEBAXrqqacUFhamgwcPukP2oi5duujgwYMe1+zp39FDDz2knTt3qmfPnnrssceUlZWl1q1be/w8QFXgihqopHr16lV4G6vVetmNTBcfO51OSaVX3cHBwWXGNG7c2P366tWe98KFCxo4cKBGjRpVZnnduqX/u997773q2bOntmzZor///e8aN26cHn30Uf3P//yPx7X/tOaLtQwYMECzZs3S2LFj9cUXX+iZZ57xaJ8Xa7sSm8122TKn06mSkpIrjr/Yv0t5+nfUs2dPbd26VZ9++qn+/ve/a8qUKfrss880d+5cj7YHqgJX1IAftG/fXl9//bX7cUFBgbKzsyVJrVq1ktVq1enTpxUREaGIiAiFhIQoJSXFo/f7tmnTRtnZ2e5tIyIi9Omnn+qDDz6QJM2fP1//+c9/NGTIEC1cuFDjx4/X5s2bPa7922+/df/3rl27VK9ePfcVeb9+/ZSfn6/XX39dHTt21I033ujRPiMiIrRv3z73Y6fTqX79+ik9PV1t2rRRZmZmmfGZmZnuGYh69erp7Nmz7nU5OTkeH4vFYinzeNmyZfr6669133336aWXXlJKSkqFegNUBYIa8IOhQ4dq+fLl2rx5sw4ePKinn35aDodDFotFISEheuCBBzR16lRt375dBw4c0MSJE5Wdne3RFPVvfvMb7d69W/Pnz9eRI0f0wQcfaN68eWrevLmk0qnx6dOna9++fdq/f7+2bt2qm2++2ePa58+fr23btikjI0PJycl68MEHFRQUJEkKDAzU7bffrqVLl3p0E9ml/Xj//fe1fv16ZWdnKyUlRS6XS506ddLDDz+stLQ0bdiwQYcPH9bcuXO1b98+DR48WFLpVPyaNWv07bffavv27XrjjTc8ft6Lde/bt09nz57VyZMnNX36dGVkZOjIkSPatGlThXoDVAWmvgE/uOeee5Sdna3nnntORUVF+vWvf60WLVq4p2gnTZqkWbNmady4cTp//ry6deumRYsWlZl2vpoWLVpowYIFmjt3rl5//XWFh4dr0qRJuvfeeyVJU6dO1bRp0zR06FBduHBBffr0UVJSkse1Dxs2TElJSfrxxx8VHx+vCRMmlFmfkJCgDz/80OPXpyWpW7dueu6555Samqrc3FxFRUVpwYIFCgwMVEJCgvLy8tx3ZEdGRuqNN95Qu3btJEnjx4/X5MmTlZiYqLZt2+qJJ57weBq/UaNGuvfeezV+/HhNmDBBTzzxhP773//qsccek8PhULdu3TRnzhyPjwOoChYX7/gHrrsvv/xSrVq1UrNmzSSVvq58yy23KDU1VT169PBzdZWzevVqvf/++0pLS/N3KUCNwBU14AdbtmzRv//9b02bNk3169fX8uXLFRISoi5duvi7NK9lZ2dr9+7deu211zR+/Hh/lwPUGAQ14GNLly7Vyy+/fNX1AwcO1MSJEzV9+nQNGzZMRUVFiomJ0ZIlS654h/P1kpiYqMOHD191/eLFixUXF3fV9UePHlVSUpJuv/12DRw40L1806ZNmjRp0lW3i42N1ZIlS7wrGqgFmPoGfCw/P18//vjjVdeHhISocePG17Eizxw/fvya7wEPDw9XYGBghfd79uxZ5eXlXXV9YGCgwsPDK7xfoLYgqAEAMBhvzwIAwGAENQAABiOoAQAwGEENAIDBCGoAAAxGUAMAYDCCGgAAgxHUAAAY7P8Bn2Wk/AjlICIAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 500x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.displot(filtered[\"prot\"][filtered[\"prot\"].obs.n_genes_by_counts < 30].obs.n_genes_by_counts, bins=30)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "8da6404b-c142-4483-b949-3f63bcaf26ea",
"metadata": {},
"source": [
"約 25 ADT で分布に「谷」が見られます。 これは適切なカットオフのように見えます。"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "fd2c48db-c451-4af5-a9ac-503ac292df57",
"metadata": {},
"source": [
"Next, we do the same thing based on total counts per cell. Looking at the total range, we can't see any apparent ranges of the distribution of counts.\n",
"\n",
"次に、セルあたりの合計数に基づいて同じことを行います。\n",
"合計範囲を見ると、カウントの分布に明確な範囲は見られません。"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "a918d78e-c5b8-4860-89a4-01285960b18e",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"<seaborn.axisgrid.FacetGrid at 0x7fe035b991d0>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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yebMmaPDhw/rvffe06ZNm/TPf/5T7777roqLi6v0YSdLlizRq6++qqeeekrDhg1zL7fb7crJydHp06fdyzIyMmS3293jGRkZ7jGHw6EdO3a4xwEACBTVCuq///3vmjlzplq3bu1e1rZtWz3yyCP65JNPKrWNvLw8LVu2TL/97W+VlJSkgoIC96N79+5q1qyZpk6dqtzcXK1YsUJZWVkaNWqUJGnkyJHasmWLVqxYodzcXE2dOlUtW7b0y1uzAAC4lGoFdVhYmOrVK/9Sm81W6avmPvnkE7lcLj3zzDPq3bu3xyMoKEjLli1TQUGBkpOT9c4772jp0qVq3ry5JKlly5ZavHix0tPTNWrUKB0/flxLly7lw04AAAGnWu9RDxgwQI899pieeOIJ/eQnP5F09sKyOXPmqG/fvpXaxrhx4zRu3LiLjl9zzTVKS0u76Hjfvn0rvS8AAPxVtYL64YcfVkpKigYPHuy+0rqoqEg///nPNWPGDK8WCADAlazKQb1v3z41b95cL7/8sr755hvl5eUpLCxMrVq1Ups2bWqjRgAArliVfo/aGKM5c+ZoyJAh2rp1qySpffv2Gjp0qNLT0zV8+HDNnTtX5txHYwEAgBqrdFC/9NJLeu+997R06VL3B56cs2zZMi1dulRr167V6tWrvV4kAABXqkoH9euvv64ZM2aof//+FY4PGDBADz30EEENAIAXVTqoDxw4oC5dulxynZ49eyo/P7/GRaFmuEkNAAJHpYO6cePGOnDgwCXXOXz4sKKjo2taE2ooKiJEU9KzNCU9y9elAABqqNJBPWjQIC1evPii38h05swZLVmyRL179/Zacai+IodTRY6qf5sYAMBaKn171n333adRo0YpOTlZd955pzp37qyGDRuqqKhIOTk5SktL06lTpzRv3rzarBcAgCtKpYM6KipKr7/+up544gnNnTtXDodD0tnbtho2bKihQ4fq/vvvV5MmTWqtWAAArjRV+sCT6OhozZkzR4888ojy8/N14sQJRUdH6yc/+YklvxoMAAB/V62PEA0NDeVTyAAAqAPV+vYsAABQNwhqAAAsjKAGAMDCCGoAACyMoAYAwMIIagAALIygBgDAwghqAAAsjKAGAMDCCGoAACyMoAYAwMIIagAALIygBgDAwghqAAAsjKAGAMDCCGoAACyMoAYAwMIIagAALIygDmA2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p7p376558+aprKysVntxOp0aPny4Nm3a5F6Wn5+vMWPGKCEhQUOHDtWGDRs8XvPll19q+PDhstvtGj16tPLz8z3GX3jhBfXp00eJiYmaNm2aHA6He6wu5reinubMmVNuztLS0tzjNZmXf//737r//vuVmJioAQMG6O233/ZaL0eOHNHEiRPVvXt39enTR6mpqSopKZHkv/N0qZ78dZ727dune+65R4mJierXr59WrlzpHvPXebpUT/46Tx4Mqm3WrFnmxhtvNNu3bzd/+9vfTGJionn//fd9XZaHZcuWmfHjx5ujR4+6H0VFRebUqVOmV69eZu7cuWb37t1m9uzZ5n/+53/MqVOnjDHGZGZmmi5dupi1a9eanTt3mjvuuMOMGzfOvd3nnnvO9O3b12zevNl89dVXpnfv3mblypW11sfp06dNSkqKadeundm4caMxxpiysjJz4403mkmTJpndu3ebZ5991tjtdnPgwAFjjDEHDhwwCQkJ5rnnnjPffvuteeCBB8zw4cNNWVmZMcaYDz74wCQlJZm///3vJjMz0wwdOtQ89thj7n3W9vxW1JMxxowZM8YsX77cY86Ki4uNMTWfl/Hjx5u77rrLfPPNN+b11183nTt3NpmZmTXupayszPzqV78yv/nNb8y3335rNm/ebAYNGmTmzp3rt/N0qZ6M8c95crlc5vrrrzeTJk0y3333nfn0009N165dzTvvvOO383Spnozxz3m6EEFdTadOnTLx8fEe/8AuXbrU3HHHHT6sqrxJkyaZJ598stzyNWvWmAEDBrj/JysrKzODBg0y6enpxhhjHn74YfOHP/zBvf7BgwdN+/btzffff2+MMaZv377udY0x5q233jL9+/evlR5yc3PNL3/5S3PjjTd6hNqXX35pEhIS3L9cGGPMXXfdZRYtWmSMMWbBggUe81FcXGwSExPdr7/99tvd6xpjzObNm02XLl1McXFxrc/vxXoyxpg+ffqYzz//vMLX1WRe9u3bZ9q1a2fy8/Pd49OmTfPYXnXt3r3btGvXzhQUFLiXvfvuu6Z3795+O0+X6skY/5ynI0eOmAceeMD88MMP7mUpKSnm0Ucf9dt5ulRPxvjnPF2IU9/VdLGv2czMzKz1U8BVkZeXp1atWpVbnpmZqaSkJPfHp9psNnXt2lXbtm1zj5/7xDdJatasmZo3b67MzEwdOXJEhw4d0k9/+lP3eFJSkg4cOKCjR496vYevv/5aPXr00GuvvVauh06dOql+/foedVysh4iICMXFxWnbtm1yuVzKzs72GE9ISFBpaal27dpV6/N7sZ5OnjypI0eOVDhnFfVUlXnJzMxUs2bN1LJlS4/xrVu31rifmJgYrVy5Uk2aNCnXj7/O06V68td5atq0qRYsWKDIyEgZY5SRkaHNmzere/fufjtPl+rJX+fpQn77EaK+drmv2WzUqJEPqzvLGKPvvvtOGzZs0PLly+VyuXTDDTdo4sSJKigoUNu2F3xzVOPGys3NlSQdPXpUTZs2LTd++PBhFRQUSJLH+Ll/zA4fPlzudTV1++23V7i8oKDgojVebvzEiRMqKSnxGA8ODlZ0dLQOHz6sevXq1er8XqynvLw82Ww2Pfvss/rss88UHR2tu+++WzfffLOkms3Lxf48jhw5UqNeJCkqKkp9+vRxPy8rK1NaWpp69uzpt/N0qZ78dZ7ON2DAAB08eFD9+/fX4MGD9cc//tEv5+lSPW3fvt3v50kiqKutpl+zWRcOHjzornPBggXav3+/5syZo9OnT1+0/nO1nz59+qLjp0+fdj8/f0yq294v18Olxivq4fxxY4xP5nfPnj2y2Wxq3bq17rjjDm3evFkzZsxQZGSkBg0aVKN5udyflzfNnz9fO3bs0BtvvKEXXnghIObp/J5ycnL8fp4WLVqkwsJCzZw5U6mpqQHx/9OFPcXFxfn9PEkEdbWFhYWVm5Bzz8PDw31RUjktWrTQpk2bdNVVV8lms6ljx44qKyvTww8/rO7du1dY/7naL9ZfRESEx1/WsLAw939LZ0+H1ZWwsDAdP368XI2X6yEqKqpc3eePR0REyOVy+WR+R4wYof79+7u/prVDhw7au3evVq9erUGDBtVoXi72Wm/3M3/+fL344ot6+umn1a5du4CYpwt7uu666/x+nuLj4yWdvRr7oYce0siRIz2u0r5wv/4wTxf2tGXLFr+fJ4nbs6rt/K/ZPKcqX7NZV6Kjoz2+xrNNmzYqKSlRTEyMCgsLPdYtLCx0n8qJjY2tcDwmJkaxsbGS5D41dP5/x8TE1EofFblYjZXpITo6WmFhYR7jZ86c0fHjx909+mJ+bTZbue9Sb926tft0Wk3m5VKv9ZbZs2frL3/5i+bPn6/BgwdfsmZ/maeKevLXeSosLNTHH3/ssaxt27YqLS2t0b8JvpynS/V08uRJv5ynCxHU1XT+12yeU5Wv2awLn3/+uXr06OHxW/LOnTsVHR3tvujB/Oej3o0x2rJli+x2uyTJbrcrIyPD/bpDhw7p0KFDstvtio2NVfPmzT3GMzIy1Lx5c6+/P30pdrtdOTk57lNU5+q4WA8Oh0M7duyQ3W5XvXr1FB8f7zG+bds2BQcHq0OHDj6b34ULF5b7Ypldu3apdevWFfZUlXlJSEjQgQMH3O85nhtPSEjwSu1LlizRq6++qqeeekrDhg1zL/fnebpYT/46T/v379eECRM83kfdvn27GjVqpKSkJL+cp0v19PLLL/vlPJXj9evIryAzZswww4YNM5mZmeajjz4yXbt2NR9++KGvy3L74YcfTJ8+fcyDDz5o8vLyzKeffmp69+5tVqxYYX744QfTs2dPM3v2bJObm2tmz55tevXq5b41Y8uWLSYuLs68/vrr7vsLx48f79728uXLTe/evc3GjRvNxo0bTe/evc3zzz9f6z2dfyvTmTNnzNChQ83vfvc78+2335rly5ebhIQE932f+fn5Jj4+3ixfvtx93+eNN97oviVt3bp1pmvXruajjz4ymZmZZtiwYWb27NnufdXV/J7fU2ZmpunUqZNZuXKl2bdvn1m1apXp3Lmz2bJlizGm5vMyduxYc8cdd5idO3ea119/3cTHx3vlvs/du3ebjh07mqefftrjftWjR4/67Txdqid/naczZ86Y5ORkM3bsWJObm2s+/fRT8z//8z/mhRde8Nt5ulRP/jpPFyKoa6C4uNhMnjzZJCQkmN69e5u//OUvvi6pnG+//daMGTPGJCQkmF69epnFixe7/8fKzMw0I0aMMPHx8WbUqFEmJyfH47Xp6emmb9++JiEhwaSkpJhjx465x86cOWP++Mc/mm7dupkePXqY+fPnu7dbmy6853jv3r3mf//3f03nzp3NsGHDzBdffOGx/qeffmquv/5606VLF3PXXXe57488Z/ny5eZnP/uZSUpKMlOnTjWnT592j9XV/F7Y00cffWRuvPFGEx8fb2644YZy/5jVZF4KCwvN+PHjTXx8vBkwYIB59913vdLD8uXLTbt27Sp8GOOf83S5nvxxnowx5vDhwyYlJcV07drV9OrVyzzzzDPuffvjPF2uJ3+dp/PxNZcAAFiYNd5MBQAAFSKoAQCwMIIaAAALI6gBALAwghoAAAsjqAEAsDCCGgAACyOoAQCwMIIa8BM7d+7Uli1bLrueMUarVq2q9HYHDBigN998syal1bp//etfev/9931dBuATBDXgJ1JSUrR3797Lrrd582bNmjWr9guqQ0888YTWr1/v6zIAnyCogQATiJ8KHIg9AZVFUAN+4M4779SBAwc0depUTZkyRXl5ebrnnnvUtWtX9enTR0uWLFFZWZn279+v0aNHS5Lat2+vTZs2yel0KjU1VX369FFcXJwGDBig1157rVp1/Otf/9Lvfvc7de3aVb169dJTTz3lDtHDhw/rgQceUPfu3dWjRw/NmTNHTqdTkvTmm29qwIAB5XpavHixJGnKlClKTU3V7373O9ntdvXt21dvvfWWJGnx4sVau3at1q5d697Ge++9p8GDBys+Pl5Dhw4t933EQCAhqAE/sHjxYv34xz/WtGnTdP/99+v2229X06ZNtWbNGj366KNKS0vTSy+9pGbNmrnDb8OGDUpMTNSKFSv06aefavHixfrggw80YsQIzZ49u9yX3ldGSkqKCgoKlJaWpgULFujNN9/UqlWr5HQ6ddddd8nhcOjll1/WggUL9Omnn2revHmV3vaqVasUFxendevW6frrr9ejjz6qH374QWPHjtWQIUM0ZMgQvfHGG/rXv/6lyZMna/z48frggw80cuRIPfjggzp+/HiV+wH8QbCvCwBwedHR0QoKClLDhg31ySefKCIiQrNnz1ZwcLDatGmjgoICLV26VGPGjNFVV10lSYqJiZEkdejQQT179nR/of29996rpUuXau/evWrSpEmla9i1a5e2bt2qjz/+WFdffbUkaebMmSouLtbnn3+uI0eO6PXXX3fv/5FHHtH//d//6fe//32ltt++fXv99re/lSQ98MADeumll5Sbm6uuXbsqPDxcktSoUSPt2LFDpaWl+vGPf6wWLVpo7Nixat++vcLCwirdC+BPCGrAz+Tl5SkuLk7Bwf/93zcxMVEFBQU6ceJEufUHDhyoL774QnPnztWePXu0Y8cOSZLL5arSfr/77jtFR0e7Q/rctiVpxYoVatWqlTukJalr1646c+aMvv/++0ptv1WrVu7/joyMlCSdOXOm3HodO3ZUv379dPfdd+vaa6/VL37xC91yyy2KiIioUj+Av+DUN+BnKjpyLCsrk1Rx+D799NN6+OGHFRwcrBEjRlT7/emQkJAq1XSuFpfLJZvNVm78whCuaPsVXURms9m0fPlyrVmzRoMHD9Y//vEP3Xzzzdq5c+dlewD8EUEN+Jlrr71WOTk5Ki0tdS/bunWrGjVqpOjo6HKh+Oqrr2rGjBl66KGHNHToUDkcDklVv5L6mmuu0fHjx3Xo0CH3spdeekn33Xefrr32Wu3du9fjfeJt27YpODhYP/nJTxQSEqJTp065x4wx2r9/f6X3fX5PeXl5+tOf/qQuXbro97//vf7617+qWbNm+vzzz6vUD+AvCGrAT9SvX1979uzRz3/+czmdTj3yyCPKy8vTxx9/rMWLF+u2226TzWZznwLevn27SkpKFB0drX/84x/Kz8/XP//5T02ePFmS3FdkV9Z1112nnj17avr06frmm2+0adMmrVixQr169VKvXr109dVXa/Lkyfrmm2+0ceNGzZ49W8OHD1dUVJQ6d+6s48eP6+WXX1Z+fr5SU1NVVFRU6X1HRETowIEDOnLkiKKiorR69WotW7ZM+fn5+vTTT3XgwAF16tSpSv0A/oKgBvzEbbfdplWrVik1NVUrV67U999/776C+6677tKECRMknb0oq1evXvr1r3+t9evX649//KN27typYcOGaerUqbrhhhvUpUuXap0qnj9/viIiInTrrbdq0qRJuvXWW3X77bcrKChIy5YtkyT96le/0oMPPqhf/OIX7g9eadWqlf7whz/omWee0YgRI2SM0eDBgyu935tuuknfffedfvnLX6pJkyZavHixPvzwQw0bNkyzZs3Sgw8+qN69e1e5H8Af2AyfJAAAgGVxRA0AgIVxexYASVJycrK+++67i47/+c9/Vrdu3eqwIgASp74B/MfBgwc9riS/UGxsrPuDRwDUHYIaAAAL4z1qAAAsjKAGAMDCCGoAACyMoAYAwMIIagAALIygBgDAwghqAAAsjKAGAMDC/j/XnY4IoeqV3AAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 500x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.displot(filtered[\"prot\"].obs.total_counts)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "6cb24534-6f05-4c3c-b613-e6a3aa10d413",
"metadata": {},
"source": [
"We zoom in to see the upper end of the distribution for the total counts to decide on a cutoff for the maximum number of counts as droplets exceeding a certain threshold probably contain multiple cells, so called doublets.\n",
"\n",
"特定の閾値を超える液滴にはおそらく複数の細胞、いわゆるダブレットが含まれているため、最大カウント数のカットオフを決定するために、合計カウントの分布の上限を確認するためにズームします。"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "f9ca85d3-6dd4-4771-b7d9-9fd529df11e1",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"<seaborn.axisgrid.FacetGrid at 0x7fdf58b01590>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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du3a6eDBg9X6f5fNc32ynouKimrVXBPUR/n000/Vo0cPr78+v//+e8XGxnpOFjC/XRrdGKN169YpPj5ekhQfH6+1a9d6nrdr1y7t2rVL8fHxatKkiZo1a+a1fO3atWrWrNkp/3z6ZOLj4/Xdd995Dv1Ih+s8UY9Op1M5OTmKj49XnTp1FBcX57U8MzNToaGhOvfcc629Lenf/va3427k8sMPP6hNmzaSqjevCQkJ2rFjh+ezwCPLExISarSnoz333HN6/fXX9cwzz2jQoEGe8do81yfquTbP9fbt23X77bd7fU66fv161a9fX8nJybVyrk/W8/z582vXXNfY+eQB6NdffzUpKSlm/PjxZtOmTWblypWmd+/eJiMjw/z666+mZ8+eZsqUKSY3N9dMmTLF9OrVy/OVh3Xr1pnOnTubxYsXe76XN2bMGM+2Z8+ebXr37m2+/PJL8+WXX5revXubl19+2V+tehz9VaVDhw6ZgQMHmjvvvNP8+OOPZvbs2SYhIcHzfcv8/HwTFxdnZs+e7fm+5eWXX+75ytpbb71lkpKSzPvvv2+ysrLMoEGDzJQpUzz7evDBB82gQYNMVlaWef/9901SUpJ57733/NpzVlaW6dSpk5kzZ47ZunWrWbhwoenSpYtZt26dMab68zpy5Ehz/fXXm++//94sXrzYxMXFnbLv1m7cuNF07NjRPPvss17fJf3pp59q7VyfrOfaPNeHDh0yqampZuTIkSY3N9esXLnSnH/++Wbu3Lm1dq5P1nNtm2uC+hg//vijGTFihElISDC9evUyM2bM8PyDzcrKMkOGDDFxcXHmqquuMt99953Xc5ctW2b69OljEhISTFpamvn55589yw4dOmQee+wx061bN9OjRw8zbdo0z3b96djvFG/ZssX86U9/Ml26dDGDBg0yn332mdf6K1euNJdeeqnp2rWruemmmzzfOzxi9uzZ5g9/+INJTk42EydONAcOHPAsKykpMRMmTDAJCQmmd+/e5pVXXqnR3k7k2J7ff/99c/nll5u4uDgzYMCA4/4nU515LSwsNGPGjDFxcXGmb9++5s0336z5Bn8ze/Zs06FDh3J/jKmdc/17PdfWuTbGmN27d5u0tDSTlJRkevXqZZ5//nlPfbVxro05ec+1aa65zSUAABbjM2oAACxGUAMAYDGCGgAAixHUAABYjKAGAMBiBDUAABYjqAEAsBhBDQCAxQhqIEB8//33Wrdu3e+uZ4zRwoULK7zdvn37avny5dUprcbt3btX//rXv/xdBuAXBDUQINLS0rRly5bfXW/NmjV65JFHar6gU+ipp57SJ5984u8yAL8gqIFapjZeFbg29gRUFEENBIAbbrhBO3bs0MSJE3Xfffdp06ZNGjVqlJKSkpSSkqLnnntOZWVl2r59u2688UZJ0jnnnKPVq1fL5XIpPT1dKSkp6ty5s/r27atFixZVqY69e/fqzjvvVFJSknr16qVnnnnGE6K7d+/WHXfcoe7du6tHjx6aOnWqXC6XJGn58uXq27fvcT3NmDFDknTfffcpPT1dd955p+Lj49WnTx+98cYbkqQZM2ZoxYoVWrFihWcb77zzjvr376+4uDgNHDjwuPsSA7UJQQ0EgBkzZujMM8/U/fffr7Fjx2r48OFq3LixlixZooceekgLFizQvHnz1LRpU0/4rVq1SomJicrIyNDKlSs1Y8YMvfvuuxoyZIimTJmiwsLCSteRlpamgoICLViwQNOnT9fy5cu1cOFCuVwu3XTTTXI6nZo/f76mT5+ulStX6sknn6zwthcuXKjOnTvrrbfe0qWXXqqHHnpIv/76q0aOHKnLLrtMl112mZYuXaq9e/dqwoQJGjNmjN59910NHTpU48eP1759+yrdDxAIQv1dAIDfFxsbq5CQEJ122mn68MMPFRkZqSlTpig0NFRt27ZVQUGBZs6cqREjRuj000+XJDVq1EiSdO6556pnz56eG9vfcsstmjlzprZs2aKGDRtWuIYffvhB33zzjT744AOdddZZkqTJkyerpKREn376qfbs2aPFixd79j9p0iTdeuut+utf/1qh7Z9zzjn6y1/+Ikm64447NG/ePOXm5iopKUkRERGSpPr16ysnJ0cHDx7UmWeeqebNm2vkyJE655xzFB4eXuFegEBCUAMBZtOmTercubNCQ//3n29iYqIKCgq0f//+49a/5JJL9Nlnn+nxxx9XXl6ecnJyJElut7tS+928ebNiY2M9IX1k25KUkZGhVq1aeUJakpKSknTo0CFt27atQttv1aqV5/eYmBhJ0qFDh45br2PHjrrwwgt18803q3Xr1rr44os1bNgwRUZGVqofIFBw6BsIMOW9cywrK5NUfvg+++yzuueeexQaGqohQ4ZU+fPpunXrVqqmI7W43W45HI7jlh8bwuVtv7yTyBwOh2bPnq0lS5aof//++vjjj3XllVfq+++//90egEBEUAMBpnXr1vruu+908OBBz9g333yj+vXrKzY29rhQfP311/Xggw/q7rvv1sCBA+V0OiVV/kzqli1bat++fdq1a5dnbN68ebrtttvUunVrbdmyxetz4szMTIWGhurss89W3bp1VVxc7FlmjNH27dsrvO+je9q0aZOeeOIJde3aVX/961/19ttvq2nTpvr0008r1Q8QKAhqIEBERUUpLy9PF1xwgVwulyZNmqRNmzbpgw8+0IwZM3TdddfJ4XB4DgGvX79epaWlio2N1ccff6z8/Hx9/fXXmjBhgiR5zsiuqPbt26tnz5564IEHtGHDBq1evVoZGRnq1auXevXqpbPOOksTJkzQhg0b9OWXX2rKlCkaPHiw6tWrpy5dumjfvn2aP3++8vPzlZ6erl9++aXC+46MjNSOHTu0Z88e1atXT6+99ppmzZql/Px8rVy5Ujt27FCnTp0q1Q8QKAhqIEBcd911WrhwodLT0zVnzhxt27bNcwb3TTfdpNtvv13S4ZOyevXqpWuvvVaffPKJHnvsMX3//fcaNGiQJk6cqAEDBqhr165VOlQ8bdo0RUZG6pprrtFdd92la665RsOHD1dISIhmzZolSbr66qs1fvx4XXzxxZ4Lr7Rq1Ur33nuvnn/+eQ0ZMkTGGPXv37/C+73iiiu0efNm/fGPf1TDhg01Y8YMvffeexo0aJAeeeQRjR8/Xr179650P0AgcBiuJAAAgLV4Rw0AgMX4ehYASVJqaqo2b958wuUvvviiunXrdgorAiBx6BvAb3bu3Ol1JvmxmjRp4rnwCIBTh6AGAMBifEYNAIDFCGoAACxGUAMAYDGCGgAAixHUAABYjKAGAMBiBDUAABb7/35kI4gzHaszAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 500x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.displot(\n",
" filtered[\"prot\"]\n",
" .obs.query(\"total_counts>5000\")\n",
" .total_counts\n",
")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "738cc7d6-bfca-400c-85e4-d25a338192a4",
"metadata": {},
"source": [
"後で実行される \"dsb\" 正規化のために、生の RNA カウント分布を調べる必要があります。 最初のピークは、細胞を含まない液滴であるため、後の段階でこの範囲を dsb アルゴリズムに使用できます。"
]
},
{
"cell_type": "markdown",
"id": "30451fc1-d584-4191-8035-ad328e9e0166",
"metadata": {},
"source": [
"### Sample-wise QC"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "9a5dbbb9",
"metadata": {},
"source": [
"X (ここではlog1p_n_genes_by_counts)に対して、$\\mathrm{median}(X) \\pm n_m \\times \\mathrm{MAD} $ の範囲外にあるものを外れ値として除外\n",
"\n",
"MAD: 中央絶対偏差\n",
"$$\n",
"\\mathrm{MAD} = \\mathrm{median}(|X_i - \\mathrm{median}(X)|)\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b9d723fc-72e8-4832-8415-64049e471b8a",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"def is_outlier(adata, metric: str, nmads: int):\n",
" M = adata.obs[metric]\n",
" outlier = (M < np.median(M) - nmads * M.mad()) | (\n",
" np.median(M) + nmads * M.mad() < M\n",
" )\n",
" return outlier\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "1685ecce",
"metadata": {},
"source": [
"https://www.sc-best-practices.org/surface_protein/quality_control.html"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"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.7.13"
},
"vscode": {
"interpreter": {
"hash": "baacfa6926f14e035c6e6c508c77d8b35cfc8e7c8e6166c264e66cc816d7d481"
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment