Convert-Pheno
view release on metacpan or search on metacpan
lib/Convert/Pheno/Audit/Terminology.pm view on Meta::CPAN
);
my $summary_label_format = $workbook->add_format( bold => 1 );
my $score_format = $workbook->add_format( num_format => '0.0000' );
my %row_format = (
resolved => $workbook->add_format( bg_color => '#E2F0D9' ),
review => $workbook->add_format( bg_color => '#FFF2CC' ),
unresolved => $workbook->add_format( bg_color => '#FCE4D6' ),
not_searched => $workbook->add_format( bg_color => '#E7E6E6' ),
);
my %legend_format = (
resolved => $workbook->add_format(
bold => 1, color => 'white', bg_color => '#1B5E20', border => 1,
),
review => $workbook->add_format(
bold => 1, color => '#5F4300', bg_color => '#FFD966', border => 1,
),
unresolved => $workbook->add_format(
bold => 1, color => 'white', bg_color => '#8B0000', border => 1,
),
not_searched => $workbook->add_format(
lib/Convert/Pheno/Audit/Terminology.pm view on Meta::CPAN
}
$self->{format} = 'xlsx';
$self->{workbook} = $workbook;
$self->{summary_worksheet} = $summary;
$self->{audit_worksheet} = $audit;
$self->{header_format} = $header_format;
$self->{summary_label_format} = $summary_label_format;
$self->{score_format} = $score_format;
$self->{row_format} = \%row_format;
$self->{legend_format} = \%legend_format;
$self->{next_xlsx_row} = 1;
return 1;
}
sub _write_xlsx_row {
my ( $self, $row ) = @_;
die "XLSX terminology audits support at most "
. MAX_XLSX_DATA_ROWS
. " decisions; use .tsv.gz for larger runs\n"
if $self->{next_xlsx_row} > MAX_XLSX_DATA_ROWS;
lib/Convert/Pheno/Audit/Terminology.pm view on Meta::CPAN
);
my $value = $summary_rows[$index][1];
if ( defined $value && _is_number($value) ) {
$summary->write_number( $index + 1, 1, $value );
}
else {
$summary->write_string( $index + 1, 1, defined $value ? "$value" : q{} );
}
}
my $legend_row = @summary_rows + 3;
$summary->write_string( $legend_row, 0, 'Review colors', $self->{summary_label_format} );
my @legend = (
[ resolved => 'Exact, direct, or configured resolution' ],
[ review => 'Similarity or spelling result to review' ],
[ unresolved => 'No term emitted' ],
[ not_searched => 'Not searched or source fallback' ],
);
for my $index ( 0 .. $#legend ) {
my ( $category, $description ) = @{ $legend[$index] };
$summary->write_string(
$legend_row + $index + 1,
0,
$category,
$self->{legend_format}{$category},
);
$summary->write_string( $legend_row + $index + 1, 1, $description );
}
$summary->write_string(
$legend_row + @legend + 2,
0,
'Interpretation',
$self->{summary_label_format},
);
$summary->write_string(
$legend_row + @legend + 2,
1,
'Colors prioritize review; they do not measure clinical confidence.',
);
$summary->write_string(
$legend_row + @legend + 4,
0,
'Workbook view',
$self->{summary_label_format},
);
$summary->write_string(
$legend_row + @legend + 4,
1,
'Technical audit columns are present but hidden by default.',
);
my $audit = $self->{audit_worksheet};
$audit->autofilter( 0, 0, $self->{total_rows}, $#COLUMNS );
if ( $self->{total_rows} ) {
my $last_row = $self->{total_rows} + 1;
my $range = "A2:Z$last_row";
my @rules = (
( run in 0.827 second using v1.01-cache-2.11-cpan-1191d43216d )