@@ -8,15 +8,19 @@ setup() {
8
8
output_dir=" ${test_dir} /outputs"
9
9
raw_matrix=" ${data_dir} /matrix.mtx"
10
10
singlet_obs=" ${data_dir} /singlet_obs.txt"
11
+ batch_obs=" ${data_dir} /batch_obs.txt"
11
12
read_opt=" -x $data_dir --show-obj stdout"
12
13
read_obj=" ${output_dir} /read.h5ad"
13
14
filter_opt=" --save-raw -p n_genes 200 2500 -p c:n_counts 0 50000 -p n_cells 3 inf -p pct_counts_mito 0 0.2 -c mito '!True' --show-obj stdout"
14
15
filter_obj=" ${output_dir} /filter.h5ad"
16
+ test_clustering=' louvain_k10_r0_5'
15
17
scrublet_tsv=" ${output_dir} /scrublet.tsv"
16
18
scrublet_png=" ${output_dir} /scrublet.png"
17
19
scrublet_obj=" ${output_dir} /scrublet.h5ad"
20
+ scrublet_batched_obj=" ${output_dir} /scrublet_batched.h5ad"
18
21
scrublet_simulate_obj=" ${output_dir} /scrublet_simulate.h5ad"
19
22
scrublet_opt=" --input-obj-sim ${scrublet_simulate_obj} --filter --export-table ${scrublet_tsv} "
23
+ scrublet_batched_opt=" --filter --batch-key batch"
20
24
norm_mtx=" ${output_dir} /norm"
21
25
norm_opt=" --save-layer filtered -t 10000 -l all -n after -X ${norm_mtx} --show-obj stdout"
22
26
norm_obj=" ${output_dir} /norm.h5ad"
@@ -41,12 +45,11 @@ setup() {
41
45
fdg_opt=" --neighbors-key k10 --layout fr -E ${fdg_embed} --init-pos paga"
42
46
fdg_obj=" ${output_dir} /fdg.h5ad"
43
47
louvain_tsv=" ${output_dir} /louvain.tsv"
44
- louvain_opt=" -r 0.5,1 --neighbors-key k10 --key-added k10 --export-cluster ${louvain_tsv} "
48
+ louvain_opt=" -r 0.1,0. 5,1 --neighbors-key k10 --key-added k10 --export-cluster ${louvain_tsv} "
45
49
louvain_obj=" ${output_dir} /louvain.h5ad"
46
50
leiden_tsv=" ${output_dir} /leiden.tsv"
47
51
leiden_opt=" -r 0.3,0.7 --neighbors-key k10 --key-added k10 -F loom --loom-write-obsm-varm --export-cluster ${leiden_tsv} "
48
52
leiden_obj=" ${output_dir} /leiden.loom"
49
- test_clustering=' louvain_k10_r0_5'
50
53
diffexp_tsv=" ${output_dir} /diffexp.tsv"
51
54
diffexp_opt=" -g ${test_clustering} --reference rest --filter-params min_in_group_fraction:0.25,min_fold_change:1.5 --save ${diffexp_tsv} "
52
55
diffexp_obj=" ${output_dir} /diffexp.h5ad"
@@ -126,14 +129,26 @@ setup() {
126
129
[ -f " $singlet_obs " ]
127
130
}
128
131
132
+ @test " Make a batch variable" {
133
+
134
+ if [ " $resume " = ' true' ] && [ -f " $batch_obs " ]; then
135
+ skip " $singlet_obs exists"
136
+ fi
137
+
138
+ run rm -rf $batch_obs && echo -e " batch\n$( printf " %0.sbatch1\n" {1..1350}) \n$( printf " %0.sbatch2\n" {1..1350}) " > $batch_obs
139
+
140
+ [ " $status " -eq 0 ]
141
+ [ -f " $batch_obs " ]
142
+ }
143
+
129
144
# Read 10x dataset
130
145
131
146
@test " Scanpy object creation from 10x" {
132
147
if [ " $resume " = ' true' ] && [ -f " $read_obj " ]; then
133
148
skip " $read_obj exists and resume is set to 'true'"
134
149
fi
135
150
136
- run rm -f $read_obj && eval " $ scanpy read --extra-obs $singlet_obs $read_opt $read_obj "
151
+ run rm -f $read_obj && eval " paste -d $'\t' $singlet_obs $batch_obs > obs.txt && $ scanpy read --extra-obs obs.txt $read_opt $read_obj "
137
152
138
153
[ " $status " -eq 0 ]
139
154
[ -f " $read_obj " ]
@@ -218,6 +233,20 @@ setup() {
218
233
[ -f " $scrublet_png " ]
219
234
}
220
235
236
+ # Detect multiplets with Scrublet (batched)
237
+
238
+ @test " Run Scrublet for multiplet detection (batched)" {
239
+ if [ " $resume " = ' true' ] && [ -f " $scrublet_batched_obj " ]; then
240
+ skip " $scrublet_batched_obj exists and resume is set to 'true'"
241
+ fi
242
+
243
+ run rm -f $scrublet_batched_obj && eval " $scanpy multiplet scrublet $scrublet_batched_opt $read_obj $scrublet_batched_obj "
244
+
245
+ [ " $status " -eq 0 ]
246
+ [ -f " $scrublet_batched_obj " ]
247
+ }
248
+
249
+
221
250
# Regress out variables
222
251
223
252
@test " Regress out unwanted variable" {
0 commit comments