Identification of QTL for resistance to Mediterranean corn borer in a maize tropical line to improve temperate germplasm LF Samayoa1, RA Malvar1, MD McMullen2, A Butrón1 1Misión Biológica de Galicia, Spanish National Research Council (CSIC), P.O. Box 28, 36080 Pontevedra, Spain. 2Plant Sciences Research Unit, USDA-Agricultural Research Service; and Division of Plant Sciences, University of Missouri, Columbia, MO, 65211, USA – retired. Corresponding author: Luis Fernando Samayoa (Misión Biológica de Galicia-CSIC) E.mail: fsamayoa@mbg.csic.es ************************************************** SAS code ******************************************************; *** Estimation of BLUE for all traits ***; ************* 2011 ****************; ******** BLUEs per year ***********; %macro BLUE(trait=); PROC MIXED DATA = a.B73xcml103_11 COVTEST; CLASS Nomvar Rep Block; MODEL &trait = Nomvar/SOLUTION; RANDOM Rep Block(Rep)/SOLUTION; ODS LISTING EXCLUDE solutionR; ODS OUTPUT solutionF = fixed_effects_&trait solutionR = random_effects_&trait; RUN; %mend BLUE; %BLUE(trait = Encat); %BLUE(trait = Encar); %BLUE(trait = Flomas); %BLUE(trait = Flofem); %BLUE(trait = Humed); %BLUE(trait = Rendim); %BLUE(trait = Rendimc); %BLUE(trait = Alplan); %BLUE(trait = Longal); %BLUE(trait = Longalr); %BLUE(trait = AG); %BLUE(trait = AP); run; %macro SUM (trait=); data line_effects_&trait; set fixed_effects_&trait; if effect = "Nomvar"; dum = 1; keep nomvar estimate dum; data mu_&trait; set fixed_effects_&trait; if effect = "Intercept"; mu = estimate; dum = 1; keep dum mu; data BLUEs_&trait; merge line_effects_&trait mu_&trait; by dum; Blue_&trait = mu + estimate; run; %mend SUM; %SUM(trait = Encat); %SUM(trait = Encar); %SUM(trait = Flomas); %SUM(trait = Flofem); %SUM(trait = Humed); %SUM(trait = Rendim); %SUM(trait = Rendimc); %SUM(trait = Alplan); %SUM(trait = Longal); %SUM(trait = Longalr); %SUM(trait = AG); %SUM(trait = AP); run; data BLUEs_BCML_11; merge Blues_encat Blues_encar Blues_flomas Blues_flofem Blues_humed Blues_rendim Blues_rendimc Blues_Alplan Blues_longal Blues_longalr Blues_AG Blues_AP; by Nomvar; drop Estimate dum mu; run; quit; ************* 2012 ****************; ******** BLUEs per year ***********; %macro BLUE(trait=); PROC MIXED DATA = a.B73xcml103_12 COVTEST; CLASS Nomvar Rep Block; MODEL &trait = Nomvar/SOLUTION; RANDOM Rep Block(Rep)/SOLUTION; ODS LISTING EXCLUDE solutionR; ODS OUTPUT solutionF = fixed_effects_&trait solutionR = random_effects_&trait; RUN; %mend BLUE; %BLUE(trait = Encat); %BLUE(trait = Encar); %BLUE(trait = Flomas); %BLUE(trait = Flofem); %BLUE(trait = Humed); %BLUE(trait = Rendim); %BLUE(trait = Rendimc); %BLUE(trait = Alplan); %BLUE(trait = Longal); %BLUE(trait = Longalr); %BLUE(trait = AG); %BLUE(trait = AP); run; %macro SUM (trait=); data line_effects_&trait; set fixed_effects_&trait; if effect = "Nomvar"; dum = 1; keep nomvar estimate dum; data mu_&trait; set fixed_effects_&trait; if effect = "Intercept"; mu = estimate; dum = 1; keep dum mu; data BLUEs_&trait; merge line_effects_&trait mu_&trait; by dum; Blue_&trait = mu + estimate; run; %mend SUM; %SUM(trait = Encat); %SUM(trait = Encar); %SUM(trait = Flomas); %SUM(trait = Flofem); %SUM(trait = Humed); %SUM(trait = Rendim); %SUM(trait = Rendimc); %SUM(trait = Alplan); %SUM(trait = Longal); %SUM(trait = Longalr); %SUM(trait = AG); %SUM(trait = AP); run; data BLUEs_BCML_12; merge Blues_encat Blues_encar Blues_flomas Blues_flofem Blues_humed Blues_rendim Blues_rendimc Blues_Alplan Blues_longal Blues_longalr Blues_AG Blues_AP; by Nomvar; drop Estimate dum mu; run; quit; ************* Combined analysis ****************; ************* BLUEs across year ****************; %macro BLUE(trait=); PROC MIXED DATA = a.B73xcml103 COVTEST; CLASS Year Nomvar Rep Block; MODEL &trait = Nomvar/SOLUTION; RANDOM Year Rep(Year) Block(Rep*Year) Nomvar*Year/SOLUTION; ODS LISTING EXCLUDE solutionR; ODS OUTPUT solutionF = fixed_effects_&trait solutionR = random_effects_&trait; RUN; %mend BLUE; %BLUE(trait = Encat); %BLUE(trait = Encar); %BLUE(trait = Flomas); %BLUE(trait = Flofem); %BLUE(trait = Humed); %BLUE(trait = Rendim); %BLUE(trait = Rendimc); %BLUE(trait = Alplan); %BLUE(trait = Longal); %BLUE(trait = Longalr); %BLUE(trait = AG); %BLUE(trait = AP); run; *Contruct the line BLUEs as sum of mu and line effect estimation; %macro SUM (trait=); data line_effects_&trait; set fixed_effects_&trait; if effect = "Nomvar"; dum = 1; keep nomvar estimate dum; data mu_&trait; set fixed_effects_&trait; if effect = "Intercept"; mu = estimate; dum = 1; keep dum mu; data BLUEs_&trait; merge line_effects_&trait mu_&trait; by dum; Blue_&trait = mu + estimate; run; %mend SUM; %SUM(trait = Encat); %SUM(trait = Encar); %SUM(trait = Flomas); %SUM(trait = Flofem); %SUM(trait = Humed); %SUM(trait = Rendim); %SUM(trait = Rendimc); %SUM(trait = Alplan); %SUM(trait = Longal); %SUM(trait = Longalr); %SUM(trait = AG); %SUM(trait = AP); run; data BLUE_BCML_com; merge Blues_encat Blues_encar Blues_flomas Blues_flofem Blues_humed Blues_rendim Blues_rendimc Blues_Alplan Blues_longal Blues_longalr Blues_AG Blues_AP; by Nomvar; drop Estimate dum mu; run; ********** Estimation of heritabilities for all traits **********; ********** The following code have been obtanined from http://www4.ncsu.edu/~jholland/heritability.html (Holland et al. 2003) **********; DATA a.B73xCML103_no_p; SET B73xCML103; IF check>0 THEN DELETE; run; proc sort data= a.B73xCML103_no_p; by year; run; %MACRO HER (trait=); proc mixed data=a.B73xCML103_no_p asycov; class year rep block ril; model &trait= ; random year rep(year) block(rep*year) ril ril*year; ods listing exclude AsyCov CovParm; ods output asycov = covmat covparms = estmat; proc iml; start seh(V, C, LG, LP, H, SE); Vp = LP`*V; Vg = LG`*V; H = VG/Vp; d = (1/Vp)*(LG - (LP*H)); VH = d`*C*d; SE = sqrt(VH); finish seh; use estmat; read all into v; use covmat; read all into c; * Note that SAS introduces an extra first column into the matrix which must be removed; C = C(|1:nrow(C), 2:ncol(C)|); *order of variance components in v and c matrices is V(E), V(R), V(B), V(G), V(GE), V(error); LG = {0, 0, 0, 1, 0, 0}; LP = {0, 0, 0, 1, 1, 1}; call seh(V, C, LG, LP, H, SE); print "Heritability on a Plot Basis", H, SE; *based on the data structure, we computed that the harmonic mean of environments in which lines were tested was 4.9, and the harmonic mean of total replications across all environments per line was 14.7; e = 2; r = 4; LP = 0//0//0//1//(1/e)//(1/r); call seh(V, C, LG, LP, H, SE); print "Heritability on a Family Mean Basis", H, SE; quit; run; %MEND HER; %HER (trait = Stem_lodging); %HER (trait = Days_to_Anthesis); %HER (trait = Days_to_Silking); %HER (trait = Yield); %HER (trait = Plant_height); %HER (trait = Tunnel_length); %HER (trait = Kernel_resist); %HER (trait = Shank_resist); %HER (trait = Stalk_damaged); run; ********** Estimation of genotypic and phenotypic correlation between traits **********; ********** The following code have been obtanined from http://www4.ncsu.edu/~jholland/heritability.html (Holland JB, 2006) **********; proc sort data= a.B73xCML103_no_p; by year; run; *first, estimate variance components for each trait separately to compare to multivariate analysis below; %macro VARCOMP(trait); proc mixed data =a.B73xCML103_no_p; class year rep block ril; model &trait = ; random year rep(year) block(rep*year) ril ril*year; *also check effect of setting years, reps, and blocks fixed on other variance components; proc mixed data =a.B73xCML103_no_p; class year rep block ril; model &trait = year rep(year) block(rep*year); random ril ril*year; run; %mend VARCOMP; %VARCOMP (trait = Stem_lodging); %VARCOMP (trait = Days_to_Anthesis); %VARCOMP (trait = Days_to_Silking); %VARCOMP (trait = Yield); %VARCOMP (trait = Plant_height); %VARCOMP (trait = Tunnel_length); %VARCOMP (trait = Kernel_resist); %VARCOMP (trait = Shank_resist); %VARCOMP (trait = Stalk_damaged); run; *restructure data set for multivariate reml analysis; data two; length trait $ 15; set a.B73xCML103_no_p; trait = "Stem_lodging"; y = Stem_lodging; output; trait = "Days_to_anthesis"; y = Days_to_anthesis; output; trait = "Days_to_silking"; y = Days_to_silking; output; trait = "Yield"; y = Yield; output; trait = "Plant_height"; y = Plant_height; output; trait = "Tunnel_length"; y = Tunnel_length; output; trait = "Kernel_resist"; y = Kernel_resist; output; trait = "Shank_resist"; y = Shank_resist; output; trait = "Stalk_damaged"; y = Stalk_damaged; output; drop Stem_lodging Days_to_anthesis Days_to_silking Yield Plant_height Tunnel_length Kernel_resist Shank_resist Stalk_damaged; * analyze variables pair-wise; %MACRO corr(trait1, trait2); data traits; set two; if trait = "&trait1" or trait = "&trait2"; proc mixed asycov data = traits; class trait year rep ril; model y = year(trait) rep(year*trait) block(rep*year*trait); random trait/subject = ril type = un; random trait/subject = ril*year type = un; repeated trait/ sub = rep*ril(year) type = un; ods output covparms = estmat; ods output asycov = covmat; run; proc iml; use estmat; read all into e; use covmat; read all into cov; * Note that SAS introduces an extra first column into the covariance matrix which must be removed; C = cov(|1:nrow(cov), 2:ncol(cov)|); * Obtain nomvartypic and phenotypic covariance and variance components; CovG = e(|2,1|); VG1 = e(|1,1|); VG2 = e(|3,1|); CovP = CovG + e(|5,1|) + e(|8,1|); VP1 = VG1 + e(|4,1|) + e(|7,1|); VP2 = VG2 + e(|6,1|) + e(|9,1|); * Create a module called "correl" that will estimate nomvartypic and phenotypic correlations and their standard errors; start correl(C, CovG, VG1, VG2, CovP, VP1, VP2, RG, RP, SERG, SERP); RG = CovG/sqrt(VG1*VG2); *Make the derivative vector for rg, note that the order of the rows and columns of the variance covariance matrix is VG1, CovG, VG2, VGE1, CovGE, VGE2, VError1, CovError, VError2; dg = (-1/(2*VG1))//(1/CovG)//(-1/(2*VG2))//0//0//0//0//0//0; varrg = (RG**2)*dg`*C*dg; serg = sqrt(varrg); RP = CovP/sqrt(VP1*VP2); *Make the derivate vector for rp; d1p = -1/(2*VP1); d2p = 1/CovP; d3p = -1/(2*VP2); dp= d1p//d2p//d3p//d1p//d2p//d3p//d1p//d2p//d3p; varrp = (RP**2)*dp`*C*dp; serp = sqrt(varrp); finish correl; call correl(C, CovG, VG1, VG2, CovP, VP1, VP2, RG, RP, SERG, SERP); print "Genotypic Correlation Between &trait1 and &trait2"; print RG serg; print "Phenotypic Correlation Between &trait1 and &trait2"; print RP serp; run; %mend corr; %corr(Stem_lodging,Days_to_anthesis); %corr(Stem_lodging,Days_to_silking); %corr(Stem_lodging,Yield); %corr(Stem_lodging,Plant_height); %corr(Stem_lodging,Tunnel_length); %corr(Stem_lodging,Kernel_resist); %corr(Stem_lodging,Shank_resist); %corr(Stem_lodging,Stalk_damaged); %corr(Days_to_anthesis,Days_to_silking); %corr(Days_to_anthesis,Yield); %corr(Days_to_anthesis,Plant_height); %corr(Days_to_anthesis,Tunnel_length); %corr(Days_to_anthesis,Kernel_resist); %corr(Days_to_anthesis,Shank_resist); %corr(Days_to_anthesis,Stalk_damaged); %corr(Days_to_silking,Yield); %corr(Days_to_silking,Plant_height); %corr(Days_to_silking,Tunnel_length); %corr(Days_to_silking,Kernel_resist); %corr(Days_to_silking,Shank_resist); %corr(Days_to_silking,Stalk_damaged); %corr(Yield,Plant_height); %corr(Yield,Tunnel_length); %corr(Yield,Kernel_resist); %corr(Yield,Shank_resist); %corr(Yield,Stalk_damaged); %corr(Plant_height,Tunnel_length); %corr(Plant_height,Kernel_resist); %corr(Plant_height,Shank_resist); %corr(Plant_height,Stalk_damaged); %corr(Tunnel_length,Kernel_resist); %corr(Tunnel_length,Shank_resist); %corr(Tunnel_length,Stalk_damaged); %corr(Kernel_resist,Shank_resist); %corr(Kernel_resist,Stalk_resist); %corr(Shank_resist,Stalk_damaged); run; quit; c================================================ PlabMQL code =================================================== c ------- CIM RILs per se EP42xA637 Permutations PlabM ---------- out 0 0 0 -1 load bxcml.qdt trait Encat Encar Flomas Flofem Humed Rendim Rendimc Alplan Longal Longalr AG AP scan 1 2 cov SELECT permute 1000 run stop c -------- CIM RILs B73xCML103 CV/g Stem lodging-------- out 0 0 1 1 1 load b73xcml.qdt trait Encat scan 1 2.90 cov SELECT cross/p 1000 run stop c -------- CIM RILs B73xCML103 CV/g Days to silking-------- out 0 0 1 1 1 load b73xcml.qdt trait Flofem scan 1 2.90 cov SELECT cross/p 1000 run stop c -------- CIM RILs B73xCML103 CV/g Yield-------- out 0 0 1 1 1 load b73xcml.qdt trait Rendim scan 1 2.90 cov SELECT cross/p 1000 run stop c -------- CIM RILs B73xCML103 CV/g Plant height-------- out 0 0 1 1 1 load b73xcml.qdt trait Alplan scan 1 2.90 cov SELECT cross/p 1000 run stop c -------- CIM RILs B73xCML103 CV/g Tunnel length-------- out 0 0 1 1 1 load b73xcml.qdt trait Longal scan 1 2.90 cov S21857791 S73132746 S14791371 cross/p 1000 run stop c -------- CIM RILs B73xCML103 CV/g Stalk damaged-------- out 0 0 1 1 1 load b73xcml.qdt trait Longalr scan 1 2.90 cov SELECT cross/p 1000 run stop c -------- CIM RILs B73xCML103 CV/g Kernel resistance-------- out 0 0 1 1 1 load b73xcml.qdt trait AG scan 2 2.90 cov SEL cross/p 1000 run stop c -------- CIM RILs B73xCML103 CV/g Shank resistance-------- out 0 0 1 1 1 load b73xcml.qdt trait AP scan 1 2.90 cov SELECT cross/p 1000 run stop