def __repr__(self): a = [] for k, v in sorted(self.to_dict().iteritems()): if k == 'Subsections': a.append(colortext.make("Subsections\n", 'green')) a.append("%s\n" % str(v)) else: a.append(colortext.make(k.ljust(20), 'green')) a.append(colortext.make("%s\n" % str(v), 'silver')) return "".join(a)
def get_summary(data): s = [] if not data: return '' if data['skipped_cases']: s.append(colortext.make('\nSkipped {0} cases due to partial data: {1}.\n'.format(len(data['skipped_cases']), ', '.join(data['skipped_cases'])), color = 'yellow')) for prediction_id, prediction_cases in sorted(data['predictions'].iteritems()): pcases = copy.deepcopy(prediction_cases) pcases['significant_beneficient_sensitivity_n'] = pcases['significant_beneficient_sensitivity'][1] pcases['significant_beneficient_sensitivity'] = pcases['significant_beneficient_sensitivity'][0] pcases['significant_beneficient_specificity_n'] = pcases['significant_beneficient_specificity'][1] pcases['significant_beneficient_specificity'] = pcases['significant_beneficient_specificity'][0] s.append(''' Prediction: #{id} Prediction name: {name} \tR-value: {R_value:.03f}\t\tSlope: {slope:.03f} \tR-value with origin as intercept: {R_value_through_origin:.03f}\t\tSlope: {slope_through_origin:.03f} \tMAE: {MAE:.03f}\t\t Scaled MAE: {scaled_MAE:.03f} \n\tClassifications:\n\t\t-- Cut-off for significance at {STDev_cutoff:f} STDevs -- \tPercent correct sign (fraction correct sign * 100): {accuracy:.03f} \tPercent significant predictions with correct sign (specificity): {specificity:.03f} \tPercent significant experimental hits with correct prediction sign (sensitivity): {sensitivity:.03f} \tPercent significant predictions are significant experimental hits (significance specificity): {significance_specificity:.03f} \tPercent significant experimental hits are predicted significant hits (significance sensitivity): {significance_sensitivity:.03f} \tPercent significant beneficial experimental hits are predicted significant beneficial hits (significant beneficient sensitivity): {significant_beneficient_sensitivity:.03f} \tPercent significant beneficial predictions are significant beneficial experimental hits (significant beneficient specificity): {significant_beneficient_specificity:.03f} \n'''.format(**pcases)) return '\n'.join(s)
def _getProfileForTerminal(self): if not self.stopped: return False s = [colortext.make('Total time: %fs' % self.getTotalTime(), color = 'white', effect = colortext.BOLD)] stage_times = sorted([self.stage_times[stage] for stage in self.stages]) if len(stage_times) < 10: top_time_cutoff = stage_times[-2] else: top_time_cutoff = stage_times[-(len(stage_times) / 5)] for stage in self.stages: if self.stage_times[stage] == stage_times[-1]: s.append(colortext.make(" %s: %fs" % (stage, self.stage_times[stage]), 'pink')) elif self.stage_times[stage] >= top_time_cutoff: s.append(colortext.make(" %s: %fs" % (stage, self.stage_times[stage]), 'red')) else: s.append(colortext.make(" %s: %fs" % (stage, self.stage_times[stage]), 'silver')) return "\n".join(s)
def __repr__(self): splitsize = self.sequence_string_length self._find_identical_sequences() identical_sequences = self.identical_sequences s = [] s.append(colortext.make("FASTA: Contains these PDB IDs - %s" % ", ".join(self.keys()), color="green")) s.append("Number of unique sequences : %d" % len(self.unique_sequences)) s.append("Chains:") for pdbID, chains_dict in sorted(self.iteritems()): s.append(" %s" % pdbID) for chainID, sequence in chains_dict.iteritems(): s.append(" %s" % chainID) color = self.unique_sequences[sequence] split_sequence = [sequence[i:i+splitsize] for i in range(0, len(sequence), splitsize)] for seqpart in split_sequence: s.append(colortext.make(" %s" % seqpart, color=color)) if identical_sequences.get(pdbID) and identical_sequences[pdbID].get(chainID): iseqas = identical_sequences[pdbID][chainID] s.append(" Identical sequences: %s" % ", ".join(iseqas)) return "\n".join(s)
def sequence_formatter(sequences): assert sequences and (len(set(map(len, sequences))) == 1) first_sequence = sequences[0] header = ( "%s%s" % ( "1234567890" * (len(first_sequence) / 10), "1234567890"[: len(first_sequence) - (len(first_sequence) / 10 * 10)], ) ).replace("0", colortext.make("0", "orange")) s = ["|%s|" % header] for sequence in sequences: s.append("|%s|" % sequence) return "\n".join(s)
def summarize(self, series_ = None, subset_ = None, summary_title_formatter = None, color = True): self._analyze() summary = [] for series, subset in sorted(self.analysis.iteritems()): if series_ == None or series_ == series: ttl, sub_summary = series, [] for subset_type, v in sorted(subset.iteritems()): if subset_ == None or subset_ == series: if v: if color: sub_summary.append(colortext.make('Subset: ' + subset_type, 'yellow')) else: sub_summary.append('Subset: ' + subset_type) sub_summary.append(self._summarize_case(v['data'])) if sub_summary: if summary_title_formatter: summary += [summary_title_formatter(series)] + sub_summary else: summary += [series] + sub_summary if summary: return '\n'.join(summary) else: return None