If you can turn my_sigma_clip into a ufunc, you could do
my_sigma_clip.reduce(cube, axis=0)
http://docs.scipy.org/doc/numpy/user/c-info.ufunc-tutorial.htmlhttp://docs.scipy.org/doc/numpy/reference/generated/numpy.ufunc.reduce.html
Best wishes,
Alex
On 7/03/12 5:43 PM, Jose Miguel Ibáñez wrote:
> Hi !
>> Right Kathleen, I mostly refer to the rejection, masking, scaling ...
> algorithms; the idea is to avoid to install all the PyRAF staff only
> because the nice iraf.imcombine task.
> I have tried to implement some of those features, but for the moment
> the main problem is that my routine is extremely slow (~2min)
> following the next schema:
>> import numpy as np
>> ndim = 2048
>> cube = np.random.rand(32,ndim, ndim)
> result = np.zeros([ndim, ndim], np.float32)
>> def combine(cube, result):
>> for ii in range(ndim):
> for jj in range(ndim):
> result[ii, jj] = my_sigma_clip(cube[:,ii,jj])
> return result
>>> However, the next numpy sentence is very fast (less than 1 second )
>>>> median_result = np.median(cube,0)
> So, I'd also like to find out where is the point of that difference.
>>> As Erik suggests, I think that kind of combine-like routines should be
> in the next coming astropy package, maybe with the effort of all of
> us.
> So Kathleen, I encourage you to continue with your adventure at Gemini
> and let us know about your progress.
>> Cheers,
> Jose
>>>> 2012/3/6 Kathleen Labrie<klabrie@gemini.edu>:
>> Hi,
>>>> I think Jose mostly refer to the rejection, masking, scaling, weighing
>> algorithms that iraf imcombine offers. I agree the arithmetic is easy
>> enough to do with numpy and pyfits, even the median. It's the rest
>> of imcombine that can get tricky (and bloated).
>>>> For the record, here at Gemini, we will soon embark it that foolish adventure
>> of trying to reproduce at least some of the imcombine features (but only
>> the ones we need due to time and resource constraints). We are still
>> at the point of defining which features we really need though, so I don't
>> think it will help Jose much for now.
>>>> I am very interested to hear if someone has written some code for a
>> imcombine-like routine.
>>>> Cheers,
>> Kathleen
>>>> On Mar 6, 2012, at 8:52 AM, Erik Tollerud wrote:
>>>>> I'm not aware of a function that does it exactly with the interface of
>>> imcombine, but it can be done pretty easily with pyfits:
>>>>>> import pyfits
>>>>>> f1 = pyfits.open('filename1')
>>> f2 = pyfits.open('filename2')
>>>>>> h1 = f1[0].header
>>> im1 = f1[0].data
>>> im2 = f2[0].data
>>>>>> newimage = im1 + im2
>>>>>> newhdu = pyfits.PrimaryHDU(data=newimage,header=h1)
>>> newhdu.writeto('newfilename')
>>>>>>>>> That example is specific to addition, of course (the im1 + im2 part,
>>> but it should be clear how to generalize it to other arithmetic
>>> operations.
>>>>>>>>> 2012/3/6 Jose Miguel Ibáñez<ppmime@gmail.com>:
>>>> Hello everyone,
>>>>>>>> does anyone know of an implementation of the iraf.imcombine task in
>>>> python+numpy ? (of course, not using pyraf.imcombine call)
>>>>>>>>>>>> Thanks !
>>>> Jose
>>>> _______________________________________________
>>>> AstroPy mailing list
>>>>AstroPy@scipy.org>>>>http://mail.scipy.org/mailman/listinfo/astropy>>>>>>>>> --
>>> Erik Tollerud
>>> _______________________________________________
>>> AstroPy mailing list
>>>AstroPy@scipy.org>>>http://mail.scipy.org/mailman/listinfo/astropy> _______________________________________________
> AstroPy mailing list
>AstroPy@scipy.org>http://mail.scipy.org/mailman/listinfo/astropy