Reverse engineering gene regulatory networks