active=chrlist.pop(0)
		
		while(True):
			tested=[]
			activeUnmodified=True
			while(len(chrlist)>0):
				totest=chrlist.pop(0)
				#if(comparecount%100000==0):
				#	print "Finished {0} comparision; len chrlist {1}".format(comparecount,len(chrlist))
				comparecount+=1
				testdist,narrowdist=get_distance(active,totest)
				if(testdist < maxdist):
					active = mergeNucmer(active,totest,testdist)
					activeUnmodified=False
				else:
					tested.append(totest)
			chrlist=tested
			if activeUnmodified:
				break
		chrentries.append(active)
	print "Finished {0} with {1} fragments".format(chr,len(chrentries))
	finallist.extend(chrentries)
refgtf=get_refgtflist(finallist)
querygtf=get_querygtflist(finallist)
GTFWriter.write_all(options.outputref,refgtf) # (cls,file,gtfentries):
GTFWriter.write_all(options.outputquery,querygtf)

if(options.outputdist):
	print_distances(options.outputdist,finallist)

    while (len(chrlist) > 0):
        active = chrlist.pop(0)

        while (True):
            tested = []
            activeUnmodified = True
            while (len(chrlist) > 0):
                totest = chrlist.pop(0)
                #if(comparecount%100000==0):
                #	print "Finished {0} comparision; len chrlist {1}".format(comparecount,len(chrlist))
                comparecount += 1
                testdist, narrowdist = get_distance(active, totest)
                if (testdist < maxdist):
                    active = mergeNucmer(active, totest, testdist)
                    activeUnmodified = False
                else:
                    tested.append(totest)
            chrlist = tested
            if activeUnmodified:
                break
        chrentries.append(active)
    print "Finished {0} with {1} fragments".format(chr, len(chrentries))
    finallist.extend(chrentries)
refgtf = get_refgtflist(finallist)
querygtf = get_querygtflist(finallist)
GTFWriter.write_all(options.outputref, refgtf)  # (cls,file,gtfentries):
GTFWriter.write_all(options.outputquery, querygtf)

if (options.outputdist):
    print_distances(options.outputdist, finallist)