## gallery.Absence


Why an array is missing, from a closed vocabulary.


Usage

``` python
gallery.Absence(
    reason,
    detail="",
)
```


A bare `None` cannot distinguish "this entry has no density" from "this run did not compute one", and the board must: the first is a permanent N/A that belongs on every board forever, the second is a gap. So `None` never stands alone - [CohortForecast](gallery.CohortForecast.md#ibnr.gallery.CohortForecast) refuses an absent array with no [Absence](gallery.Absence.md#ibnr.gallery.Absence) and refuses a present array that has one.

The vocabulary is closed so the N/A column is a census that can be counted across runs, rather than free text that can only be read.


## Parameter Attributes


`reason: str`  

`detail: str = ``""`  


## Methods

| Name | Description |
|----|----|
| [check_axis()](#check_axis) | Refuse a reason that names the other capability. |

------------------------------------------------------------------------


#### check_axis()


Refuse a reason that names the other capability.


Usage

``` python
check_axis(axis)
```


`no_predictive_density` on the draws axis would print "has no normalized predictive density" beside an empty CRPS cell, which reads as "cannot draw" and is false for every ODP and bootstrap entry in the gallery. The two axes are independent, so their vocabularies have to be.
