Пример #1
0
 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)
Пример #2
0
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)
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
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)
Пример #6
0
    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