HighlanderLab / SIMplyBee

SIMplyBee R package extends AlphaSimR for simulating honeybee populations and breeding programmes
http://www.simplybee.info/
Other
0 stars 5 forks source link

Does 0 nVirginQueens break yearly cycle and how? #245

Closed gregorgorjanc closed 2 years ago

gregorgorjanc commented 2 years ago

If we use the new nVirginQueensPoisson() function for nVirginQueens we can get value 0. How does this break yearly cycle and where? We need to identify these edge cases and decide how to fix them.

A simple way to achieve this would be to do:

SP$nVirginQueens <-0

and run the yearly cycle - that will make the yearly cycle scream very quickly.

janaobsteter commented 2 years ago

I am not sure about this because I think (but am not sure) that swarm and split functions will add in one queen (if this is not it, we should change this so that they add in at least one queen)

gregorgorjanc commented 2 years ago

@janaobsteter can you create a reproducing example for this so that we see how it breaks down and then we can discuss if we need to do anything about it?

janaobsteter commented 2 years ago

Here is a simple example - this one does not break because the swarm function makes sure there is one queen there (so apparently it doesn't use the SP parameter!!!)

library(SIMplyBee)

founderGenomes <- quickHaplo(nInd = 30,
                             nChr = 1,
                             segSites = 100)
# Create SP object and write in the global simulation/population parameters
SP <- SimParamBee$new(founderGenomes, csdChr = 3, nCsdAlleles = 128)
SP$nWorkers <- 1000
SP$nDrones <- 20
SP$nFathers <- 10
SP$nVirginQueens <- 0
# Track the pedigree
SP$setTrackPed(TRUE)
# Track the recombination
SP$setTrackRec(TRUE)

# Create a base population for A. m. mellifera
virginQueens <- createVirginQueens(x = founderGenomes[1:30])
# Create A. m. mellifera drones
drones <- createDrones(x = virginQueens[11:30], nInd = 20)
# Mate A. m. mellifera queens with A. m. mellifera drones
queens <- crossVirginQueen(pop = melVirginQueens[1:10], drones = drones)

# Second problem - when we try to build up the colony
apiary <- createColonies(x = queens, n = 10)
tmp <- swarmColonies(apiary, p = 0.5)
tmp$remnants[[1]]
apiary <- tmp$swarms
apiary0 <- tmp$remnants
gregorgorjanc commented 2 years ago

Well spotted! Should we then add nVirginQueens = NULL argument to swarm and supersedure (which should then use the value in SP) for completeness?

janaobsteter commented 2 years ago

This would be a good thing to discuss on the meeting :)

janaobsteter commented 2 years ago

I've added the nVirginQueens parameter to the swarm and supersede functions (swarmColony(), swarmColonies(), supersedeColony(), supersedeColonies())

janaobsteter commented 2 years ago

This is done

gregorgorjanc commented 1 year ago

I am away tomorrow and Thu so won't make this.

I will only say that we don't want "dodgy" solutions - as in - lets add 1 VQ in all the time - I think we want things to break to make it realistic, but we also need a way for a user to handle this. I wonder if functions like isQueenPresent() and other would help?

With regards, Gregor

On Mon, Apr 11, 2022 at 06:50:05, janaobsteter @.***> wrote:

This would be a good thing to discuss on the meeting :)

— Reply to this email directly, view it on GitHub https://github.com/HighlanderLab/SIMplyBee/issues/245#issuecomment-1094577964, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFRGSX27NZFJ7AXEHI2SP3VEO4Q3ANCNFSM5SNSEBTA . You are receiving this because you authored the thread.Message ID: @.***>