profiling-recipe 是主要使用 pycytominer 函數來處理單細胞形態學特徵的腳本集合。這三個腳本是
profiling-pipeline.py
- 運行基於映像的設定檔處理管道csv2gz.py
- 壓縮.csv
文件create_dirs.sh
- 建立子目錄來儲存處理管道的輸出我們使用 Anaconda 作為我們的套件管理器。請按照此處的說明安裝 Miniconda。
我們使用 DVC 追蹤的 AWS S3 儲存來進行大檔案管理。請按照此處的說明安裝 AWS CLI。安裝後,使用以下命令設定您的 AWS CLI 安裝
aws configure
它會提示您:
AWS Access Key ID:
您的金鑰AWS Secret Access Key:
您的秘密金鑰Default region name:
例如 us-east-1
Default output format:
json
請注意,您輸入的設定檔必須具有上傳到您稍後設定的儲存桶的權限。
如果您不想在 AWS 上儲存/版本化大文件,則可以跳過 AWS CLI 安裝。
如果分析管道用於聚合單單元分析文件,我們建議在記憶體至少為.sqlite
文件大小兩倍的系統上運行管道。如果管道僅用於運行聚合下游的步驟,則它可以在本機電腦上運行。
管道需要特定的資料夾結構,可以如下創建
PROJECT_NAME= " INSERT-PROJECT-NAME "
mkdir -p ~ /work/projects/ ${PROJECT_NAME} /workspace/{backend,software}
將每批中所有板的.sqlite
檔(其中包含單細胞設定檔)和.csv
檔(其中包含井級聚合組態檔)下載到backend
資料夾。這兩個檔案是透過執行分析手冊第 5.3 章中的命令建立的。下載檔案後,資料夾結構應如下所示
backend
├── batch1
│ ├── plate1
│ │ ├── plate1.csv
│ │ └── plate1.sqlite
│ └── plate2
│ ├── plate2.csv
│ └── plate2.sqlite
└── batch2
├── plate1
│ ├── plate1.csv
│ └── plate1.sqlite
└── plate2
├── plate2.csv
└── plate2.sqlite
注意:聚合可能尚未執行。在這種情況下,只有.sqlite
檔可供下載。
焊接是一個將分析配方儲存庫作為子模組添加到資料儲存庫中的過程,以便資料儲存庫中的檔案和產生這些檔案的分析配方中的腳本一起進行版本控制。此處提供焊接說明。我們強烈建議將分析配方焊接到資料儲存庫。焊接後,使用命令將資料儲存庫克隆到software
夾
cd ~ /work/projects/ ${PROJECT_NAME} /workspace/software
git clone < location of the data repository > .git
cd < name of the data repository >
git submodule update --init --recursive
克隆後,資料夾結構應如下所示
software
└── data_repo
├── LICENSE
├── README.md
└── profiling-recipe
├── LICENSE
├── README.md
├── config_template.yml
├── environment.yml
├── profiles
│ ├── profile.py
│ ├── profiling_pipeline.py
│ └── utils.py
└── scripts
├── create_dirs.sh
└── csv2gz.py
無需將分析配方儲存庫焊接到資料儲存庫即可運行管道。如果以這種方式運行,分析配方儲存庫應作為子目錄複製到資料目錄。然後資料夾結構將如下所示。
software
└── data_directory
├── LICENSE
├── README.md
└── profiling-recipe
├── LICENSE
├── README.md
├── config_template.yml
├── environment.yml
├── profiles
│ ├── profile.py
│ ├── profiling_pipeline.py
│ └── utils.py
└── scripts
├── create_dirs.sh
└── csv2gz.py
產生總計統計表需要load_data_csv
檔。這些檔案應下載到load_data_csv
目錄。確保檔案被 gzip 壓縮,並且資料夾結構如下所示。
load_data_csv/
├── batch1
│ ├── plate1
│ │ ├── load_data.csv.gz
│ │ └── load_data_with_illum.csv.gz
│ └── plate2
│ ├── load_data.csv.gz
│ └── load_data_with_illum.csv.gz
└── batch2
├── plate1
│ ├── load_data.csv.gz
│ └── load_data_with_illum.csv.gz
└── plate2
├── load_data.csv.gz
└── load_data_with_illum.csv.gz
管道應從資料儲存庫或資料目錄運作。
DATA= " INSERT-NAME-OF-DATA-REPO-OR-DIR "
cd ~ /work/projects/ ${PROJECT_NAME} /workspace/software/ ${DATA} /
environment.yml 檔案包含運行管道所需的 conda 套件清單。
cp profiling-recipe/environment.yml .
conda env create --force --file environment.yml
conda activate profiling
為此專案初始化 DVC 並將其設定為在 S3 中儲存大檔案。如果不使用 DVC,請跳過此步驟。如果您想將 DVC 用於非 S3 的遠端儲存位置,請在此處尋找說明。如果您的電腦上有多個 AWS 配置文件,並且不想使用 DVC 的預設配置文件,則可以透過在添加遠端和執行最終 DVC 推送之間的任何時刻運行dvc remote modify S3storage profile PROFILE_NAME
來指定要使用的配置文件。
# Navigate
cd ~ /work/projects/ ${PROJECT_NAME} /workspace/software/ < data_repo >
# Initialize DVC
dvc init
# Set up remote storage
dvc remote add -d S3storage s3:// < bucket > /projects/ ${PROJECT_NAME} /workspace/software/ < data_repo > _DVC
# Commit new files to git
git add .dvc/.gitignore .dvc/config
git commit -m " Setup DVC "
將包含管道輸出的目錄建立如下
profiling-recipe/scripts/create_dirs.sh
該管道需要barcode_platemap.csv
和platemap.txt
才能運作。也可以提供可選的external_metadata.tsv
用於附加註解。以下是每個文件的說明
barcode_platemap.csv
- 包含板和板圖之間的映射。每一批數據都有一個這樣的文件。該檔案包含兩列,其名稱分別為Assay_Plate_Barcode
和Plate_Map_Name
,不應更改。文件的名稱也不應該更改。該檔案應該是一個以逗號分隔的.csv
檔。platemap.txt
- 包含孔名稱和擾動名稱之間的對應。每個批次的每個板圖都有一個這樣的檔案。兩列是必需的,一列包含井名稱( A01
、 A02
...),稱為well_position
,另一列包含擾動標識符。擾動標識符列的名稱可以是使用者定義的(如果更改,請更改config.yml
檔案中的名稱)。該文件的名稱可以更改。如果更改,也請更改barcode_platemap.csv
中的名稱。該文件應該是製表符分隔的.txt
文件external_metadata.tsv
- 包含擾動標識符到其他元資料之間的對應。該文件是可選的。擾動標識符列應與platemap.txt
中的列具有相同的名稱。該檔案應該是製表符分隔的.tsv
檔。以下是barcode_platemap.csv
檔案的範例
Assay_Plate_Barcode,Plate_Map_Name
plate1,platemap
plate2,platemap
這是一個範例板圖文件,這是一個範例外部元資料文件。
這些文件應添加到適當的資料夾中,以便資料夾結構如下所示
metadata
├── external_metadata
│ └── external_metadata.tsv
└── platemaps
├── batch1
│ ├── barcode_platemap.csv
│ └── platemap
│ └── platemap.txt
└── batch2
├── barcode_platemap.csv
└── platemap
└── platemap.txt
CONFIG_FILE= " INSERT-CONFIG-FILE-NAME "
cd ~ /work/projects/ ${PROJECT_NAME} /workspace/software/ ${DATA} /
cp profiling-recipe/config_template.yml config_files/ ${CONFIG_FILE} .yml
設定檔包含由分析管道呼叫的各種 pycytominer 函數所需的所有參數。要使用不同的參數運行分析管道,可以建立多個設定檔。配置檔案中的每個參數如下所述。在運行管道之前,必須對設定檔進行所有必要的更改。
如果分析管道的第一步aggregate
已經執行(在backend
資料夾中,除了.sqlite
檔案之外,還有一個.csv
檔案),則必須將.csv
檔案複製到資料儲存庫或資料目錄。如果沒有,請跳至運行分析管道。
分別為每個批次執行以下命令。這些命令為每個批次建立一個資料夾,壓縮.csv
文件,然後將它們複製到資料儲存庫或資料目錄。
BATCH= " INSERT-BATCH-NAME "
mkdir -p profiles/ ${BATCH}
find ../../backend/ ${BATCH} / -type f -name " *.csv " -exec profiling-recipe/scripts/csv2gz.py {} ;
rsync -arzv --include= " */ " --include= " *.gz " --exclude " * " ../../backend/ ${BATCH} / profiles/ ${BATCH} /
對config.yml
檔案進行必要的更改後,請以以下方式執行分析管道
python profiling-recipe/profiles/profiling_pipeline.py --config config_files/ ${CONFIG_FILE} .yml
如果有多個設定文件,則可以使用上述命令依序執行每個設定檔。
注意:分析管道中的每個步驟都使用上一個步驟的輸出作為其輸入。因此,請確保在運行分析管道中的步驟之前已產生所有必需的輸入檔案。僅在設定檔中保留這些步驟,可以僅運行管道中的幾個步驟。
如果使用資料儲存庫,請將新建立的設定檔推送到 DVC,並將 .dvc 檔案和其他檔案推送到 GitHub,如下所示
dvc add profiles/ ${BATCH} --recursive
dvc push
git add profiles/ ${BATCH} / * / * .dvc profiles/ ${BATCH} / * / * .gitignore
git commit -m ' add profiles '
git add *
git commit -m ' add files made in profiling '
git push
如果不使用 DVC 但使用資料儲存庫,請將所有新檔案推送到 GitHub,如下所示
git add *
git commit -m ' add profiles '
git push
執行包含所有步驟的分析工作流程會產生下列文件
檔案名稱 | 描述 | 地點 |
---|---|---|
<PLATE>.csv.gz | 聚合的井級設定檔 | 型材/批次/板材 |
<PLATE>_augmented.csv.gz | 元資料註釋設定檔 | 型材/批次/板材 |
<PLATE>_normalized.csv.gz | 輪廓標準化為整個板 | 型材/批次/板材 |
<PLATE>_normalized_negcon.csv.gz | 輪廓歸一化至陰性對照 | 型材/批次/板材 |
<PLATE>_normalized_feature_select_<LEVEL>.csv.gz | 在plate 、 batch 或all plates 層級選擇特徵的全板歸一化輪廓。 | 型材/批次/板材 |
<PLATE>_normalized_feature_select_negcon_<LEVEL>.csv.gz | 陰性對照歸一化特徵是在plate 、 batch 或all plates 水平上選擇的特徵 | 型材/批次/板材 |
<BATCH>_normalized_feature_select_<LEVEL>.csv.gz | 批次級堆疊全板標準化輪廓,是在batch 或all plates 級選擇的特徵 | gct/批次 |
<BATCH>_normalized_feature_select_<LEVEL>.gct | 從<BATCH>_normalized_feature_select_<LEVEL>.csv.gz 檔案建立的.gct 文件 | gct/批次 |
<BATCH>_normalized_feature_select_negcon_<LEVEL>.csv.gz | 批次級堆疊陰性對照歸一化配置文件,是在batch 或all plates 級選擇的功能 | gct/批次 |
<BATCH>_normalized_feature_select_negcon_<LEVEL>.gct | 從<BATCH>_normalized_feature_select_negcon_<LEVEL>.csv.gz 檔案建立的.gct 文件 | gct/批次 |
summary.tsv | 統計匯總 | 品質控制/摘要 |
<PLATE>_cell_count.png | 平板細胞計數 | 品質控制/熱圖/批次/板 |
<PLATE>_correlation.png | 板上所有孔之間的配對相關性 | 品質控制/熱圖/批次/板 |
<PLATE>_position_effect.png | 每個孔與同一行和同一列中的其他孔之間的匹配百分比 | 品質控制/熱圖/批次/板 |
這些是所有管道都需要的參數
管道的名稱有助於區分不同的配置。它不被管道本身使用。
pipeline : <PIPELINE NAME>
將儲存設定檔的目錄的名稱。預設情況下是profiles
。
output_dir : profiles
aggregated
剖面中井名列的名稱。預設為Metadata_well_position
。
platemap_well_column : Metadata_well_position
預設情況下,CellProfiler 特徵是從三個區室中提取的: cells
、 cytoplasm
和nuclei
。這些隔間在設定檔中列出,如下所示
compartments :
- cells
- cytoplasm
- nuclei
如果資料集中存在其他「非規範」隔間,則將它們新增至上面的清單中,如下所示
compartments :
- cells
- cytoplasm
- nuclei
- newcompartment
注意:如果非規範隔間的名稱是newcompartment
,則該隔間的功能應以Newcompartment
開頭(僅第一個字元應大寫)。如果使用駝峰式大小寫或任何其他格式作為要素名稱,管道將會失敗。
options :
compression : gzip
float_format : " %.5g "
samples : all
compression
- 設定檔.csv
的壓縮格式。預設值為gzip
,這是目前唯一接受的值。float_format
- 有效位數。samples
- 是否對所有樣本或樣本子集執行以下操作。預設all
是目前唯一接受的值。 aggregate
參數這些是由pipeline_aggregate()
函數處理的參數,該函數與pycytominer.cyto_utils.cells.SingleCells()
交互並聚合單細胞配置文件以創建良好級別的配置文件。
aggregate :
perform : true
plate_column : Metadata_Plate
well_column : Metadata_Well
method : median
fields : all
perform
- 是否執行聚合。預設為true
。如果不應執行此操作,則設定為false
。plate_column
- 具有板名的列的名稱。預設為Metadata_Plate
。well_column
- 具有孔名稱的欄位的名稱。預設為Metadata_Well
。method
- 如何執行聚合。預設值為median
。也接受mean
。fields
- 應聚合哪一個視野的單元格?預設為all
。如果要聚合特定視野(例如1、4、9),可以如下完成 fields :
- 1
- 4
- 9
此外,若要將整個影像特徵新增至設定檔中,請將特徵類別列出到參數image_feature_categories
中。例如
image_feature_catageories :
- Count
- Intensity
annotate
參數這些是由pipeline_annotate()
函數處理的參數,該函數與pycytominer.annotate()
交互,並用元資料註釋孔級別剖面。
annotate :
perform : true
well_column : Metadata_Well
external :
perform : true
file : <metadata file name>
merge_column : <Column to merge on>
perform
- 是否執行註解。預設為true
。如果不應執行此操作,則設定為false
。well_column
- 聚合設定檔中包含井名稱的欄位。external
perform
- 是否使用外部元資料註解設定檔。預設為true
。如果不應執行此操作,則設定為false
。file
- 外部元資料文件,應位於資料夾metadata/external_metadata/
中。merge_column
- platemap.txt
和external_metadata.tsv
共用的擾動識別符列的名稱。 normalize
參數這些是由pipeline_normalize()
函數處理的參數,該函數與pycytominer.normalize()
交互並將所有孔標準化為整個板。
normalize :
perform : true
method : mad_robustize
features : infer
mad_robustize_fudge_factor : 0
image_features : true
perform
- 是否執行標準化。預設為true
。如果不應執行此操作,則設定為false
。method
- 使用哪種方法進行標準化。預設為mad_robustize
。 pycytominer 中還提供其他選項,例如standardize
、 robustize
和spherize
。features
- 特徵測量列的名稱。預設值為infer
,它從帶註釋的設定檔推斷 CellProfiler 功能。mad_robustize_fudge_factor
- 標準化方法為mad_robustize
時的模糊因子參數。image_features
:整個影像特徵是否存在於已註釋的設定檔中。預設為true
。如果不存在影像特徵,則設為false
。normalize_negcon
參數這些是由pipeline_normalize()
函數處理的參數,該函數與pycytominer.normalize()
交互作用並將所有孔標準化為陰性對照。
normalize_negcon :
perform : true
method : mad_robustize
features : infer
mad_robustize_fudge_factor : 0
image_features : true
perform
- 是否執行標準化。預設為true
。如果不應執行此操作,則設定為false
。method
- 使用哪種方法進行標準化。預設為mad_robustize
。 pycytominer 中還提供其他選項,例如standardize
、 robustize
和spherize
。features
- 特徵測量列的名稱。預設值為infer
,它從帶註釋的設定檔推斷 CellProfiler 功能。mad_robustize_fudge_factor
- 標準化方法為mad_robustize
時的模糊因子參數。image_features
:整個影像特徵是否存在於已註釋的設定檔中。預設為true
。如果不存在影像特徵,則設為false
。 feature_select
參數這些是由pipeline_feature_select()
函數處理的參數,函數與pycytominer.feature_select()
互動並選擇全板標準化設定檔中的特徵。
perform : true
features : infer
level : batch
gct : false
image_features : true
operations :
- variance_threshold
- correlation_threshold
- drop_na_columns
- blocklist
perform
- 是否執行特徵選擇。預設為true
。如果不應執行此操作,則設定為false
。features
- 特徵測量列的名稱。預設值為infer
,它從標準化配置檔案中推斷 CellProfiler 特徵。level
- 應執行功能選擇的等級。預設為batch
。特徵選擇也可以在batch
和all
板級別上執行。gct
- 是否建立批次級堆疊設定檔和.gct
檔。預設為false
。僅當level
為batch
或all
時,才會建立堆疊設定檔和.gct
檔。image_features
:整個影像特徵是否存在於整個板標準化設定檔中。預設為true
。如果不存在影像特徵,則設為false
。operations
- 特徵選擇操作清單。 variance_threshold
刪除板上所有孔中變異數低於閾值的特徵。 correlation_threshold
刪除冗餘特徵。 drop_na_columns
刪除具有NaN
值的特徵。 blocklist
刪除屬於功能阻止清單一部分的功能。feature_select_negcon
參數這些是由pipeline_feature_select()
函數處理的參數,該函數與pycytominer.feature_select()
交互,並選擇標準化為陰性對照的配置檔案中的特徵。
feature_select_negcon :
perform : true
features : infer
level : batch
gct : false
image_features : true
operations :
- variance_threshold
- correlation_threshold
- drop_na_columns
- blocklist
perform
- 是否執行特徵選擇。預設為true
。如果不應執行此操作,則設定為false
。features
- 特徵測量列的名稱。預設值為infer
,它從標準化配置檔案中推斷 CellProfiler 特徵。level
- 應執行功能選擇的等級。預設為batch
。特徵選擇也可以在batch
和all
板級別上執行。gct
- 是否建立批次級堆疊設定檔和.gct
檔。預設為false
。僅當level
為batch
或all
時,才會建立堆疊設定檔和.gct
檔。image_features
:整個影像特徵是否存在於 negcon 標準化設定檔中。預設為true
。如果不存在影像特徵,則設為false
。operations
- 特徵選擇操作清單。 variance_threshold
刪除板上所有孔中變異數低於閾值的特徵。 correlation_threshold
刪除冗餘特徵。 drop_na_columns
刪除具有NaN
值的特徵。 blocklist
刪除屬於功能阻止清單一部分的功能。 quality_control
參數這些參數指定要產生的品質控制指標和資料的類型。 summary
產生一個包含摘要統計資料的表,而heatmap
產生三個熱圖,每個熱圖顯示不同的品質控制指標。
quality_control :
perform : true
summary :
perform : true
row : Metadata_Row
column : Metadata_Col
heatmap :
perform : true
perform
- 是否產生品質控制指標或數字。預設為true
。如果不應產生這些,則設定為false
。可以產生兩種不同類型的品質控制指標。 summary
建立summary.tsv
其中包含每批每個板的總計統計資料。 heatmap
產生三個熱圖 - 細胞計數與平板圖、孔之間的相關性、位置效應與平板圖。
summary :
perform : true
row : Metadata_Row
column : Metadata_Col
perform
- 是否產生摘要文件。預設為true
。如果不應產生此文件,則設定為false
。row
- load_data.csv
中的行名稱欄位。column
- 列名稱欄位load_data.csv
。 heatmap :
perform : true
perform
- 是否產生熱圖。預設為true
。如果不應產生熱圖,則設定為false
。 batch
和plates
參數這些參數指定要處理的批次和板的名稱。
batch : <BATCH NAME>
plates :
- name : <PLATE NAME>
process : true
process : true
batch
- 要處理的批次的名稱。plates
-name
- 要處理的板的名稱。process
- 是否對板材進行處理。預設為true
。如果不應處理此板,則設定為false
。process
- 是否處理批次。預設為true
。如果不應處理該批次,則設定為false
。git submodule update --init --recursive
dvc pull
有關使用 DVC 的其他資訊可能對您有用:
當處理大型檔案或大型資料夾時,請勿使用git add
將它們新增至 GH 。相反,請使用dvc add
將它們新增至 DVC。這會將大檔案/資料夾上傳到 S3,並在 GH 儲存庫中建立指向 S3 上傳的指標(我們追蹤該檔案/資料夾而不是檔案/資料夾本身)。它還更新 .gitignore,以便 GH 不會追蹤大文件/資料夾本身。然後dvc push
將檔案上傳到S3。
# Add a file or folder to DVC
dvc add LARGEFILE.csv
dvc push
然後將已建立的檔案/資料夾的 .dvc 版本與 .gitignore 一起新增至 github。犯罪。
git add LARGEFILE.csv.dvc
git add .gitignore
git commit -m " add largefile "
# Download ALL data stored by DVC in S3
# Only do this if you really, truly want ALL the data
dvc pull
# Download a specific file stored by DVC in S3
dvc get https://github.com/ORGANIZATION/DATA-REPO.git relative/path/to/LARGEFILE.csv
DVC 將檔案名稱轉換為 S3 中的雜湊值。要查看任何給定 DVC 檔案的檔案哈希(以便您可以直接在 S3 上找到它),請將 --show-url 標誌新增到get
命令中:
dvc get --show-url https://github.com/ORGANIZATION/DATA-REPO.git relative/path/to/LARGEFILE.csv