def test_matrix_generation(self): ''' Test creation of matrix ''' genomeBin = interactionMatrix.genomeBin((self.chrFile,10,True)) countMatrix, logArray = interactionMatrix.generateMatrix( self.inFrag, genomeBin, threads=4) self.assertTrue(np.array_equal(countMatrix, np.array([ [2,0,0,0,0,0,1], [0,0,0,1,0,0,0], [0,0,0,0,2,0,0], [0,1,0,0,0,0,0], [0,0,2,0,0,0,0], [0,0,0,0,0,0,0], [1,0,0,0,0,0,0] ]))) self.assertTrue(np.array_equal(logArray, np.array([10,2,3,5])))
# Create output file prefix if args['--label']: outPrefix = args['<outdir>'] + sampleName + '_' + args['--label'] else: outPrefix = args['<outdir>'] + sampleName # Create output file names bedFile = outPrefix + '.bed' matrixFile = outPrefix + '.countMatrix.gz' biasFile = outPrefix + '.bias' normMatrixFile = outPrefix + '.normMatrix.gz' # Store file names required for normalisation matrixFileList.append((matrixFile, biasFile, normMatrixFile)) # Save bed file genomeBins.writeBed(bedFile) # Create interaction matrix and save to file countMatrix, logArray = interactionMatrix.generateMatrix( f, genomeBins, args['--threads']) np.savetxt(matrixFile, countMatrix, '%s', '\t', header = '\t'.join(genomeBins.binNames), comments = '') # Print Interaction Data print '\n%s:\n Interaction Data:\n%s\n%s\n%s\n%s' %( sampleName, ' total: %s' %(logArray[0]), ' accepted: %s' %(logArray[3]), ' no chromosome: %s' %(logArray[1]), ' no bin: %s' %(logArray[2]) ) # Find and process bins below minimum bin count colSums = countMatrix.sum(axis=0) binsBelowMin = colSums < args['<mincount>'] failedBins = np.logical_or(failedBins, binsBelowMin) # Print bin data
'bin size equal: %s' %(args.equal), 'minimum bin count: %s' %(args.minCount) ) else: raise IOError('bed file or chromosome file and bin size must be provided') # Create output files args.bedFile = args.outPrefix + '.bed' args.biasFile = args.outPrefix + '.bias' args.countMatrix = args.outPrefix + '.countMatrix' args.normMatrix = args.outPrefix + '.normMatrix' # Create bin object and save bed genomeBins = interactionMatrix.genomeBin(binData) genomeBins.writeBed(args.bedFile) # Count interactions countMatrix, logArray = interactionMatrix.generateMatrix( args.inFile, genomeBins, args.threads ) # Save interactions np.savetxt(args.countMatrix, countMatrix, '%s', '\t', header = '\t'.join(genomeBins.binNames), comments = '') # Print Interaction Data print '\nInteraction Data\n\t%s\n\t%s\n\t%s\n\t%s' %( 'total: %s' %(logArray[0]), 'accepted: %s' %(logArray[3]), 'no chromosome: %s' %(logArray[1]), 'no bin: %s' %(logArray[2]) ) # Count number of bins above minimum colSums = countMatrix.sum(axis=0) binsAboveMin = sum(colSums >= args.minCount) # Print bin data