Атмосфера против Атмосферного экрана, затем PhaseScreenList

Я пытаюсь использовать код, предоставленный в файле phase_screens.py, который может воспроизвести сюжет Jee & Tyson (2011). Когда я пытаюсь запустить линию

    psf = atm.makePSF(lam = 700., exptime = 15., diam = 8.4, obscuration = .6)

Я получаю AttributeError, который говорит, что объект "генератора" не имеет атрибута "stepK".

Но у atm есть тип PhaseScreenList. Почему я не могу позвонить в atm.makePSF или atm.wavefront? При создании многоэкранной атмосферы существуют тонкие различия между (1) передачей списков в качестве параметров внутри конструктора Atmosphere и (2) определением объектов AtmosphericScreen, а затем передачей списка объектов внутри конструктора PhaseScreenList? Заранее спасибо!

1 ответ

Решение

Я думаю, что это ошибка в Atmosphere() функция, которая будет исправлена, когда ветка #824 будет объединена с мастером. Если вы можете работать из этой ветки сейчас, то вы, вероятно, будете в порядке. Если вы хотите просто пропатчить мастер, то я думаю заменить последнюю строку Atmosphere() со следующим должно работать:

    return galsim.PhaseScreenList(
        [AtmosphericScreen(**kw) 
         for kw in galsim.utilities.lod_to_dol(kwargs, nmax)])
Другие вопросы по тегам