Analysis of large-scale expression data is greatly facilitated by the availability of gene ontologies (GOs). Many current methods test whether sets of transcripts annotated with specific ontology terms contain an excess of changed transcripts. This approach suffers from two main limitations. First, since gene expression is continuous rather than discrete, designating a gene as changed or unchanged is arbitrary and oblivious to the actual magnitude of the change. Second, by considering only the number of changed genes, finer changes in expression patterns associated with the category may be ignored. Since genes generally participate in multiple networks, widespread and subtle modifications in expression patterns are at least as important as extreme increases/decreases of a few genes.