@@ -614,7 +614,7 @@ def cosmicray_median(data, thresh, background=None, mbox=11):
614
614
Parameters
615
615
----------
616
616
617
- ccd : numpy ndarray or Mask arary object
617
+ ccd : numpy. ndarray or numpy.MaskedArary
618
618
Data to have cosmic ray cleans
619
619
620
620
thresh : float
@@ -640,10 +640,22 @@ def cosmicray_median(data, thresh, background=None, mbox=11):
640
640
A boolean ndarray with the cosmic rays identified
641
641
642
642
"""
643
+ if not isinstance (data , np .ndarray ):
644
+ raise TypeError ('data is not a ndarray object' )
645
+
646
+ if background is None :
647
+ background = data .std ()
648
+ else :
649
+ if not isinstance (background , (float , np .ndarray )):
650
+ raise TypeError ('Background is not a float or ndarray' )
643
651
644
652
# create the median image
645
653
marr = ndimage .median_filter (data , size = (mbox , mbox ))
646
654
655
+ # Only look at the data array
656
+ if isinstance (data , np .ma .MaskedArray ):
657
+ data = data .data
658
+
647
659
# Find the residual image
648
660
rarr = (data - marr ) / background
649
661
@@ -654,7 +666,7 @@ def cosmicray_median(data, thresh, background=None, mbox=11):
654
666
655
667
656
668
@log_to_metadata
657
- def cosmicray_clean (ccddata , thresh , cr_func , crargs = (),
669
+ def cosmicray_clean (ccd , thresh , cr_func , crargs = (),
658
670
background = None , bargs = (), gbox = 0 , rbox = 0 ):
659
671
"""
660
672
Cosmic ray clean a ccddata object. This process will apply a cosmic ray
@@ -665,7 +677,7 @@ def cosmicray_clean(ccddata, thresh, cr_func, crargs=(),
665
677
Parameters
666
678
----------
667
679
668
- ccddata : CCDData object
680
+ ccd : CCDData object
669
681
Data to have cosmic ray cleans
670
682
671
683
thresh : float
@@ -718,10 +730,10 @@ def cosmicray_clean(ccddata, thresh, cr_func, crargs=(),
718
730
"""
719
731
720
732
# make a masked array that will be used for all calculations
721
- if ccddata .mask is None :
722
- data = ccddata .data
733
+ if ccd .mask is None :
734
+ data = ccd .data
723
735
else :
724
- data = np .ma .masked_array (ccddata .data , ccddata .mask )
736
+ data = np .ma .masked_array (ccd .data , ccd .mask )
725
737
726
738
if background is None :
727
739
background = sigma_func (data )
@@ -731,21 +743,26 @@ def cosmicray_clean(ccddata, thresh, cr_func, crargs=(),
731
743
# identify the cosmic rays
732
744
crarr = cr_func (data , thresh , background , * crargs )
733
745
746
+ #create new output array
747
+ newccd = ccd .copy ()
748
+
734
749
# upate the mask
735
- if ccddata .mask is None :
736
- ccddata .mask = crarr
750
+ if newccd .mask is None :
751
+ newccd .mask = crarr
737
752
else :
738
- ccddata .mask = ccddata .mask + crarr .mask
753
+ newccd .mask = newccd .mask + crarr .mask
739
754
740
755
# grow the pixels
741
756
if gbox > 0 :
742
- ccddata .mask = ndimage .maximum_filter (ccddata .mask , gbox )
757
+ newccd .mask = ndimage .maximum_filter (newccd .mask , gbox )
743
758
759
+ #replace bad pixels in the image
744
760
if rbox > 0 :
745
- data = np .ma .masked_array (ccddata .data , (ccddata .mask == 0 ))
761
+ data = np .ma .masked_array (newccd .data , (newccd .mask == 0 ))
746
762
mdata = ndimage .median_filter (data , rbox )
747
- ccddata .data [ccddata .mask > 0 ] = mdata [ccddata .mask > 0 ]
748
- return ccddata
763
+ newccd .data [newccd .mask > 0 ] = mdata [newccd .mask > 0 ]
764
+
765
+ return newccd
749
766
750
767
751
768
class Keyword (object ):
0 commit comments