Records of the initiation and cessation of continuous periods of observation during which all of a female's cycling events are presumed, for the purpose of analysis, to have been observed. This table contains one row for each female for each initiation or cessation of a continuous period of observation.
A female is considered to be under continuous observation when all of her sexual cycle transition events -- Mdates, Tdates, and Ddates -- are observed or clearly implied by observational data.[57] When CYCGAPS contains a record of observation cessation this is an indication that some of a female's sexual cycle events have gone unrecorded. For this reason when the interval enclosed by a Mdate, Tdate, Ddate sequence contains CYCGAPS rows indicating interruption of observation, the sexual cycle transition dates to either side of the interruption must be in different sexual cycles. For further information on this and other ways CYCGAPS interacts with the rest of Babase, see the documentation on the CYCLES, CYCPOINTS, PREGS, and SEXSKINS tables.
The presumption is that females are under continuous
observation -- females with no CYCGAPS are presumed to be
under continuous observation. Consequently a female's
earliest CYCGAPS Code must be
E
(End), denoting the end of a
period of observation.
A female may not have two “start of
observation” (Code S
)
without an intervening “end of observation” (Code
E
), or vice versa. Otherwise
there would be starts without ends or ends without starts.
Single day observation rows ("points", Code
P
) may only occur between an
end of observation/start of observation pair of rows. There
must be a 1-day interval between a female's CYCGAPS rows, with
the single exception that an end of observation may be dated
the day after a start of observation. Otherwise the same
pattern of observation could be recorded using fewer
rows.
Rows with a Code value of
S
(Start) or
P
(single Point), that mark the
beginning of observational periods or that represent isolated
single days of observation, must have a value in the State
column. All other rows, those with a code of
E
(End) that represent the end of
an observational period, must have no value (NULL
) in the
State column. When a State value is present, it must
correspond to the sexual cycle transition information on CYCPOINTS. For further information regarding
required correspondences between CYCGAPS and CYCPOINTS, and how changes in CYCPOINTS can automatically change CYCGAPS with a
Code of S
, see the
CYCPOINTS documentation below.
To simplify updates to this table, all of the above conditions are validated on transaction commit.
Any changes to the Date or
Code — including
UPDATE
and all INSERT
and DELETE
commands — cause
cascading updates to the CYCGAPDAYS table
upon transaction commit. However, the
validation for several other tables — especially CYCPOINTS — depends on the accuracy of
CYCGAPDAYS. As a result, transactions
involving simultaneous updates to both CYCGAPS and CYCPOINTS may result in spurious data, because
validation on the latter may not be reliable. Therefore,
when making changes for a given individual to both CYCGAPS
and CYCPOINTS, don't do them in the same
transaction. Specifically, CYCGAPS inserts, updates, or
deletes should be performed in a transaction where no other
tables are affected[58][59].
Only females may have CYCGAPS rows.
This table is used in the construction of the sexual cycle day-by-day tables. It also affects the determination of which sexual cycle events (CYCPOINTS) are part of a single sexual cycle (CYCLES), the construction of automatic Mdates, and the validation of sexual cycles with respect to pregnancies.
The State value is ignored in all a female's CYCGAPS rows with Dates on or before the female's Matured, excepting the row with the latest date, as the sexual cycle day-by-day tables contain no rows before the date of sexual maturity.
The combination of Sname and Date is unique.
All rows must be while the individual is alive. That is, the Date must be on or after the individual's Birth and on or before her Statdate.
The short name of the female. This column should
contain the Sname of a female
in BIOGRAPH. This column may not be
NULL
.
To simplify the database code, this value may not be changed.
What kind of endpoint the date records. Legal values are:
Code | Mnemonic | Definition |
---|---|---|
S
|
Start | the date is the start of a period of observation |
E
|
End | the date is the end of a period of observation |
P
|
Point | the date is an isolated observation that belongs with no other observations, it is both a start and an end of an observational period |
The state of the female's sexual cycle on the given date. Valid values are:
Code | Mnemonic | Definition |
---|---|---|
M
|
menses | follicular -- Mdate (inclusive) to Tdate (exclusive) |
S
|
swelling | follicular -- Tdate (inclusive) to 5 days prior to Ddate (exclusive) |
O
|
ovulating | 5 days prior to Ddate (inclusive) to Ddate (exclusive) |
D
|
deturgesence | luteal -- Ddate (inclusive) to Mdate (exclusive) |
P
|
pregnant | Ddate (exclusive) to birth (exclusive) |
L
|
lactating | birth (inclusive) to Tdate (exclusive) |
Must not be NULL
when Code is
S
or
P
, must be NULL
when code
is E
. See discussion in the
table description above.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
This table records information on the sexual cycle of the females, one row per female per cycle.
The user may find it easiest to understand the function of this table by considering the CYCPOINTS_CYCLES view, which joins the CYCLES and CYCPOINTS tables.
Rows in this table depend upon rows in CYCPOINTS: Babase automatically manages the creation and destruction of CYCLES on the basis of the the sexual cycle transition events recorded in CYCPOINTS. The fundamental sexual cycle is a Mdate, Tdate, Ddate sequence. The Babase system automatically creates one row in CYCLES for every Mdate, Tdate, Ddate series in CYCPOINTS. Similarly, if an Mdate, Tdate, Ddate series is removed from CYCPOINTS, the corresponding row is removed from CYCLES. However, the rules Babase uses when automatically creating, destroying, or updating CYCLES are complicated by menarche, death, and gaps in observation.
In some cases there are turgescences of small size and short duration that typically occur during a pregnancy, prior to maturity, after a span of time spent in postpartum amenorrhea, or during a time of stress. These brief turgescent periods are not recorded as cycles because they were deemed too brief or small to be biologically functional.
If it ever becomes desirable to know when these brief turgescences occurred, this information should be recoverable from the SEXSKINS table, where the actual size of a female's turgescence is recorded.
CYCLES is special in that some of its data are automatically maintained by the system. The columns Seq and Series are updated automatically. For further information see the documentation that follows, and each column's documentation.
CYCLES rows should always have related CYCPOINTS rows[60], but as a practical matter it is necessary to create the CYCLES row before creating the related CYCPOINTS rows. This requires noting the Cid of the new cycles row so that it can be referenced in the new CYCPOINTS rows. Rather than do this by hand the CYCPOINTS_CYCLES view can be used. This allows a Sname to be specified with each new CYCPOINTS row and leaves it up to the system to either find or create an appropriate CYCLES row.
The system will report as an error those rows on CYCLES
with no related CYCPOINTS rows[61]. CYCLES with no related CYCPOINTS must have a NULL
Seq.
The aggregation of CYCPOINTS rows into cycles is automatically managed by Babase. The determination is based on the order in time of a female's CYCPOINTS rows and the information on gaps in observation present in CYCGAPS. The transition events recorded in CYCPOINTS are collected into sexual cycles, each cycle having (at most) an onset of menses date (Mdate), an onset of turgesence date (Tdate), and an onset of deturgesence date (Ddate), appearing in the order given here when ordered by date, and with none of the female's other Mdate, Tdate, or Ddate CYCPOINTS rows on the interval. Some sexual cycles may lack one or more of the transition events. This may occur for biological reasons — there must not be a resumption of menses date (Mdate) in an individual's first adolescent cycle, nor in the firct cycle after a pregnancy — or simply because there are no data available to identify the date(s). In the latter case, CYCGAPS should be updated with a record of the gap in observation and the respective row is omitted from CYCPOINTS.
Part of Babase's automatic management of cycles is the
management of cycle sequence numbers. Babase assigns a
sequence number (Seq) to each of a
female's cycles, beginning with 1
at
menarche and counting up.
As a consequence of the numbering scheme, the sexual cycle
with a sequence (Seq) of
1
must not have an onset of menses date
(Mdate).
Gaps in periods of continuous observation (CYCGAPS) impact Babase's determination of what constitutes a cycle. The presence of a gap in observation forces a change in cycle. (However, gaps in observation, missing cycles, do not cause gaps in the sequence numbering.) The introduction or removal of a gap, or for that matter the addition or removal of new CYCPOINTS rows, can result in the split of an existing cycle into two -- the creation of a new CYCLES row --, or the merging of two previously distinct cycles into one -- the destruction of an existing CYCLES row. When this occurs the later CYCPOINTS rows retain their Cid, it is the earlier CYCPOINTS rows that change their Cid and “move” between cycles.[62][63][64]
The sexual cycles themselves are aggregated
into periods of continuous observation, termed series,
indicated by the assignment of a Series number to each CYCLES row. The aggregation of a female's sexual
cycles into a series is also automatically managed by Babase,
based on the information in CYCGAPS.
Although series are computed based on CYCGAPS, the series value aggregates and numbers
sexual Mdates, Tdates, and Ddates, not periods of observation.
A consequence is that some periods of observation may not have
an associated Series number. Some
observational periods may occur before the female's sexual
maturity date or before any recorded sexual cycle transition
events (CYCPOINTS). An individual's first
period of continuous observation containing Mdates,
Tdates, or Ddates has a Series of 1
, the second
a Series of 2
,
etc.
Aggregating a female's CYCLES rows into a series indicates that the collection of data points is believed to be complete, no unobserved or unrecorded sexual cycle transitions (CYCPOINTS rows) occurred during the time spanned by the series. This allows the Series to be used as the basis for an analysis of sexual cycle transition intervals.
Those CYCLES with a Series of 1
for
those females that have an O
(On)
Mstatus have Seq values that
equal the ordinal numbering of the female's actual cycles,
her first ever cycle having a Seq of 1
,
her second a Seq of 2
, etc. All other
CYCLES rows have Seq values that are useful for ordering
each female's cycles but not for comparison between
females.
Because a gap in observation always triggers a change in cycle, and because cycles must be “complete”, i.e. must contain a Mdate, a Tdate, and a Ddate, if there is no gap in observation it is impossible to have a single cycle missing nothing but a Tdate, i.e. it is impossible to have a cycle with a Mdate and a Ddate but no Tdate. If necessary, an estimated Tdate may be entered to work around this limitation.[65]
The system reports an error when the combination of Sname and Seq is not unique.[66]
A numeric identifier identifying each sexual cycle. It is unique across all cycles of all females.
This column need not be manually specified when the row is created.
The value of this column may not be altered after a row is created.
This column must not be NULL
.
The short name of the female. This column must contain the Sname of a female in BIOGRAPH.
The value of this column may not be altered after a row is created.
This column must not be NULL
.
The first sexual cycle of a female has a Seq value
of 1
, the second a value of
2
, etc.
The system will report an error if the Seq does not begin
with 1
or is not contiguous. This
column does not need to be manually maintained.
There are no gaps in the sequence numbers assigned to a female. Even when records of cycles are missing, the first recorded cycle after the missing period has a sequence one greater than the last recorded cycle before the missing period.
If the user does specify a value for this column the system may recompute and replace the supplied value at any time.
This column may be NULL
when the row is first
inserted, so that the system can set the value correctly
when CYCPOINTS are subsequently
inserted, but it may not be changed from a non-NULL
value to NULL
.
Number indicating with which series of continuous observation the
transition event belongs. Events that are isolated
observations have a series of their own. As with Seq, the
Series are per-female. Each female begins with a Series
of 1
and is incremented with
each interruption in regular observation. For further
information see the description of the CYCLES table
above.
The system will report an error if the Series does
not begin with 1
or if the Series does
not progress in a contiguous fashion. This column does
not need to be manually maintained.
If the user does specify a value for this column the system may recompute and replace the supplied value at any time.
This column may be NULL
when the row is first
inserted, so that the system can set the value correctly
when CYCPOINTS are subsequently
inserted, but it may not be changed from a non-NULL
value to NULL
.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
This table records information on the sexual cycle of the females, one row per female per event.
The user may find it easiest to understand the function of this table by considering the CYCPOINTS_CYCLES view, which joins the CYCLES and CYCPOINTS tables.
The usual events that mark the transitions of a female
baboon's sexual cycles are onset of menses (Mdate), onset of
turgesence (Tdate), and onset of deturgesence (Ddate). These
different transition event dates are distinguished by Code values of
M
,
T
, and
D
respectively. In
addition to these usual observations of transition states,
CYCPOINTS contains
one other
kind of row,
estimations of when unobserved sexual cycle transitions
occurred; notably the automatically calculated onset of menses
dates but also unobserved onset of deturgesenceses (Ddates)
related to pregnancy conception events[67].
The unusual events that impact female cycling records, notably death and the cessation or initiation of long term observation, are recorded in other tables.
The interval between conception and birth (or fetal death) is the length the pregnancy, by definition, and CYCPOINTS is only place in Babase where conceptions are recorded. For this reason CYCPOINTS includes rows for the Ddate events that begin every pregnancy, including those that record estimated, unobserved, Ddates. It may be that all that is known about a cycle is that a Ddate must have occurred because a pregnancy resulted.
Although Babase requires pregnancies to have a
conception Ddate, and consequently there may be pregnancies
for which an estimated (Source of
E
) Ddate must be entered,
there is nothing preventing the user from creating estimated
CYCPOINTS rows for the other Codes.
CYCPOINTS is special in that some of its data are automatically maintained by the system. The Cid and Source columns can be updated by automatic processes. For further information see the documentation of the CYCLES table and each column's documentation.
The presence of a Ddate row can trigger the automatic generation of a Mdate 13 days later. For further information see the section on Automatic Mdate Generation.
Only Mdates are automatically assigned, and only Mdates
may have a Source of A
(Automatic).
Mdates may be manually given a Source of
A
, although this may well not be a
good idea as the Automatic Mdate Generation
process may remove the A
row at any
point. It is even less of a good idea because automatic
Mdates are not validated, so it is quite
simple to enter an invalid automatic Mdate.
During a period of continuous observation — a series — sexual cycle transition events (CYCPOINTS) should not be missing, except that Mdates cannot be assigned in the case of the first adolescent cycle (at maturity) or at the start of a Resume cycle. An individual's Mdates, Tdates and Ddates should all appear in Mdate-Tdate-Ddate order. The system will report an error if this is not the case.[68] In consequence the combination of Cid and Code must be unique.[69]
Usually a female does not have multiple CYCPOINTS rows for a given date, although there is an exception. A female's onset of menses date (Mdate) may be the same as her onset of turgesence (Tdate) date. Otherwise, none of a female's CYCPOINTS rows may share a date.
Babase allows each sexual cycle transition event to be
associated with 3 dates, the date of record (Date), the
earliest possible date (Edate),
and the latest possible date (Ldate). The earliest (Edate) and latest
(Ldate) possible dates may be NULL
. The earliest possible
date (Edate) may not be later than the date of record (Date),
and the latest possible date (Ldate) may not earlier than the
date of record (Date). A female's earliest Tdate may, and
likely will, have an earliest possible date (Edate) assigned
that is before onset of menarche.
A number of constraints on CYCPOINTS involve the
females' sexual maturity dates (MATUREDATES.Matured). When an individual's sexual
maturity date is determined by observation, MATUREDATES.Mstatus
is O
(On), her earliest Tdate must be
equal to her sexual maturity date.
When a female's MATUREDATES.Mstatus is
O
(On) her MATUREDATES.Matured is automatically set to her
earliest Tdate. Any error in the Tdate value will be
reflected in the maturity date. This is not true of females
with MATUREDATES.Mstatuses that are not
O
. These maturity dates must be
manually maintained.
No date-of-records may occur before a female's maturation date. All of an individual's date-of-record (Date) and late (Ldate) sexual cycle transition date values must be on or after the individual's onset of menarche date (MATUREDATES.Matured). All of an individual's early dates (Edate), Bdates of record (Date), and the first Tdate date-of-record (Date), sexual cycle transition dates must be after the individual's Birth date.
Females with CYCPOINTS rows must have a sexual maturity date. The system will report mature females with no CYCPOINTS rows on or after her maturity date (MATUREDATES.Matured).
All early date (Edate) and date-of-record (Date) values must be on or before the individual's Statdate.
Even when an individual is dead, late (Ldate) dates may be after the Statdate. This is because death is rarely observed; although the Statdate contains a single date, the uncertainty surrounding the date of death is reflected in the sexual cycle event Ldate.
There are gaps in observation. If the first cycling
event in a series -- the first Mdate, Tdate, or Ddate -- falls
on the day observation resumes then things are pretty simple.
The state of sexual cycling at the time observation resumes,
CYCGAPS.State,
must correspond with the event. For a menses CYCGAPS.State is
M
and so forth. The situation
is slightly complicated by the swelling-follicular and
ovulating states. The details are this: If the first
CYCPOINTS row in the series falls on the first day of the
series, the CYCGAPS.State must be
M
(Menses, follicular) when
the CYCPOINTS.Code is M
(onset of
Menses); CYCGAPS.State must be
D
(Deturgesence) when
the CYCPOINTS.Code is D
(onset of Deturgesence); CYCGAPS.State must be
S
(Swelling, follicular)
when the CYCPOINTS.Code is T
(onset of Turgesence) and the subsequent Ddate in the series
is more than 5 days after the Tdate or there
is no subsequent Ddate; and CYCGAPS.State must be
O
(Ovulating) when the
CYCPOINTS.Code is T
(onset of
Turgesence) and the subsequent Ddate in the series is not more
than 5 days after the Tdate.
If the above is not the case, i.e. the first cycling
event in the series falls on the day observation resumes and
CYCPOINTS.Code
is M
but the CYCGAPS.State is not,
then the State of the CYCGAPS row is automatically changed to enforce
correspondence between CYCGAPS and
CYCPOINTS.
But what if observation starts and then later the first Mdate, Tdate, or Ddate is observed? What happens (to CYCSTATS) between the start of observation and the first event? That's what CYCGAPS.State is supposed to address and it needs to be set appropriately. This cannot always be done automatically either, although usually it can.
If the first CYCPOINTS row in the series does
not fall on the first day of the series,
the CYCGAPS.State
must be D
(Deturgesence)
when the first CYCPOINTS.Code is
M
(onset of Menses); the CYCGAPS.State must be
S
(Swelling, follicular)
when the CYCPOINTS.Code is
D
(onset of Deturgesence)
and the CYCPOINTS.Date is more than 5 days
after the CYCGAPS.Date; and the CYCGAPS.State must be
O
(Ovulating) when the
CYCPOINTS.Code is D
(onset
of Deturgesence) and the CYCPOINTS.Date is not more than
5 days after the CYCGAPS.Date.
In these cases, as before, the State of the CYCGAPS row is automatically changed to enforce correspondence between CYCGAPS and CYCPOINTS.
The final set of possibilities have to do with Tdates,
which are complicated because they occur at menarche and after
pregnancies, as well as after menses. The system will report
an error if the first CYCPOINTS row in a series does not fall
on the first day of the series and the first CYCPOINTS row is
a Tdate and the CYCGAPS.State is something other than
M
(Menses),
P
(Pregnant), or
L
(Lactating). Because
there are 3 possibilities in this case, the CYCGAPS.State value is
not automatically assigned.
All of the validation and possible updating of the CYCGAPS.State is performed on transaction commit.
Because deleting CYCPOINTS changes a female's cycling state -- a representation of which Babase keeps in the sexual cycle day-by-day tables -- but not the interval of time during which she was under observation (CYCGAPS), removing Mdates, Tdates, or Ddates from CYCPOINTS at the beginning of a series can, possibly, leave the beginning of the series either in an incorrect state or the correct state for an overly long period of time. This can be equally true when the dates of the first CYCPOINTS in a series are changed. Removing all the CYCPOINTS Mdate, Tdate, and Ddate rows from a series will leave the entire observational period in the State specified by the CYCGAPS row that denotes the start of the observational period. This may or may not be correct, especially when the CYCGAPS.State was automatically changed due to the insertion or deletion of CYCPOINTS rows.
When deleting all sexual cycle transition CYCPOINTS rows from an observational period it is best to delete them all in a single transaction, or to delete later rows before earlier rows. Deleting CYCPOINTS rows from the beginning of the observational period changes the CYCGAPS.State value marking the start of the observational period.
CYCPOINTS rows must not fall in an
interval of no observation, excepting estimated (Source is
E
) Ddates (Code
D
) that are also conception
events. (See PREGS.Conceive.) None of the different kinds of
date values -- early (Edate), date-of-record (Date), or late
(Ldate) -- of the individual's CYCPOINTS rows may be in an
interval during which the individual is not under observation
--
may fall on a date on which the individual has a row in CYCGAPDAYS.
The system will allow but report as an error CYCPOINTS rows
with a Source of E
and a Code
of D
that are not
referenced in PREGS.Conceive.[70]
CYCPOINTS and CYCLES are intimately related. Be sure to read and understand the CYCLES documentation.
Once a row is created it must remain associated with the same female -- any re-assignment of Cid must retain the association between the CYCPOINTS row and the old Cid's female.
There are plans afoot to automatically fill in the early and late dates. The early dates would include the day after the immediately prior census date, the late date would be the day of the immediately following census date. There must also be a mechanism for manually overriding the automatic dates.
When making changes to data for individuals with observation gaps, avoid updating this table in a transaction that also makes changes to CYCGAPS. See above for more information.
A numeric identifier unique to each row. This is
used to reference the sexual cycle transition elsewhere in
the database. This column may not be NULL
.
This column need not be manually assigned when the row is created. It may not be changed.
A numeric identifier identifying each sexual cycle. It is unique across all cycles of all females, but shared by all CYCPOINTS rows comprising a cycle -- a Mdate, Tdate, Ddate sequence -- of a female.[71]
This column need not be manually specified when the row is created using the CYCPOINTS_CYCLES view. If it is not specified, the system will determine with which cycle the row should be associated and assign the correct Cid. Should the system find that the sexual cycle transition date belongs in a new cycle, it will make and assign a new Cid.[72] If the column is specified the system does the same work, but when it is appropriate to create a new cycle the supplied value is used.
As the system does the same amount of work whether or not the user specifies a value, the only utility in specifying a value is to manually assign a specific Cid to a new sexual cycle which Babase would otherwise automatically create.
When sexual cycle transition dates are incorrectly aggregated into sexual cycles, i.e. when the Cid is wrong, it is probably because the record of when the female was under observation — the data on the CYCGAPS table — is incorrect. Correcting CYCGAPS may correct the problem.
The system automatically assigns, or re-assigns, Cid values as CYCPOINTS and, especially, CYCGAPS rows are inserted, deleted, and altered to keep the database in a state consistent with the definition of a sexual cycle. For this reason any particular Cid is not guaranteed to forever identify a particular Sname/Date/Code. Cpids may be used for this purpose, or the data itself. For further information see the CYCLES documentation.
Supplying a NULL
value causes the system to
recompute the correct value and use it in place of the
NULL
.
The date-of-record of the transition event. See the
Protocol for Data
Management: Amboseli Baboon Project for information regarding the determination
of this date from the field data. This column may not be
NULL
.
Earliest possible date of the transition event. This
column may be NULL
when there is no need to record a
range of date values.
Latest possible date of the transition event. This
column may be NULL
when there is no need to record a
range of date values.
Code indicating from whence the data were
derived. D
(Data -- the
default) for observed data. A
(Auto) for automatically inserted rows (see Automatic Mdate Generation). E
(Estimated) for estimated values not to be used in other
computations, such as estimated
D
dates entered to
relate mothers and pregnancies.
This column may not be changed after the row is created.
The type of sexual cycle transition:
Code | Description |
---|---|
M
|
onset of Menses, a sexual cycle transition event |
T
|
onset of Turgesence, a sexual cycle transition event |
D
|
onset of Deturgesence, a sexual cycle transition event |
This column may not be changed.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
This table contains one row for each recorded pregnancy. A pregnancy is defined to be an event occurring to a mother; a single pregnancy could result in more than one fetus. The only time there will not be a related BIOGRAPH row for the zygote(s) is when the pregnancy is still in progress[73], otherwise there will always be a BIOGRAPH row that records the progeny of the pregnancy.
The progeny may not be born before being conceived -- the conception date (Ddate via Conceive) of the pregnancy must not be later than the birth date value (Birth) of the associated BIOGRAPH row, the child. The mother may not resume cycling until after birth -- the birth date value of the associated BIOGRAPH row must not be later than the resumption of cycling date values (Resume).
The sequence of a female's pregnancies when ordered by parity must correspond with the sequence when ordered by conception date.
The sequence number (CYCLES.Seq obtained via CYCPOINTS.Cid) of the sexual cycle event immediately following pregnancy (Resume) must always be exactly one more than the sequence number of the sexual cycle event associated with conception (Conceive). Only one pregnancy is allowed per conception event -- each Conceive value differs from all the others. These rules ensure that the resumption date follows the conception date and that there is no overlap of pregnancy time periods, from conception date to birth date or, if known, resumption of sexual cycling date, among the pregnancies associated with a particular female.[74] The female associated with the conception sexual cycle event (Conceive) must be the same as the female associated with the sexual cycle event immediately following pregnancy (Resume).
There must not be a resumption of menses date (Mdate) in the sexual cycle (CYCPOINTS.Cid) of the Resume cycle.
The pregnancy must terminate in a birth or fetal loss
before the female resumes cycling; the only exception is
cessation of observation as described below. The Resume
column must be NULL
until there is a row in BIOGRAPH with a Pid
referring to the pregnancy.
Note that the check for pregnancy termination, as well as the parity sequence checks, are not performed until the database transaction is committed. This allows a pregnancy discovered after subsequent pregnancies are already on-record to be added to the database by making multiple changes within a single database transaction. Inserting the new PREGS row, inserting a BIOGRAPH row for the progeny, and then updating the PREGS.Resume of the new pregnancy within a single transaction allows the referential integrity rules to be satisfied when the transaction commits.
Babase keeps a record of the reproductive state of mature females in the sexual cycle day-by-day tables. If these tables are to be correct Babase must know when each pregnancy ends (see BIOGRAPH.Birth), and when cycling resumes. When there is no record of the end of a pregnancy or resumption of cycling Babase must know whether this is due to cessation of observation or just cessation of data entry.
Babase cannot detect when the user has failed to enter rows in CYCGAPS when observation of a pregnant female has ceased. However, it will report errors and unusual conditions it can detect.
The system will report a warning: when an ongoing pregnancy exceeds 191 days -- when there are more than 191 days between the conception date (PREGS.Conceive) and the Statdate, and there are no progeny recorded for the pregnancy (in BIOGRAPH.Birth), and when there are no gaps in observation (see CYCGAPS) during the 191 day interval; when it appears that a conception date should be estimated but it is not -- when there is no Tdate in the conception cycle but the conception Ddate[75] is not estimated, and there is no gap in observation between the conception date and all of the female's prior CYCPOINTS rows.
The system will report an error: when a female has
sexual cycles while a pregnancy is ongoing[76] -- when the female has Tdate CYCPOINTS rows that post-date her pregnancy's
Conceive date but pre-date gaps in observation, and the
pregnancy has no (NULL
) Resume.[77] A female must not have any CYCPOINTS rows that postdate a pregnancy with a
NULL
Resume, unless the first CYCPOINTS
row is a Tdate or unless they postdate a gap in observation
following the pregnancy.
The Resume column is automatically updated by
Babase. so long as there is no gap in observation (See CYCGAPS) between the conception date and the
Tdate that resumes cycling. It is set to the Tdate
immediately following the conception date. The system will
report an error if there is a gap in the observation of
sexual cycle events (CYCPOINTS and the
Resume column is not NULL
.[78]
The temporary creation of a gap in observation (CYCGAPS) allows a conception-birth-resumption sequence to be inserted into a pre-existing series of sexual cycle events (CYCPOINTS).
The contents of this column uniquely identifies the pregnancy record. The Pid must be the mother's Sname followed by the probable parity. Because the Pid is only used to identify the record, it is not necessary to change the Pid just because the parity of the pregnancy is found to have changed. Once a unique Pid is established, it may not be changed. When retrieving data from this table the safe approach is to assume nothing about the contents of this column except that it will uniquely identify a pregnancy.
The preferred way to obtain the bearer of the pregnancy is to find the female associated with the ovulation by joining PREGS.Conceive with CYCPOINTS.Cpid to find CYCPOINTS.Cid, join that with CYCLES.Cid to find CYCLES.Sname, and then use that value to find the mother's BIOGRAPH row.[79][80]
The Parity column must always be used to obtain a meaningful parity value. As Pids cannot change, should a pregnancy be missed and correction only entered into Babase after the entry of a subsequent pregnancy, the female's subsequent Pid will forever contain an incorrect parity.[81]
The cardinality of the
pregnancy. 1
for a female's first
pregnancy, 2
for a female's second
pregnancy, and so forth. There must not be
“gaps” in the pregnancies, sequenced by
Parity, of any female. When the first pregnancy is known,
the Parity sequence begins with 1
. When
the first pregnancy is not known, the Parity sequence
begins with
101
.
The parity of a female's first pregnancy must be specified. This tells the system whether the parity sequence begins with 1 or 101. The system will automatically generate the parity of subsequent pregnancies, when the user does not supply a parity. When the user does specify a parity the system compares the supplied value with the value it computes for the column and and raises an error if the two do not match. As a special exception the parity is allowed to be in the 100s rather than the 1s, although the parity must remain sequential and without gaps when only the 10s and 1's place of the female's pregnancy parities are considered. E.g. the parity sequence may be either 1, 2, 3 or 1, 2, 103 but not 1, 2, 104. The 1 in the 100ths place signals that there has been a period of no observation[82] and a pregnancy may have been missed. When a pregnancy's parity is changed from the 1's (or 10's) to the 100s Babase will update the parity of subsequent pregnancies so that they are also in the 100s. Babase will only allow a change from the 100s to the 1s (or 10s) of the smallest of a female's pregnancy parities that are larger than 100 -- the first pregnancy after a period of no observation. In this case Babase will not change the parity of subsequent pregnancies; this must be done manually, from smallest to largest. Babase will not allow a change from the 100s to the 1s (or 10s) of a female's pregnancy parities that are larger than the smallest parity larger than 100.
Supplying a NULL
value for the Parity causes the
system to recompute the correct value, a value one larger
than the parity of the previous pregnancy, and use it in
place of the NULL
.
The information related to the Ddate event that initiated the pregnancy. This is the Cpid of a CYCPOINTS row of the mother. The related CYCPOINTS row should record the date of conception and must record a Ddate.
This column must contain a unique datum.
When the date of conception is estimated because there is no sexual cycle data, the conception date recorded should be 178 days before the recorded birthday.
This column must not be NULL
.
The resumption of cycling event (Tdate) of the first
cycle following the pregnancy. This is the Cpid of a row in CYCPOINTS, which must record a Tdate. This
column may be NULL
in those cases when resumption of
cycle information is not known. When this column is not
NULL
, it should contain a unique datum.
This column may be automatically updated. (See the description of the PREGS table above.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
This table records textual notes made by field observers about a female's reproductive status. It contains one row for every date on which such a note was recorded, per female.
Most of the data related to a female's reproduction is recorded systematically by observers and stored in the other tables in this section. In addition to those data, observers occasionally record miscellaneous notes or comments related to a female's reproductive state. Those notes are recorded in this table.
This table only records notes about female reproduction; the Sname must be female in BIOGRAPH.
All notes made about a female on a single day are recorded in a single row; every Sname-Date pair must be unique.
Reproductive notes can only be recorded while the female is alive and under observation; the Date must be between the female's Entrydate and Statdate, inclusive.
It is rare but possible for a note to be recorded before a female reaches sexual maturity. The system will return a warning for rows that are before a female's Matured date, or for rows with females who do not appear in MATUREDATES at all.
Usually, if an observer took the time to write a note about a female, then they also will have recorded the size and/or color of her paracollosal skin. The system will return a warning if a female does not have a row in SEXSKINS whose Date matches the note's Date.
The SEXSKINS_REPRO_NOTES view is useful for simultaneous uploading of data to this table and to SEXSKINS.
A unique identifier for the note. This is an automatically generated sequential number that uniquely identifies the row.
This column is automatically maintained by the
database, cannot be changed, and must not be
NULL
.
The text of the note.
This column may not be NULL
. This column may not be empty, it must contain characters,
and it must contain at least one non-whitespace character.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
This table records information on the females' sexskins, including size and/or color. It contains one row for every recorded observation of each female's sexskin.
Babase requires sexskin measurements be associated with sexual cycles (CYCLES) in accordance with the rules described in the Sexual Cycle Determination section.
Because sexskin measurements must be related to a female's sexual cycle (a CYCLES row), her Mdate, Tdate, and Ddate sexual cycle events (her CYCPOINTS rows) must be updated before sexskin information may be entered.
Use the CYCLES_SEXSKINS, SEXSKINS_CYCLES, or SEXSKINS_REPRO_NOTES views to maintain this table.
The checks that compare all the sexskins of a particular cycle raise their errors immediately when the error is a result of changes made directly to the SEXSKINS table. But, should an error condition be created as a result of automatic shifting of sexskins between cycles due to changes to the sexual cycle dates (See CYCPOINTS) the errors are not immediately reported.
Tdates normally occur at some point during the
transition from sexskin Size 0
to Size
1
, but can
occur during the transition from sexskin Size
0
to Size
5
. Measurements
larger than 5 cannot come on or before
the Tdate of the cycle. The system will generate a warning
when there is sexskin measurement larger than
1
before the
Tdate. The Tdate of a cycle must be after the dates of all
the cycle's sexskin measurements of zero that precede the
earliest 1 or greater measurement occurring in the
cycle.
A Ddate occurs when the sexskin begins to deturgesce. The Ddate of a cycle must be after the last measurement before the largest measurement of the cycle.[83] The system will report a warning when Ddates occur after sexskin turgesence has begun to subside -- Ddates after the first measurement following the largest sexskin measurement(s) of the cycle.
Sexskin turgesence normally begins after menses, so
sexskin measurements (the Size)
before the related cycle's Mdate cannot be larger than
0
. When the Size is greater than
0
and there is no
Mdate in the sexual cycle to which the SEXSKINS row is
assigned, the system will generate an error unless the sexual
cycle's Tdate falls on the individual's MATUREDATES.Matured
date and the maturity date is an “ON”
date[84], or the cycle is the first after a pregnancy (the
Cid is a PREGS.Resume value), or the cycle's first CYCPOINTS row after a (CYCGAPS)
gap is 30 or fewer days after
that gap's end date. In the latter case the system will
generate a warning. The sexskin
measurement on the Mdate cannot be larger than
1
, unless the Mdate is
also a Tdate in which case the measurement cannot be larger
than 5
. The system will
generate a warning when the sexskin measurement on the Mdate
is larger than
0
.
In constrast with the Size column, the Color column has no rules governing which values are allowed during different stages of a cycle.
Sexskin rows associated with one cycle must not be contemporaneous with Mdates, Tdates, Ddates, or sexskin turgesence observations related to a different cycle. All of the SEXSKINS Date values associated with a particular cycle must be later than the Mdate, Tdate, and Ddate of the previous cycle and earlier than the Mdate, Tdate, and Ddate of the succeeding cycle. There must not be any overlap of the cycles' sexskin measurement dates, over the time period from a cycle's earliest sexskin measurement date to its latest, between the sexskin measurement dates of a female's different cycles.
Sexskin observations cannot occur during gaps in observation. That is, each row's Date cannot be during any of the individual's gap periods in CYCGAPS. However, there is an exception: sexskin observations are allowed on the date of "point" observations in CYCGAPS.
The combination of Sname, from the associated CYCLES row, and Date must be unique.
The combination of Date and Cid must be unique.
Usually the observer records both the size and the color
on a date, but occasionally they might only one record one and
not the other. Because of this, the system allows either of
the Size and Color columns to be NULL
, but will also
return a warning in this case. It is an error if both of
those columns are NULL
.
A unique integer which identifies the SEXSKINS row.
This column is automatically maintained by the
database, cannot be changed, and must not be
NULL
.
The CYCLES identifier associated with the sexskin measurement. This is a Cid from the CYCPOINTS table. This column can be used to retrieve the Sname of the female that was measured as well as all other data collected on the cycle.
This column is automatically assigned by the system. Although some (arbitrary) cycle must be associated with the SEXSKINS row upon insert in order to relate the row to a female, the system always uses the Sexual Cycle Determination rules to re-assign the row to the appropriate cycle.
This column may not be NULL
.
The date of the observation. This date must be after
the individuals Birth date.
The date must not be after the individual's Statdate. This column may not be
NULL
.
This column contains a number indicating the size of
the sexskin in a metric with units that are integers, with
the exception that 0.5
value
is allowed, ranging from 0
through 20
, inclusive.
This column may be NULL
, but only when the Color is not NULL
.
A PCSCOLORS.Color code indicating the observed paracallosal skin color.
This column may be NULL
, but only when the Size is not NULL
.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
[57] Therefore during periods of continuous observation no sexual cycle transition events can go unrecorded. See the CYCPOINTS documentation below for the constraints this places on CYCPOINTS within a series.
[58] Yes, updates to CYCPOINTS can result in automatic changes to the CYCGAPS.State, meaning that updates to both tables are occurring in a single transaction. This is okay, because updates to State do not result in changes to CYCGAPDAYS.
[59] Admittedly, validation on CYCPOINTS and other tables could be rewritten to eschew CYCGAPDAYS and use CYCGAPS instead. However, that would result in a major performance dip, so let's not do it unless we have to.
[62] See Appendix C for an example.
[63] This rule minimizes the degree to which CYCPOINTS move between cycles, minimizes the degree to which their Cids change.
[64] It may not be worth documenting this, as there are certainly cases where it is not clear which rows are “earlier”. One such case is changing the date of a Ddate to a later date, that fall after subsequent cycles. If there is concern about the permanence of Cids then it may be best to simply delete CYCPOINTS rows and re-insert them rather than modify existing rows. This at least gives the greatest degree of control over the Cid values.
[65] Quite a bit of Babase's logic relies on there being a continuous series of Mdate, Tdate, Ddate sequences unless there are gaps in observation. It is for this reason that cycles must be “complete”.
[66] This is checked rather than enforced by index or trigger because the condition must exist temporarily as the triggers update the Seq.
[68] The system allows the condition to occur to provide an opportunity to insert a new Mdate, Ddate, Tdate aggregate -- a new cycle -- into the middle of a period of observation. One of these dates must be inserted first, breaking, for the moment, the pattern of cycling -- the repetition of the Mdate, Ddate, Tdate sequence.
[69] This is enforced in triggers rather than by index as the triggers use this condition as a test for whether a new CYCLES row must be created.
[70] It is expected that such rows will exist only until PREGS.Conceive is updated with a reference to them.
[71] Note that cycles may be “cut off”, for a variety of reasons; some cycles may only contain a single CYCPOINTS row, that is, the Cid value may be unique to a single CYCPOINTS row.
[73] Or was in progress when observation ceased, which Babase treats the same as pregnancies in progress at the time data entry ceased. When “now is” is an important consideration in the determination of what in progress means. The cessation of data entry (e.g. BIOGRAPH.Statdate), for whatever reason, is the closest Babase comes to the concept of “now”.
[74] This implies that each Resume value differs from all the others.
[75] Zdate really.
[76] This condition also ensures that a female will not have more than one ongoing pregnancy, as pregnancies require a conception cycle.
[77] It is expected that such Tdates will exist only long enough to update a pregnancy's Resume value.
[78] There should only be CYCGAPS rows when a sexual cycle event may have been missed, but clearly when there is a CYCPOINTS.Resume value then no sexual cycle was missed.
[79] The MATERNITIES view does exactly this. It can be used whenever there is a need for these tables to be joined in this way.
[80] Why is this round-about-the-barn way preferred? Because curmudgeonly old database designers like to insist that keys contain no meaningful information, that's why.
[81] See? We told you that keys should not contain meaningful information.
[82] This indication of a period of no observation is not validated against the CYCGAPS table, that serves as a record of periods of no observation which are long enough that a sexual cycle transition event (Mdate, Tdate, or Ddate) may be missed. Babase does not have records of periods of no observation that are long enough to miss pregnancies. Although it would seem that CYCGAPS could be used for this purpose, and indeed CYCGAPS does “black out” REPSTATS, validating parity against CYCGAPS has not been thought through and awaits a future Babase enhancement.
Regardless, Babase does not presently automatically place a parity in the 100's -- the decision to switch between the 100s and the 1s (or 10s) must be made manually.
[83] This criteria is carefully phrased to account for gaps in the recorded data during the time period in which deturgesence probably began.
[84] When an individual matures, at menarche, there is no Mdate in the first sexual cycle.