@@ -369,8 +369,9 @@ def moments_enhanced(
369369 island. Units: pixels.
370370
371371 maxi : float
372- Peak pixel value within the island. Units: spectral brightness,
373- typically Jy/beam. To clarify: source_island[maxpos] == maxi.
372+ Peak pixel value within the island. Pixel values represent spectral
373+ brightness (typically in Jy/beam).
374+ For clarity: source_island[maxpos] == maxi.
374375
375376 fudge_max_pix_factor : float
376377 Correction factor for underestimation of the peak by considering the
@@ -464,6 +465,8 @@ def moments_enhanced(
464465 # dump the redundant elements that have undetermined values.
465466 source_island = source_island [:no_pixels ]
466467 noise_island = noise_island [:no_pixels ]
468+ posx = posx [:no_pixels ]
469+ posy = posy [:no_pixels ]
467470 # The significance of a source detection is determined in this way.
468471 significance [0 ] = (source_island / noise_island ).max ()
469472
@@ -504,13 +507,7 @@ def moments_enhanced(
504507 i = np .nonzero (mask )[0 ][0 ]
505508 basepos = rounded_barycenter
506509 basevalue = source_island [i ]
507- else :
508- # The rounded barycenter position is not in source_island, so we
509- # revert to the maximum pixel position, which is always included.
510- basepos = maxpos [0 ] - chunkpos [0 ], maxpos [1 ] - chunkpos [1 ]
511- basevalue = maxi
512-
513- deltax , deltay = xbar - basepos [0 ], ybar - basepos [1 ]
510+ deltax , deltay = xbar - basepos [0 ], ybar - basepos [1 ]
514511
515512 if force_beam :
516513 # If the restoring beam is forced, we use the beam parameters
@@ -595,7 +592,7 @@ def moments_enhanced(
595592 else :
596593 theta -= math .pi / 2.0
597594
598- if np .sign (threshold ) == np .sign (basevalue ):
595+ if np .sign (threshold ) == np .sign (basevalue ) and in_source_island :
599596 # Implementation of "tweaked moments", equation 2.67 from
600597 # Spreeuw's thesis. In that formula the "base position" was the
601598 # maximum pixel position. Here that is the rounded
@@ -620,9 +617,9 @@ def moments_enhanced(
620617 # Gaussian fits.
621618 if basevalue > 0 :
622619 low_bound = 0.5 * basevalue
623- upp_bound = 1.5 * basevalue
620+ upp_bound = 2.0 * basevalue
624621 else :
625- low_bound = 1.5 * basevalue
622+ low_bound = 2.0 * basevalue
626623 upp_bound = 0.5 * basevalue
627624
628625 # The number of iterations used for the root finder is also
0 commit comments