Ejemplo n.º 1
0
peakbed = filefun.Bedfile(bedfile[:, 0], bedfile[:, 1], bedfile[:, 2], bedfile[:,3])

# save to this file
if not options.o:
    basename = os.path.splitext(os.path.basename(options.b))[0]
else: basename = options.o

"""
Now find 'significantly' up peaks and 'significantly' down peaks
"""
peaks.score = peaks.findScore(parameters.indices_low, parameters.indices_high)
peaks.nullscore = peaks.score[noExprChange]
peaks.upinNfib, peaks.downinNfib = peaks.divideIntoTwo(parameters.indices_low, parameters.indices_high)

# get FDR value for log change in accessibility
peaks.qvalue = seqfun.getFDR(peaks.score, peaks.nullscore)
peaks.ttest_pvalue = np.array([st.ttest_ind(peaks.peakCount[i, parameters.indices_high], peaks.peakCount[i, parameters.indices_low])[1] for i in range(peaks.peakCount.shape[0])])

# make criteria
criteriaUp = np.all((peaks.qvalue < 0.01, peaks.score > 0, peaks.ttest_pvalue < 0.01), axis=0)
criteriaDown = np.all((peaks.qvalue < 0.01, peaks.score < 0, peaks.ttest_pvalue < 0.01), axis=0)
criteriaBackground = np.logical_not(np.any((criteriaUp, criteriaDown), 0))

# print
print "number of peaks significantly up with Nfib: %d"%np.sum(criteriaUp)
print "number of peaks significantly down with Nfib: %d"%np.sum(criteriaDown)
print "other peaks: %d"%np.sum(criteriaBackground)

peakbed.strand = np.array(['.']*peaks.numPeaks)
bedFile = np.transpose([peakbed.chr, peakbed.start, peakbed.end, peakbed.name, peakbed.strand, peaks.qvalue, peaks.ttest_pvalue, peaks.downinNfib, peaks.upinNfib])
bed_file_name_high = '%s.upwNfib.bed'%basename
Ejemplo n.º 2
0
        # plot it if it is chr8
        if chrm=='chr8':
            plotAmplifiedRegion(windowedLocs, np.log2(foldChange/foldChangeRandom))
            plt.title(parameters.headers_noreplicates[sample])
            plt.tight_layout()
            plt.savefig('%s.enrichment_across_%s.hypervsnot.pdf'%(outfile, chrm))
    # and save        
    np.savetxt('%s.hypervsnot.enrichment_values.iterations_%d.mat'%(outfile, numIterations), logFoldChange, delimiter='\t')
    
    # save qvalue of enrichment vs depletion bed file
    qvaluesAll = np.empty(0)
    for chrm in chrms:
        for i, loc in enumerate(windowedLocsDict[chrm]):
            foldChange = np.mean(signalDensityDict[chrm][i, parameters.indices_high_noreplicates])/np.mean(signalDensityDict[chrm][i, parameters.indices_low_noreplicates])
            foldChangeRand = np.mean(signalDensityRandomDict[chrm][:, i, parameters.indices_high_noreplicates], axis=1)/np.mean(signalDensityRandomDict[chrm][:, i, parameters.indices_low_noreplicates], axis=1)
            q = seqfun.getFDR([np.log2(foldChange)], np.log2(foldChangeRand))
            qvaluesAll = np.append(qvaluesAll, q)
    # and save bed file
    windowedLocBed = filefun.loadBed('%s.windowed_locs.bed'%outfile)
    windowedLocBed.saveBed('tmp.bed', indx=np.all((qvaluesAll < 0.05, logFoldChange > 0), axis=0))
    os.system('bedtools merge -i tmp.bed > %s'%('%s.windowed_locs.hypervsnot.enriched.bed'%outfile))
    
    windowedLocBed.saveBed('tmp.bed', indx=np.all((qvaluesAll < 0.05, logFoldChange < 0), axis=0))
    os.system('bedtools merge -i tmp.bed > %s'%('%s.windowed_locs.hypervsnot.depleted.bed'%outfile))
except IndexError:
    print 'did not save hypraccesible vs not bigwig file'


# save a couple example traces
chrm='chr8'
plotAmplifiedRegion(windowedLocsDict[chrm], enrichmentDict[chrm][:,0])