From cf53ac55d6b94e0d4a7f5d65443a986cdfffd66d Mon Sep 17 00:00:00 2001 From: Andrew Sparkes Date: Thu, 27 Nov 2025 15:02:00 +0000 Subject: [PATCH 1/5] changed viability threshold value --- config/initializers/scrna_config.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/initializers/scrna_config.rb b/config/initializers/scrna_config.rb index 5e477097bc..9b3e8ae1d1 100644 --- a/config/initializers/scrna_config.rb +++ b/config/initializers/scrna_config.rb @@ -33,7 +33,7 @@ # Key for the required number of cells metadata stored on Study (in poly_metadata) study_required_number_of_cells_per_sample_in_pool_key: 'scrna_core_pbmc_donor_pooling_required_number_of_cells', # Default viability threshold when passing/failing samples (in percent) - viability_default_threshold: 65, + viability_default_threshold: 50, # Default total cell count threshold when passing/failing samples total_cell_count_default_threshold: 50_000, # Key for the number of cells per chip well metadata stored on pool wells (in poly_metadata) From 3c2fab7781af1c81f17d9f7c0f31e419131e6445 Mon Sep 17 00:00:00 2001 From: Andrew Sparkes Date: Fri, 28 Nov 2025 10:37:05 +0000 Subject: [PATCH 2/5] modified to add pbmc tube sizes --- .../014_limber_scrna_core_cdna_prep_request_types.yml | 3 ++- .../008_scrna_core_cdna_prep_tube_purposes.yml | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/config/default_records/request_types/014_limber_scrna_core_cdna_prep_request_types.yml b/config/default_records/request_types/014_limber_scrna_core_cdna_prep_request_types.yml index 2137f389da..20436747fe 100644 --- a/config/default_records/request_types/014_limber_scrna_core_cdna_prep_request_types.yml +++ b/config/default_records/request_types/014_limber_scrna_core_cdna_prep_request_types.yml @@ -15,7 +15,8 @@ limber_scrna_core_cdna_prep_gem_x_5p: acceptable_purposes: - LRC Bank Seq - LRC Bank Spare - - LRC Bank Input + - LRC Bank Input 1ml + - LRC Bank Input 0.8ml limber_scrna_core_cdna_prep_gem_x_5p_gems_input: name: scRNA Core cDNA Prep GEM-X 5p GEMs Input asset_type: Well diff --git a/config/default_records/tube_purposes/008_scrna_core_cdna_prep_tube_purposes.yml b/config/default_records/tube_purposes/008_scrna_core_cdna_prep_tube_purposes.yml index 9b61e245ae..bb58ce2d08 100644 --- a/config/default_records/tube_purposes/008_scrna_core_cdna_prep_tube_purposes.yml +++ b/config/default_records/tube_purposes/008_scrna_core_cdna_prep_tube_purposes.yml @@ -12,7 +12,12 @@ LRC Bank Spare: target_type: SampleTube stock_plate: false -LRC Bank Input: +LRC Bank Input 1ml: + type: Tube::Purpose + target_type: SampleTube + stock_plate: true + +LRC Bank Input 0.8ml: type: Tube::Purpose target_type: SampleTube stock_plate: true From e8efd12d3a3650be24c9a794d06981506ce89e9f Mon Sep 17 00:00:00 2001 From: Andrew Sparkes Date: Mon, 1 Dec 2025 12:48:07 +0000 Subject: [PATCH 3/5] modified generate tubes uat action to add sample metadata required in scRNA integration suite test --- app/uat_actions/uat_actions/generate_tubes.rb | 5 +- spec/uat_actions/generate_tubes_spec.rb | 70 +++++++++++++++++-- 2 files changed, 67 insertions(+), 8 deletions(-) diff --git a/app/uat_actions/uat_actions/generate_tubes.rb b/app/uat_actions/uat_actions/generate_tubes.rb index 03cba1c767..aba72d9a42 100644 --- a/app/uat_actions/uat_actions/generate_tubes.rb +++ b/app/uat_actions/uat_actions/generate_tubes.rb @@ -48,7 +48,10 @@ def perform sanger_sample_id: sample_name, studies: [study], sample_metadata_attributes: { - supplier_name: sample_name + supplier_name: sample_name, + collected_by: UatActions::StaticRecords.collection_site, + donor_id: "#{sample_name}_donor", + sample_common_name: 'human' } ), study: study diff --git a/spec/uat_actions/generate_tubes_spec.rb b/spec/uat_actions/generate_tubes_spec.rb index 6d377ecdfc..42f92b46af 100644 --- a/spec/uat_actions/generate_tubes_spec.rb +++ b/spec/uat_actions/generate_tubes_spec.rb @@ -2,6 +2,7 @@ require 'rails_helper' +# rubocop:disable RSpec/ExampleLength describe UatActions::GenerateTubes do context 'with valid options' do let(:study) { create(:study, name: 'Test Study') } @@ -19,10 +20,29 @@ before { allow(AssetBarcode).to receive(:new_barcode).and_return('2') } - it 'can be performed' do + it 'performs the action successfully' do expect(uat_action.perform).to be true + end + + it 'returns the expected barcode in the report' do + uat_action.perform expect(uat_action.report['tube_0']).to eq report['tube_0'] - expect(Tube.find_by_barcode(report['tube_0']).aliquots.first.study).to eq study + end + + it 'assigns the correct study to the tube' do + uat_action.perform + tube = Tube.find_by_barcode(report['tube_0']) + expect(tube.aliquots.first.study).to eq study + end + + it 'sets the correct sample metadata values' do + uat_action.perform + tube = Tube.find_by_barcode(report['tube_0']) + sample_metadata = tube.aliquots.first.sample.sample_metadata + expect(sample_metadata.supplier_name).to eq 'sample_NT2P_0' + expect(sample_metadata.collected_by).to eq UatActions::StaticRecords.collection_site + expect(sample_metadata.donor_id).to eq 'sample_NT2P_0_donor' + expect(sample_metadata.sample_common_name).to eq 'human' end end @@ -38,12 +58,27 @@ before { allow(AssetBarcode).to receive(:new_barcode).and_return('3', '4', '5') } - it 'can be performed' do + it 'performs the action successfully' do expect(uat_action.perform).to be true + end + + it 'returns the expected barcodes in the report' do + uat_action.perform expect(uat_action.report['tube_0']).to eq report['tube_0'] expect(uat_action.report['tube_1']).to eq report['tube_1'] expect(uat_action.report['tube_2']).to eq report['tube_2'] end + + it 'sets the correct sample metadata values for each tube' do + uat_action.perform + uat_action.report.each_with_index do |(_key, barcode), i| + sample_metadata = Tube.find_by_barcode(barcode).aliquots.first.sample.sample_metadata + expect(sample_metadata.supplier_name).to eq "sample_#{barcode}_#{i}" + expect(sample_metadata.collected_by).to eq UatActions::StaticRecords.collection_site + expect(sample_metadata.donor_id).to eq "sample_#{barcode}_#{i}_donor" + expect(sample_metadata.sample_common_name).to eq 'human' + end + end end context 'when creating the tube with a fluidx foreign barcode' do @@ -55,17 +90,36 @@ foreign_barcode_type: 'FluidX' } end - let(:report) do + let(:expected_report) do # Tube NT6T created with foreign barcode based on machine barcode { 'tube_0' => 'SA00006844' } end before { allow(AssetBarcode).to receive(:new_barcode).and_return('6') } - it 'can be performed' do + it 'performs the action successfully' do expect(uat_action.perform).to be true - expect(uat_action.report['tube_0']).to eq report['tube_0'] - expect(Tube.find_by_barcode(report['tube_0']).aliquots.first.study).to eq study + end + + it 'returns the expected barcode in the report' do + uat_action.perform + expect(uat_action.report['tube_0']).to eq expected_report['tube_0'] + end + + it 'assigns the correct study to the tube' do + uat_action.perform + tube = Tube.find_by_barcode(expected_report['tube_0']) + expect(tube.aliquots.first.study).to eq study + end + + it 'sets the correct sample metadata values' do + uat_action.perform + tube = Tube.find_by_barcode(expected_report['tube_0']) + sample_metadata = tube.aliquots.first.sample.sample_metadata + expect(sample_metadata.supplier_name).to eq 'sample_NT6T_0' + expect(sample_metadata.collected_by).to eq UatActions::StaticRecords.collection_site + expect(sample_metadata.donor_id).to eq 'sample_NT6T_0_donor' + expect(sample_metadata.sample_common_name).to eq 'human' end end end @@ -74,3 +128,5 @@ expect(described_class.default).to be_a described_class end end + +# rubocop:enable RSpec/ExampleLength From 6bc801c5d4a1785627b161691f49dee6bcb532fd Mon Sep 17 00:00:00 2001 From: Andrew Sparkes Date: Tue, 9 Dec 2025 10:02:23 +0000 Subject: [PATCH 4/5] fixes after code review feedback --- spec/uat_actions/generate_tubes_spec.rb | 33 ++++++++++++++----------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/spec/uat_actions/generate_tubes_spec.rb b/spec/uat_actions/generate_tubes_spec.rb index 42f92b46af..9183eecc09 100644 --- a/spec/uat_actions/generate_tubes_spec.rb +++ b/spec/uat_actions/generate_tubes_spec.rb @@ -2,7 +2,6 @@ require 'rails_helper' -# rubocop:disable RSpec/ExampleLength describe UatActions::GenerateTubes do context 'with valid options' do let(:study) { create(:study, name: 'Test Study') } @@ -39,10 +38,12 @@ uat_action.perform tube = Tube.find_by_barcode(report['tube_0']) sample_metadata = tube.aliquots.first.sample.sample_metadata - expect(sample_metadata.supplier_name).to eq 'sample_NT2P_0' - expect(sample_metadata.collected_by).to eq UatActions::StaticRecords.collection_site - expect(sample_metadata.donor_id).to eq 'sample_NT2P_0_donor' - expect(sample_metadata.sample_common_name).to eq 'human' + expect(sample_metadata).to have_attributes( + supplier_name: 'sample_NT2P_0', + collected_by: UatActions::StaticRecords.collection_site, + donor_id: 'sample_NT2P_0_donor', + sample_common_name: 'human' + ) end end @@ -73,10 +74,12 @@ uat_action.perform uat_action.report.each_with_index do |(_key, barcode), i| sample_metadata = Tube.find_by_barcode(barcode).aliquots.first.sample.sample_metadata - expect(sample_metadata.supplier_name).to eq "sample_#{barcode}_#{i}" - expect(sample_metadata.collected_by).to eq UatActions::StaticRecords.collection_site - expect(sample_metadata.donor_id).to eq "sample_#{barcode}_#{i}_donor" - expect(sample_metadata.sample_common_name).to eq 'human' + expect(sample_metadata).to have_attributes( + supplier_name: "sample_#{barcode}_#{i}", + collected_by: UatActions::StaticRecords.collection_site, + donor_id: "sample_#{barcode}_#{i}_donor", + sample_common_name: 'human' + ) end end end @@ -116,10 +119,12 @@ uat_action.perform tube = Tube.find_by_barcode(expected_report['tube_0']) sample_metadata = tube.aliquots.first.sample.sample_metadata - expect(sample_metadata.supplier_name).to eq 'sample_NT6T_0' - expect(sample_metadata.collected_by).to eq UatActions::StaticRecords.collection_site - expect(sample_metadata.donor_id).to eq 'sample_NT6T_0_donor' - expect(sample_metadata.sample_common_name).to eq 'human' + expect(sample_metadata).to have_attributes( + supplier_name: 'sample_NT6T_0', + collected_by: UatActions::StaticRecords.collection_site, + donor_id: 'sample_NT6T_0_donor', + sample_common_name: 'human' + ) end end end @@ -128,5 +133,3 @@ expect(described_class.default).to be_a described_class end end - -# rubocop:enable RSpec/ExampleLength From 316e764e142c93f8a41a6e2c33e9d16809ce492e Mon Sep 17 00:00:00 2001 From: Andrew Sparkes Date: Mon, 15 Dec 2025 16:34:54 +0000 Subject: [PATCH 5/5] removed dot in purpose names --- .../014_limber_scrna_core_cdna_prep_request_types.yml | 2 +- .../tube_purposes/008_scrna_core_cdna_prep_tube_purposes.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/default_records/request_types/014_limber_scrna_core_cdna_prep_request_types.yml b/config/default_records/request_types/014_limber_scrna_core_cdna_prep_request_types.yml index 20436747fe..8cc4d0525e 100644 --- a/config/default_records/request_types/014_limber_scrna_core_cdna_prep_request_types.yml +++ b/config/default_records/request_types/014_limber_scrna_core_cdna_prep_request_types.yml @@ -16,7 +16,7 @@ limber_scrna_core_cdna_prep_gem_x_5p: - LRC Bank Seq - LRC Bank Spare - LRC Bank Input 1ml - - LRC Bank Input 0.8ml + - LRC Bank Input 08ml limber_scrna_core_cdna_prep_gem_x_5p_gems_input: name: scRNA Core cDNA Prep GEM-X 5p GEMs Input asset_type: Well diff --git a/config/default_records/tube_purposes/008_scrna_core_cdna_prep_tube_purposes.yml b/config/default_records/tube_purposes/008_scrna_core_cdna_prep_tube_purposes.yml index bb58ce2d08..a822c8e054 100644 --- a/config/default_records/tube_purposes/008_scrna_core_cdna_prep_tube_purposes.yml +++ b/config/default_records/tube_purposes/008_scrna_core_cdna_prep_tube_purposes.yml @@ -17,7 +17,7 @@ LRC Bank Input 1ml: target_type: SampleTube stock_plate: true -LRC Bank Input 0.8ml: +LRC Bank Input 08ml: type: Tube::Purpose target_type: SampleTube stock_plate: true