def picard_mark_duplicates(job, bam, bai, validation_stringency='<STR_LIT>'):
work_dir = job.fileStore.getLocalTempDir()<EOL>job.fileStore.readGlobalFile(bam, os.path.join(work_dir, '<STR_LIT>'))<EOL>job.fileStore.readGlobalFile(bai, os.path.join(work_dir, '<STR_LIT>'))<EOL>command = ['<STR_LIT>',<EOL>'<STR_LIT>',<EOL>'<STR_LIT>',<EOL>'<STR_LIT>',<EOL>'<STR_LIT>',<EOL>'<STR_LIT>',<EOL>'<STR_LIT>' % validation_stringency.upper()]<EOL>docker_parameters = ['<STR_LIT>',<EOL>'<STR_LIT>', '<STR_LIT:none>',<EOL>'<STR_LIT>', '<STR_LIT>'.format(job.memory),<EOL>'<STR_LIT>', '<STR_LIT>'.format(work_dir)]<EOL>start_time = time.time()<EOL>dockerCall(job=job, workDir=work_dir,<EOL>parameters=command,<EOL>tool='<STR_LIT>',<EOL>dockerParameters=docker_parameters)<EOL>end_time = time.time()<EOL>_log_runtime(job, start_time, end_time, "<STR_LIT>")<EOL>bam = job.fileStore.writeGlobalFile(os.path.join(work_dir, '<STR_LIT>'))<EOL>bai = job.fileStore.writeGlobalFile(os.path.join(work_dir, '<STR_LIT>'))<EOL>return bam, bai<EOL>
Runs Picard MarkDuplicates on a BAM file. Requires that the BAM file be coordinate sorted.

:param JobFunctionWrappingJob job: passed automatically by Toil
:param str bam: FileStoreID for BAM file
:param str bai: FileStoreID for BAM index file
:param str validation_stringency: BAM file validation stringency, default is LENIENT
:return: FileStoreIDs for BAM and BAI files
:rtype: tuple