<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def gatk_splitreads(data):
 """ use GATK to split reads with Ns in the CIGAR string, hard clipping regions that end up in introns """

    broad_runner = broad.runner_from_config(dd.get_config(data))
    ref_file = dd.get_ref_file(data)
    deduped_bam = dd.get_deduped_bam(data)
    base, ext = os.path.splitext(deduped_bam)
    split_bam = base + ".splitN" + ext
    if file_exists(split_bam):
        data = dd.set_split_bam(data, split_bam)
        return data
    gatk_type = broad_runner.gatk_type()
    with file_transaction(data, split_bam) as tx_split_bam:
        params = ["-T", "SplitNCigarReads",
                  "-R", ref_file,
                  "-I", deduped_bam]
        if gatk_type == "gatk4":
            params += ["--output", tx_split_bam]
        else:
            params += ["-rf", "ReassignOneMappingQuality",
                       "-RMQF", "255",
                       "-RMQT", "60",
                       "-rf", "UnmappedRead",
                       "-U", "ALLOW_N_CIGAR_READS",
                       "-o", tx_split_bam]
            if dd.get_quality_format(data) == "illumina":
                params += ["--fix_misencoded_quality_scores", "-fixMisencodedQuals"]
        broad_runner.run_gatk(params)
    bam.index(split_bam, dd.get_config(data))
    data = dd.set_split_bam(data, split_bam)
    return data