jpayne@68: _bedtools_path = "" jpayne@68: _R_path = "" jpayne@68: jpayne@68: tempfile_prefix = "pybedtools." jpayne@68: tempfile_suffix = ".tmp" jpayne@68: jpayne@68: # Checking for BEDTools will happen when creating the first BedTool; other jpayne@68: # checks happen at first use (BAM object creation; tabix-ing a BedTool) jpayne@68: _bedtools_installed = False jpayne@68: _R_installed = False jpayne@68: _v_2_15_plus = False jpayne@68: _v_2_27_plus = False jpayne@68: bedtools_version = [] jpayne@68: jpayne@68: KEEP_TEMPFILES = False jpayne@68: _DEBUG = True jpayne@68: jpayne@68: # Check calls against these names to only allow calls to known BEDTools jpayne@68: # programs (basic security) jpayne@68: # jpayne@68: _prog_names = { jpayne@68: # Genome arithmetic jpayne@68: "intersectBed": "intersect", jpayne@68: "windowBed": "window", jpayne@68: "closestBed": "closest", jpayne@68: "coverageBed": "coverage", jpayne@68: "mapBed": "map", jpayne@68: "genomeCoverageBed": "genomecov", jpayne@68: "mergeBed": "merge", jpayne@68: "clusterBed": "cluster", jpayne@68: "complementBed": "complement", jpayne@68: "subtractBed": "subtract", jpayne@68: "slopBed": "slop", jpayne@68: "shiftBed": "shift", jpayne@68: "flankBed": "flank", jpayne@68: "sortBed": "sort", jpayne@68: "randomBed": "random", jpayne@68: "shuffleBed": "shuffle", jpayne@68: "annotateBed": "annotate", jpayne@68: "spacing": "spacing", jpayne@68: # multi-way jpayne@68: "multiIntersectBed": "multiinter", jpayne@68: "unionBedGraphs": "unionbedg", jpayne@68: # PE jpayne@68: "pairToBed": "pairtobed", jpayne@68: "pairToPair": "pairtopair", jpayne@68: # format conversion jpayne@68: "bamToBed": "bamtobed", jpayne@68: "bedToBam": "bedtobam", jpayne@68: "bedpeToBam": "bedpetobam", jpayne@68: "bed12ToBed6": "bed12tobed6", jpayne@68: "bamToFastq": "bamtofastq", jpayne@68: # fasta jpayne@68: "fastaFromBed": "getfasta", jpayne@68: "maskFastaFromBed": "maskfasta", jpayne@68: "nucBed": "nuc", jpayne@68: # bam-centric jpayne@68: "multiBamCov": "multicov", jpayne@68: "tagBam": "tag", jpayne@68: # stats jpayne@68: "jaccard": "jaccard", jpayne@68: "reldist": "reldist", jpayne@68: # misc jpayne@68: "getOverlap": "overlap", jpayne@68: "bedToIgv": "igv", jpayne@68: "linksBed": "links", jpayne@68: "windowMaker": "makewindows", jpayne@68: "groupBy": "groupby", jpayne@68: "expandCols": "expand", jpayne@68: "sample": "sample", jpayne@68: "fisher": "fisher", jpayne@68: "split": "split", jpayne@68: } jpayne@68: jpayne@68: _old_names = list(_prog_names.keys()) jpayne@68: _new_names = list(_prog_names.values()) jpayne@68: jpayne@68: _column_names = { jpayne@68: "bed": [ jpayne@68: "chrom", jpayne@68: "start", jpayne@68: "end", jpayne@68: "name", jpayne@68: "score", jpayne@68: "strand", jpayne@68: "thickStart", jpayne@68: "thickEnd", jpayne@68: "itemRgb", jpayne@68: "blockCount", jpayne@68: "blockSizes", jpayne@68: "blockStarts", jpayne@68: ], jpayne@68: "gff": [ jpayne@68: "seqname", jpayne@68: "source", jpayne@68: "feature", jpayne@68: "start", jpayne@68: "end", jpayne@68: "score", jpayne@68: "strand", jpayne@68: "frame", jpayne@68: "attributes", jpayne@68: ], jpayne@68: }