В galsim lib, что делает applyShear?

Это делает такое же искажение изображения, как applyTransformation? есть ли еще эта функция applyTransformation?

а что касается функции applyShear, то она применима только к сдвигу, без другого эффекта линзирования, т.е. без увеличения или других эффектов более высокого порядка, верно?

3 ответа

Решение

В версии 1.1 методы applyShear а также applyTransformation были объявлены устаревшими. Предпочтительные методы для использования сейчас shear а также transform,

shear метод обычно используется как sheared_obj = obj.shear(g1=g1, g2=g2) где g1, g2 являются компонентами уменьшенного сдвига, которые будут применены. Вы также можете дать e1, e2 (искажения, а не сдвиг), или g, beta или же e, beta (давая величину и угол положения), среди других возможностей. Смотрите документы для Shear класс для получения дополнительной информации о способах указания сдвига в GalSim.

Однако вы указываете сдвиг, shear метод сдвинет данный профиль поверхностной яркости на эту величину таким образом, чтобы сохранить общий поток.

transform Метод несколько более общий, так как вы можете преобразовать любую произвольную матрицу преобразования координат 2x2. В частности, вы указываете произвольный якобиан: dudx, dudy, dvdx, dvdy где (x,y) - исходные координаты и (u,v) - преобразованные координаты. С помощью этого метода вы можете применить преобразование, эквивалентное сдвигу, но вам нужно будет вручную вычислить правильные члены в якобиане.

Другое отличие состоит в том, что transform не обязательно сохранять поток. Поток сохраняется, только если у якобиана есть единичный определитель. Таким образом, в зависимости от вашего варианта использования, вы можете изменить масштаб потока по определителю, когда вы закончите.

Я предполагаю, что вы чаще всего захотите использовать shear скорее, чем transform, Вот пример использования (взят из demo5.py в каталоге примеров GalSim):

gal = galsim.Exponential(flux=1., half_light_radius=gal_re)

[...] 

for [...]:
    # Now in a loop to draw many versions of this galaxy with different shears, etc.

    # Make a new copy of the galaxy with an applied e1/e2-type distortion 
    # by specifying the ellipticity and a real-space position angle
    this_gal = gal.shear(e=ellip, beta=beta)

    # Apply the gravitational reduced shear by specifying g1/g2
    this_gal = this_gal.shear(g1=gal_g1, g2=gal_g2)

    [...]

Надеюсь это поможет.

Примечание. Приведенные выше ссылки действительны по состоянию на декабрь 2014 года. Если они устарели, попробуйте перейти с верхнего уровня документации Doxygen, которая, надеюсь, все еще будет работать.

Вся письменная документация, примеры и исходный код можно найти на GitHub по следующему адресу. https://github.com/GalSim-developers/GalSim

Я предлагаю сначала посмотреть там, и если нет документов, которые отвечают на ваш вопрос напрямую, вы всегда можете изучить исходный код для applyShear функциональность, которую вы описываете.

Удачи

Я просто хотел бы добавить к ответу выше от ne1410s (у меня нет очков репутации, чтобы комментировать его или ее пост).

В дополнение к этой превосходной информации, существуют подробные строки документации для большинства стандартных функций, которые вы можете проверить с помощью подпрограммы python help(), т.е.

import galsim
help(galsim.GSObject.applyShear)

В случае applyShear() эта процедура устарела в последней версии GalSim, но строка документации все еще существует и указывает пользователю на новые функциональные возможности. Для более старых версий GalSim есть полная строка документации, которая объясняет, как работает applyShear().

Подводя итог, перейдя в репозиторий GalSim, вы можете получить помощь следующими способами:

  1. Просмотрите демо в примерах / (они подробно прокомментированы).
  2. Просмотрите краткий справочник в doc/
  3. Перейдите к полной документации, включая все строки документации, по адресу http://galsim-developers.github.io/GalSim/

А также есть строки документации для отдельных подпрограмм, которые доступны через help(). В общем случае не нужно читать исходный код, чтобы узнать, как работают подпрограммы.

Другие вопросы по тегам