def read_input(in_fn):
    """Read annotated (summarized) input csv file.

    In this file, every line represents a guide-target pair.

    Args:
        in_fn: path to input file

    Returns:
        list of dicts where each element corresponds to a row
    """
    col_names = {}
    lines = []
    with open(in_fn) as f:
        for i, line in enumerate(f):
            # Split the line and skip the first column (row number)
            ls = line.rstrip().split(',')
            ls = ls[1:]

            if i == 0:
                # Read header
                for j, col_name in enumerate(ls):
                    col_names[j] = col_name
            else:
                # Read line
                row = {}
                for j, val in enumerate(ls):
                    row[col_names[j]] = val
                lines += [row]
    return lines