I am trying to perform Bulge-Disk Decomposition on generated galaxy images and was trying to use the color_fit.py and color_plot_together.py (from demo_color) on them.
I assumed that the galaxy only has 2 components, the bulge and the disk, and both the components have the same position while generating the image. I ran into a problem with forcepho when instead of detecting 2 active sources, only one active source was being detected (either the disk or the bulge).
I traced this issue back to the grow_scene and find_overlaps functions in the superscene.py file. I made a temporary fix in the the find_overlaps function which I have mentioned below,
def find_overlaps(self, center, radius,seed_index=0, sort=False):
"""Find overlapping sources *not including at the provided center*
Uses a metric based on |x_i - x_j|/|R_i + R_j|
Parameters
----------
center : ndarray of shape (2,)
Floats representing the ra and dec of the center
*in scene coordinates*
radius : float
Radius of influence of the `center`
sort : bool, optional
Whether to sort the output in increasing order of the metric
Returns
-------
inds : ndarray of ints
The indices of the sources that overlap, optionally sorted
in order of distance from the center
"""
kinds = self.kdt.query_ball_point(center, radius + self.boundary_radius)
d = self.scene_coordinates[kinds] - center
metric = np.hypot(*d.T) / (radius + self.roi[kinds])
overlaps = (metric < 1) & (metric > 0)
# LET US CONSIDER ONLY 2 (MAXIMUM) SOURCES
if not np.any(overlaps)== True: #IF BOTH VALUES IN OVERLAP ARE FALSE THEN THIS IS FOLLOWED
if len(kinds)<=1:
pass #IF THERE IS ONLY ONE SOURCE THIS PART IS PASSED
else:
if seed_index == 0:
overlaps = [False,True] #only defining for 2 sources
else:
overlaps = [True,False] #only defining for 2 sources
if sort:
order = np.argsort(metric[overlaps])
else:
order = slice(None)
return np.array(kinds)[overlaps][order]
The "if- code" I wrote works only for a maximum of 2 sources. I believe it will fail if there are 2 sources at the centre and any other source at another position.
Is there another way of accepting active sources at the centre?
I am trying to perform Bulge-Disk Decomposition on generated galaxy images and was trying to use the color_fit.py and color_plot_together.py (from demo_color) on them.
I assumed that the galaxy only has 2 components, the bulge and the disk, and both the components have the same position while generating the image. I ran into a problem with forcepho when instead of detecting 2 active sources, only one active source was being detected (either the disk or the bulge).
I traced this issue back to the grow_scene and find_overlaps functions in the superscene.py file. I made a temporary fix in the the find_overlaps function which I have mentioned below,
The "if- code" I wrote works only for a maximum of 2 sources. I believe it will fail if there are 2 sources at the centre and any other source at another position.
Is there another way of accepting active sources at the centre?