Sexual Cycles

CYCGAPS (Gaps in Female Cycle Observations)

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.[54] 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, and PREGS 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. A female may not have a single day observation (point, Code P) between a start of observation/end of observation pair of rows. The single day observation is redundant. An end of observation may be dated the day after a start of observation, but otherwise there must be at least a 1 day interval between a female's CYCGAPS rows. Otherwise the same pattern of observation could be recorded using fewer rows.

Caution

The aforementioned rules do not allow the introduction or removal of a new period of observation, a start of observation/end of observation pair of CYCGAPS rows, anywhere other than before a female's earliest CYCGAPS row or after her latest CYCGAPS row.[55] In order to get around this restriction the user requests specific violations of the rules and the system then introduces or removes start of observation/end of observation pairs in response.

To introduce a period of observation into the period of no observation that occurs between an end/start sequence, insert a point (Code P) observation and then an end (Code E) observation on successive days. The system will transform the point observation to a start observation, resulting in a start/end pair delineating a 2 day observational period. The dates of the new start/end may then be updated as needed to increase the number of days in the interval.

To introduce a period of no observation into the period of observation that occurs between a start/end sequence, insert a start of observation row (Code S). The system will insert an additional end of observation row the day before next, resulting in a 1 day period of no observation on the date preceding the row the user inserted. The dates of the new end/start may then be adjusted to increase the interval of no observation.

To remove a period of no observation update a start of observation row (Code S), assigning it the same date as the end of observation row that marks the beginning the interval to be removed. The system will remove both the start and the end of observation rows, eliminating the interval of no observation.

To reduce a period of observation to a single day update a start of observation row (Code S), assigning it the same date as the end of observation row that marks the other end of the interval to be reduced. The system will remove both the start and the end of observation rows, and replace it with a point (Code P) observation. Delete the new point observation to remove the period of observation entirely.

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.

Only females may have related 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.

Caution

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.

Gapid

A number that uniquely identifies each row.

Sname

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.

Code

What kind of endpoint the date records. Legal values are:

The CYCGAPS.Code Values
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

Date

The date upon which observations began or ended. Observations were made on the given date.

Note

The date is not validated against any of the individual's life dates[56] to facilitate establishment of common dates for all females in a group. It does no harm, for instance, to stop observing a dead individual.

State (NULL allowed)

The state of the female's sexual cycle on the given date. Valid values are:

The CYCGAPS.State Values
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.

CYCLES (Female Sexual Cycles)

This table records information on the sexual cycle of the females, one row per female per cycle. 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, Ddate, Tdate series in CYCPOINTS, and automatically destroys the CYCLES row when the Mdate/Tdate/Ddate aggregation is removed from CYCPOINTS. However, the rules Babase uses when automatically creating, destroying, or updating CYCLES are complicated by menarche, death, and gaps in observation.

Caution

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.

Tip

CYCLES rows should always have related CYCPOINTS rows[57], 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.[58] 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 be missing one or more of the transition events, should there be no record of an observation. In this 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.[59][60][61]

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.

Tip

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.

Caution

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.[62]

The system reports an error when the combination of Sname and Seq is not unique.[63]

Cid (sexual Cycle IDentifier)

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.

Sname

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.

Seq (Sequence)

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.

Caution

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.

Series

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 one 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.

CYCPOINTS (Female Sexual Cycle Events)

This table records information on the sexual cycle of the females, one row per female per event. 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[64].

The unusual events that impact female cycling records, notably death and the cessation or initiation of long term observation, are recorded in other tables.

Note

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: T, D,

Caution

CYCPOINTS is special in that some of its data are automatically maintained by the system. The columns 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. 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.[65] In consequence the combination of Cid and Code must be unique.[66]

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.

Warning

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 individuals date-of-record (Date) and late (Ldate) sexual cycle transition date values must be on or after the individuals 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.

Caution

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.

Warning

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 later rows before earlier rows, as 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.[67]

Caution

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.

Note

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.

Cpid (sexual Cycle data Points IDentifier)

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.

Cid (sexual Cycle IDentifier)

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.[68]

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.[69] 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.

Tip

When sexual cycle transition dates are incorrectly aggregated into sexual cycles, i.e. when the Cid is wrong, it is because the record of when the female was under observation -- the data on the CYCGAPS table -- is incorrect. Correcting CYCGAPS will correct the problem.

Caution

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.

Date

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.

Edate (Early Date)

Earliest possible date of the transition event. This column may be NULL when there is no need to record a range of date values.

Ldate (Ldate Date)

Latest possible date of the transition event. This column may be NULL when there is no need to record a range of date values.

Source

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.

Code

The type of sexual cycle transition:

The CYCPOINTS.Code Values
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.

PCSKINS (ParaCallosal Skin observations)

This table records information on the females' paracallosal skins. It contains one row for every recorded observation of each female's paracallosal skin.

Tip

The PCSKINS_SORTED view may be useful when maintaining the table, depending upon the front-end tool used for maintenance.

Tip

Use the sexual cycle day-by-day tables to determine the female's sexual state on the days of the paracallosal observations.

The combination of Sname and Date must be unique.

Pasty (Pcskins IDentifier)

A unique integer which identifies the PCSKINS row.

This column is automatically maintained by the database, cannot be changed, and must not be NULL.

Sname

The Sname of the observed female. This column may not be NULL.

Date

The date of the observation. This date must be after the individuals Birth date. When the individual is dead the date must not be after the individual's Statdate. This column may not be NULL.

Color (ParaCallosal Skin color)

A Color code from the PCSCOLORS table -- the observed paracallosal skin color. This column must not be NULL.

PREGS (Pregnancies)

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[70], 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.[71] 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

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.

Caution

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[72] 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[73] -- 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.[74] 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.

Warning

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.[75]

Tip

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).

Pid

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.

Note

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.[76][77]

Warning

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.[78]

Parity

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[79] 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.

Conceive

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.

Tip

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.

Resume (NULL allowed)

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.

SEXSKINS (Sexskin Turgesence Measurements)

This table records information on the females' sexskins. 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.

Caution

Because sexskin measurements must be related to a female's sexual cycle -- a CYCLES row --, which is how sexskin measurements are related to a specific female, a female's Mdate, Tdate, and Ddate sexual cycle events -- her CYCPOINTS rows --, must be updated before sexskin information may be entered.

Tip

Use the CYCLES_SEXSKINS view to maintain this table.

Note

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 deturgesence. The Ddate of a cycle must be after the last measurement before the largest measurement of the cycle.[80] 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. The system will generate an error if there is no Mdate in the sexual cycle to which the SEXSKINS row is assigned, unless the sexual cycle's Tdate falls on the individual's MATUREDATES.Matured date and the maturity date is an ON date[81], or the cycle is is the first after a pregnancy (The Cid is a PREGS.Resume value), or the cycle's Tdate is the first CYCPOINTS row after a (CYCGAPS) gap. In the latter case the system will generate a warning. The sexskin measurement before the Mdate cannot be larger than 0. 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.

Sexskin turgesence 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.

The combination of Sname, from the associated CYCLES row, and Date must be unique.

The combination of Date and Cid must be unique.

Sxid (Sexskins IDentifier)

A unique integer which identifies the SEXSKINS row.

This column is automatically maintained by the database, cannot be changed, and must not be NULL.

Cid (Cycle IDentifier)

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.

Date

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.

Size

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 must not be NULL



[54] 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.

[55] Or the reverse, as written they also do not allow the introduction or removal of a period of no observation, an end of observation/start of observation pair of CYCGAPS rows anywhere other than before a female's first or after her last CYCGAPS row.

[56] Birth or Statdate or any other date

[57] The CYCPOINTS.Cid column relates the CYCPOINTS row to the cycle of which it is a part.

[58] It is expected that these rows will exist only until related CYCPOINTS rows are entered.

[59] See Appendix C for an example.

[60] This rule minimizes the degree to which CYCPOINTS move between cycles, minimizes the degree to which their Cids change.

[61] 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.

[62] 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.

[63] This is checked rather than enforced by index or trigger because the condition must exist temporarily as the triggers update the Seq.

[64] See the PREGS.Conceive documentation above.

[65] 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.

[66] 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.

[67] It is expected that such rows will exist only until PREGS.Conceive is updated with a reference to them.

[68] 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.

[70] 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.

[71] This implies that each Resume value differs from all the others.

[72] Zdate really.

[73] This condition also ensures that a female will not have more than one ongoing pregnancy, as pregnancies require a conception cycle.

[74] It is expected that such Tdates will exist only long enough to update a pregnancy's Resume value.

[75] 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.

[76] The MATERNITIES view does exactly this. It can be used whenever there is a need for these tables to be joined in this way.

[77] 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.

[78] See? We told you that keys should not contain meaningful information.

[79] 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.

[80] This criteria is carefully phrased to account for gaps in the recorded data during the time period in which deturgesence probably began.

[81] When an individual matures, at menarche, there is no Mdate in the first sexual cycle.


Page generated: 2021-09-17T11:16:29-04:00.