Skip to content

Commit 5e5b510

Browse files
authored
Merge pull request #567 from srl147/sp_flowcell
staging monitor changes for SP flowcell
2 parents 1e06e9c + 17eb88a commit 5e5b510

File tree

9 files changed

+698
-23
lines changed

9 files changed

+698
-23
lines changed

Changes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
LIST OF CHANGES
22

3+
- staging monitor changes for SP flowcells
34
- Update URL for production Sequencescape LIMS
45
- method for creating a lane-level st::api::lims object from
56
any other st::api::lims object where the resulting object has

lib/Monitor/RunFolder/Staging.pm

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ Readonly::Scalar my $RTA_COMPLETE => 10 * $SECONDS_PER_MINUTE;
3131
Readonly::Scalar my $INTENSITIES_DIR_PATH => 'Data/Intensities';
3232
Readonly::Array my @NO_MOVE_NAMES => qw( npgdonotmove npg_do_not_move );
3333
Readonly::Scalar my $MODE_INDEX => 2;
34-
Readonly::Scalar my $EXP_CBCLS_PER_CYCL => 2;
3534

3635
Readonly::Scalar my $RTA_COMPLETE_FN => q[RTAComplete\.txt];
3736
Readonly::Scalar my $COPY_COMPLETE_FN => q[CopyComplete\.txt];
@@ -159,10 +158,11 @@ sub monitor_stats {
159158
sub check_tiles {
160159
my ($self) = @_;
161160

162-
my $expected_lanes = $self->lane_count();
163-
my $expected_cycles = $self->expected_cycle_count();
164-
my $expected_tiles = $self->lane_tilecount();
165-
my $path = $self->runfolder_path();
161+
my $expected_lanes = $self->lane_count();
162+
my $expected_surfaces = $self->surface_count();
163+
my $expected_cycles = $self->expected_cycle_count();
164+
my $expected_tiles = $self->lane_tilecount();
165+
my $path = $self->runfolder_path();
166166

167167
print {*STDERR} "\tChecking Lanes, Cycles, Tiles...\n" or carp $OS_ERROR;
168168

@@ -216,9 +216,10 @@ sub check_tiles {
216216
my @cbcl_files = glob "$cycle/*.$filetype" . q({,.gz});
217217
@cbcl_files = grep { m/ L \d+ _ \d+ [.] $filetype (?: [.] gz )? $ /msx } @cbcl_files;
218218
my $count = scalar @cbcl_files;
219-
if ( $count != $EXP_CBCLS_PER_CYCL ) {
219+
# there should be one cbcl file per expected surface
220+
if ( $count != $expected_surfaces ) {
220221
carp 'Missing cbcl(s) files: '
221-
. "$cycle - [expected: $EXP_CBCLS_PER_CYCL, found: $count]";
222+
. "$cycle - [expected: $expected_surfaces, found: $count]";
222223
return 0;
223224
}
224225
} else {

lib/npg_tracking/illumina/run/long_info.pm

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,22 @@ has q{lane_count} => (
120120
documentation => q{The number of lanes on this run},
121121
);
122122

123+
=head2 surface_count
124+
125+
Number of surfaces configured for this run. May be set on Construction.
126+
127+
my $iSurfaceCount = $self->surface_count();
128+
129+
=cut
130+
131+
has q{surface_count} => (
132+
is => 'ro',
133+
isa => 'Int',
134+
writer => '_set_surface_count',
135+
predicate => 'has_surface_count',
136+
documentation => q{The number of surfaces on this run},
137+
);
138+
123139
=head2 read_cycle_counts
124140
125141
List of cycle lengths configured for each read/index in order.
@@ -388,6 +404,7 @@ sub _build_run_flowcell {
388404

389405
foreach my $f ( qw(expected_cycle_count
390406
lane_count
407+
surface_count
391408
read_cycle_counts
392409
indexing_cycle_range
393410
read1_cycle_range
@@ -510,6 +527,20 @@ sub _build_workflow_type {
510527
return _get_single_element_text($self->_run_params(), 'WorkflowType');
511528
}
512529

530+
=head2 flowcell_mode
531+
532+
=cut
533+
534+
has q{flowcell_mode} => (
535+
isa => 'Str',
536+
is => 'ro',
537+
lazy_build => 1,
538+
);
539+
sub _build_flowcell_mode {
540+
my $self = shift;
541+
return _get_single_element_text($self->_run_params(), 'FlowCellMode');
542+
}
543+
513544
=head2 all_lanes_mergeable
514545
515546
Method returns true if all lanes on the flowcell contain the
@@ -697,6 +728,9 @@ sub _build__runinfo_store {
697728

698729
my $fcl_el = $doc->getElementsByTagName('FlowcellLayout')->[0];
699730
if(not defined $fcl_el) {
731+
if ( $self->platform_NovaSeq() ) {
732+
croak q{No FlowCellLayout for NovaSeq run};
733+
}
700734
$self->_set_lane_count($doc->getElementsByTagName('Lane')->size);
701735
$self->_set_expected_cycle_count($doc->getElementsByTagName('Cycles')->[0]->getAttribute('Incorporation'));
702736

@@ -725,7 +759,12 @@ sub _build__runinfo_store {
725759

726760
}else{
727761
$self->_set_lane_count($fcl_el->getAttribute('LaneCount'));
728-
my $ncol = $fcl_el->getAttribute('SurfaceCount') * $fcl_el->getAttribute('SwathCount');
762+
$self->_set_surface_count($fcl_el->getAttribute('SurfaceCount'));
763+
if ( $self->platform_NovaSeq() && $self->flowcell_mode() eq 'SP' ) {
764+
# NovaSeq SP flowcells only have one surface
765+
$self->_set_surface_count(1);
766+
}
767+
my $ncol = $self->surface_count() * $fcl_el->getAttribute('SwathCount');
729768
my $nrow = $fcl_el->getAttribute('TileCount'); #informatic split on HiSeq
730769
$self->_set_tilelayout_columns($ncol);
731770
$self->_set_tilelayout_rows($nrow);

t/34-monitor-runfolder.t

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,14 @@ my $dir4rf = tempdir( CLEANUP => 1 );
9999
</RunInfo>
100100
ENDXML
101101
close $fh;
102+
my $runparametersfile = qq[$fs_run_folder/runParameters.xml];
103+
open($fh, '>', $runparametersfile) or die "Could not open file '$runparametersfile' $!";
104+
print $fh <<"ENDXML";
105+
<?xml version="1.0"?>
106+
<RunParameters xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
107+
</RunParameters>
108+
ENDXML
109+
close $fh;
102110

103111
my $test = Monitor::RunFolder->new( runfolder_path => $fs_run_folder,
104112
npg_tracking_schema => $schema, );
@@ -135,6 +143,14 @@ ENDXML
135143
</RunInfo>
136144
ENDXML
137145
close $fh2;
146+
my $runparametersfile2= qq[$fs_run_folder2/runParameters.xml];
147+
open($fh2, '>', $runparametersfile2) or die "Could not open file '$runparametersfile2' $!";
148+
print $fh2 <<"ENDXML";
149+
<?xml version="1.0"?>
150+
<RunParameters xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
151+
</RunParameters>
152+
ENDXML
153+
close $fh2;
138154

139155
$test = Monitor::RunFolder->new( runfolder_path => $fs_run_folder2,
140156
npg_tracking_schema => $schema, );
@@ -166,6 +182,10 @@ q{<?xml version="1.0"?>
166182
</AlignToPhiX>
167183
</Run>
168184
</RunInfo>};
185+
my $run_parameters =
186+
q{<?xml version="1.0"?>
187+
<RunParameters xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
188+
</RunParameters>};
169189

170190

171191
my $root = tempdir( CLEANUP => 1 );
@@ -186,6 +206,11 @@ q{<?xml version="1.0"?>
186206
print $fh $run_info;
187207
close $fh;
188208

209+
# create runParameters file
210+
open my $fh2, '>', join(q[/], $rf, 'runParameters.xml');
211+
print $fh2 $run_parameters;
212+
close $fh2;
213+
189214
warnings_like { $test->delete_superfluous_lanes() } [
190215
qr/Deleted lane 3/, qr/Deleted lane 4/, qr/Deleted lane 5/,
191216
qr/Deleted lane 6/, qr/Deleted lane 7/, qr/Deleted lane 8/],

t/60-illumina-run-long_info.t

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use strict;
22
use warnings;
3-
use Test::More tests => 65;
3+
use Test::More tests => 59;
44
use Test::Exception;
55
use Test::Deep;
66
use File::Temp qw(tempdir);
@@ -385,20 +385,6 @@ $ENV{TEST_DIR} = 't/data/long_info';
385385
}
386386
}
387387

388-
lives_ok { $long_info = test::long_info->new({id_run => 5636}); } q{created role_test (HiSeq run 5636, RunInfo.xml) object ok};
389-
cmp_ok($long_info->tile_count, '==', 48, 'correct tile count');
390-
lives_ok { $long_info = test::long_info->new({id_run => 5636}); } q{created role_test (HiSeq run 5636, RunInfo.xml) object ok};
391-
cmp_ok($long_info->lane_count, '==', 8, 'correct lane count');
392-
lives_ok { $long_info = test::long_info->new({id_run => 5636}); } q{created role_test (HiSeq run 5636, RunInfo.xml) object ok};
393-
cmp_ok($long_info->cycle_count, '==', 202, 'correct cycle count');
394-
395-
my $tilelayout_columns;
396-
lives_ok {
397-
$long_info = test::long_info->new({id_run => 5636});
398-
$tilelayout_columns = $long_info->tilelayout_columns;
399-
} q{recreate object and call tilelayout_columns ok};
400-
cmp_ok($tilelayout_columns, '==', 6, 'correct tile columns');
401-
402388
$long_info=undef;
403389
lives_ok { $long_info = test::long_info->new({id_run => 19395}); } q{created role_test (HiSeq run 19395, RunInfo.xml) object ok};
404390
cmp_ok($long_info->lane_tilecount->{1}, '==', 64, 'correct lane 1 tile count');
@@ -448,4 +434,12 @@ note($long_info->runfolder_path);
448434
lives_ok { $long_info = test::long_info->new({runfolder_path=>$rfpath}); } q{create test role for dual index paired};
449435
lives_and { ok( $long_info->is_paired_read, 'is_paired_read ok');} 'is_paired_read lives and ok';
450436
}
437+
438+
#and a SP flowcell
439+
{
440+
my $long_info;
441+
my $rfpath = q(t/data/long_info/nfs/sf20/ILorHSany_sf20/incoming//200303_A00562_0352_AHKFVLDRXX);
442+
lives_ok { $long_info = test::long_info->new({runfolder_path=>$rfpath}); } q{create test role for SP flowcell};
443+
cmp_ok( $long_info->surface_count, '==', 1, 'surface_count');
444+
}
451445
1;

t/60-illumina-runfolder.t

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,14 @@ my $testrundir = catdir($testdir,q(090414_IL24_2726));
8989
</RunInfo>
9090
ENDXML
9191
close $fh;
92+
my $runparametersfile = qq[$testrundir/runParameters.xml];
93+
open($fh, '>', $runparametersfile) or die "Could not open file '$runparametersfile' $!";
94+
print $fh <<"ENDXML";
95+
<?xml version="1.0"?>
96+
<RunParameters xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
97+
</RunParameters>
98+
ENDXML
99+
close $fh;
92100

93101
my $lane_count;
94102
$rf = npg_tracking::illumina::runfolder->new(_folder_path_glob_pattern=>$testdir, name=> q(090414_IL24_2726), npg_tracking_schema => undef);
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
<?xml version="1.0"?>
2+
<RunParameters xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
3+
<Surface>Both</Surface>
4+
<ReadType>PairedEnd</ReadType>
5+
<Side>A</Side>
6+
<Read1NumberOfCycles>151</Read1NumberOfCycles>
7+
<Read2NumberOfCycles>151</Read2NumberOfCycles>
8+
<IndexRead1NumberOfCycles>8</IndexRead1NumberOfCycles>
9+
<IndexRead2NumberOfCycles>8</IndexRead2NumberOfCycles>
10+
<PlannedRead1Cycles>151</PlannedRead1Cycles>
11+
<PlannedRead2Cycles>151</PlannedRead2Cycles>
12+
<PlannedIndex1ReadCycles>8</PlannedIndex1ReadCycles>
13+
<PlannedIndex2ReadCycles>8</PlannedIndex2ReadCycles>
14+
<RunNumber>9</RunNumber>
15+
<RtaVersion>v3.3.3</RtaVersion>
16+
<RecipeVersion>1.3.1</RecipeVersion>
17+
<ExperimentName>LCMB_PCR_600pM_NV1A</ExperimentName>
18+
<RfidsInfo>
19+
<FlowCellSerialBarcode>H3W2VDSXX</FlowCellSerialBarcode>
20+
<FlowCellPartNumber>A</FlowCellPartNumber>
21+
<FlowCellLotNumber>20244404</FlowCellLotNumber>
22+
<FlowCellExpirationdate>02/26/2019 00:00:00</FlowCellExpirationdate>
23+
<FlowCellStartDate>01/01/0001 00:00:00</FlowCellStartDate>
24+
<FlowCellNumberOfReuseRemaining>1</FlowCellNumberOfReuseRemaining>
25+
<FlowCellSupportedModes>HTWashOnly;S4</FlowCellSupportedModes>
26+
<FlowCellMode>S4</FlowCellMode>
27+
<FlowCellRssi>2</FlowCellRssi>
28+
<LibraryTubeSerialBarcode>NV0026701-LIB</LibraryTubeSerialBarcode>
29+
<LibraryTubeSupportedModes>Universal</LibraryTubeSupportedModes>
30+
<LibraryTubePartNumber />
31+
<LibraryTubeLotNumber>171011</LibraryTubeLotNumber>
32+
<LibraryTubeExpirationdate>12/31/2169 00:00:00</LibraryTubeExpirationdate>
33+
<LibraryTubeStartDate>01/01/0001 00:00:00</LibraryTubeStartDate>
34+
<LibraryTubeRssi>4</LibraryTubeRssi>
35+
<SbsSerialBarcode>NV2111458-RGSBS</SbsSerialBarcode>
36+
<SbsSupportedModes>S4</SbsSupportedModes>
37+
<SbsPartNumber>C</SbsPartNumber>
38+
<SbsLotNumber>20241188</SbsLotNumber>
39+
<SbsExpirationdate>02/17/2019 00:00:00</SbsExpirationdate>
40+
<SbsStartDate>01/01/0001 00:00:00</SbsStartDate>
41+
<SbsCycleKit>330</SbsCycleKit>
42+
<SbsNumberOfCyclesRemaining>330</SbsNumberOfCyclesRemaining>
43+
<SbsNumberOfCyclesSupported>330</SbsNumberOfCyclesSupported>
44+
<SbsRssi>3</SbsRssi>
45+
<ClusterSerialBarcode>NV2119172-RGCPE</ClusterSerialBarcode>
46+
<ClusterSupportedModes>S4</ClusterSupportedModes>
47+
<ClusterPartNumber>C</ClusterPartNumber>
48+
<ClusterLotNumber>20244865</ClusterLotNumber>
49+
<ClusterExpirationdate>03/07/2019 00:00:00</ClusterExpirationdate>
50+
<ClusterStartDate>01/01/0001 00:00:00</ClusterStartDate>
51+
<ClusterCycleKit>330</ClusterCycleKit>
52+
<ClusterNumberOfCyclesRemaining>330</ClusterNumberOfCyclesRemaining>
53+
<ClusterRssi>4</ClusterRssi>
54+
<BufferSerialBarcode>NV2110874-BUFFR</BufferSerialBarcode>
55+
<BufferSupportedModes>S4</BufferSupportedModes>
56+
<BufferPartNumber>1</BufferPartNumber>
57+
<BufferLotNumber>20239139</BufferLotNumber>
58+
<BufferExpirationdate>02/14/2019 00:00:00</BufferExpirationdate>
59+
<BufferNumberOfCyclesRemaining>330</BufferNumberOfCyclesRemaining>
60+
<BufferStartDate>01/01/0001 00:00:00</BufferStartDate>
61+
<BufferRssi>3</BufferRssi>
62+
</RfidsInfo>
63+
<RecipeFilePath>C:\Illumina\NovaSeq Control Software\Recipe</RecipeFilePath>
64+
<SamplesheetFile />
65+
<UsedLimsSetup>false</UsedLimsSetup>
66+
<CeLinuxRunFolder>/ilmn/outputfolder/180426_A00508_0009_AH3W2VDSXX/</CeLinuxRunFolder>
67+
<RtaRawRunFolder>/ilmn/outputfolder</RtaRawRunFolder>
68+
<CeMountRunFolder>Z:\outputfolder\180426_A00508_0009_AH3W2VDSXX\</CeMountRunFolder>
69+
<OutputRunFolder>\\nv1-esa.dnapipelines.sanger.ac.uk\staging\IL_seq_data\incoming\180426_A00508_0009_AH3W2VDSXX\</OutputRunFolder>
70+
<SbcRunFolder>C:\Illumina\NovaSeqTemp\180426_A00508_0009_AH3W2VDSXX\</SbcRunFolder>
71+
<PreRunFolder>C:\Illumina\NovaSeqTemp\PreRunLogs\A00508_2018-04-26__15_36_11_SideA</PreRunFolder>
72+
<RunStartDate>180426</RunStartDate>
73+
<RunId>180426_A00508_0009_AH3W2VDSXX</RunId>
74+
<UseBaseSpace>false</UseBaseSpace>
75+
<UseBaseSpaceMonitoringAndStorage>false</UseBaseSpaceMonitoringAndStorage>
76+
<Autocenter>true</Autocenter>
77+
<BiDirectionalScanning>true</BiDirectionalScanning>
78+
<UseCustomRecipe>false</UseCustomRecipe>
79+
<UseCustomRead1Primer>false</UseCustomRead1Primer>
80+
<UseCustomRead2Primer>false</UseCustomRead2Primer>
81+
<UseCustomIndexRead1Primer>true</UseCustomIndexRead1Primer>
82+
<IsRehyb>false</IsRehyb>
83+
<InstrumentName>A00508</InstrumentName>
84+
<PlatformType>HighThroughput</PlatformType>
85+
<Application>NovaSeq Control Software</Application>
86+
<ApplicationVersion>1.3.1</ApplicationVersion>
87+
<Build>12</Build>
88+
<FirmwareVersions>
89+
<FirmwareVersion>
90+
<Board>Fluidics Board</Board>
91+
<Version>novaseq_flu@NovaSeq_1.17.10</Version>
92+
</FirmwareVersion>
93+
<FirmwareVersion>
94+
<Board>Left Buffer Interface Board</Board>
95+
<Version>novaseq_bim@NovaSeq_1.17.10</Version>
96+
</FirmwareVersion>
97+
<FirmwareVersion>
98+
<Board>Right Buffer Interface Board</Board>
99+
<Version>novaseq_bim@NovaSeq_1.17.10</Version>
100+
</FirmwareVersion>
101+
<FirmwareVersion>
102+
<Board>Chassis Module Board</Board>
103+
<Version>novaseq_chm@NovaSeq_1.17.10</Version>
104+
</FirmwareVersion>
105+
<FirmwareVersion>
106+
<Board>Camera Interface Board</Board>
107+
<Version>novaseq_cib_2@NovaSeq_1.17.10</Version>
108+
</FirmwareVersion>
109+
<FirmwareVersion>
110+
<Board>Focus Interface Board</Board>
111+
<Version>novaseq_fib_2@NovaSeq_1.17.10</Version>
112+
</FirmwareVersion>
113+
<FirmwareVersion>
114+
<Board>Flow Cell Holder Board</Board>
115+
<Version>novaseq_fch_2@NovaSeq_1.17.10</Version>
116+
</FirmwareVersion>
117+
<FirmwareVersion>
118+
<Board>Left Reagent Chiller Board</Board>
119+
<Version>novaseq_rca@NovaSeq_1.17.10</Version>
120+
</FirmwareVersion>
121+
<FirmwareVersion>
122+
<Board>Right Reagent Chiller Board</Board>
123+
<Version>novaseq_rca@NovaSeq_1.17.10</Version>
124+
</FirmwareVersion>
125+
<FirmwareVersion>
126+
<Board>System Thermal Board</Board>
127+
<Version>novaseq_syst@NovaSeq_1.17.10</Version>
128+
</FirmwareVersion>
129+
</FirmwareVersions>
130+
<SendIlluminaHealthData>false</SendIlluminaHealthData>
131+
<UcsRunId>1489895A67645F50</UcsRunId>
132+
<UcsVersion>1.4.2.927</UcsVersion>
133+
<WorkflowType>NovaSeqStandard</WorkflowType>
134+
</RunParameters>

0 commit comments

Comments
 (0)