move per-column code into a separate function and fix a bug related to human disease observation