Beispiel #1
0
    def plot(self, base_plotdir, cyst_positions=None, tryp_positions=None):
        if not self.finalized:
            self.finalize()

        plotdir = base_plotdir + '/mute-freqs'
        utils.prep_dir(plotdir + '/plots', multilings=('*.csv', '*.svg'))
        for region in utils.regions:
            utils.prep_dir(plotdir + '/' + region + '/plots', multilings=('*.csv', '*.svg'))
            utils.prep_dir(plotdir + '/' + region + '-per-base/plots', multilings=('*.csv', '*.png'))

        for gene in self.counts:
            counts, plotting_info = self.counts[gene], self.plotting_info[gene]
            sorted_positions = sorted(counts)
            hist = TH1D('hist_' + utils.sanitize_name(gene), '',
                        sorted_positions[-1] - sorted_positions[0] + 1,
                        sorted_positions[0] - 0.5, sorted_positions[-1] + 0.5)
            for position in sorted_positions:
                hist.SetBinContent(hist.FindBin(position), counts[position]['freq'])
                hi_diff = abs(counts[position]['freq'] - counts[position]['freq_hi_err'])
                lo_diff = abs(counts[position]['freq'] - counts[position]['freq_lo_err'])
                err = 0.5*(hi_diff + lo_diff)
                hist.SetBinError(hist.FindBin(position), err)
            plotfname = plotdir + '/' + utils.get_region(gene) + '/plots/' + utils.sanitize_name(gene) + '.svg'
            xline = None
            if utils.get_region(gene) == 'v' and cyst_positions is not None:
                xline = cyst_positions[gene]['cysteine-position']
            elif utils.get_region(gene) == 'j' and tryp_positions is not None:
                xline = int(tryp_positions[gene])
            plotting.draw(hist, 'int', plotdir=plotdir + '/' + utils.get_region(gene), plotname=utils.sanitize_name(gene), errors=True, write_csv=True, xline=xline, draw_str='e')  #, cwidth=4000, cheight=1000)
            paramutils.make_mutefreq_plot(plotdir + '/' + utils.get_region(gene) + '-per-base', utils.sanitize_name(gene), plotting_info)

        # for region in utils.regions:
        #     utils.prep_dir(plotdir + '/' + region + '/tmp/plots', multilings=('*.csv', '*.svg'))
        # for gene in self.tmpcounts:
        #     for position in self.tmpcounts[gene]:
        #         roothist = plotting.make_hist_from_my_hist_class(self.tmpcounts[gene][position]['muted'], gene + '_' + str(position))
        #         plotting.draw(roothist, 'int', plotdir=plotdir + '/' + utils.get_region(gene) + '/tmp', plotname=utils.sanitize_name(gene) + '_' + str(position), errors=True, write_csv=True)  #, cwidth=4000, cheight=1000)

        # make mean mute freq hists
        hist = plotting.make_hist_from_my_hist_class(self.mean_rates['all'], 'all-mean-freq')
        plotting.draw(hist, 'float', plotname='all-mean-freq', plotdir=plotdir, stats='mean', bounds=(0.0, 0.4), write_csv=True)
        for region in utils.regions:
            hist = plotting.make_hist_from_my_hist_class(self.mean_rates[region], region+'-mean-freq')
            plotting.draw(hist, 'float', plotname=region+'-mean-freq', plotdir=plotdir, stats='mean', bounds=(0.0, 0.4), write_csv=True)
        check_call(['./bin/makeHtml', plotdir, '3', 'null', 'svg'])

        # then write html file and fix permissiions
        for region in utils.regions:
            check_call(['./bin/makeHtml', plotdir + '/' + region, '1', 'null', 'svg'])
            check_call(['./bin/makeHtml', plotdir + '/' + region + '-per-base', '1', 'null', 'png'])
        check_call(['./bin/permissify-www', plotdir])  # NOTE this should really permissify starting a few directories higher up
 def plot(self, plotdir):
     utils.prep_dir(plotdir + '/plots', wildling=None, multilings=['*.csv', '*.svg', '*.root'])
     for column in self.values:
         if self.only_correct_gene_fractions and column not in bool_columns:
             continue
         if column in bool_columns:
             right = self.values[column]['right']
             wrong = self.values[column]['wrong']
             errs = fraction_uncertainty.err(right, right+wrong)
             print '  %s\n    correct up to allele: %4d / %-4d = %4.4f (-%.3f, +%.3f)' % (column, right, right+wrong, float(right) / (right + wrong), errs[0], errs[1])
             hist = plotting.make_bool_hist(right, wrong, self.name + '-' + column)
             plotting.draw(hist, 'bool', plotname=column, plotdir=plotdir, write_csv=True)
         else:
             # TODO this is dumb... I should make the integer-valued ones histograms as well
             hist = plotting.make_hist_from_dict_of_counts(self.values[column], 'int', self.name + '-' + column, normalize=True)
             log = ''
             if column.find('hamming_to_true_naive') >= 0:
                 hist.GetXaxis().SetTitle('hamming distance')
             else:
                 hist.GetXaxis().SetTitle('inferred - true')
             plotting.draw(hist, 'int', plotname=column, plotdir=plotdir, write_csv=True, log=log)
     for column in self.hists:
         hist = plotting.make_hist_from_my_hist_class(self.hists[column], column)
         plotting.draw(hist, 'float', plotname=column, plotdir=plotdir, write_csv=True, log=log)
     
     check_call(['./bin/makeHtml', plotdir, '3', 'null', 'svg'])
     check_call(['./bin/permissify-www', plotdir])  # NOTE this should really permissify starting a few directories higher up
 def plot(self):
     for column in self.values:
         if column in bool_columns:
             right = self.values[column]['right']
             wrong = self.values[column]['wrong']
             print '  %s\n    correct up to allele: %4d / %-4d = %4.2f' % (column, right, right+wrong, float(right) / (right + wrong))
             hist = plotting.make_bool_hist(right, wrong, self.name + '-' + column)
             plotting.draw(hist, 'bool', plotname=column, plotdir=self.plotdir, write_csv=True)
         else:
             hist = plotting.make_hist_from_dict_of_counts(self.values[column], 'int', self.name + '-' + column, normalize=True)
             log = ''
             if column.find('hamming_to_true_naive') >= 0:
                 hist.GetXaxis().SetTitle('hamming distance')
             else:
                 hist.GetXaxis().SetTitle('inferred - true')
             plotting.draw(hist, 'int', plotname=column, plotdir=self.plotdir, write_csv=True, log=log)
     for column in self.hists:
         hist = plotting.make_hist_from_my_hist_class(self.hists[column], 'mute_freqs')
         plotting.draw(hist, 'float', plotname=column, plotdir=self.plotdir, write_csv=True, log=log)
     
     check_call(['./bin/makeHtml', self.plotdir, '3', 'null', 'svg'])
     check_call(['./bin/permissify-www', self.plotdir])  # NOTE this should really permissify starting a few directories higher up
    def plot(self, base_plotdir, cyst_positions=None, tryp_positions=None):
        if not self.finalized:
            self.finalize()

        plotdir = base_plotdir + '/mute-freqs'
        utils.prep_dir(plotdir + '/plots', multilings=('*.csv', '*.svg'))
        for region in utils.regions:
            utils.prep_dir(plotdir + '/' + region + '/plots',
                           multilings=('*.csv', '*.svg'))
            utils.prep_dir(plotdir + '/' + region + '-per-base/plots',
                           multilings=('*.csv', '*.png'))

        for gene in self.counts:
            counts, plotting_info = self.counts[gene], self.plotting_info[gene]
            sorted_positions = sorted(counts)
            hist = TH1D('hist_' + utils.sanitize_name(gene), '',
                        sorted_positions[-1] - sorted_positions[0] + 1,
                        sorted_positions[0] - 0.5, sorted_positions[-1] + 0.5)
            for position in sorted_positions:
                hist.SetBinContent(hist.FindBin(position),
                                   counts[position]['freq'])
                hi_diff = abs(counts[position]['freq'] -
                              counts[position]['freq_hi_err'])
                lo_diff = abs(counts[position]['freq'] -
                              counts[position]['freq_lo_err'])
                err = 0.5 * (hi_diff + lo_diff)
                hist.SetBinError(hist.FindBin(position), err)
            plotfname = plotdir + '/' + utils.get_region(
                gene) + '/plots/' + utils.sanitize_name(gene) + '.svg'
            xline = None
            if utils.get_region(gene) == 'v' and cyst_positions is not None:
                xline = cyst_positions[gene]['cysteine-position']
            elif utils.get_region(gene) == 'j' and tryp_positions is not None:
                xline = int(tryp_positions[gene])
            plotting.draw(hist,
                          'int',
                          plotdir=plotdir + '/' + utils.get_region(gene),
                          plotname=utils.sanitize_name(gene),
                          errors=True,
                          write_csv=True,
                          xline=xline,
                          draw_str='e')  #, cwidth=4000, cheight=1000)
            paramutils.make_mutefreq_plot(
                plotdir + '/' + utils.get_region(gene) + '-per-base',
                utils.sanitize_name(gene), plotting_info)

        # make mean mute freq hists
        hist = plotting.make_hist_from_my_hist_class(self.mean_rates['all'],
                                                     'all-mean-freq')
        plotting.draw(hist,
                      'float',
                      plotname='all-mean-freq',
                      plotdir=plotdir,
                      stats='mean',
                      bounds=(0.0, 0.4),
                      write_csv=True)
        for region in utils.regions:
            hist = plotting.make_hist_from_my_hist_class(
                self.mean_rates[region], region + '-mean-freq')
            plotting.draw(hist,
                          'float',
                          plotname=region + '-mean-freq',
                          plotdir=plotdir,
                          stats='mean',
                          bounds=(0.0, 0.4),
                          write_csv=True)
        check_call(['./bin/makeHtml', plotdir, '3', 'null', 'svg'])

        # then write html file and fix permissiions
        for region in utils.regions:
            check_call(
                ['./bin/makeHtml', plotdir + '/' + region, '1', 'null', 'svg'])
            check_call([
                './bin/makeHtml', plotdir + '/' + region + '-per-base', '1',
                'null', 'png'
            ])
        check_call(
            ['./bin/permissify-www', plotdir]
        )  # NOTE this should really permissify starting a few directories higher up