[Babase] CYCSTATS warnings, and related design issue

Karl O. Pinc kop at meme.com
Fri Feb 22 11:15:17 EST 2008


Hi,

This is probably a topic for today's conference call.

I note that there are a number of rows on REPSTATS
that show an individual cycling but there's
no corresponding row on CYCSTATS.  (This is a
Babase warning condition but the warnings are
not automatically run.)

The problem appears to be as documented in the
CYSTATS docs.  There are no CYCPOINTS rows
for intervals during which the individuals are
being observed.  Often these are _very_ old
dates and I think the problem is that CYCGAPS
has the individuals under observation when
there really was no sexual cycle information
being recorded in the field.

There are also some like UNE, a female who matured
on 1998-04-09 and (supposedly) was observed until
2003-09-24 but who has no sexual cycle information.

The design question is whether we want this behavior.
The MMINTERVALS and MDINTERVALS _have_ rows when there's
no sexual cycle information.  (This is contrary
to what the documentation currently says; it says
that there should be no MMINTERVALS or MDINTERVALS
row unless there's a CYCSTATS row.)  I could
change the CYCSTATS definition and require rows
exist whenever REPSTATS says the individual is cycling.
That would mean allowing CYCSTATS.State to be NULL
for when there's no sexual cycle events upon which
to base the CYCSTATS row.  Or I could change
Babase so when it makes MMINTERNVALS and MDINTERVALS
it only makes rows when there's CYCSTATS rows.

I think this last is what we want.

If I do the latter a related issue comes up.  There
are some times when there's CYCSTATS rows, if
an individual goes straight from one pregnancy to
another without ever having a menses, where the
MMINTERVALS rows have nothing but a date.  (There's
no Mdates to "count" between.)  Should these rows exist?
(They do now, and I'm thinking yes, but I figured
as long as we're visiting MMINTERVALS it's worth
bringing up.)

The following individuals exhibit this condition:

  select distinct repstats.sname from repstats where state = 'C' and  
not exists (select 1 from cycstats where cycstats.sname =  
repstats.sname and cycstats.date = repstats.date);
  sname
-------
  DEB
  DEE
  JAL
  JOP
  JOS
  JUH
  KUP
  MAL
  MAS
  MAV
  NEW
  NOR
  PIN
  RAV
  RES
  ROV
  RUP
  SIT
  TAH
  ULA
  UNE
(21 rows)



Karl <kop at meme.com>
Free Software:  "You don't pay back, you pay forward."
                  -- Robert A. Heinlein



More information about the Babase mailing list