subject: Технический долг и неодиночество
20.11.2020 22:37
vit01 (mira, 1)
Разрешил научную загадку, занялся поддержкой технического долга, а ещё я больше не одинок.
[https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/4AI7Rri7sIru8y7… https://www.deviantart.com/eshredder/art/The-United-Zone-357179864 )
Небольшая заметочка: сервера deviantart у некоторых провайдеров под блокировкой РоскомПозора, поэтому оригиналы картинок с поняшами только через VPN
## По науке: загадка разрешается
В [позапрошлом]( https://blog.alicorn.tk/posts/sunny-september.html ) и [прошлом]( https://blog.alicorn.tk/posts/seeing-outside.html ) посте я рассказывал о загадке с определением площади гирорезонансного источника. Был написан алгоритм, который вычисляет координаты яркого источника излучения (активной области) на изображениях, вырезает нужный кусок и считает на полувысоте его площадь. Потом на полувысоте считается площадь пятна (диаграммы направленности) радиотелескопа, из которого и составляется изображение (размер пятна соответствует угловому разрешению телескопа). И для всего дня наблюдений идёт сравнение площадей активной области и пятна.
Проблема была в том, что не было никакой видимой корреляции размеров источника и пятна на графике, хотя эта корреляция должна была быть. Причины получения хреновых графиков могли быть (и оказались) такими:
1. **Ошибки в самом алгоритме подсчёта площади** (так в конце концов и оказалось, обнаружилось при натравливании на модельные данные)
2. **Низкая точность измерения площади из-за пикселизации.** Так как разрешение картинок примерно 2.45 угловых секунды на пиксель, а диаметр пятна радиотелескопа примерно 10 угловых секунд, то его центральная часть укладывалась всего в пару пикселей, чего очень мало. Чтобы набрать точность, избавиться от пикселизации и сделать объекты гладкими, пришлось делать сглаживание (интерполяцию) картинки. Кстати, если понадобится, делайте через `scipy.ndimage.zoom()`
3. **Захватывалась не главная (центральная часть) активной области, а вместе с фоном**, из-за чего алгоритм думал, что площадь больше, хотя она на самом деле меньше. Изначально я думал, что этот эффект тут самый главный, но оказалось, что главный - №1. Тем не менее, от 3 пункта всё равно пришлось избавляться. Достигнуто это было через измерение площади не на полувысоте, а на 0.8 от максимальной радиояркости.
4. **Сами данные были порченные, в том числе из-за дефектов алгоритма CLEAN**. Алгоритм CLEAN используется для построения радиоизображений из исходного нечитаемого месива дифракционной картины, которую выдаёт радиотелескоп. Он иногда может косячить. Этот эффект никуда особо не делся, но в этом ничего особо страшного нет, и потом я объясню, почему
5. **Отсутствие нормировки после интерполяции**. Да, после пункта №2, оказывается, надо было ещё и нормировку сделать на единицу при сравнении площадей, потому что максимальное значение яркости на изображении после сглаживания менялось! Это был существенный эффект, о котором я ранее не подозревал, и который очень надо иметь в виду
Пункты 3 и 4 следует проиллюстрировать на картинках. Покажу сначала само радиоизображение, а потом график интенсивности по горизонтали вдоль самого яркого пикселя. Синим изображена активная область, а оранжевым - пятно радиотелескопа. Максимум отнормирован на единицу, стоят отметки на 0.5 от высоты и 0.8 от высоты.
#### Пример протяжённого источника.
https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/kL2VsId7MzMqC4s…
#### Горизонтальный срез вдоль ярчайшего пикселя + пятно радиотелескопа
https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/uDOiVlzwP5QGzuy…
#### Ошибки алгоритма CLEAN
Обратите внимание, вот эта ровная сеточка из кружков, выстроенная вдоль одной линии, ненастоящая, её на самом деле быть не должно. Реальный радиоисточник здесь только тот, который самый яркий. Более тусклые - как раз тот мусор, который алгоритм CLEAN "вычистить" не смог.
https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/xAgZ4ubOdkzH26L…
Что приятно, в данном конкретном случае мой алгоритм подсчёта площади делает меньше ошибку, когда считает на уровне 0.8. Но дефекты CLEAN во многих случаях неустранимы.
https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/xfQAoVDAEyxw4rn…
## И всё-таки, как изначально должна была выглядеть корреляция размеров?
И тут надо рассказать самое главное, в чём собака зарыта. Сразу я это делать не стал, чтобы вовремя показать красивую картинку, хех. Это связано всё с тем, как радиотелескоп получает своё изображение. Давайте пока что абстрагируемся от Солнца и попробуем представить себе, как наблюдаем за маленькой звёздочкой далеко в небе.
Так как звёзды крайне маленькие, то их можно представить в виде точечного источника света. Допустим, размер пятна радиотелескопа около 10 пикселей, а излучение звезды - около миллиона градусов (яркостная температура). Пронаблюдав далёкую звезду через наш радиотелескоп, мы получим размытую картинку, и для нас всё будет выглядеть, будто излучение звезды 100 000 градусов, а не миллион. Этот миллион "размоется" по пиксельной сетке.
Если же мы взглянем на точно такую же звезду, которая гораздо ближе к нам, и угловой размер которой больше или равен пятну телескопа, то при такой же интенсивности миллион градусов мы миллион и получим. Так что размер имеет значение. Только вот когда мы наблюдаем реальную картину, то мы не знаем реальный размер источника. Поэтому даже для очень маленьких активных областей мы должны получить площадь, сравнимую с площадью пятна радиотелескопа.
Иногда бывает, что источник достаточно большой, а температуры у него низкие. И именно в этом случае проявляются дефекты алгоритма CLEAN, когда он начинает "выедать" яркостный фон. Поэтому на тех изображениях, где есть дефекты, размеры источника как раз большие, из-за чего конкретно на моё исследование это не слишком влияет.
Гирорезонанс характеризуется высокими яркостными температурами и крайне малым размером радиоисточника. И на графике ниже мы можем как раз пронаблюдать изменение размера настоящего гирорезонансного источника в течение дня:
https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/A35E92Q0z67jjer…
Здесь всё идеально: на самом первом графике (площадь в зависимости от времени) размер источника всего раза в полтора-два больше размера пятна (красные точки - это значения меньше или равно 3 размерам пятна). Второй график - это яркостные температуры, здесь высоким яркостным температурам всегда соответствуют маленькие размеры источников. На третьем графике мы чётко видим, что источник компактный, и его размеры лежат в одном узком кластере точек.
### Что дальше?
Судя по проведённому анализу размеров, из 27 событий точные и яркие случаи гирорезонанса, который мы ищем, всего у 2 событий. Один из них на графике выше был. Есть также спорные случаи, где высокий уровень флуктуаций размеров источника, однако их тоже можно причислить к гирорезонансу по остальным критериям оценки (не по размерам). Это означает, что 34 ГГц для них является не третьей гармоникой циклотронной частоты, а, например, четвёртой.
С соавторами мы договорились, что на этом можно по идее остановиться и только пересчитать статистику по активным областям, убрав все вспышечные выбросы. В результатах же отразить случаи, какой из гармоник какое событие может соответствовать. Скачаю базу данных вспышек у одного человека и пересчитаю статистику. Как только эти графики будут готовы, можно будет всё заносить в статью и заниматься уже финальным оформлением. Ориентировочный дедлайн готовности статьи - к концу года. Честно говоря, это довольно утомительно, и мне хочется не тянуть время, поднажать и больше усилий посвятить расчётам.
С научной частью пока всё. Дальше переходим к жизни...
## I'm not alone anymore
Да-да, я больше не одинок. Думаю, эта новость запоздала уже на месяц с лишним, но всё равно стоит об этом обмолвиться и сказать спасибо кое-кому, кто этот текст сейчас читает. И другим людям тоже спасибо сказать. Конкретных имён и явок не будет, но тем, кто учится со мной на физфаке, всё уже видно и всё понятно.
А ещё у этого блога немного выросло количество читателей. Также отдельно хочется сказать спасибо за понимание _тому будущему экономисту, который осваивает R_: приятно, что и ты теперь тоже меня читаешь. Да и в целом рад, что у меня теперь больше друзей или, по крайней мере, потенциальных друзей.
Заводить дружбу мне часто было трудно. В школе положительного примера толком не было и социализации нормальной тоже не было. Когда пришёл в университет, меня просто удивило, что в нашей группе куча очень хороших и в целом относительно адекватных людей. Но близко подружиться со многими не удавалось, потому что я неправильно себя позиционировал из-за недостатка опыта в общении.
Например, казалось, что если помогаю людям бесплатно или трачу на них своё время, то это поможет завести друзей. Но в реальном мире это практически не работает. На первом курсе я даже как-то делал небольшие просветительские лекции и ликбезы для одногруппников. Нет, в числе мотивов, конечно, была тяга к распространению знаний, но в первую очередь просто подружиться со всеми хотелось (а толку было мало). А ещё мне казалось, что если я попутно самовыражаюсь и показываю какие-то свои навыки или "особые способности", то это будет воспринято положительно, хотя это работает далеко не со всеми людьми (многих это оттолкнёт).
Вспоминаются случаи разные из недалёкого прошлого по типу таких
* _у человека проблема с программой или с техникой и требуется помощь_
* **Я:** прилагаю максимум усилий и решаю проблему самым элегантным и крутым способом, ожидая, что это положит начало нашей дружбе
* **Человек:** них_я себе, он так быстро уложил это всего в 20 строчек кода, ещё поучает и хвастается... спасибо, конечно, но, должно быть, он просто самовыражается и хочет выставить меня идиотом, мне неуютно в его присутствии
* **Я:** блин, где выхлоп, нахера трачу столько времени и сил? _грусть, тоска, печаль, одиночество_
О, а ещё стоит воздержаться в широком коллективе (в общих беседах) от споров о религии, политике и о проведении досуга. В своё время мне это казалось интересной интеллектуальной игрой, но далеко не во всех кругах это поймут. С непривычки будут тебя считать снобом и мудаком, либо просто крайне критичным человеком, даже если ты споришь без перехода на личности и с полным вниманием к позиции собеседника.
## Технический долг и депрессия
В среде программистов (и в целом многих технарей) существует такое понятие как технический долг. Это когда ты сначала быстренько написал программу тяп-ляп, чтобы она хоть как-то работала, но дал себе обещание на потом, что в будущем исправишь/переделаешь всё по-человечески. Как будто ты взял в долг у себя в будущем (или у своей системы). Данное понятие можно обобщить и на другие сферы нашей жизни. Например, когда ты во время учёбы что-то недоучил или недорешал, у тебя появляются пробелы в знаниях, которые в будущем требуется восполнить, - это тоже технический долг.
В хороших фирмах расходы на сопровождение тех. долга всегда заранее учитываются в бюджете и присутствуют в планах. Но в обычной жизни мы можем накапливать такие долги сколько угодно долго. У меня в главном org-mode файле есть огроменный список всех недорешанных домашних заданий за весь период обучения на физфаке. И этот список регулярно пополняется.
Причём же тут депрессия? Дело в том, что во время подавленных и депрессивных состояний люди могут только копить свои технические долги. И наоборот: огромный тех. долг в той или иной сфере жизни/деятельности может приводить к депрессии. У меня нынче сложилась такая ситуация, что я впервые выхожу из того ужасного состояния, в котором обычно почти постоянно пребываю, и начинают появляться силы и время на сопровождение своего тех. долга. Теперь по выходным потихоньку начинаю какую-то штучку из списка нерешённых ранее задач закрывать. И это очень и очень круто! Спасибо всем, кто меня с этим поддерживает на этом нелёгком пути.
Хочу добавить, что особо зацикливаться на тех. долге не стоит: все их накапливают. Это как государственный долг, полностью избавляться от которого не нужно, а нужно держать на его определённом уровне и не давать ему разрастаться.
## Санация права
Обычно я продвигаю в блоге какие-то интересные технические проекты, но в этот раз будет юридическо-политический. В последнее время всё ещё приходится читать или слышать от людей, что, якобы, Путин делал всё правильно, что его правлению нет альтернативы, и что наша власть работает настолько хорошо, насколько может. Кто-то добрым словом и Медведева вспоминает (хотя это тоже глупость). Но при этом у людей достаточно плохая память, и они быстро забывают как просто ошибочные, так и злодейские инициативы, принятые органами власти.
Проект [Санация права]( http://sanatsia.com/ ), основанный командой юристов, поддерживает список законов РФ, как они сами описывают, "сомнительных с этической точки зрения, нарушающих нормы цивилизованного общества, права человека или гуманитарные ценности". Причём не только список самих законов, но и случаи правоприменительной практики по ним. Целью составления списка они ставят быструю очистку законодательства в будущем, когда придёт нормальная власть (то есть разово одним пакетом отменить все вредительские законы).
Посмотрев и поизучав сайт, вы не без удивления обнаружите, что большая часть идиотских и преступных законов появились в два последних срока Путина. Немножечко есть и в срок Медведева. Меня только смутило то, что после 2017 года проект почему-то заглох и не пополняется, хотя за последние годы "бешеный принтер" государственной думы напринимал ещё кучу всякой гадости.
См. также: [Санация (экономика)]( https://ru.wikipedia.org/wiki/%D0%A1%D0%B0%D0%BD%D0%B0%D1%86%D0%B8%D1… ))
Ещё хочу порекомендовать гитхаб-репозиторий https://github.com/Pontorez/const, который складирует новости из СМИ и собирает полный список преступлений текущего политического режима. Ко многим материалам оттуда следует относиться критично, однако если у вас "плохая политическая память", то можно освежить воспоминания или быстро отыскать событие по заголовку. Там уже свежие коммиты и регулярные обновления.
Этот пост в блоге: https://blog.alicorn.tk/posts/technical-debt.html
--------------------------------------------------------------------------------