def mergeMatchesOnQueries(inFile, outFile): mapFile = "%s.map" % ( inFile ) PathUtils.convertPathFileIntoMapFileWithQueryCoordsOnly( inFile, mapFile ) cmd = "mapOp" cmd += " -q %s" % ( mapFile ) cmd += " -m" cmd += " 2>&1 > /dev/null" exitStatus = os.system( cmd ) if exitStatus != 0: print "ERROR: mapOp returned %i" % ( exitStatus ) sys.exit(1) os.remove( mapFile ) mergeFile = "%s.merge" % ( mapFile ) mergeFileHandler = open( mergeFile, "r" ) outFileHandler = open( outFile, "w" ) m = Map() while True: line = mergeFileHandler.readline() if line == "": break m.reset() m.setFromString( line, "\t" ) m.writeAsQueryOfPath( outFileHandler ) mergeFileHandler.close() os.remove( mergeFile ) outFileHandler.close()
def getDictPerSeqNameFromMapFile( mapFile ): dSeqName2Maps = {} mapFileHandler = open( mapFile, "r" ) while True: line = mapFileHandler.readline() if line == "": break iMap = Map() iMap.setFromString( line, "\t" ) if not dSeqName2Maps.has_key( iMap.seqname ): dSeqName2Maps[ iMap.seqname ] = [] dSeqName2Maps[ iMap.seqname ].append( iMap ) mapFileHandler.close() return dSeqName2Maps
def getDictPerNameFromMapFile( mapFile ): dName2Maps = {} mapFileHandler = open( mapFile, "r" ) while True: line = mapFileHandler.readline() if line == "": break iMap = Map() iMap.setFromString( line, "\t" ) if dName2Maps.has_key( iMap.name ): if iMap == dName2Maps[ iMap.name ]: continue else: msg = "ERROR: in file '%s' two different Map instances have the same name '%s'" % ( mapFile, iMap.name ) sys.stderr.write( "%s\n" % ( msg ) ) sys.exit(1) dName2Maps[ iMap.name ] = iMap mapFileHandler.close() return dName2Maps
def convertMapFileIntoSetFile( mapFileName, setFileName = "" ): if setFileName == "": setFileName = "%s.set" % mapFileName mapFileHandler = open( mapFileName, "r" ) setFileHandler = open( setFileName, "w" ) iMap = Map() count = 0 while True: line = mapFileHandler.readline() if line == "": break iMap.setFromString(line) count += 1 iSet = Set() iSet.id = count iSet.name = iMap.getName() iSet.seqname = iMap.getSeqname() iSet.start = iMap.getStart() iSet.end = iMap.getEnd() iSet.write(setFileHandler) mapFileHandler.close() setFileHandler.close()