How to compare plant response to stress? I am looking for advice on analysis of a greenhouse experiment.
I had 3 levels of stress (drought) treatments, and seeds were from 4 enviromental "Sources".  I grew 5 plants per "Line", approx 10 Lines were from each Source.
I measured initial and final diam and heights of all plants, then dried them and got weights of roots, stems, and leaves, in g.

*

*I would like to know how the treatments affected growth of the plants, ie ht, diam, volume, totalweight, proportion of root to total, etc.

I have created some mixed models of each "trait", for example y=totalweight, using "Treatment" as fixed effect with Line as random effect. Line is nested in Source, and Im interested if there if an effect of source on y, Im not sure how to include source in mixed models.
I used these models to get BLUPs for traits for each Line. I am confused how to interpret these in terms of treatment effect though. I am guessing that each Line BLUP would be added to the mean Treatment effect coefficient to predict y? Then the predicted value of the trait would be expressed as, eg TotalMass in High drought. Advice and guidance would be appreciated.


*Im also curious how these "traits" correlate, I plotted and looked at cor() for pairs of numeric variables, but Im confused especially about the proportional measures.  Id like to know how the treatment affected the proportion of eg leaf weight of totalweight ~ total weight. These did seem to be significant correlations, but is there an issue with using proportions like this?  Or a better way to look at/ graph proportions of plant parts in each treatment?


*Because Im interested in plants that are tolerant to stress, I computed a response measure that looks at the effect of treatment vs control, ie HtGrowth.Response = (htGrowthtreatment-htGrowthcontrol)/(*htGrowthcontrol)
*mean of 5 plants per Line per treatment.  This allows Lines and Sources to be sorted by this measure, but it seems like I lose info when I used averages, so Im wondering if theres a better way to do this.
I am learning statistics and R as I go and grateful for any advice and suggestions, even if it is to go elsewhere.
Please let me know if I need to clarify - my knowledge is fuzzy so Im not sure if Im asking the right questions.

I do not have a domain knowledge in your field. But from what I understood you want to evaluate the effects of two categorical variables "Treatment" and "Source" on a trait like height (and other traits). Please correct me if I am wrong. By "line" if you literally mean the lines in which plants are planted sequentially (this is my understanding from a crop field), then I don't see how that matters to be included in the model. What's the difference if a plant is planted in line one versus another one in the vicinity line?
For evaluation of the difference between categorical variables with respect to a target variable, ANOVA is commonly used. But I would prefer using the lm() function in R and fit a LR model. So here is how I do it:
# ---- simulating some data ------
# Sources: 1 , 2
# Treatments: A, B
# Lines: y,z

A1y = rnorm(100 ,10, 2)
A1z = rnorm(100 ,10, 2)
A2y = rnorm(100 ,10, 2)
A2z = rnorm(100 ,10, 2)

B1y = rnorm(100 ,0, 2)
B1z = rnorm(100 ,0, 2)
B2y = rnorm(100 ,10, 2)
B2z = rnorm(100 ,0, 2)


df = data.frame(trait = c(A1y, A1z, A2y, A2z, B1y, B1z, B2y, B2z),
                group = c(rep('A1y',100), 
                          rep('A1z',100),
                          rep('A2y',100), 
                          rep('A2z',100),
                          rep('B1y',100),
                          rep('B1z',100),
                          rep('B2y',100),
                          rep('B2z',100)))


lm.fit = lm(trait ~ -1 + group, data = df)
GGally::ggcoef_model(lm.fit)


Here are the results:

