예제 #1
0
from matplotlib import gridspec
import numpy as np
import pylab
import physUtils
from matplotlib import rc
from sklearn.cluster import DBSCAN

if __name__ == "__main__":
    simpath = "/scratch/sawala/milkomedia_ii/milkomedia_26_DMO/groups_008_z000p000/"
    saveloc = "../../kuvat/mollweide+hubble.pdf"
    mindist = 1.5
    maxdist = 5.0
    eps = 0.16
    ms = 4

    LGdicts = LGfinder.readAndFind(simpath, output='haloes', expansion=True)

    maxUncontaminatedDist = 0
    for LGdict in LGdicts:
        if LGdict['contaminationDistance'] > maxUncontaminatedDist:
            maxUncontaminatedDist = LGdict['contaminationDistance']
            bestLG = LGdict

    if bestLG['mass1'] < bestLG['mass2']:
        MWindex = bestLG['ind1']
        centre = bestLG['cop1']
    else:
        MWindex = bestLG['ind2']
        centre = bestLG['cop2']

    cop = bestLG['cops']
예제 #2
0
    # creation of mask with True if there is no contamination in Subhalo
    contaminationMask = np.asarray(
        [FoFcontamination[int(group) - 1] < 1 for group in groupNumbers])

    # save contaminated haloes for finding closest one
    contaminatedPositions = fullCOP[contaminationMask == False, :]

    # elimination of contaminated haloes
    staticVel = staticVel[contaminationMask, :]
    mass = mass[contaminationMask]
    cop = fullCOP[contaminationMask, :]
    groupNumbers = groupNumbers[contaminationMask]

    LGs = LGfinder.findLocalGroup(staticVel,
                                  mass,
                                  cop,
                                  quiet=True,
                                  outputAll=True)
    LG = LGs[LGfinder.chooseClosestToCentre(LGs, contaminationMask, fullCOP)]

    if mass[LG[0]] > mass[LG[1]]:
        centreIndex = LG[1]
    else:
        centreIndex = LG[0]
    centre = cop[centreIndex]
    centreVel = staticVel[centreIndex]

    closestContDist = physUtils.findClosestDistance(centre,
                                                    contaminatedPositions)
    distances = np.array([physUtils.distance(centre, c) for c in cop])
    vel = physUtils.addExpansion(staticVel, cop, centre)
예제 #3
0
def readAndSave(simulationfiles, datafile, mindist=1.5, maxdist=5.0, eps=1.6,
				ms=4, scale_eps=False):
	masses = []
	H0s = []
	inClusterH0s = []
	outClusterH0s = []
	zeropoints = []
	inClusterZeros = []
	outClusterZeros = []
	allDispersions = []
	clusterDispersions = []
	unclusteredDispersions = []
	radialVelocities = []
	tangentialVelocities = []
	LGdistances = []
	timingArgumentMasses = []

	f = open(simulationfiles, 'r')
	for simdir in f.readlines():

		dirname = simdir.strip()
		staticVel = filereader.readAllFiles(dirname, "Subhalo/Velocity", 3)
		mass = filereader.readAllFiles(dirname, "Subhalo/Mass", 1)
		fullCOP = filereader.readAllFiles(dirname, "Subhalo/CentreOfPotential", 3)
		FoFcontamination = filereader.readAllFiles(dirname, "FOF/ContaminationCount",
										  1)
		groupNumbers = filereader.readAllFiles(dirname, "Subhalo/GroupNumber", 1)

		fullCOP = fullCOP/h0 # to Mpc

		# creation of mask with True if there is no contamination in Subhalo
		contaminationMask = np.asarray([FoFcontamination[int(group)-1]<1 for group in
							   groupNumbers])

		# save contaminated haloes for finding closest one
		contaminatedPositions = fullCOP[contaminationMask==False, :]

		# elimination of contaminated haloes
		staticVel = staticVel[contaminationMask,:]
		mass = mass[contaminationMask]
		cop = fullCOP[contaminationMask, :]
		groupNumbers = groupNumbers[contaminationMask]

		# to physical units
		mass = mass/h0*1e10 # to M_☉

		LGs = LGfinder.findLocalGroup(staticVel, mass, cop, quiet=True,
							 outputAll=True)
		unmaskedLGs = LGfinder.maskedToUnmasked(LGs, cop, fullCOP)
		bestLGindex = LGfinder.chooseClosestToCentre(unmaskedLGs, contaminationMask, fullCOP)
		LG = LGs[bestLGindex]

		if mass[LG[0]] > mass[LG[1]]:
			centreIndex = LG[1]
		else:
			centreIndex = LG[0]

		massCentre = physUtils.massCentre(cop[LG[0]], cop[LG[1]], mass[LG[0]],
									mass[LG[1]])
		closestContDist = physUtils.findClosestDistance(massCentre,
												  contaminatedPositions)
		
		if closestContDist < maxdist:
			print("Warning: closest contaminated halo closer than the edge of\
	  Hubble flow fitting range in simulation " + dirname + 
	  ".\nExcluding simulation from analysis.")
			continue


		centre = cop[centreIndex]
		centreVel = staticVel[centreIndex]
		closestContDist = physUtils.findClosestDistance(centre,
											   contaminatedPositions)

		distances = np.array([physUtils.distance(centre, c) for c in
					 cop])
		vel = physUtils.addExpansion(staticVel, cop, centre)

		LGrelVel = vel[LG[0]] - vel[LG[1]]
		LGrelVelComponents = physUtils.velocityComponents(LGrelVel, cop[LG[1]]-cop[LG[0]])
		LGdistance = physUtils.distance(cop[LG[0]], cop[LG[1]])

		closestContMask = distances < closestContDist
		distRangeMask = np.array([d < maxdist and d > mindist for d in
						 distances])


		# contamination and distance range cut
		mask = np.logical_and(closestContMask, distRangeMask)
		cop = cop[mask]
		vel = vel[mask]
		distances = distances[mask]

		# radial velocities
		radvel = np.array([physUtils.velocityComponents(vel[j] - centreVel,
											   cop[j] - centre)[0]
				  for j in range(len(vel))])


		##### extracting clustering data #####

		clusteringDB = clustering.runClustering(cop, centre, ms, eps,
										  meansep=scale_eps)
		labels = clusteringDB.labels_
		uniqueLabels = set(labels)
		clusterMemberMask = labels != -1 # True for haloes in cluster

		## all haloes ##
		(H0, zero) = simpleFit(distances, radvel)
		radvelResiduals = np.empty(radvel.shape)
		for i in range(len(radvel)):
			radvelResiduals[i] = radvel[i] - (distances[i] - zero) * H0
		zeropoints.append(zero)
		H0s.append(H0)
		allDispersions.append(np.std(radvelResiduals, ddof=1))

		## outside clusters ##
		(H0, zero, dispersion) = outClusterFit(clusteringDB, radvel, distances,
										 minHaloes=10)
		outClusterH0s.append(H0)
		outClusterZeros.append(zero)
		unclusteredDispersions.append(dispersion)

		## inside clusters ##
		(H0, zero, dispersion) = inClusterFit(clusteringDB, radvel, distances,
										minSize=10)
		inClusterH0s.append(H0)
		inClusterZeros.append(zero)
		clusterDispersions.append(dispersion)

		# LG mass from MW and andromeda
		M_big2 = mass[LG[0]] + mass[LG[1]]

		masses.append(M_big2)
		radialVelocities.append(LGrelVelComponents[0])
		tangentialVelocities.append(LGrelVelComponents[1])
		LGdistances.append(LGdistance)
		timingArgumentMass = timingargument.timingArgumentMass(-1 *
													  LGrelVelComponents[0],
													  LGdistance*1000.0,
													  13.815, G)
		timingArgumentMasses.append(timingArgumentMass)

	##### finalizing data #####

	masses = np.array(masses)
	H0s = np.array(H0s)
	inClusterH0s = np.array(inClusterH0s)
	outClusterH0s = np.array(outClusterH0s)
	zeropoints = np.array(zeropoints)
	inClusterZeros = np.array(inClusterZeros)
	outClusterZeros = np.array(outClusterZeros)
	allDispersions = np.array(allDispersions)
	clusterDispersions = np.array(clusterDispersions)
	unclusteredDispersions = np.array(unclusteredDispersions)
	radialVelocities = np.array(radialVelocities)
	tangentialVelocities = np.array(tangentialVelocities)
	LGdistances = np.array(LGdistances)
	timingArgumentMasses = np.array(timingArgumentMasses)

	data = np.array([masses, timingArgumentMasses, H0s, inClusterH0s,
				  outClusterH0s, zeropoints, inClusterZeros, outClusterZeros,
				  allDispersions,  unclusteredDispersions, clusterDispersions,
				  radialVelocities, tangentialVelocities, LGdistances]).T


	np.savetxt(datafile, data)

	return data
예제 #4
0
def readAndSave(simulationfiles,
                datafile,
                mindist=1.5,
                maxdist=5.0,
                eps=1.6,
                ms=4,
                scale_eps=False):
    masses = []
    H0s = []
    inClusterH0s = []
    outClusterH0s = []
    zeropoints = []
    inClusterZeros = []
    outClusterZeros = []
    allDispersions = []
    clusterDispersions = []
    unclusteredDispersions = []
    radialVelocities = []
    tangentialVelocities = []
    LGdistances = []
    timingArgumentMasses = []

    f = open(simulationfiles, 'r')
    for simdir in f.readlines():

        dirname = simdir.strip()
        staticVel = filereader.readAllFiles(dirname, "Subhalo/Velocity", 3)
        mass = filereader.readAllFiles(dirname, "Subhalo/Mass", 1)
        fullCOP = filereader.readAllFiles(dirname, "Subhalo/CentreOfPotential",
                                          3)
        FoFcontamination = filereader.readAllFiles(dirname,
                                                   "FOF/ContaminationCount", 1)
        groupNumbers = filereader.readAllFiles(dirname, "Subhalo/GroupNumber",
                                               1)

        fullCOP = fullCOP / h0  # to Mpc

        # creation of mask with True if there is no contamination in Subhalo
        contaminationMask = np.asarray(
            [FoFcontamination[int(group) - 1] < 1 for group in groupNumbers])

        # save contaminated haloes for finding closest one
        contaminatedPositions = fullCOP[contaminationMask == False, :]

        # elimination of contaminated haloes
        staticVel = staticVel[contaminationMask, :]
        mass = mass[contaminationMask]
        cop = fullCOP[contaminationMask, :]
        groupNumbers = groupNumbers[contaminationMask]

        # to physical units
        mass = mass / h0 * 1e10  # to M_☉

        LGs = LGfinder.findLocalGroup(staticVel,
                                      mass,
                                      cop,
                                      quiet=True,
                                      outputAll=True)
        unmaskedLGs = LGfinder.maskedToUnmasked(LGs, cop, fullCOP)
        bestLGindex = LGfinder.chooseClosestToCentre(unmaskedLGs,
                                                     contaminationMask,
                                                     fullCOP)
        LG = LGs[bestLGindex]

        if mass[LG[0]] > mass[LG[1]]:
            centreIndex = LG[1]
        else:
            centreIndex = LG[0]

        massCentre = physUtils.massCentre(cop[LG[0]], cop[LG[1]], mass[LG[0]],
                                          mass[LG[1]])
        closestContDist = physUtils.findClosestDistance(
            massCentre, contaminatedPositions)

        if closestContDist < maxdist:
            print("Warning: closest contaminated halo closer than the edge of\
	  Hubble flow fitting range in simulation " + dirname +
                  ".\nExcluding simulation from analysis.")
            continue

        centre = cop[centreIndex]
        centreVel = staticVel[centreIndex]
        closestContDist = physUtils.findClosestDistance(
            centre, contaminatedPositions)

        distances = np.array([physUtils.distance(centre, c) for c in cop])
        vel = physUtils.addExpansion(staticVel, cop, centre)

        LGrelVel = vel[LG[0]] - vel[LG[1]]
        LGrelVelComponents = physUtils.velocityComponents(
            LGrelVel, cop[LG[1]] - cop[LG[0]])
        LGdistance = physUtils.distance(cop[LG[0]], cop[LG[1]])

        closestContMask = distances < closestContDist
        distRangeMask = np.array(
            [d < maxdist and d > mindist for d in distances])

        # contamination and distance range cut
        mask = np.logical_and(closestContMask, distRangeMask)
        cop = cop[mask]
        vel = vel[mask]
        distances = distances[mask]

        # radial velocities
        radvel = np.array([
            physUtils.velocityComponents(vel[j] - centreVel,
                                         cop[j] - centre)[0]
            for j in range(len(vel))
        ])

        ##### extracting clustering data #####

        clusteringDB = clustering.runClustering(cop,
                                                centre,
                                                ms,
                                                eps,
                                                meansep=scale_eps)
        labels = clusteringDB.labels_
        uniqueLabels = set(labels)
        clusterMemberMask = labels != -1  # True for haloes in cluster

        ## all haloes ##
        (H0, zero) = simpleFit(distances, radvel)
        radvelResiduals = np.empty(radvel.shape)
        for i in range(len(radvel)):
            radvelResiduals[i] = radvel[i] - (distances[i] - zero) * H0
        zeropoints.append(zero)
        H0s.append(H0)
        allDispersions.append(np.std(radvelResiduals, ddof=1))

        ## outside clusters ##
        (H0, zero, dispersion) = outClusterFit(clusteringDB,
                                               radvel,
                                               distances,
                                               minHaloes=10)
        outClusterH0s.append(H0)
        outClusterZeros.append(zero)
        unclusteredDispersions.append(dispersion)

        ## inside clusters ##
        (H0, zero, dispersion) = inClusterFit(clusteringDB,
                                              radvel,
                                              distances,
                                              minSize=10)
        inClusterH0s.append(H0)
        inClusterZeros.append(zero)
        clusterDispersions.append(dispersion)

        # LG mass from MW and andromeda
        M_big2 = mass[LG[0]] + mass[LG[1]]

        masses.append(M_big2)
        radialVelocities.append(LGrelVelComponents[0])
        tangentialVelocities.append(LGrelVelComponents[1])
        LGdistances.append(LGdistance)
        timingArgumentMass = timingargument.timingArgumentMass(
            -1 * LGrelVelComponents[0], LGdistance * 1000.0, 13.815, G)
        timingArgumentMasses.append(timingArgumentMass)

    ##### finalizing data #####

    masses = np.array(masses)
    H0s = np.array(H0s)
    inClusterH0s = np.array(inClusterH0s)
    outClusterH0s = np.array(outClusterH0s)
    zeropoints = np.array(zeropoints)
    inClusterZeros = np.array(inClusterZeros)
    outClusterZeros = np.array(outClusterZeros)
    allDispersions = np.array(allDispersions)
    clusterDispersions = np.array(clusterDispersions)
    unclusteredDispersions = np.array(unclusteredDispersions)
    radialVelocities = np.array(radialVelocities)
    tangentialVelocities = np.array(tangentialVelocities)
    LGdistances = np.array(LGdistances)
    timingArgumentMasses = np.array(timingArgumentMasses)

    data = np.array([
        masses, timingArgumentMasses, H0s, inClusterH0s, outClusterH0s,
        zeropoints, inClusterZeros, outClusterZeros, allDispersions,
        unclusteredDispersions, clusterDispersions, radialVelocities,
        tangentialVelocities, LGdistances
    ]).T

    np.savetxt(datafile, data)

    return data
예제 #5
0
	rc('font', **{'family':'serif','serif':['Palatino']})
	rc('text', usetex=True)
	matplotlib.rcParams.update({'font.size': 13})

	fig = plt.figure()

	simlist_path = "../input/allButDuplicates-fullpath.txt"
	simlist_file = open(simlist_path, 'r')
	simlist = [line.strip() for line in simlist_file]

#	simlist =["/scratch/sawala/milkomedia_ii/milkomedia_0_DMO/groups_008_z000p000/"]
	
	for simdir in simlist:
		print(simdir)

		LGdicts = LGfinder.readAndFind(simdir, output='haloes', expansion=True)
		
		# find LG analogue that is closest to the centre of the high res area
		maxUncontaminatedDist = 0
		for LGdict in LGdicts:
			if LGdict['contaminationDistance'] > maxUncontaminatedDist:
				maxUncontaminatedDist = LGdict['contaminationDistance']
				d = LGdict
			
		centre = d['centre']
		if d['mass1'] < d['mass2']:
			centre = d['cop1']
		else:
			centre = d['cop2']

		cop = d['cops']
예제 #6
0
		contaminationMask = np.asarray([FoFcontamination[int(group)-1]<1 for group in
								  groupNumbers])

		# save contaminated haloes for finding closest one
		contaminatedPositions = fullCOP[contaminationMask==False, :]

		# elimination of contaminated haloes
		staticVel = staticVel[contaminationMask,:]
		mass = mass[contaminationMask]
		cop = fullCOP[contaminationMask, :]
		groupNumbers = groupNumbers[contaminationMask]

		# to physical units
		mass = mass/h0*1e10 # to M_☉

		LGs = LGfinder.findLocalGroup(staticVel, mass, cop, quiet=True,
								outputAll=True)
		unmaskedLGs = LGfinder.maskedToUnmasked(LGs, cop, fullCOP)
		bestLGindex = LGfinder.chooseClosestToCentre(unmaskedLGs, contaminationMask, fullCOP)
		LG = LGs[bestLGindex]

		if mass[LG[0]] > mass[LG[1]]:
			MWindex = LG[1]
			andromedaIndex = LG[0]
		else:
			MWindex = LG[0]
			andromedaIndex = LG[1]

		MWcop = cop[MWindex]
#		massCentre = physUtils.massCentre(cop[MWindex], cop[andromedaIndex],
#									mass[MWindex], mass[andromedaIndex])
		closestContDist = physUtils.findClosestDistance(MWcop,
예제 #7
0
        # save contaminated haloes for finding closest one
        contaminatedPositions = fullCOP[contaminationMask == False, :]

        # elimination of contaminated haloes
        staticVel = staticVel[contaminationMask, :]
        mass = mass[contaminationMask]
        cop = fullCOP[contaminationMask, :]
        groupNumbers = groupNumbers[contaminationMask]

        # to physical units
        mass = mass / h0 * 1e10  # to M_☉

        LGs = LGfinder.findLocalGroup(staticVel,
                                      mass,
                                      cop,
                                      quiet=True,
                                      outputAll=True)
        unmaskedLGs = LGfinder.maskedToUnmasked(LGs, cop, fullCOP)
        bestLGindex = LGfinder.chooseClosestToCentre(unmaskedLGs,
                                                     contaminationMask,
                                                     fullCOP)
        LG = LGs[bestLGindex]

        if mass[LG[0]] > mass[LG[1]]:
            centreIndex = LG[1]
        else:
            centreIndex = LG[0]

        centre = cop[centreIndex]
        centreVel = staticVel[centreIndex]
예제 #8
0
import matplotlib.backends.backend_agg
import numpy as np
import os
import physUtils
import sys
from transitiondistance import findBestHubbleflow



if __name__ == "__main__":

	dirname = "/scratch/sawala/milkomedia_ii/milkomedia_97_DMO/groups_008_z000p000/"
	saveloc = ("/home/aajarven/Z-drive/duuni/extragal/gradu-yde/kuvat/"
			"mollweide-anisotropy.pdf")

	LGdicts = LGfinder.readAndFind(dirname, output='haloes')
	
	# find LG analogue that is closest to the centre of the high res area
	maxUncontaminatedDist = 0
	for LGdict in LGdicts:
		if LGdict['contaminationDistance'] > maxUncontaminatedDist:
			maxUncontaminatedDist = LGdict['contaminationDistance']
			d = LGdict
		
	if d['mass1'] < d['mass2']:
		centre = d['cop1']
	else:
		centre = d['cop2']

	cop = d['cops']
	relvel = d['vels'] - d['centrevel']
예제 #9
0
import matplotlib.colors as colors
import matplotlib.pyplot as plt
import matplotlib.backends.backend_agg
import numpy as np
import os
import physUtils
import sys
from transitiondistance import findBestHubbleflow

if __name__ == "__main__":

    dirname = "/scratch/sawala/milkomedia_ii/milkomedia_97_DMO/groups_008_z000p000/"
    saveloc = ("/home/aajarven/Z-drive/duuni/extragal/gradu-yde/kuvat/"
               "mollweide-anisotropy.pdf")

    LGdicts = LGfinder.readAndFind(dirname, output='haloes')

    # find LG analogue that is closest to the centre of the high res area
    maxUncontaminatedDist = 0
    for LGdict in LGdicts:
        if LGdict['contaminationDistance'] > maxUncontaminatedDist:
            maxUncontaminatedDist = LGdict['contaminationDistance']
            d = LGdict

    if d['mass1'] < d['mass2']:
        centre = d['cop1']
    else:
        centre = d['cop2']

    cop = d['cops']
    relvel = d['vels'] - d['centrevel']
예제 #10
0
        # creation of mask with True if there is no contamination in Subhalo
        contaminationMask = np.asarray(
            [FoFcontamination[int(group) - 1] < 1 for group in groupNumbers])

        # save contaminated haloes for finding closest one
        contaminatedPositions = fullCOP[contaminationMask == False, :]

        # elimination of contaminated haloes
        vel = vel[contaminationMask, :]
        mass = mass[contaminationMask]
        cop = fullCOP[contaminationMask, :]
        groupNumbers = groupNumbers[contaminationMask]

        LGs = LGfinder.findLocalGroup(vel,
                                      mass,
                                      cop,
                                      quiet=True,
                                      outputAll=True)
        unmaskedLGs = LGfinder.maskedToUnmasked(LGs, cop, fullCOP)
        bestLGindex = LGfinder.chooseClosestToCentre(unmaskedLGs,
                                                     contaminationMask,
                                                     fullCOP)
        LG = LGs[bestLGindex]

        (main1ind, main2ind) = LGfinder.orderIndices(LG, mass)

        # center on MW
        centre = cop[main1ind]

        # distance range
        distances = np.array([physUtils.distance(centre, pos) for pos in cop])
예제 #11
0
파일: HFfit.py 프로젝트: aajarven/gradu-yde
	fullCOP = fullCOP/h0 # to Mpc

	# creation of mask with True if there is no contamination in Subhalo
	contaminationMask = np.asarray([FoFcontamination[int(group)-1]<1 for group in
									  groupNumbers])

	# save contaminated haloes for finding closest one
	contaminatedPositions = fullCOP[contaminationMask==False, :]

	# elimination of contaminated haloes
	staticVel = staticVel[contaminationMask,:]
	mass = mass[contaminationMask]
	cop = fullCOP[contaminationMask, :]
	groupNumbers = groupNumbers[contaminationMask]

	LGs = LGfinder.findLocalGroup(staticVel, mass, cop, quiet=True,
								  outputAll=True)
	LG = LGs[LGfinder.chooseClosestToCentre(LGs, contaminationMask, fullCOP)]

	if mass[LG[0]] > mass[LG[1]]:
		centreIndex = LG[1]
	else:
		centreIndex = LG[0]
	centre = cop[centreIndex]
	centreVel = staticVel[centreIndex]
	
	closestContDist = physUtils.findClosestDistance(centre,
													contaminatedPositions)
	distances = np.array([physUtils.distance(centre, c) for c in cop])
	vel = physUtils.addExpansion(staticVel, cop, centre)

	# LG mass from MW and andromeda
예제 #12
0
                       edgecolors='k',
                       linewidth=0.9,
                       s=size)
            ax.grid(b=True)
            ax.set_xticklabels([])
            ax.set_yticklabels([])
            ax.set_title(r"$\varepsilon$={:.2f}".format(parameters[1]) +
                         ", MinPts=" + str(parameters[0]))


if __name__ == "__main__":

    infile = "/scratch/sawala/milkomedia_ii/milkomedia_97_DMO/groups_008_z000p000/"
    saveloc = "../../kuvat/"

    LGdicts = LGfinder.readAndFind(infile, output='haloes', expansion=True)

    # find LG analogue that is closest to the centre of the high res area
    maxUncontaminatedDist = 0
    for LGdict in LGdicts:
        if LGdict['contaminationDistance'] > maxUncontaminatedDist:
            maxUncontaminatedDist = LGdict['contaminationDistance']
            d = LGdict

    centre = d['centre']
    if d['mass1'] < d['mass2']:
        centre = d['cop1']
    else:
        centre = d['cop2']

    cop = d['cops']
예제 #13
0
		fullCOP = fullCOP/h0 # to Mpc

		# creation of mask with True if there is no contamination in Subhalo
		contaminationMask = np.asarray([FoFcontamination[int(group)-1]<1 for
								  group in groupNumbers])

		# save contaminated haloes for finding closest one
		contaminatedPositions = fullCOP[contaminationMask==False, :]

		# elimination of contaminated haloes
		vel = vel[contaminationMask,:]
		mass = mass[contaminationMask]
		cop = fullCOP[contaminationMask, :]
		groupNumbers = groupNumbers[contaminationMask]

		LGs = LGfinder.findLocalGroup(vel, mass, cop, quiet=True, outputAll=True)
		unmaskedLGs = LGfinder.maskedToUnmasked(LGs, cop, fullCOP)
		bestLGindex = LGfinder.chooseClosestToCentre(unmaskedLGs, contaminationMask, fullCOP)
		LG = LGs[bestLGindex]

		(main1ind, main2ind) = LGfinder.orderIndices(LG, mass)

		# center on MW 
		massCentre = cop[main1ind]
		massCentreVel = vel[main1ind]

		# expansion
		vel = physUtils.addExpansion(vel, cop, massCentre)

		dist = np.zeros(len(vel))
		speed = np.zeros(len(vel))
예제 #14
0
			mask = (labels == l)
			members = directions[mask]
			ax.scatter(members[:, 0], members[:, 1], facecolors=col,
			  edgecolors='k', linewidth=0.9, s=size)
			ax.grid(b=True)
			ax.set_xticklabels([])
			ax.set_yticklabels([])
			ax.set_title(r"$\varepsilon$={:.2f}".format(parameters[1]) + ", MinPts=" +
				str(parameters[0]))

if __name__ == "__main__":

	infile = "/scratch/sawala/milkomedia_ii/milkomedia_97_DMO/groups_008_z000p000/"
	saveloc = "../../kuvat/"

	LGdicts = LGfinder.readAndFind(infile, output='haloes', expansion=True)
	
	# find LG analogue that is closest to the centre of the high res area
	maxUncontaminatedDist = 0
	for LGdict in LGdicts:
		if LGdict['contaminationDistance'] > maxUncontaminatedDist:
			maxUncontaminatedDist = LGdict['contaminationDistance']
			d = LGdict
		
	centre = d['centre']
	if d['mass1'] < d['mass2']:
		centre = d['cop1']
	else:
		centre = d['cop2']

	cop = d['cops']