I too think its a great idea, I love the idea of being able to have thick, thin, long, or short flagella, with all kinds of levels of each, and each providing distinct advantages and disadvantages. This system leaves the player with almost absolute control over how efficient their cell is and how effective their escapes/chases are. I’m not entirely sure how I feel about cilia being an upgrade of the flagella, but in lieu of a better idea, I think it could work. I’m looking forward to seeing all of these ideas implemented in game.
The difficulty with cilia <-> flagella is that they’re two different types of organelle going by the way we want to represent them. Flagella will work as they do in the game now (although the player will eventually be able to edit their position on the membrane a little in another tab), but cilia will be a periphery covering option creating a shader over the whole microbe. They can still be upgraded, it would just be that the upgrade would be applied to all the cilia on a membrane at once. I think @TheCreator was only using them as an example, but if not we’ll have to work out a solution.
Well, I was actually thinking of having a flagellum become cilia, but you bring up a good point that I haven’t thought off.
Just as importantly, cilia and flagella work completely differently – flagella corkscrew to apply a force perpendicularly into the membrane, while cilia beat in unison to apply a tangential force. If we were to allow one to ‘transition’ into the other, there would be a necessary intermediate zone where the motions make no sense. I think it would be much better to just keep them separate.
Yeah, as moopli says, the mechanisms behind flagella and cilia motion are completely different. Flagella are powered by the worlds tiniest rotary engines at their base, they have performed experiments on swimming mutant E-coli which have rigid flagella. If you clamp their flagellum in place the whole body of the bacterium spins around like crazy!
Also, flagellum often work in unison, many in close proximity will group together by hydrodynamic interactions to form one much larger flagellum like structure (sperm do this). If one or a few of them change the direction of rotation, it disturbs the cooperative effect, causing the sperm to tumble and change direction. This run and tumble mechanism is one of the most primitive ways bacteria explore their environments foraging for food.
So the key parameters for calculating the forces generated by both flagella and cilia are their tangential and normal drag coefficients. It’s perhaps easiest to visualize if you think of a typical cilia:
Assume the cilia is just a flexible cylindrical rod and imagine dragging it through a fluid in such a way that it is orientated perpendicular to its direction of motion. This movement will experience much more drag (and hence displace much more fluid) than if the rod is aligned with its direction of movement. Now if you look at the cilia stroke you can see the cilia exploits the asymmetry of its normal and tangential drag coefficients to apply a greater force on the power stroke than it does on the recovery.
The same principle is true of flagella, it’s just there are no longer power and recovery strokes involved. Instead the rotation of the helix creates a constant asymmetry in forces. Each small segment (ds) is moving in a constant orbit around the axis of rotation and the slight inclination (θ) results in a tiny force along the axis of rotation. The net effect of all these small forces provides the propulsion.
The drag coefficients are not too hard to calculate analytically and they’re pretty well agreed on in the literature, see equations 6,7 & 8 or here. They depend on width, length (wavelength for helix) and fluid viscosity, the forces generated then depend on things like velocity, helix pitch and angular velocity. Once you have the forces you can then calculate how fast they are able to propel their parent cells through the surrounding fluid.
As for having hairs on the flagella, as far as I am aware, if a flagella is covered in hairs perpendicular to the helix then this causes the flagella to pull instead of push. I suppose I can intuitively imagine how this would happen, although I wouldn’t enjoy analytically finding the new drag coefficients.
Okay, well, the real question is what parameters should a flagellum be defined by? I don’t think length and width are enough, and they were explicitly stated above to be example parameters anyway.
For example, lots of eukaryotic flagella have stuff on their surfaces – hairs, undulating membranes, that kind of thing. And how does length, for example, affect the amount of drag the flagellum can overcome (essentially, the amount of water displacement around the microbe per unit time that can be driven by the forces of the flagellum)?
I was editing my previous post and doing other things at the same time… so it kinda looks like I replied to your questions before you asked them, woops.
So I hate to bring this up again (especially with moopli’s adverse reaction last time), but I do think organelle upgrades are an important topic. I decided to start small, and suggest a simple upgrading scheme for one tiny organelle. With all of the new compounds coming up thanks to tjwhale and others, storage is going to become an important issue, one that the player would most likely want to manage him/herself.
I propose specializing the current vacuole into various other vacuoles. At the moment, a vacuole adds 10 units of storage that can be used for absolutely anything. This creates a lot of problems with the cell ejecting reproductase to make room for CO2.
Here are my levels assuming you are specializing for ammonia, which has a molecular mass of 2.
- 10 units, which means that you can store 5 ammonia or 10 units of other compounds (so 3 glucose, 10 oxygen, or 1 protein)
- You can now store 6 ammonia or 5 units of other compounds
- 7 ammonia or 2 other compounds
- 8 ammonia or 1 other
- 9 ammonia only
In short, the general storage for other compounds is halved for each additional unit of ammonia (similar to a PPF curve).
Upgrading is clearly good if you want to store a bunch of ammonia, but the storage becomes “specialized” for ammonia, so you are no longer able to store other compounds as well in this vacuoles. It fits in the whole “trading benefits” theme, with you being forced to choose between an inefficient storage that can be used for any compound, or upgrading your storage to be good, but only for one particular compounds.
Hope I didn’t confuse anyone with the whole molecular mass thing. Right now, bigger molecules (such as glucose and protein) take up a lot more space than smaller ones, such as carbon and oxygen.
I am very happy with any scheme which involves a trade off / specialisation. I think that’s fine.
I changed storage a little bit for the CPA so now it’s all based on thresholds. Because there are several thresholds what “more storage” means is a bit more complicated. So there is
low threshold < high threshold < vent threshold
if the compound amount is below the low threshold then the cell with try to make more / absorb some. If the compound is above low threshold it will do nothing. If it is above the high threshold then it will start trying to run processes to use that compound up. If it is above the vent threshold then it will vent the excess.
So (if we want to stick with the thresholds system, I am, as always happy to make changes) then what does “more storage” mean? Does it move all thresholds upwards? Does it just increase the vent threshold? Do the thresholds always have some set ratio or are they all adjustable? Can the player set their own thresholds?
I always assumed that the thresholds were float between 0 and 1 that you multiplied by the total storage for that particular compound. Is that now how it works in your prototype? In that case, wouldn’t increasing the number of vacuoles cause a bunch of empty space?
Well right now, in the prototype, the thresholds are just values. So like the low threshold is 10 protein and if you have less then it will try to make more. So yeah you’re right they could be set as percentages of a storage value, that would work fine as well.
I was thinking a little about the dynamics caused by changing the thresholds. Basically it’s about tolerance. In this notation it’s [low threshold, high threshold, vent threshold]. So if you have
[1,10,11] what that means is there is a large tolerance of values. If the value is 4 then the cell will do nothing it will happily swim around. Moreover it will quite often hit it’s vent threshold because it might be on 9 and then make a kill and get a big boost and not be able to take it all. Conversely
[4,5,12] means the cell will actively balance the amount of that compound pretty much all the time. It will never be happy until the amount is in the [4,5] range. This means the cell will burn ATP somewhat unnecessarily (if the processes that affect this value need ATP). Like if the value is oscillating between 3 and 7 in the thresholds above will be happy and do nothing whereas these thresholds will cause the cell to keep producing / using up the compound while that oscillation continues.
Anyway, to get to your original question, what does more storage mean? If you are on [4,5,10] do you go to [4,8,13] which gives you a larger tolerance or do you go to [4,5,13] which means you maintain the same level but don’t vent so frequently.
It’s all quite interesting. Basically the amount of tolerance really equates to homeostasis. It’s what range you are willing to live in. There are advantages to both being tolerant and being intolerant.
Okay, but here is the problem I see with hard coding in the values. Completely ignoring upgrades, what would happen if you add a new vacuole and double your storage? I think it makes sense to increase every single threshold proportionally (so in your example we would get [8, 10, 20]). Although there is a problem that there might be some compounds that your cell needs a set amount, regardless of size, I think in the majority of cases a larger cell would simply require a larger amount of compounds. Because of this, I think it makes complete sense to have thresholds be a fraction of your total storage; they will remain the same relative to themselves, but in reality, they would all increase. To then find the actual numerical threshold you would multiply the total storage by the floating threshold for that compound.
Does this make sense?
You’re totally right that’s the easiest way to implement it. I don’t know how important changing your tolerance would be. Maybe it means nothing, maybe it would be an interesting thing to try and control.