Format a metrics string for a comparison result. Args: image: The image being tested. reference: The reference result to compare against. result: The test result. Return: The metrics report.
(image: TestImage, reference: Record,
result: Record)
| 149 | |
| 150 | |
| 151 | def format_compare_result(image: TestImage, reference: Record, |
| 152 | result: Record) -> str: |
| 153 | ''' |
| 154 | Format a metrics string for a comparison result. |
| 155 | |
| 156 | Args: |
| 157 | image: The image being tested. |
| 158 | reference: The reference result to compare against. |
| 159 | result: The test result. |
| 160 | |
| 161 | Return: |
| 162 | The metrics report. |
| 163 | ''' |
| 164 | psnr_diff = result.psnr - reference.psnr |
| 165 | |
| 166 | try: |
| 167 | total_time_rel = reference.total_time / result.total_time |
| 168 | except ZeroDivisionError: |
| 169 | total_time_rel = float('NaN') |
| 170 | |
| 171 | try: |
| 172 | coding_time_rel = reference.coding_time / result.coding_time |
| 173 | except ZeroDivisionError: |
| 174 | coding_time_rel = float('NaN') |
| 175 | |
| 176 | name = f'{result.block_size:>5} {result.name}' |
| 177 | psnr = f'{result.psnr:2.3f} dB ({psnr_diff:1.3f} dB)' |
| 178 | total_time = f'{result.total_time:.3f} s ({total_time_rel:1.2f}x)' |
| 179 | coding_time = f'{result.coding_time:.3f} s ({coding_time_rel:1.2f}x)' |
| 180 | coding_rate = f'{result.coding_rate:.3f} MT/s' |
| 181 | result_status = determine_result(image, reference, result) |
| 182 | |
| 183 | fields = ( |
| 184 | f'{name:<32}', |
| 185 | f'{psnr:>22}', |
| 186 | f'{total_time:>15}', |
| 187 | f'{coding_time:>15}', |
| 188 | f'{coding_rate:>11}', |
| 189 | f'{coding_rate:>11}', |
| 190 | result_status.name |
| 191 | ) |
| 192 | |
| 193 | return ' | '.join(fields) |
| 194 | |
| 195 | |
| 196 | def run_test_image(encoder: te.EncoderBase, reference: Optional[ResultSet], |
no test coverage detected