[Babase] Sexual cycle observation periods having no observed cycle
events
Karl O. Pinc
kop at meme.com
Sat Feb 23 16:32:29 EST 2008
Hi,
It looks like there are a few periods of time when there is supposed
to be observation of sexual cycle events but there are no sexual
cycle events observed. For these time periods CYCSTATS (but not
MMINTERVALS or MDINTERVALS) has rows, but these rows contain
little in the way of information.
Probably, something needs to be done to the data. But that's not
the issue in which I'm interested.
I want to know if the cycstats building process is 'wrong' and
needs fixing, or if that will just be sweeping data problems under
the rug.
My inclination is to leave the programs alone. Trying to write
programs that "do the right thing" when the data is bad
is ultimately futile, and makes it more difficult to
discover and diagnose problems.
Let me know. The fix should be a matter of a few minutes if that's
what we want to do.
Note that the problem is, I think, due to some 1 day long periods
of observation that interrupt longer periods of no observation.
Another possibility to consider is to put validation rules
on CYCSTATS that prohibit this sort of data (NULL for all of
dins, dr, cpids, and cpide). I'm not sure I like this, for
2 reasons. The first is that the data is all generated, and
(maybe) we should be able to prevent the generation of bad
data. (I can always have the data generation program
die and spit out an error message.) The second is that
I've not thought through all the
implications, there may be times when we want (or need)
to have this sort of "empty" data. (Obviously, we don't
really _want_ it, but there could be times when it's
either unavoidable or the lesser evil.)
FYI, I found these by looking at the result of:
select * from cycstats where not exists (select 1 from mmintervals
where mmintervals.sname = cycstats.sname and mmintervals.date =
cycstats.date);
The results happen to correspond with the problems revealed
by the following query:
babase=> select * from cycstats where dins is null and dr is null and
cpids is null and cpide is null order by sname, date;
csid | date | sname | state | dins | dr | cpids | cpide
--------+------------+-------+-------+------+----+-------+-------
271379 | 1991-07-24 | HUR | D | | | |
341226 | 1980-04-13 | NEE | S | | | |
428268 | 1980-05-31 | WIL | S | | | |
(3 rows)
(Note that the 'HUR' state is just plain wrong. The individual
is pregnant on that day, not deturgesent.)
babase=> select * from cycstats, cycgaps where dins is null and dr is
null and cpids is null and cpide is null and cycstats.sname =
cycgaps.sname and cycstats.date = cycgaps.date order by cycstats.sname,
cycstats.date;
csid | date | sname | state | dins | dr | cpids | cpide |
gapid | sname | code | date | state
--------+------------+-------+-------+------+----+-------+-------+-------+-------+------+------------+-------
271379 | 1991-07-24 | HUR | D | | | | |
143 | HUR | P | 1991-07-24 | D
341226 | 1980-04-13 | NEE | S | | | | |
325 | NEE | P | 1980-04-13 | S
428268 | 1980-05-31 | WIL | S | | | | |
354 | WIL | P | 1980-05-31 | S
(3 rows)
babase=> select * from cycstats, cycpoints_cycles where dins is null
and dr is null and cpids is null and cpide is null and cycstats.sname =
cycpoints_cycles.sname and cycpoints_cycles.date = cycstats.date order
by cycstats.sname, cycstats.date;
csid | date | sname | state | dins | dr | cpids | cpide | cid | sname
| seq | series | cpid | date | edate | ldate | code | source
------+------+-------+-------+------+----+-------+-------+-----+-------+-----+--------+------+------+-------+-------+------+--------
(0 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