Pipeline Composition
Classify Batches Pipeline
Count and Label
A batch classifier can count values that cross a threshold and map the count to a label.
Program
Play the program to choose a threshold and see the batch label change.
classify_batches_pipeline.f90
Replay: real traced execution (multi-file project)
program classify_batches_pipeline_demo
implicit none
integer :: values(3)
integer :: threshold
integer :: high_count
integer :: i
character(len=6) :: label
values = [4, 8, 11]
threshold = 7
high_count = 0
do i = 1, 3
if (values(i) >= threshold) high_count = high_count + 1
end do
if (high_count >= 2) then
label = 'keep'
else
label = 'drop'
end if
print '(I0, 1X, A)', high_count, trim(label)
end program classify_batches_pipeline_demo
program classify_batches_pipeline_demo
implicit none
integer :: values(3)
integer :: threshold
integer :: high_count
integer :: i
character(len=6) :: label
values = [4, 8, 11]
threshold = 3
high_count = 0
do i = 1, 3
if (values(i) >= threshold) high_count = high_count + 1
end do
if (high_count >= 2) then
label = 'keep'
else
label = 'drop'
end if
print '(I0, 1X, A)', high_count, trim(label)
end program classify_batches_pipeline_demo
program classify_batches_pipeline_demo
implicit none
integer :: values(3)
integer :: threshold
integer :: high_count
integer :: i
character(len=6) :: label
values = [4, 8, 11]
threshold = 10
high_count = 0
do i = 1, 3
if (values(i) >= threshold) high_count = high_count + 1
end do
if (high_count >= 2) then
label = 'keep'
else
label = 'drop'
end if
print '(I0, 1X, A)', high_count, trim(label)
end program classify_batches_pipeline_demo
values ← [4, 8, 11]
9values = [4, 8, 11]10threshold = 7values this step[4, 8, 11]valuesthreshold ← 7
9values = [4, 8, 11]10threshold = 711high_count = 0values this step7thresholdhigh_count ← 0
10threshold = 711high_count = 012do i = 1, 3values this step0high_counti ← 1
11high_count = 012do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 1values this step1iif (values(i) >= threshold) high_count = high_count + 1
12do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 114end dovalues this step.false.values(1) >= thresholdi ← 2
11high_count = 012do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 1values this step2ihigh_count ← 1
12do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 114end dovalues this step1high_count.true.values(2) >= thresholdi ← 3
11high_count = 012do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 1values this step3ihigh_count ← 2
12do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 114end dovalues this step2high_count.true.values(3) >= thresholdif (high_count >= 2) then
14end do15if (high_count >= 2) then16 label = 'keep'values this step.true.high_count >= 2label ← keep
15if (high_count >= 2) then16 label = 'keep'17elsevalues this stepkeeplabelprint '(I0, 1X, A)', high_count, trim(label)
19 end if20 print '(I0, 1X, A)', high_count, trim(label)21end program classify_batches_pipeline_demooutput2 keepvalues this step2high_countkeeplabel
values ← [4, 8, 11]
9values = [4, 8, 11]10threshold = 3values this step[4, 8, 11]valuesthreshold ← 3
9values = [4, 8, 11]10threshold = 311high_count = 0values this step3thresholdhigh_count ← 0
10threshold = 311high_count = 012do i = 1, 3values this step0high_counti ← 1
11high_count = 012do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 1values this step1ihigh_count ← 1
12do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 114end dovalues this step1high_count.true.values(1) >= thresholdi ← 2
11high_count = 012do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 1values this step2ihigh_count ← 2
12do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 114end dovalues this step2high_count.true.values(2) >= thresholdi ← 3
11high_count = 012do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 1values this step3ihigh_count ← 3
12do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 114end dovalues this step3high_count.true.values(3) >= thresholdif (high_count >= 2) then
14end do15if (high_count >= 2) then16 label = 'keep'values this step.true.high_count >= 2label ← keep
15if (high_count >= 2) then16 label = 'keep'17elsevalues this stepkeeplabelprint '(I0, 1X, A)', high_count, trim(label)
19 end if20 print '(I0, 1X, A)', high_count, trim(label)21end program classify_batches_pipeline_demooutput3 keepvalues this step3high_countkeeplabel
values ← [4, 8, 11]
9values = [4, 8, 11]10threshold = 10values this step[4, 8, 11]valuesthreshold ← 10
9values = [4, 8, 11]10threshold = 1011high_count = 0values this step10thresholdhigh_count ← 0
10threshold = 1011high_count = 012do i = 1, 3values this step0high_counti ← 1
11high_count = 012do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 1values this step1iif (values(i) >= threshold) high_count = high_count + 1
12do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 114end dovalues this step.false.values(1) >= thresholdi ← 2
11high_count = 012do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 1values this step2iif (values(i) >= threshold) high_count = high_count + 1
12do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 114end dovalues this step.false.values(2) >= thresholdi ← 3
11high_count = 012do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 1values this step3ihigh_count ← 1
12do i = 1, 313 if (values(i) >= threshold) high_count = high_count + 114end dovalues this step1high_count.true.values(3) >= thresholdif (high_count >= 2) then
14end do15if (high_count >= 2) then16 label = 'keep'values this step.false.high_count >= 2label ← drop
17else18 label = 'drop'19end ifvalues this stepdroplabelprint '(I0, 1X, A)', high_count, trim(label)
19 end if20 print '(I0, 1X, A)', high_count, trim(label)21end program classify_batches_pipeline_demooutput1 dropvalues this step1high_countdroplabel
threshold
`values(i) >= threshold` decides whether a row is counted.
label
The final label is based on the accumulated count.
composition
The program separates counting from labeling.