I have to process biological data input in the format of 96-well plates.
explainer for the non-biologists:
These plates are basically a 2D matrix of 8 rows x 12 columns of small cups called wells. Each well is used for different assay conditions. During an assay each plate iterates through several assay steps: coating a sample of interest on the bottom of the wells, putting a sample on top and detecting if the sample reacted with the thing on the bottom. Several of the plates can make up an experiment.
end of explainer
So the data/object modeling seemed straightforward at first: Experiment -> Plate -> Well. The Well object would then contain a list of assaysteps starting with the type of "coating" and ending with the "detection" step. The read-out values obtained for each well in the end are also stored in the Well object. Everything would also be linked to a MySQL table as entities.
All good and well for the first two steps: the coating and sample steps can be very diverse, but a lot of the time the detections steps are the same for nearly all wells. Meaning I would have for one plate 95 table entries that read "anti-His detection" and 1 well that reads "blank control". Also the detection step is not always "anti-His detection", it could be "anti-HA detection" next time for like half a plate.
So I guess my question is: am I missing something? I feel like I did the modeling as it should, but at the same time, having 48 or 95 repeats of the same thing per plate doesn't sit well. Should I split up the assaysteps list into different variables? One for the variable things like "coating" and "sample" and one for the detectionstep that can be a reference to a limited set of detectionstep objects? In the database you'd then have reference to a detectionstepid. This way doesn't seem right to implement for the "samples" because there you can have 96 different entries, so having 96 different new specialty objects/lines in a DB table seems overkill to having just an entry in a String list. Or is splitting things up overcomplicating things for little reason? Any suggestions welcome!