def latex_bowtie(input, output, param): json_dict = json_load(input["json"]) basic_map_table = [] for sam in json_dict["stat"]: basic_map_table.append( [ underline_to_space(sam), json_dict["stat"][sam]["total_reads"], json_dict["stat"][sam]["mappable_reads"], json_dict["stat"][sam]["mappable_rate"], ] ) latex = JinjaTemplateCommand( name="mapping quality", template=input["template"], param={ "section_name": "bowtie", "basic_map_table": basic_map_table, "mappable_ratio_graph": json_dict["output"]["pdf"], "render_dump": output["latex"], }, ) template_dump(latex)
def latex_fastqc(input, output, param): json_dict = json_load(input["json"]) fastqc_summary = [] stat = json_dict["stat"] for sample in stat: fastqc_summary.append([underline_to_space(sample), stat[sample]["sequence_length"], stat[sample]["median"]]) latex = JinjaTemplateCommand( template=input["template"], param={"section_name": "sequence_quality", "path": json_dict["output"]["pdf"], "fastqc_table": fastqc_summary, "fastqc_graph": json_dict["output"]["pdf"], 'prefix_dataset_id': [ underline_to_space(i) for i in stat.keys() ], "render_dump": output["latex"]}) template_dump(latex)
def stat_fastqc(input={"db": "", "fastqc_summaries": [], "template": ""}, output={"R": "", "json": "", "pdf": ""}, param={"ids": [], "id": ""}): json_dict = {"stat": {}, "input": input, "output": output, "param": param} stat = json_dict["stat"] quality_medians = [] for a_summary, a_id in zip(input["fastqc_summaries"], param["ids"]): parsed = _python_fastqc_parse(input=a_summary) stat[a_id] = {} stat[a_id]["median"] = parsed["median"] stat[a_id]["cutoff"] = 25 stat[a_id]['judge'] = "Pass" if parsed["median"] > 25 else "Fail" stat[a_id]["sequence_length"] = parsed["sequence_length"] quality_medians.append(parsed["median"]) # The table of fastqc_summary that will be used for rendering # Col 1: sample ID # Col 2: sequence length # Col 3: median of sequence quality qc_db = sqlite3.connect(input["db"]).cursor() qc_db.execute("SELECT median_quality FROM fastqc_info") history_data = [float(i[0]) for i in qc_db.fetchall()] fastqc_dist_r = JinjaTemplateCommand( template=input["template"], param={'historic_data': history_data, 'current_data': quality_medians, 'ids': [underline_to_space(i) for i in param["ids"]], 'cutoff': 25, 'main': 'Sequence Quality Score Cumulative Percentage', 'xlab': 'sequence quality score', 'ylab': 'fn(sequence quality score)', "need_smooth_curve": True, "pdf": output["pdf"], "render_dump": output["R"]}) template_dump(fastqc_dist_r) r_exec(fastqc_dist_r) json_dump(json_dict)
def latex_macs2(input, output, param): # TODO: qian work out the peaks_summary_result part json_dict = json_load(input["json"]) summary = [underline_to_space(json_dict["param"]["id"]), json_dict["stat"]["qvalue"], json_dict["stat"]["totalpeak"], json_dict["stat"]["peaksge10"], json_dict["stat"]["shiftsize"]] high_confident_latex = JinjaTemplateCommand( name = "high confident latex", template = input["template"], param = {"section_name": "high_confident_peaks", "peak_summary_table": summary, "high_confident_peak_graph": json_dict["output"]["pdf"], "render_dump": output["latex"]}) template_dump(high_confident_latex)
def _2space(id): return underline_to_space(id)