Beispiel #1
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="mainParams"></param>
        /// <param name="Inits"></param>
        /// <param name="sName"></param>
        /// <param name="iSearchBefore"></param>
        /// <returns></returns>
        private TAnimalParamSet findGenotype(TAnimalParamSet mainParams, TSingleGenotypeInits[] Inits, string sName, int iSearchBefore)
        {
            TAnimalParamSet Result;
            TAnimalParamSet foundParams;
            int Idx;

            Idx = 0;
            while ((Idx < iSearchBefore) && (sName.ToLower() != Inits[Idx].sGenotypeName.ToLower()))
                Idx++;
            if (Idx < iSearchBefore)
                Result = ParamsFromGenotypeInits(mainParams, Inits, Idx);
            else
            {
                foundParams = mainParams.Match(sName);
                if (foundParams != null)
                    Result = new TAnimalParamSet(null, foundParams);
                else
                    throw new Exception("Breed name \"" + sName + "\" not recognised");
            }
            return Result;
        }
Beispiel #2
0
        /// <summary>
        /// Convert the Stock geno object to TSingleGenotypeInits
        /// </summary>
        /// <param name="aValue"></param>
        /// <param name="Inits"></param>
        public void Value2GenotypeInits(TStockGeno aValue, ref TSingleGenotypeInits Inits)
        {
            int Idx;

            Inits.sGenotypeName = aValue.name;
            Inits.sDamBreed = aValue.dam_breed;
            Inits.sSireBreed = aValue.sire_breed;
            Inits.iGeneration = aValue.generation;
            Inits.SRW = aValue.srw;
            Inits.PotFleeceWt = aValue.ref_fleece_wt;
            Inits.MaxFibreDiam = aValue.max_fibre_diam;
            Inits.FleeceYield = aValue.fleece_yield;
            Inits.PeakMilk = aValue.peak_milk;
            Inits.DeathRate[FALSE] = aValue.death_rate;
            Inits.DeathRate[TRUE] = aValue.wnr_death_rate;

            // Catch weaner death rates that are missing from v1.3 input data...
            if (Inits.DeathRate[TRUE] == 0.0)
                Inits.DeathRate[TRUE] = Inits.DeathRate[FALSE];

            for (int i = 0; i < Inits.Conceptions.Length; i++)
                Inits.Conceptions[0] = 0.0;
            for (Idx = 1; Idx <= aValue.conception.Length; Idx++)
                Inits.Conceptions[Idx-1] = aValue.conception[Idx-1];
        }
Beispiel #3
0
 /// <summary>
 /// Initialises a TGenotypeInits so that most parameters revert to their         
 /// defaults.  Can't be done as a constant because MISSING is a typed value      
 /// </summary>
 /// <param name="Genotype"></param>
 public void MakeEmptyGenotype(ref TSingleGenotypeInits Genotype)
 {
     Genotype.sGenotypeName = "Medium Merino";
     Genotype.sDamBreed = "";
     Genotype.sSireBreed = "";
     Genotype.iGeneration = 0;
     Genotype.SRW = StdMath.DMISSING;
     Genotype.PotFleeceWt = StdMath.DMISSING;
     Genotype.MaxFibreDiam = StdMath.DMISSING;
     Genotype.FleeceYield = StdMath.DMISSING;
     Genotype.PeakMilk = StdMath.DMISSING;
     Genotype.DeathRate[FALSE] = StdMath.DMISSING;
     Genotype.DeathRate[TRUE] = StdMath.DMISSING;
     Genotype.Conceptions[1] = StdMath.DMISSING;
     Genotype.Conceptions[2] = 0.0;
     Genotype.Conceptions[3] = 0.0;
 }
Beispiel #4
0
        /// <summary>
        /// Always makes a copy
        /// </summary>
        /// <param name="mainParams"></param>
        /// <param name="Inits"></param>
        /// <param name="iGenotype"></param>
        /// <returns></returns>
        public TAnimalParamSet ParamsFromGenotypeInits(TAnimalParamSet mainParams,
                                          TSingleGenotypeInits[] Inits,
                                          int iGenotype)
        {
            TAnimalParamSet Result;
            //bool bWeaner;

            if (Inits[iGenotype].sDamBreed == String.Empty)
                Result = findGenotype(mainParams, Inits, Inits[iGenotype].sGenotypeName, 0);
            else if (Inits[iGenotype].iGeneration == 0)
                Result = findGenotype(mainParams, Inits, Inits[iGenotype].sDamBreed, 0);
            else
                Result = TAnimalParamSet.CreateFactory(Inits[iGenotype].sGenotypeName,
                                                  findGenotype(mainParams, Inits, Inits[iGenotype].sDamBreed, iGenotype),
                                                  findGenotype(mainParams, Inits, Inits[iGenotype].sSireBreed, iGenotype));

            Result.sName = Inits[iGenotype].sGenotypeName;

            if (bIsGiven(Inits[iGenotype].SRW))
                Result.BreedSRW = Inits[iGenotype].SRW;
            if (bIsGiven(Inits[iGenotype].PotFleeceWt))
                Result.PotentialGFW = Inits[iGenotype].PotFleeceWt;
            if (bIsGiven(Inits[iGenotype].MaxFibreDiam))
                Result.MaxMicrons = Inits[iGenotype].MaxFibreDiam;
            if (bIsGiven(Inits[iGenotype].FleeceYield))
                Result.FleeceYield = Inits[iGenotype].FleeceYield;
            if (bIsGiven(Inits[iGenotype].PeakMilk))
                Result.PotMilkYield = Inits[iGenotype].PeakMilk;
            for (int iWeaner = 0; iWeaner <= 1; iWeaner++)
            {
                if (Inits[iGenotype].DeathRate[iWeaner] != StdMath.DMISSING)                    // A zero death rate is permissible
                    Result.SetAnnualDeaths(iWeaner == 1, Inits[iGenotype].DeathRate[iWeaner]);
            }
            if (bIsGiven(Inits[iGenotype].Conceptions[1]))
                Result.Conceptions = Inits[iGenotype].Conceptions;

            return Result;
        }
Beispiel #5
0
        /// <summary>
        /// Add more genotypes
        /// </summary>
        /// <param name="BreedInits"></param>
        public void addGenotypes(TSingleGenotypeInits[] BreedInits)
        {
            int Idx, Jdx;

            Idx = FGenotypes.Length;
            Array.Resize(ref FGenotypes, Idx + BreedInits.Length);
            for (Jdx = 0; Jdx <= BreedInits.Length - 1; Jdx++)
                FGenotypes[Idx + Jdx] = ParamsFromGenotypeInits(FBaseParams, BreedInits, Jdx);
        }