Data cleaning algorithms with applications to micro-array experiments