def get_report_ntest(self, doc: Printer): doc.add_heading( "Фактор {}. Эталон {}".format(self.factor_name, self.std.name), 0) doc.add_heading( "Результаты тестирования нормальности распределения расстояний от максимумов значений эталона", 1) report_ntest(self.ntest, doc)
def get_report_ntest(self, doc: Printer): doc.add_heading( "Эталон {}. Фактор {}".format(self.std.name, self.factor_name), 0) doc.add_heading( "Результаты тестирования нормальности распределения расстояний фактор-образцов", 1) report_ntest(self.ntest, doc)
def report_std(std: Standard, doc: Printer): doc.add_heading("Эталон {}".format(std.name), 1) doc.add_paragraph("Количество значений равно = {}".format(len(std.data))) doc.add_paragraph(str_arr(std.data)) doc.add_paragraph("Количество максимумов равно = {}".format( len(std.seq_max))) doc.add_paragraph(str_arr(std.seq_max))
def report_ntest(report, doc: Printer): res_ok = "пройден" res_nok = "не пройден" shapiro = report["shapiro"] doc.add_paragraph("Тест нормальности Шапиро-Вилка: {}".format( res_ok if shapiro["res"] else res_nok)) agostino = report["agostino"] doc.add_paragraph( "Тест нормальности Д'Агостино и Пирсона: из {0} прогонов доля {1}/{0} = {2:.2f} отклоняет " "гипотезу о нормальности на уровне отклонения {3}".format( agostino["num_tests"], agostino["num_rejects"], agostino["ratio"], agostino["alpha"])) ks = report["ks"] doc.add_paragraph( "Тест нормальности Колмогорова-Смирнова: из {0} прогонов доля {1}/{0} = {2:.2f} отклоняет " "гипотезу о нормальности на уровне отклонения {3}".format( ks["num_tests"], ks["num_rejects"], ks["ratio"], ks["alpha"])) if report['qq'] and doc.destination == "doc": img = plot_image(test_normal_plot, report) doc.add_paragraph("QQ-тест:") doc.add_picture(img, width=Cm(12.5))
def get_report_stat_apl(self, doc: Printer): doc.add_heading( "Фактор {}. Эталон {}".format(self.factor_name, self.std.name), 0) doc.add_heading( "Результат статистического анализа распределения расстояний от максимумов амплитуд значений эталона", 1) report_stats(self.stat_apl, doc)
def get_report_stat(self, doc: Printer): doc.add_heading( "Эталон {}. Фактор {}".format(self.std.name, self.factor_name), 0) doc.add_heading( "Результат статистического анализа распределения расстояний фактор-образцов", 1) report_stats(self.stat, doc)
def report_sample_factor(sample: Sample, factor: int, doc: Printer): doc.add_heading("Фактор-образец {}".format(FACTORS[factor].lower()), 2) doc.add_paragraph("Количество значений равно = {}".format( len(sample.data[factor]))) doc.add_paragraph(str_arr(sample.data[factor])) doc.add_paragraph("Количество максимумов равно = {}".format( len(sample.seq_max[factor]))) doc.add_paragraph(str_arr(sample.seq_max[factor]))
def dialog_sample_std(self, factor): fname = dialog_save_report("{} {}".format(self.sample.display_file(factor), self.std.display_file())) if not fname: return if factor == FACTORS_ALL: Printer("doc", self.report.get_report).print(fname) else: Printer("doc", self.reports[factor].get_report).print(fname)
def get_report_ntest_apl(self, doc: Printer): # TODO: Костыль 5, стоит от этого избавиться doc.add_heading( "Фактор {}. Эталон {}".format(FACTORS[self.factor], self.std.name), 0) doc.add_heading( "Результаты тестирования нормальности распределения расстояний амплитуд эталона", 1) report_ntest(self.ntest_apl, doc)
def dialog_std_sample(self, factor): fname = dialog_save_report("Эталон {} {}".format( self.std.name, self.sample.display_file(factor))) if not fname: return if factor == FACTORS_ALL: Printer('doc', self.report.get_report).print(fname) else: Printer('doc', self.reports[factor].get_report).print(fname)
def get_report_stat_apl(self, doc: Printer): # TODO: Костыль 4, стоит от этого избавиться doc.add_heading( "Фактор {}. Эталон {}".format(FACTORS[self.factor], self.std.name), 0) doc.add_heading( "Результат статистического анализа распределения расстояний амплитуд эталона", 1) report_stats(self.stat_apl, doc)
def save_report(self): factor = QDialogStds.settings(self, get_stds=False) if factor is None: return fname = dialog_save_report("{} {}".format(Sample.display_file_group(factor), self.std.display_file())) if not fname: return if factor == FACTORS_ALL: Printer("doc", self.report.get_report).print(fname) else: Printer("doc", self.reports[factor].get_report).print(fname)
def save_report_group(self): factor, stds = QDialogStds.settings(self, get_stds=True, std_main=self.std.name) if factor is None: return fname = dialog_save_report("{} Группа эталонов".format(Sample.display_file_group(factor))) if not fname: return stds = [Standard.standards[std] for std in stds] if factor == FACTORS_ALL: report = MulSamplesMulStandards(self.samples, stds) else: report = MulFactorSamplesMulStandards(self.samples, factor, stds) Printer("doc", report.get_report).print(fname)
def save_report_group(self): factor, stds = QDialogStds.settings(self, get_stds=True, std_main=self.std.name) if factor is None: return if not len(stds): return if len(stds) == 1: self.dialog_std_sample(factor) else: fname = dialog_save_report("Группа эталонов {}".format( self.sample.display_file(factor))) stds = [Standard.standards[std] for std in stds] if not fname: return if factor == FACTORS_ALL: report = MulStandardsSample(stds, self.sample) else: report = MulStandardsFactorSample(stds, self.sample, factor) Printer('doc', report.get_report).print(fname)
def get_report(self, doc: Printer): doc.add_heading( "Группа эталонов. {} {}".format(self.sample_name, self.factor_name), 0) doc.add_heading( "Последовательности расстояний от фактор-образца {}".format( self.factor_name), 1) for std, xr in zip(self.stds, self.distance): doc.add_heading( "Последовательность расстояний до эталона {}".format(std.name), 2) doc.add_paragraph("Количество значений равно = {}".format(len(xr))) doc.add_paragraph(str_arr(xr)) doc.add_heading( "Результаты визуального анализа распределения расстояний от фактор-образца {}" .format(self.factor_name), 1) for std, va in zip(self.stds, self.va): doc.add_heading( "Результаты визуального анализа распределения расстояний до эталона {}" .format(std.name), 2) doc.add_picture(va) doc.add_heading( "Результаты статистического анализа распределения расстояний от фактор-образца {}" .format(self.factor_name), 1) for std, stat in zip(self.stds, self.stat): doc.add_heading( "Результаты статистического анализа распределения расстояний до эталона {}" .format(std.name), 2) report_stats(stat, doc) doc.add_heading( "Результаты тестирования нормальности распределения расстояний от фактор-образца {}" .format(self.factor_name), 1) for std, ntest in zip(self.stds, self.ntest): doc.add_heading( "Результаты тестирования нормальности распределения расстояний до эталона {}" .format(std.name), 2) report_ntest(ntest, doc)
def report_stats(stats, doc: Printer): doc.add_paragraph("\tВыборочное среднее = {:.2f}".format(stats[0])) doc.add_paragraph("\tСтандартное отклонение = {:.2f}".format(stats[1])) doc.add_paragraph( "\tДоверительный интервал = ({:.2f}, {:.2f})\n".format(*stats[2]))
def report_sample(sample: Sample, doc: Printer): doc.add_heading("Образец {}".format(sample.name), 1) for factor in range(4): report_sample_factor(sample, factor, doc)
def get_report(self, doc: Printer): doc.add_heading("{}. Группа эталонов".format(self.sample_name), 0) for idx, std in enumerate(self.stds): doc.add_heading("Для эталона {}".format(std.name), 1) # Значения doc.add_heading( "Последовательности расстояний от максимумов значений эталона {}" .format(std.name), 1) for factor, factor_name in enumerate(FACTORS_L): doc.add_heading( "Последовательность расстояний до максимумов фактор-образца {}." .format(factor_name), 2) doc.add_paragraph(str_arr(self.distance[idx][factor])) doc.add_heading( "Результаты визуального анализа распределения расстояний от максимумов значений эталона {}" .format(std.name), 1) for factor, factor_name in enumerate(FACTORS_L): doc.add_heading( "Результаты визуального анализа распределения расстояний до максимумов фактор-образца {}" .format(factor_name), 2) doc.add_picture(self.va[idx][factor]) doc.add_heading( "Результат статистического анализа распределения расстояний от максимумов значений эталона {}" .format(std.name), 1) for factor, factor_name in enumerate(FACTORS_L): doc.add_heading( "Результат статистического анализа распределения расстояний до максимумов фактор-образца {}" .format(factor_name), 2) report_stats(self.stat[idx][factor], doc) doc.add_heading( "Результаты тестирования нормальности распределения расстояний от максимумов значений эталона {}" .format(std.name), 1) for factor, factor_name in enumerate(FACTORS_L): doc.add_heading( "Результаты тестирования нормальности распределения расстояний до максимумов фактор-образца {}" .format(factor_name), 2) report_ntest(self.ntest[idx][factor], doc) # Амплитуды doc.add_heading( "Последовательности расстояний от максимумов амплитуд значений эталона {}" .format(std.name), 1) for factor, factor_name in enumerate(FACTORS_L): doc.add_heading( "Последовательность расстояний до максимумов фактор-образца {}." .format(factor_name), 2) doc.add_paragraph(str_arr(self.distance_apl[idx][factor])) doc.add_heading( "Результаты визуального анализа распределения расстояний от максимумов амплитуд значений эталона {}" .format(std.name), 1) for factor, factor_name in enumerate(FACTORS_L): doc.add_heading( "Результаты визуального анализа распределения расстояний до максимумов фактор-образца {}" .format(factor_name), 2) doc.add_picture(self.va_apl[idx][factor]) doc.add_heading( "Результат статистического анализа распределения расстояний от максимумов амплитуд значений эталона {}" .format(std.name), 1) for factor, factor_name in enumerate(FACTORS_L): doc.add_heading( "Результат статистического анализа распределения расстояний до максимумов фактор-образца {}" .format(factor_name), 2) report_stats(self.stat_apl[idx][factor], doc) doc.add_heading( "Результаты тестирования нормальности распределения расстояний от максимумов амплитуд значений эталона {}" .format(std.name), 1) for factor, factor_name in enumerate(FACTORS_L): doc.add_heading( "Результаты тестирования нормальности распределения расстояний до максимумов фактор-образца {}" .format(factor_name), 2) report_ntest(self.ntest_apl[idx][factor], doc)
def get_report(self, doc: Printer): doc.add_heading( "{} {}. Эталон {}".format(self.sample_name, self.factor_name, self.std.name), 0) # Значения doc.add_heading( "Последовательность расстояний от максимумов значений эталона до максимумов фактор-образца", 1) doc.add_paragraph(str_arr(self.distance)) doc.add_heading( "Результат визуального анализа распределения расстояний от максимумов значений эталона", 1) doc.add_picture(self.va) doc.add_heading( "Результат статистического анализа распределения расстояний от максимумов значений эталона", 1) report_stats(self.stat, doc) doc.add_heading( "Результаты тестирования нормальности распределения расстояний от максимумов значений эталона", 1) report_ntest(self.ntest, doc) # Амплитуды doc.add_heading( "Последовательность расстояний от максимумов амплитуд значений эталона до максимумов фактор-образца", 1) doc.add_paragraph(str_arr(self.distance_apl)) doc.add_heading( "Результат визуального анализа распределения расстояний от максимумов амплитуд значений эталона", 1) doc.add_picture(self.va_apl) doc.add_heading( "Результат статистического анализа распределения расстояний от максимумов амплитуд значений эталона", 1) report_stats(self.stat_apl, doc) doc.add_heading( "Результаты тестирования нормальности распределения расстояний от максимумов амплитуд значений эталона", 1) report_ntest(self.ntest_apl, doc)
def get_report(self, doc: Printer): doc.add_heading( "{}. Эталон {}".format(self.sample_name, self.std.name), 0) # Значения doc.add_heading( "Ряды расстояний и распределения расстояний от максимумов значений эталона до ближайшего " "максимума образца", 1) for factor, xr in zip(FACTORS_L, self.distance): doc.add_paragraph( "Ряд расстояний от максимумов значений эталона до ближайшего максимума фактор-образца {}:" .format(factor)) doc.add_paragraph(str_arr(xr)) doc.add_heading( "Результат визуального анализа распределения расстояний от максимумов значений эталона", 1) for factor, va in zip(FACTORS_L, self.va): doc.add_heading( "Результаты визуального анализа до ближайшего максимума фактор-образца {}" .format(factor), 2) doc.add_picture(va) doc.add_heading( "Результаты статистического анализа распределения расстояний от максимумов значений эталона", 1) for factor, stat in zip(FACTORS_L, self.stat): doc.add_heading( "Результаты статистического анализа до ближайшего максимума фактор-образца {}" .format(factor), 2) report_stats(stat, doc) doc.add_heading( "Результаты тестирования нормальности распределения расстояний от максимумов значений эталона", 1) for factor, ntest in zip(FACTORS_L, self.ntest): doc.add_heading( "Результаты тестирования нормальности до ближайшего максимума фактор-образца {}" .format(factor), 2) report_ntest(ntest, doc) # Амплитуды doc.add_heading( "Ряды расстояний и распределения расстояний от максимумов амплитуд значений эталона до " "ближайшего максимума образца", 1) for factor, xr in zip(FACTORS_L, self.distance_apl): doc.add_paragraph( "Ряд расстояний от максимумов амплитуд значений эталона до ближайшего максимума фактор-образца {}:" .format(factor)) doc.add_paragraph(str_arr(xr)) doc.add_heading( "Результат визуального анализа распределения расстояний от максимумов амплитуд значений эталона", 1) for factor, va_apl in zip(FACTORS_L, self.va_apl): doc.add_heading( "Результаты визуального анализа до ближайшего максимума фактор-образца {}" .format(factor), 2) doc.add_picture(va_apl) doc.add_heading( "Результаты статистического анализа распределения расстояний от максимумов амплитуд значений эталона", 1) for factor, stat_apl in zip(FACTORS_L, self.stat_apl): doc.add_heading( "Результаты статистического анализа до ближайшего максимума фактор-образца {}" .format(factor), 2) report_stats(stat_apl, doc) doc.add_heading( "Результаты тестирования нормальности распределения расстояний от максимумов амплитуд значений эталона", 1) for factor, ntest_apl in zip(FACTORS_L, self.ntest_apl): doc.add_heading( "Результаты тестирования нормальности до ближайшего максимума фактор-образца {}" .format(factor), 2) report_ntest(ntest_apl, doc)
def get_report(self, doc: Printer): doc.add_heading( "{} {}. Группа эталонов".format(self.sample_name, self.factor_name), 0) # Значения doc.add_heading( "Последовательность расстояний от максимумов значений эталона до максимумов фактор-образца", 1) for std, xr in zip(self.stds, self.distance): doc.add_heading("Для эталона {}".format(std.name), 2) # doc.add_paragraph("Количество значений равно = {}".format(len(xr))) doc.add_paragraph(str_arr(xr)) doc.add_heading( "Результат визуального анализа распределения расстояний от максимумов значений эталона", 1) for std, va in zip(self.stds, self.va): doc.add_heading("Для эталона {}".format(std.name), 2) doc.add_picture(va) doc.add_heading( "Результат статистического анализа распределения расстояний от максимумов значений эталона", 1) for std, stat in zip(self.stds, self.stat): doc.add_heading("Для эталона {}".format(std.name), 2) report_stats(stat, doc) doc.add_heading( "Результаты тестирования нормальности распределения расстояний от максимумов значений эталона", 1) for std, ntest in zip(self.stds, self.ntest): doc.add_heading("Для эталона {}".format(std.name), 2) report_ntest(ntest, doc) # Амплитуды doc.add_heading( "Последовательность расстояний от максимумов амплитуд значений эталона до максимумов фактор-образца", 1) for std, xr in zip(self.stds, self.distance_apl): doc.add_heading("Для эталона {}".format(std.name), 2) # doc.add_paragraph("Количество значений равно = {}".format(len(xr))) doc.add_paragraph(str_arr(xr)) doc.add_heading( "Результат визуального анализа распределения расстояний от максимумов амплитуд значений эталона", 1) for std, va_apl in zip(self.stds, self.va_apl): doc.add_heading("Для эталона {}".format(std.name), 2) doc.add_picture(va_apl) doc.add_heading( "Результат статистического анализа распределения расстояний от максимумов амплитуд значений эталона", 1) for std, stat_apl in zip(self.stds, self.stat_apl): doc.add_heading("Для эталона {}".format(std.name), 2) report_stats(stat_apl, doc) doc.add_heading( "Результаты тестирования нормальности распределения расстояний от максимумов амплитуд значений эталона", 1) for std, ntest_apl in zip(self.stds, self.ntest_apl): doc.add_heading("Для эталона {}".format(std.name), 2) report_ntest(ntest_apl, doc)
def get_report(self, doc: Printer): doc.add_heading("Эталон {}. Группа образцов".format(self.std.name), 0) for factor in range(4): factor_name = FACTORS[factor].lower() doc.add_heading("Для фактора {}".format(factor_name), 1) doc.add_heading( "Распределение средних значений эталона {} для образцов {}". format(self.std.name, factor_name), 2) doc.add_paragraph(str_arr(self.max_list[factor])) doc.add_heading( "Результаты визуального анализа распределений средних значений эталона {} для фактор-образцов {}" .format(self.std.name, factor_name), 2) doc.add_picture(self.va[factor]) doc.add_heading( "Результаты тестирования нормальности распределений средних значений эталона {} для фактор-образцов {}" .format(self.std.name, factor_name), 2) report_ntest(self.ntest[factor], doc) doc.add_heading( "Результаты статистического анализа распределений средних значений эталона {} для фактор-образцов {}" .format(self.std.name, factor_name), 2) doc.add_paragraph("\tВыборочное среднее = {:.2f}".format( self.stat[factor][0])) doc.add_paragraph("\tСтандартное отклонение = {:.2f}".format( self.stat[factor][1])) doc.add_paragraph( "\tДоверительный интервал = ({:.2f}, {:.2f})".format( *self.stat[factor][2])) doc.add_heading( "Распределение средних амплитуд эталона {} для образцов {}". format(self.std.name, factor_name), 2) doc.add_paragraph(str_arr(self.max_list_apl[factor])) doc.add_heading( "Результаты визуального анализа распределений средних амплитуд эталона {} для фактор-образцов {}" .format(self.std.name, factor_name), 2) doc.add_picture(self.va_apl[factor]) doc.add_heading( "Результаты тестирования нормальности распределений средних амплитуд эталона {} для фактор-образцов {}" .format(self.std.name, factor_name), 2) report_ntest(self.ntest_apl[factor], doc) doc.add_heading( "Результаты статистического анализа распределений средних амплитуд эталона {} для фактор-образцов {}" .format(self.std.name, factor_name), 2) report_stats(self.stat_apl[factor], doc)
def get_report(self, doc: Printer): doc.add_heading("Группа эталонов. Группа образцов", 0) for factor, factor_name in enumerate(FACTORS_L): doc.add_heading("Для фактора {}".format(factor_name), 1) doc.add_heading( "Распределения средних значений фактор-образцов {}".format( factor_name), 1) for idx, std in enumerate(self.stds): doc.add_heading("Для эталона {}".format(std.name), 2) doc.add_paragraph("Количество значений равно = {}".format( len(self.max_list[idx][factor]))) doc.add_paragraph(str_arr(self.max_list[idx][factor])) doc.add_heading( "Результаты визуального анализа распределений средних значений фактор-образцов {}" .format(factor_name), 1) for idx, std in enumerate(self.stds): doc.add_heading("Для эталона {}".format(std.name), 2) doc.add_picture(self.va[idx][factor]) doc.add_heading( "Результаты статистического анализа распределений средних значений фактор-образцов {}" .format(factor_name), 1) for idx, std in enumerate(self.stds): doc.add_heading("Для эталона {}".format(std.name), 2) report_stats(self.stat[idx][factor], doc) doc.add_heading( "Результаты тестирования нормальности распределений средних значений фактор-образцов {}" .format(factor_name), 1) for idx, std in enumerate(self.stds): doc.add_heading("Для эталона {}".format(std.name), 2) report_ntest(self.ntest[idx][factor], doc)
def get_report(self, doc: Printer): doc.add_heading("Эталон {}. Группа образцов".format(self.std.name), 0) doc.add_heading( "Распределение средних значений фактор-образцов {}".format( self.factor_name), 2) doc.add_paragraph(str_arr(self.max_list)) doc.add_heading( "Результаты визуального анализа распределений средних значений фактор-образцов {}" .format(self.factor_name), 2) doc.add_picture(self.va) doc.add_heading( "Результаты статистического анализа распределений средних значений фактор-образцов {}" .format(self.factor_name), 2) report_stats(self.stat, doc) doc.add_heading( "Результаты тестирования нормальности распределений средних значений фактор-образцов {}" .format(self.factor_name), 2) report_ntest(self.ntest, doc)
def get_report(self, doc: Printer): doc.add_heading( "Группа эталонов. {}".format(Sample.display_file_group( self.factor)), 0) doc.add_heading( "Распределение средних значений фактор-образцов {}".format( self.factor_name), 1) for std, ml in zip(self.stds, self.max_list): doc.add_heading("Для эталона {}".format(std.name), 2) doc.add_paragraph(str_arr(ml)) doc.add_heading( "Результаты визуального анализа распределений средних значений фактор-образцов {}" .format(self.factor_name), 1) for std, va in zip(self.stds, self.va): doc.add_heading("Для эталона {}".format(std.name), 2) doc.add_picture(va) doc.add_heading( "Результаты статистического анализа распределений средних значений фактор-образцов {}" .format(self.factor_name), 1) for std, stat in zip(self.stds, self.stat): doc.add_heading("Для эталона {}".format(std.name), 2) report_stats(stat, doc) doc.add_heading( "Результаты тестирования нормальности распределений средних значений фактор-образцов {}" .format(self.factor_name), 1) for std, ntest in zip(self.stds, self.ntest): doc.add_heading("Для эталона {}".format(std.name), 2) report_ntest(ntest, doc)
def get_report(self, doc: Printer): doc.add_heading("Группа эталонов. {}".format(self.sample_name), 0) for factor, factor_name in enumerate(FACTORS_L): doc.add_heading("Для фактора {}".format(factor_name), 1) doc.add_heading( "Последовательности расстояний от фактор-образца {}".format( factor_name), 1) for idx, std in enumerate(self.stds): doc.add_heading( "Последовательность расстояний от максимумов фактор-образца {} до ближайшего максимума эталона {}" .format(factor_name, std.name), 2) # doc.add_paragraph("Количество значений равно = {}".format(len(self.distance[idx][factor]))) doc.add_paragraph(str_arr(self.distance[idx][factor])) doc.add_heading( "Результаты визуального анализа распределения расстояний от фактор-образца {}" .format(factor_name), 1) for idx, std in enumerate(self.stds): doc.add_heading( "Результаты визуального анализа распределения расстояний до эталона {}" .format(std.name), 2) doc.add_picture(self.va[idx][factor]) doc.add_heading( "Результаты статистического анализа распределения расстояний от фактор-образца {}" .format(factor_name), 1) for idx, std in enumerate(self.stds): doc.add_heading( "Результаты статистического анализа распределения расстояний до эталона {}" .format(std.name), 2) report_stats(self.stat[idx][factor], doc) doc.add_heading( "Результаты тестирования нормальности распределения расстояний от фактор-образца {}" .format(factor_name), 1) for idx, std in enumerate(self.stds): doc.add_heading( "Результаты тестирования нормальности распределения расстояний до эталона {}" .format(std.name), 2) report_ntest(self.ntest[idx][factor], doc)
def get_report(self, doc: Printer): doc.add_heading("Группа эталонов. Группа образцов", 0) for idx, std in enumerate(self.stds): for factor in range(4): factor_name = FACTORS[factor].lower() doc.add_heading( "Для эталона {} и фактора {}".format( std.name, factor_name), 1) doc.add_heading( "Распределение средних значений эталона {} для фактора {}". format(std.name, factor_name), 2) doc.add_paragraph(str_arr(self.max_list[idx][factor])) doc.add_heading( "Результаты визуального анализа распределений средних значений эталона {} для фактор-образцов {}" .format(std.name, factor_name), 2) doc.add_picture(self.va[idx][factor]) doc.add_heading( "Результаты тестирования нормальности распределений средних значений эталона {} для фактор-образцов {}" .format(std.name, factor_name), 2) report_ntest(self.ntest[idx][factor], doc) doc.add_heading( "Результаты статистического анализа распределений средних значений эталона {} для фактор-образцов {}" .format(std.name, factor_name), 2) report_stats(self.stat[idx][factor], doc) doc.add_heading( "Распределение средних амплитуд эталона {} для фактора {}". format(std.name, factor_name), 2) doc.add_paragraph(str_arr(self.max_list_apl[idx][factor])) doc.add_heading( "Результаты визуального анализа распределений средних амплитуд эталона {} для фактор-образцов {}" .format(std.name, factor_name), 2) doc.add_picture(self.va_apl[idx][factor]) doc.add_heading( "Результаты тестирования нормальности распределений средних амплитуд эталона {} для фактор-образцов {}" .format(std.name, factor_name), 2) report_ntest(self.ntest_apl[idx][factor], doc) doc.add_heading( "Результаты статистического анализа распределений средних амплитуд эталона {} для фактор-образцов {}" .format(std.name, factor_name), 2) report_stats(self.stat_apl[idx][factor], doc)