A common requirement of many scienti c applications is the ability to process queries involving expensive predicates corresponding to user programs. Optimizing such queries is hard because static cost predictions and statistical estimates are not applicable. In this paper, we propose a novel approach, called Cherry Picking (CP), based on the modelling of data dependencies among expensive predicate input values as a k-partite graph. We show how CP can be easily integrated into a cost-based query processor. We propose a CP Greedy algorithm that processes the graph by selecting candidate values that minimize query execution cost, and the Epredicate algorithm that processes tuples in pipeline following the CP approach. Based on performance simulation, we show that these algorithms yields executions up to 86% faster than statically chosen pipeline strategies.