Атмосфера против Атмосферного экрана, затем 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)])