EDIT#1 seems more reasonable than EDIT#2 depending on your experimental plan, i.e. if you want to perform comparisons in one genome between multiple conditions, a normalized expression level would be much more reliable than raw sequencing depth for a given gene. Imagine that your sequencing depth is not the same between two samples? The whole analysis is wrong. Even if you want to compare genes expression within a given sample, normalization across genomes can be an interesting choice, especially RPKM that are designed to rank genes expression within a given sample (while TPM are, by design, better to compare a given gene expression between samples).
If you are analyzing metagenomes expression, I would add the species/genus name in a given column of your data frame and get all the expressed genes in one table where all expression levels are normalized. You estimate individual genes expression from a pool of reads, just like in classical RNA-seq, in metatranscriptomics, it just happens that these reads are coming from different organisms. Thus, I think it's still better to normalize genes expression.
Never analyzed metatranscriptomics, so please, read my comment with a grain of salt.
It is not at all clear to me that those normalizations are sound when used on only a subset of genes.
Yep, that is exactly my doubt.
I don't think that RPKM or TPM are meant to be calculated for a handful of genes, you need to compute them genome-wide and keep the same values after subsetting genes.
In my workflow, the reads are mapped to certain known genes of a metagenome. While I cannot include other genes because these 700 are all I have, I still have the total number of reads. Would it help, to create a fake gene called "not_assigned" to which I assign all the reads that aren't assigned to any of the 700 genes in my gene set? And then keep it in for the RPKM and TPM calculation