Sum of all covariables value per patient is 1 I have a database with only 27 patients, and each patient was analyzed for the more than 119 different bacterial species. We test the percentage of each bacterial species among all the 119 species for each patients. So, for each patient, the total percentage of all bacteria species is same: 1. The data set is displayed like this: 
ID   Y bacterial_1      bacteria_2       ...     bacterial_3119    toal
1    -1.2   0.0002              0.0003       ...     0.0004             1
2    -2.6   0.0001              0.0004       ...     0.0006             1
.. 
27   -0.5   0.006               0.0003       ...     0.0001             1

The Y indicates the weight loss of each patient during a experimental period (fasting) for 30 days. 
My question is how to identify the bacterial species which are correlated with Y. 
But I am not sure of my whole analysis procedure. 
Considering too many (119) species (independent variables) but only 27 patients, I don't think I could input all species variables into a multiple liner regression, and using some variable selection procedure to define the optimal model. 
So I use cor.test(Y,X1) (x1 indicates one species) for all Xs to select only the significant Xs. For instance, I have X1,X5,X6,X100 these four IV and then input them into multiple lm model, which turns out having X1,X5,X100 with p <.05. I therefore only include these three variables into my model.  
I'm wondering if my analysis has some problems? Especially I'm a little concerned that all Xs sum up as 1. So, it seems like independent observations per patient. Correct? If so, then what should I do?
 A: The odds are definitely stacked against you in a wide-data scenario like this, where you have 119 covariates but only 27 cases. Don't be too surprised if you end up without much to show for your work.
Significance tests aren't generally a good way to do variable selection; fortunately, there are better ways, and also ways to approach wide-data problems that don't use variable selection per se. Penalized regression methods, such as ridge regression and lasso regression, are a good first port of call here. Whereas OLS is unidentifiable with wide data, penalized regression isn't, and in fact, was originally developed for the specific problem of wide data.
One simple kind of variable selection that's always a good idea to do, even in combination with automatic methods, is a first step where you check that each of the 119 predictors have reasonable variability. If a predictor has the same value for all but (say) 3 or fewer cases, it's next to impossible for it to have much predictive value, so you can throw it out.
Finally, you're right to be concerned by how the percentages always add up to 1, which means that they're linearly dependent. To fix this, simply remove one predictor of your choice (before doing any of the above). This is the same sort of thing as coding a categorical variable with $n$ levels into $n - 1$ dummy variables instead of $n$.
