Mercurial > repos > siwaa > insilicow
diff test-data/input/TWIN/farmer-plan_TWIN.txt @ 3:3fe3e1e6a40b draft default tip
"planemo upload for repository https://forgemia.inra.fr/insilicow/insilicow-tool commit b530a8209615f225696abe3e0ba49093ff3dc4ad"
author | siwaa |
---|---|
date | Mon, 25 Aug 2025 16:37:43 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/input/TWIN/farmer-plan_TWIN.txt Mon Aug 25 16:37:43 2025 +0000 @@ -0,0 +1,1044 @@ +################################################################################################################# +# # +# InSiliCow # +# Virtual farm specification # +# # +################################################################################################################# + +################################################################################################################# +#====== GENERAL SETTINGS # +################################################################################################################# + +#______ Include files +@include farmer-log.txt # providing log action and trigger +@include farmer-base.txt # providing basic components + +#______ Models: specify models for individual cows +param_general{ + garuns_type = garuns_olivier + rpm_type = rpm_lite + abortion_type = abortion_olivier +} + +#______ Simulation: provide time range, output database and code name +init{ + begin_date = $start_date$ 00:00:00 + end_date = $stop_date$ 23:59:59 + output_db = db_events.sqlite + output_config = config.txt + name = $sim_id$ +} + +#______ Log Farm information +link{ + trigger = init + action = log_db farm_tag $farm_tag$ + action = log_db start_date $start_date$ + action = log_db stop_date $stop_date$ + action = log_db now_date $now_date$ + action = log_db latitude $latitude$ + action = log_db longitude $longitude$ +} + +#______ End of simulation +trigger{ + type = chron + name = tr_end_simu + scheme = $stop_date$ 23:59:58 +} + +#______ Past and future +condition{ + type = chron_range + name = past + from = $start_date$ 00:00:00 + to = $now_date$ 00:00:01 +} + +condition{ + type = chron_range + name = future + from = $now_date$ 00:00:00 + to = $stop_date$ 23:59:59 +} + +#______ Day one +trigger{ + type = chron + name = day_one_herd + scheme = $start_date$ 23:59:59 +} +trigger{ + type = custom + name = day_one +} +link{ + trigger = day_one_herd + action = broadcast_now day_one +} + +#______ Calving tag +link{ + trigger = calving + condition = calf_sex male + condition = future + action = log_db birth_of_male no_tag +} +link{ + trigger = calving + condition = calf_sex female + condition = future + action = log_db birth_of_female no_tag +} + +#______ Manage initial dam +state{ + state = INITIAL-DAM +} + +link{ + trigger = day_one + action = state_add INITIAL-DAM +} +link{ + trigger = parturition + condition = is_in INITIAL-DAM + condition = not is_in IN_WILD + action = trigger_later tr_delete_cow 1 +} +trigger{ + type = custom + name = tr_delete_cow +} +link{ + trigger = tr_delete_cow + action = delete_cow remove_initial_dam +} + +#______ Stoechio +stoechio{ + +} + +################################################################################################################# +#====== FARMING # +################################################################################################################# + +#______ Keep cows and calves in farm: no natural mating + +link{ + trigger = enter IN_WILD + action = state_move IN_WILD IN_FARM +} + +link{ + trigger = enter WILD_COW + action = state_move WILD_COW DRY_COW +} + +#______ Remove calf from dam: no natural weaning + +link{ + trigger = enter SUCKLING_CALF + action = state_move SUCKLING_CALF NURSED_CALF +} + +#______ Milk cows: no natural drying-off at calf weaning + +link{ + trigger = enter NURSING_COW + action = state_move NURSING_COW LACTATING_COW +} + +#______ Optimal feeding + +link{ + trigger = enter IN_FARM + action = trigger_later tr_optimal_feeding 0 +} +trigger{ + type = custom + name = tr_optimal_feeding +} +link{ + trigger = tr_optimal_feeding + action = change_food optimal +} + + +################################################################################################################# +#====== FARM COMPONENTS: genotype # +################################################################################################################# + +#______ Genetic_sD: provide Mendelian sampling std dev for transmission of Genetic Scaling Parameters (GSP) +# GSP_newborn ~ Normal [ (GSP_mother + GSP_father)/2 , GSP_sd ] | within (min, max) + +#TWIN CASE : all sd = 0 + +genetic_sd{ + garuns_olivier.WM{ + sd = 0 + min = 200 + max = 800 + } + + garuns_olivier.khi_M { + sd = 0 + min = 0.1 + max = 0.6 + } + + garuns_olivier.b0{ + sd = 0 + min = 0.80 + max = 2.40 + } + + garuns_olivier.nu_X{ + sd = 0 + min = 0.2 + max = 1.8 + } + + garuns_olivier.nu_Y{ + sd = 0 + min = 0.2 + max = 1.8 + } + + garuns_olivier.nu_F{ + sd = 0 + min = 0.50 + max = 1.50 + } + + garuns_olivier.nu_P{ + sd = 0 + min = 0.50 + max = 1.50 + } + + garuns_olivier.eD_star{ + sd = 0 + min = 9.0 + max = 15.0 + } + + garuns_olivier.NDF_star{ + sd = 0 + min = 0.10 + max = 0.90 + } + + garuns_olivier.psi{ + sd = 0 + min = 0 + max = 1 + } + + rpm_lite.nu_I{ + sd = 0 + min = 0.00 + max = 0.20 + } + + rpm_lite.nu_B{ + sd = 0 + min = 1.20 + max = 2.20 + } + + rpm_lite.nu_Z{ + sd = 0 + min = 0.90 + max = 1.10 + } +} + +################################################################################################################# +#====== FARM COMPONENTS: herd (genotype-based initialization of individual cows) # +################################################################################################################# + +#______ INITIALIZATION of TWIN farm from tables Genotype and Initialization + +# From table Genotype: for all <cow_tag> (all lines) +state{ + state = cow_01 + state = cow_02 + state = cow_03 + state = cow_04 + state = cow_05 +} + +action{ + type = genericlog + name = log_states_cows + + log_type = sqlite + sqlite_path = db_states.sqlite + sqlite_table = user_states + + #log_type = file + #file_path = states-user.txt + #sep_col = \t + #file_line_flush=no + + column{ + value = time + name = time + sqlite_type = numeric + } + column{ + value = state.count.INITIAL-DAM + name = INITIAL-DAM + sqlite_type = numeric + } + column{ + value = state.count.cow_01 + name = cow_01 + sqlite_type = numeric + } + column{ + value = state.count.cow_02 + name = cow_02 + sqlite_type = numeric + } + column{ + value = state.count.cow_03 + name = cow_03 + sqlite_type = numeric + } + column{ + value = state.count.cow_04 + name = cow_04 + sqlite_type = numeric + } + column{ + value = state.count.cow_05 + name = cow_05 + sqlite_type = numeric + } +} + +link{ + trigger = every_day_herd + action = log_states_cows +} + +# From table Genotype: for each <cow_tag> not in table Initialization +init_cow{ + name=cow_03 + + abortion_olivier.delta = constant 3.0 + abortion_olivier.enabled = never + abortion_olivier.dip = vector constant 17 ; constant 64 + abortion_olivier.abo = vector constant 0.02 ; constant 0.005 ; constant 0.0004 + + garuns_olivier.WM = constant 450 + garuns_olivier.khi_M = constant 0.3 + garuns_olivier.b0 = constant 1.6 + garuns_olivier.nu_X = constant 1 + garuns_olivier.nu_Y = constant 1.1 + garuns_olivier.nu_F = constant 1 + garuns_olivier.nu_P = constant 1 + garuns_olivier.eD_star = constant 10.7 + garuns_olivier.NDF_star = constant 1 + garuns_olivier.psi = constant 1 + rpm_lite.nu_B = constant 0.5 + rpm_lite.nu_Z = constant 0.025 + rpm_lite.nu_I = constant 1.7 +} +init_cow{ + name=cow_04 + + abortion_olivier.delta = constant 3.0 + abortion_olivier.enabled = never + abortion_olivier.dip = vector constant 17 ; constant 64 + abortion_olivier.abo = vector constant 0.02 ; constant 0.005 ; constant 0.0004 + + garuns_olivier.WM = constant 450 + garuns_olivier.khi_M = constant 0.3 + garuns_olivier.b0 = constant 1.6 + garuns_olivier.nu_X = constant 1 + garuns_olivier.nu_Y = constant 1.1 + garuns_olivier.nu_F = constant 1 + garuns_olivier.nu_P = constant 1 + garuns_olivier.eD_star = constant 10.7 + garuns_olivier.NDF_star = constant 1 + garuns_olivier.psi = constant 1 + rpm_lite.nu_B = constant 0.5 + rpm_lite.nu_Z = constant 0.025 + rpm_lite.nu_I = constant 1.7 +} +init_cow{ + name=cow_05 + + abortion_olivier.delta = constant 3.0 + abortion_olivier.enabled = never + abortion_olivier.dip = vector constant 17 ; constant 64 + abortion_olivier.abo = vector constant 0.02 ; constant 0.005 ; constant 0.0004 + + garuns_olivier.WM = constant 450 + garuns_olivier.khi_M = constant 0.3 + garuns_olivier.b0 = constant 1.6 + garuns_olivier.nu_X = constant 1 + garuns_olivier.nu_Y = constant 1.1 + garuns_olivier.nu_F = constant 1 + garuns_olivier.nu_P = constant 1 + garuns_olivier.eD_star = constant 10.7 + garuns_olivier.NDF_star = constant 1 + garuns_olivier.psi = constant 1 + rpm_lite.nu_B = constant 0.5 + rpm_lite.nu_Z = constant 0.025 + rpm_lite.nu_I = constant 1.7 +} + +# From table Initialization: for each <dam_tag> (each line) +breed{ + breed = dam_cow_01 + breed = dam_cow_02 +} + +# From table Initialization: for each <sire_tag> (each line) +init_bull{ + name= sire_cow_01 + bull.breed_name = dam_cow_01 + bull.semens_quality = constant 1.0 + bull.female_ratio = constant 1.0 + + # Genotype sub-block associated with cow_01 in table Genotype + garuns_olivier.WM = constant 450 + garuns_olivier.khi_M = constant 0.3 + garuns_olivier.b0 = constant 1.6 + garuns_olivier.nu_X = constant 1 + garuns_olivier.nu_Y = constant 1.1 + garuns_olivier.nu_F = constant 1 + garuns_olivier.nu_P = constant 1 + garuns_olivier.eD_star = constant 10.7 + garuns_olivier.NDF_star = constant 1 + garuns_olivier.psi = constant 1 + rpm_lite.nu_B = constant 0.5 + rpm_lite.nu_Z = constant 0.025 + rpm_lite.nu_I = constant 1.7 +} +init_bull{ + name= sire_cow_02 + bull.breed_name = dam_cow_02 + bull.semens_quality = constant 1.0 + bull.female_ratio = constant 1.0 + + # Genotype sub-block associated with cow_02 in table Genotype + garuns_olivier.WM = constant 450 + garuns_olivier.khi_M = constant 0.3 + garuns_olivier.b0 = constant 1.6 + garuns_olivier.nu_X = constant 1 + garuns_olivier.nu_Y = constant 1.1 + garuns_olivier.nu_F = constant 1 + garuns_olivier.nu_P = constant 1 + garuns_olivier.eD_star = constant 10.7 + garuns_olivier.NDF_star = constant 1 + garuns_olivier.psi = constant 1 + rpm_lite.nu_B = constant 0.5 + rpm_lite.nu_Z = constant 0.025 + rpm_lite.nu_I = constant 1.7 +} + +# From table Initialization: for each <dam_tag> (each line) +init_cow{ + name=dam_cow_01 + #______ Abortion sub-block + abortion_olivier.delta = constant 3.0 + abortion_olivier.enabled = never + abortion_olivier.dip = vector constant 17 ; constant 64 + abortion_olivier.abo = vector constant 0.02 ; constant 0.005 ; constant 0.0004 + + # Genotype sub-block associated with cow_01 in table Genotype + garuns_olivier.WM = constant 450 + garuns_olivier.khi_M = constant 0.3 + garuns_olivier.b0 = constant 1.6 + garuns_olivier.nu_X = constant 1 + garuns_olivier.nu_Y = constant 1.1 + garuns_olivier.nu_F = constant 1 + garuns_olivier.nu_P = constant 1 + garuns_olivier.eD_star = constant 10.7 + garuns_olivier.NDF_star = constant 1 + garuns_olivier.psi = constant 1 + rpm_lite.nu_B = constant 0.5 + rpm_lite.nu_Z = constant 0.025 + rpm_lite.nu_I = constant 1.7 +} +init_cow{ + name=dam_cow_02 + #______ Abortion sub-block + abortion_olivier.delta = constant 3.0 + abortion_olivier.enabled = never + abortion_olivier.dip = vector constant 17 ; constant 64 + abortion_olivier.abo = vector constant 0.02 ; constant 0.005 ; constant 0.0004 + + # Genotype sub-block associated with cow_02 in table Genotype + garuns_olivier.WM = constant 450 + garuns_olivier.khi_M = constant 0.3 + garuns_olivier.b0 = constant 1.6 + garuns_olivier.nu_X = constant 1 + garuns_olivier.nu_Y = constant 1.1 + garuns_olivier.nu_F = constant 1 + garuns_olivier.nu_P = constant 1 + garuns_olivier.eD_star = constant 10.7 + garuns_olivier.NDF_star = constant 1 + garuns_olivier.psi = constant 1 + rpm_lite.nu_B = constant 0.5 + rpm_lite.nu_Z = constant 0.025 + rpm_lite.nu_I = constant 1.7 +} + +# From table Initialization: for each line +# The value of days_after_conception is set such as N = - (birth_date – 280 – start_date) +action{ + type = buy_cow + name = buy_dam_cow_01 + init_cow = dam_cow_01 + init_bull = sire_cow_01 + age = 600 + days_after_conception = -1 + number = 1 +} +action{ + type = buy_cow + name = buy_dam_cow_02 + init_cow = dam_cow_02 + init_bull = sire_cow_02 + age = 600 + days_after_conception = -30 + number = 1 +} + +# From table Initialization: for all lines +link{ + trigger = init + action = buy_dam_cow_01 + action = buy_dam_cow_02 +} + +# From table Initialization: for each line +link{ + trigger = calving + condition = calf_breed dam_cow_01 + action = state_add cow_01 + action = log_db birth_of_female cow_01 birth_from_dam dam_cow_01 birth_from_sire sire_cow_01 +} +link{ + trigger = calving + condition = calf_breed dam_cow_02 + action = state_add cow_02 + action = log_db birth_of_female cow_02 birth_from_dam dam_cow_02 birth_from_sire sire_cow_02 +} + +#______ MANAGE BREEDING of TWIN farm from tables Genotype & Insemination + +# Define once +init_bull{ + name= no_conception + bull.breed_name = NULL + bull.semens_quality = constant 0.0 + bull.female_ratio = constant 0.5 +} + +# For all lines where conception is not 0 +breed{ + breed = NULL #always this line + breed = IA_01 + breed = IA_02 + breed = IA_03 + breed = IA_04 +} + +# From table Insemination: for each line where conception = 1 and calf_sex = 1 (male) +init_bull{ + name= semen_IA_01 + bull.breed_name = IA_01 + bull.semens_quality = constant 1.0 + bull.female_ratio = constant 0.0 +} + +# From table Insemination: for each line where conception = 1 and calf_sex = 0 (female) +init_bull{ + name= semen_IA_02 + bull.breed_name = IA_02 + bull.semens_quality = constant 1.0 + bull.female_ratio = constant 1.0 + + # Genotype sub-block associated with <calf_tag> = cow_03 in table Genotype + garuns_olivier.WM = constant 450 + garuns_olivier.khi_M = constant 0.3 + garuns_olivier.b0 = constant 1.6 + garuns_olivier.nu_X = constant 1 + garuns_olivier.nu_Y = constant 1.1 + garuns_olivier.nu_F = constant 1 + garuns_olivier.nu_P = constant 1 + garuns_olivier.eD_star = constant 10.7 + garuns_olivier.NDF_star = constant 1 + garuns_olivier.psi = constant 1 + rpm_lite.nu_B = constant 0.5 + rpm_lite.nu_Z = constant 0.025 + rpm_lite.nu_I = constant 1.7 +} +init_bull{ + name= semen_IA_03 + bull.breed_name = IA_03 + bull.semens_quality = constant 1.0 + bull.female_ratio = constant 1.0 + + # Genotype sub-block associated with <calf_tag> = cow_05 in table Genotype + garuns_olivier.WM = constant 450 + garuns_olivier.khi_M = constant 0.3 + garuns_olivier.b0 = constant 1.6 + garuns_olivier.nu_X = constant 1 + garuns_olivier.nu_Y = constant 1.1 + garuns_olivier.nu_F = constant 1 + garuns_olivier.nu_P = constant 1 + garuns_olivier.eD_star = constant 10.7 + garuns_olivier.NDF_star = constant 1 + garuns_olivier.psi = constant 1 + rpm_lite.nu_B = constant 0.5 + rpm_lite.nu_Z = constant 0.025 + rpm_lite.nu_I = constant 1.7 +} +init_bull{ + name= semen_IA_04 + bull.breed_name = IA_04 + bull.semens_quality = constant 1.0 + bull.female_ratio = constant 1.0 + + # Genotype sub-block associated with <calf_tag> = cow_04 in table Genotype + garuns_olivier.WM = constant 450 + garuns_olivier.khi_M = constant 0.3 + garuns_olivier.b0 = constant 1.6 + garuns_olivier.nu_X = constant 1 + garuns_olivier.nu_Y = constant 1.1 + garuns_olivier.nu_F = constant 1 + garuns_olivier.nu_P = constant 1 + garuns_olivier.eD_star = constant 10.7 + garuns_olivier.NDF_star = constant 1 + garuns_olivier.psi = constant 1 + rpm_lite.nu_B = constant 0.5 + rpm_lite.nu_Z = constant 0.025 + rpm_lite.nu_I = constant 1.7 +} + +# From table Insemination: for each different <insemination date> + +trigger{ + type = chron + name = trigger_insem_19720221 + scheme = 1972-02-21 12:00:00 +} +trigger{ + type = chron + name = trigger_insem_19730106 + scheme = 1973-01-06 12:00:00 +} +trigger{ + type = chron + name = trigger_insem_19750225 + scheme = 1975-02-25 12:00:00 +} +trigger{ + type = chron + name = trigger_insem_19720321 + scheme = 1972-03-21 12:00:00 +} +trigger{ + type = chron + name = trigger_insem_19730204 + scheme = 1973-02-04 12:00:00 +} +trigger{ + type = chron + name = trigger_insem_19730225 + scheme = 1973-02-25 12:00:00 +} + +# From table Insemination: for each line + +link{ + trigger = trigger_insem_19720221 + action = insemination_IA_01 +} +trigger{ + type = custom + name = trigger_insem_19720221_cow_01 +} +action{ + type = broadcast_now + name = insemination_IA_01 + condition = is_in cow_01 + trigger = trigger_insem_19720221_cow_01 +} + +link{ + trigger = trigger_insem_19730106 + action = insemination_IA_02 +} +trigger{ + type = custom + name = trigger_insem_19730106_cow_01 +} +action{ + type = broadcast_now + name = insemination_IA_02 + condition = is_in cow_01 + trigger = trigger_insem_19730106_cow_01 +} + +link{ + trigger = trigger_insem_19750225 + action = insemination_IA_03 +} +trigger{ + type = custom + name = trigger_insem_19750225_cow_03 +} +action{ + type = broadcast_now + name = insemination_IA_03 + condition = is_in cow_03 + trigger = trigger_insem_19750225_cow_03 +} + +link{ + trigger = trigger_insem_19720321 + action = insemination_IA_04 +} +trigger{ + type = custom + name = trigger_insem_19720321_cow_02 +} +action{ + type = broadcast_now + name = insemination_IA_04 + condition = is_in cow_02 + trigger = trigger_insem_19720321_cow_02 +} + +link{ + trigger = trigger_insem_19730204 + action = insemination_IA_05 +} +trigger{ + type = custom + name = trigger_insem_19730204_cow_02 +} +action{ + type = broadcast_now + name = insemination_IA_05 + condition = is_in cow_02 + trigger = trigger_insem_19730204_cow_02 +} + +link{ + trigger = trigger_insem_19730225 + action = insemination_IA_06 +} +trigger{ + type = custom + name = trigger_insem_19730225_cow_02 +} +action{ + type = broadcast_now + name = insemination_IA_06 + condition = is_in cow_02 + trigger = trigger_insem_19730225_cow_02 +} + +# From table Insemination : for each line WHERE conception = 0 +link{ + trigger = trigger_insem_19730204_cow_02 + action = inseminate no_conception +} + +link{ + trigger = trigger_insem_19730225_cow_02 + action = inseminate no_conception +} + +# From table Insemination : for each line WHERE conception = 1 + +link{ + trigger = trigger_insem_19720221_cow_01 + action = force_conception semen_IA_01 +} + +link{ + trigger = trigger_insem_19730106_cow_01 + action = force_conception semen_IA_02 +} + +link{ + trigger = trigger_insem_19750225_cow_03 + action = force_conception semen_IA_03 +} + +link{ + trigger = trigger_insem_19720321_cow_02 + action = force_conception semen_IA_04 +} + +# From table Insemination : for each line WHERE conception = 1 AND calf_sex = 0 (female) + +link{ + trigger = calving + condition = calf_breed IA_02 + action = state_add cow_03 + action = log_db birth_of_female cow_03 birth_from_dam cow_01 birth_from_sire sire_20 +} + +link{ + trigger = calving + condition = calf_breed IA_03 + action = state_add cow_05 + action = log_db birth_of_female cow_05 birth_from_dam cow_03 birth_from_sire sire_20 +} + +link{ + trigger = calving + condition = calf_breed IA_04 + action = state_add cow_04 + action = log_db birth_of_female cow_04 birth_from_dam cow_02 birth_from_sire sire_20 +} + +# From table Insemination : for each line WHERE conception = 1 AND calf_sex = 0 (male) + +link{ + trigger = calving + condition = calf_breed IA_01 + action = log_db birth_of_male calf_a birth_from_dam cow_01 birth_from_sire sire_10 +} + +#______ MANAGE DEATH of TWIN farm from table Death + +# From table Death: for each different <death_date> +trigger{ + type = chron + name = trigger_death_19741001 + scheme = 1974-10-01 23:59:59 +} + +# From table Death: for each different <cow_tag> + +link{ + trigger = trigger_death_19741001 + action = death_cow_01 +} +trigger{ + type = custom + name = trigger_death_19741001_cow_01 +} +action{ + type = broadcast_now + name = death_cow_01 + condition = is_in cow_01 + trigger = trigger_death_19741001_cow_01 +} +link{ + trigger = trigger_death_19741001_cow_01 + #action = log_db death_of_cow cow_01 + #action = delete_cow death + action = trigger_now om_death +} + +#______ MANAGE CULLING of TWIN farm from table Culling + +# From table Culling: for each different <culling_date> +trigger{ + type = chron + name = trigger_culling_19731025 + scheme = 1973-10-25 06:00:00 +} + +# From table Culling: for each different <cow_tag> + +link{ + trigger = trigger_culling_19731025 + action = culling_cow_02 +} +trigger{ + type = custom + name = trigger_culling_19731025_cow_02 +} +action{ + type = broadcast_now + name = culling_cow_02 + condition = is_in cow_02 + trigger = trigger_culling_19731025_cow_02 +} +link{ + trigger = trigger_culling_19731025_cow_02 + #action = log_db culling_of_cow cow_02 + action = delete_cow culling cow_02 + action = log_db delete_cow: for a reason +} + + +#______ MANAGE DRYING-OFF of TWIN farm from table Drying-off + +# From table Drying-off: for each different <drying_off_date> +trigger{ + type = chron + name = trigger_dryingoff_19730923 + scheme = 1973-09-23 14:00:00 +} +trigger{ + type = chron + name = trigger_dryingoff_19740809 + scheme = 1974-08-09 14:00:00 +} +trigger{ + type = chron + name = trigger_dryingoff_19760927 + scheme = 1976-09-27 14:00:00 +} +trigger{ + type = chron + name = trigger_dryingoff_19731022 + scheme = 1973-10-22 14:00:00 +} + +# From table Drying-off: for each different <cow_tag> +link{ + trigger = trigger_dryingoff_19730923 + action = dryingoff_cow_01_parity_1 +} +trigger{ + type = custom + name = trigger_dryingoff_19730923_cow_01 +} +action{ + type = broadcast_now + name = dryingoff_cow_01_parity_1 + condition = is_in cow_01 + trigger = trigger_dryingoff_19730923_cow_01 +} +link{ + trigger = trigger_dryingoff_19730923_cow_01 + #action = log_db dryingoff_of_cow cow_01 dryingoff_in_parity 1 + action = stop_milking + action = log_db stop_milking: cow_01 in_parity 1 + +} + +link{ + trigger = trigger_dryingoff_19740809 + action = dryingoff_cow_01_parity_2 +} +trigger{ + type = custom + name = trigger_dryingoff_19740809_cow_01 +} +action{ + type = broadcast_now + name = dryingoff_cow_01_parity_2 + condition = is_in cow_01 + trigger = trigger_dryingoff_19740809_cow_01 +} +link{ + trigger = trigger_dryingoff_19740809_cow_01 + #action = log_db dryingoff_of_cow cow_01 dryingoff_in_parity 2 + action = stop_milking + action = log_db stop_milking: cow_01 in_parity 2 +} + +link{ + trigger = trigger_dryingoff_19760927 + action = dryingoff_cow_03_parity_1 +} +trigger{ + type = custom + name = trigger_dryingoff_19760927_cow_03 +} +action{ + type = broadcast_now + name = dryingoff_cow_03_parity_1 + condition = is_in cow_03 + trigger = trigger_dryingoff_19760927_cow_03 +} +link{ + trigger = trigger_dryingoff_19760927_cow_03 + #action = log_db dryingoff_of_cow cow_03 dryingoff_in_parity 1 + action = stop_milking + action = log_db stop_milking: cow_03 in_parity 1 +} + +link{ + trigger = trigger_dryingoff_19731022 + action = dryingoff_cow_02_parity_1 +} +trigger{ + type = custom + name = trigger_dryingoff_19731022_cow_02 +} +action{ + type = broadcast_now + name = dryingoff_cow_02_parity_1 + condition = is_in cow_02 + trigger = trigger_dryingoff_19731022_cow_02 +} +link{ + trigger = trigger_dryingoff_19731022_cow_02 + #action = log_db dryingoff_of_cow cow_02 dryingoff_in_parity 1 + action = stop_milking + action = log_db stop_milking: cow_02 in_parity 1 +} + + + + +################################################################################################################# +#====== FARM COMPONENTS: semen (genotype-based initialization of semen from individual bulls) # +################################################################################################################# + + +################################################################################################################# +#====== FARM COMPONENTS: heat detection # +################################################################################################################# + + +################################################################################################################# +#====== FARM COMPONENTS: feedstuffs # +################################################################################################################# + + +################################################################################################################# +#====== FARM COMPONENTS: diets # +################################################################################################################# + + +################################################################################################################# +#====== FARM COMPONENTS: time schemes # +################################################################################################################# + + +################################################################################################################# +#====== FARM COMPONENTS: groups # +################################################################################################################# + + +################################################################################################################# +#====== FARM COMPONENTS: operations # +################################################################################################################# + + +################################################################################################################# +#====== FARM COMPONENTS: transfers # +################################################################################################################# + + +################################################################################################################# +#====== FARM COMPONENTS: perturbations # +################################################################################################################# + + +################################################################################################################# +#====== FARM COMPONENTS: parcels # +################################################################################################################# + +