Hatchery Information System


The Growth Model

Fish grow over time. Fish growth can be measured either by measuring the length of the fish, the weight of the fish, or both. The length and weight of fish are related, as a longer fish will generally be a heavier fish, with weight increasing at roughly the cube of the length. If both length and weight are measured, the condition factor of the fish can be calculated, which is a measure of the plumpness of the fish. The growth of the fish over time, the projected size of the fish at some point in the future, the condition of the fish, the absolute size of the fish at any given time, and the conversion of fish food into fish mass, are all of interest to fish hatchery management. Therefore, measuring fish growth over time is usually important for hatchery operations.

The simplest means of measuring fish growth over time is to take a sample of fish and either weigh them, measure their lengths, or both. Taking such a measurement is both time consuming for hatchery staff and stressful for the fish, so a balance must be struck between the accuracy of the measure, the frequency of the measure, and the cost of the measure both for staff and fish. For this reason, measurements are taken only periodically, which can leave substantial gaps between measurements. Growth between measurements can only be an estimate.

Fish growth is also inconsistent between hatcheries, between raceways, and over time for any one location. Different types of food, different temperatures, different water chemistry, crowding, disease, and other factors can all impact fish growth. For any long established fish hatchery, several of the important factors impacting fish growth will be known. For example, the hatchery staff may well know that fish will take less food as water cools off during the winter, or possibly if it heats up too much during the summer. For this reason, long established fish hatcheries with seasoned personnel, will have a fair understanding of how growth will change over time.

The purpose of the Growth Core model is to capture all of the growth information gathered by the hatchery such that it can be used to obtain the estimated size of the fish, either by length or weight, at any given time for any given location, which includes projecting growth into the future.


The Growth Core

The Growth Core model has a single task, which is to be able to provide an estimate for the size of fish for any given location past, present, or future. It is designed to make use of whatever information is accessible, and to adjust the growth as new information is received. The model is built around a basic growth curve, but is designed such that better growth curves can be swapped in as better information is obtained.

The basic growth curve at the heart of the Growth Core model is a constant increase in fish length over time. The change in the length of fish is called the Daily Delta Length or DDL. The basic growth model would be a constant DDL, which may be reasonably accurate for hatcheries with constant temperature water and reasonably constant conditions. Therefore, if no other information is provided to the Growth Core, there will still be a growth curve, it will just be based on a constant change in fish length over time, a situation that will only be roughly accurate for some fish hatcheries. This basic curve can be improved on both by taking measurements, and by replacing the curve with one better suited to a particular hatchery.

The protocol for any given fish hatchery may be to measure weight, length, or both. The measurements may be taken frequently, infrequently, or not at all. Which measurements are taken, and when, is up to the hatchery. In the Hatchery Information System design, all measurements of weight, length, or condition factor would be entered into plugins designed specifically for the measurement in question. The Growth Core model will intercept measurements entered into these plugins to improve the growth model.

The size of the fish at any time will be estimated by the Growth Core. If an actual measurement is taken, that measurement acts as a fix on the size of the fish at that time. When the Growth Core receives an actual measurement, it compares that new measure to the model’s estimate of size, and adjusts the growth curve upwards or downwards such that it passes through the new point. In other words, the model is estimating growth, and when it gets a fix on the true size, it then changes its estimate to take into account the new information. Therefore, every measurement will correct the growth between the last measurement and the current one, as well as improving the estimated growth going forwards until the next measurement is taken. This approach means that the estimated size produced by the Growth Core will be improved with each size measurement taken on the fish.

The other way to improve the estimate produced by the Growth Core model is to replace the default growth curve with a better one. After Hatchery Information System has finished loading all plugins, the Growth Core will send out a request for an IDDL interface implementation. Any plugin can supply one, though there should never be more than one for a hatchery. The IDDL interface has a simple method that takes a location and time and returns an IDDLDuration. The IDDLDuration is an object that provides a DDL and the window of time during which the DDL is valid. This means that there can be a different DDL for each day, or a single DDL that spans years. This means that the IDDL can be used to implement a temperature dependent growth curve, density dependent growth curve, both, or any other growth curve the implementer can think of. The resulting curve will still be adjusted upwards or downwards based on measurements taken, but instead of the constant DDL of the default curve, the curve can now respond to any complexity of environmental factors.


Other Parts of the Growth Core

The primary purpose of the Growth Core is the function that returns the length or weight of fish at any given time in any given location, but the Growth Core model also exposes many parts of the internal workings of the model. It is possible to get the DDL for any day, the duration during which the DDL is valid, and so forth. There is also a configuration section, which allows users to adjust the values used by the default growth curve, though providing an alternate IDDL would be a superior alternative for most fish hatcheries. All of this functionality is there to facilitate creating plugins that examine how growth is calculated over time.