LINUX.ORG.RU

Какой функцией можно пофиттить такую фигню?

 curve fitting,


1

3

Есть куча событий такого вида: https://i.imgur.com/szyvheQ.png (циферки).

Высота «хвостов» варьирует относительно друг друга. Функцией какого вида можно точнее всего пофиттить такую загогулину? У меня на такие вещи голова плохо заточена, у кого с математической смекалкой получше, выручайте.

★★★★★

Последнее исправление: Axon (всего исправлений: 1)

Похоже на частоты резонанса, антирезонанса. Но циферок очень мало. Обычно ты хочешь пребразование Фурье.

Ты скажи, зачем тебе фитить, и что значит «куча событий».

tyakos ★★★
()
Ответ на: комментарий от tyakos

Ты скажи, зачем тебе фитить, и что значит «куча событий».

Как бы это сказать. :-) В общем, это помехи, которыми засрана вся запись. Я хочу слегонца сжульничать: автоматически отдетектить эти помехи, каждую отфиттить и вычесть из записи, чтобы из неё было проще вытянуть сигнал.

Axon ★★★★★
() автор топика
Ответ на: комментарий от peregrine

Что значит «пофиттить»?

Аппроксимировать.

Axon ★★★★★
() автор топика
Последнее исправление: Axon (всего исправлений: 1)
Ответ на: комментарий от peregrine

У тебя есть характер и природа этих помех?

Если бы я знал откуда они берутся, я бы от них избавился. :-) Каким-то образом они создаются при движении раствора через перистальтический насос (при некоторых условиях), но об физику процесса я уже себе всю голову сломал, и объяснить её не могу.

Axon ★★★★★
() автор топика
Последнее исправление: Axon (всего исправлений: 1)
Ответ на: комментарий от Axon

А не хочешь взять производную? Если > определённого значения - заменяешь прямой.

Или если хочешь поизвращаться - делаешь пребразование Фурье, смотришь на частоты этих колебаний, применяешь фильтр, отрезая их. Не так и сложно, на самом деле, если частоты не меняются.

tyakos ★★★
()
Ответ на: комментарий от tyakos

А не хочешь взять производную? Если > определённого значения - заменяешь прямой.

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

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

А фильтр мне кинетику полезного сигнала не размажет?

Axon ★★★★★
() автор топика
Ответ на: комментарий от Axon

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

tyakos ★★★
()
Последнее исправление: tyakos (всего исправлений: 1)
Ответ на: комментарий от tyakos

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

Поясню картинкой: https://i.imgur.com/sCI3BeD.png. Как видно, фаза нарастания там по кинетике близка к помехам.

Axon ★★★★★
() автор топика
Ответ на: комментарий от Axon

Опять же, посмотри на частоты.

Можешь фитить синус в каждый хвост, но не думаю, что ты сохранишь полезную информацию, у тебя там <5 точек в каждом хвосте. Точно не хочешь пофитить прямую?

tyakos ★★★
()
Ответ на: комментарий от tyakos

Опять же, посмотри на частоты.

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

Можешь фитить синус в каждый хвост

На синус не похоже, между пиками явно прямая (со скидкой на фильтрацию).

Точно не хочешь пофитить прямую?

В смысле?

Axon ★★★★★
() автор топика
Ответ на: комментарий от Axon

На синус не похоже, между пиками явно прямая (со скидкой на фильтрацию).

Разрешения не хватает, потому и прямой кажется.

tyakos ★★★
()
Ответ на: комментарий от Axon

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

Скинь картинку частот.

tyakos ★★★
()
Ответ на: комментарий от tyakos

Разрешения не хватает, потому и прямой кажется.

Но на спад и нарастание-то там явно плавные, даже с такой частотой дискретизации. Плюс, этот сигнал уже аппаратно пофильтрован на 3 кГц, так что реально там пики ещё острее.

Axon ★★★★★
() автор топика
Ответ на: комментарий от greenman

смотри медианный фильтр

Медианный фильтр для моего сигнала не подходит, он либо ничего не делает, либо (при увеличении окна) искомым событиям головы отрезает.

Axon ★★★★★
() автор топика
Ответ на: комментарий от Axon

>25кГц точно пусто?

А вообще, я так и не могу понять, как ты собираешься извечь полезную информацию, фитя функцию в 5 точек.

У меня пока иссякли идеи.

tyakos ★★★
()
Ответ на: комментарий от tyakos

А вообще, я так и не могу понять, как ты собираешься извечь полезную информацию, фитя функцию в 5 точек.

Мне не надо извлекать полезную информацию. Мне надо удалить бесполезную. :-) Тут чем меньше точек, тем даже лучше, потому что ниже требования к близости аппроксимаци.

Axon ★★★★★
() автор топика
Ответ на: комментарий от Axon

Я имел в виду

помехи нередко налезают на полезный сигнал, и я бы хотел удалить их не испортив его.

Всё ещё не понимаю, как? :D

Тут чем меньше точек, тем даже лучше, потому что ниже требования к близости аппроксимаци.

Ну нет же. Если твоя помеха является «хорошей» функцией (синус, там, гипербола), то её легче и точнее можно описать при большом разрешении.

Ещё раз, похоже на резонанс https://upload.wikimedia.org/wikipedia/commons/0/07/Resonance.PNG

Можешь взять что-то типа 1/x^2, только сгладь и т.п.

tyakos ★★★
()
Ответ на: комментарий от tyakos

Всё ещё не понимаю, как? :D

Пофиттить сумму сигналов моделью помехи, вычесть модель, получить на выходе почти чистый полезный сигнал. :-) Может не прокатить, но я хочу попробовать.

Ну нет же. Если твоя помеха является «хорошей» функцией (синус, там, гипербола), то её легче и точнее можно описать при большом разрешении.

Но если разрешение низкое, то её можно описать неточно, и никто этого не заметит.

Ещё раз, похоже на резонанс https://upload.wikimedia.org/wikipedia/commons/0/07/Resonance.PNG

Можешь взять что-то типа 1/x^2, только сгладь и т.п.

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

Axon ★★★★★
() автор топика
Ответ на: комментарий от greenman

Есть примеры, когда он неплохо работает

Я в курсе, но это не тот пример.

Axon ★★★★★
() автор топика
Ответ на: комментарий от tyakos

Говорю же, никакая фильтрация по частотам тут не пойдёт из-за быстрой фазы нарастания полезного сигнала.

Axon ★★★★★
() автор топика
Ответ на: комментарий от tyakos

Это у тебя разрешения не хватает :D

При чём тут разрешение, если временные константы близки?

Axon ★★★★★
() автор топика
Ответ на: комментарий от greenman

А функция типа -x*exp(-x*x)

С коэффициентами, конечно.

В виде x*exp(-x*(x+a)) - очень похоже. Гран мерси, буду экспериментировать.

Axon ★★★★★
() автор топика
Ответ на: комментарий от greenman

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

Axon ★★★★★
() автор топика

Так а циферки длинного примера записи можно? В принципе похожие сигналы фильтровал, правда не от импульсной помехи.

psv1967 ★★★★★
()

Итак, ты говоришь, что частотный спектр помехи совпадает с частотами полезного сигнала, поэтому фильтр ты применять не можешь. И ты хочешь зафитить функцию «ошибки», чтобы потом её отнять.

Моё видение: у тебя есть сигнал f(t):(0,10)->R, скажем. Ты хочешь найти ошибку g(t):(0,1)->R, чтобы f(t) - x_2*g((t-x_1)/x_3) = h(t) - твой полезный сигнал. Пусть, пусть ты даже знаешь g, x_2. Но даже тогда ты не можешь знать x_1 - начало ошибки и x_3 - её длительность относительно основного сигнала. Малые изменения этих параметров могут значительно изменить h(t), следовательно восстановить её ты не сможешь.

tyakos ★★★
()
Ответ на: комментарий от tyakos

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

Не совпадает, а перекрывается. И вы забываете одну фишку: полезный сигнал я выделяю не по спектру, а по форме (детекция по шаблону). У меня нет проблем с отделением мух от котлет, но при обработке записи фильтром изменятся характеристики сигнала, важные для анализа. Ну, и вот: Какой функцией можно пофиттить такую фигню? (комментарий)

Axon ★★★★★
() автор топика

Сигнал похож на попорченную дискретизацией производную от гауссова пика.

dn2010 ★★★★★
()
Ответ на: комментарий от Axon

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

dn2010 ★★★★★
()
Ответ на: комментарий от dn2010

Нет, если у тебя верхушка пика не попадает точно в точку дискретизации, то оно так и выглядит

При чём тут дискретизация, если помеха аналоговая?

Axon ★★★★★
() автор топика
Ответ на: комментарий от tyakos

Ты используешь методы из бумаги, на которую кинул ссылку?

Да. При этом, выделению сигналов помехи практически не мешают, только с анализом потом геморрой.

Axon ★★★★★
() автор топика
Последнее исправление: Axon (всего исправлений: 2)
Ответ на: комментарий от Axon

Посмотрел на данные. Разложил матрицу Ханкеля в svd и понял, что всякие тренды я выкинуть могу легко, но что то не могу понять где помеха :)

Нельзя ли разметку для этого файла событий которые распознаны + номера событий на которые легла помеха? А то мне весь процесс распознавания воспроизводить будет оверкилл. :(

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

Вот вроде метод более свежий и претендующий на отсутствие смещения оценки при записи наживую. http://www.cell.com/biophysj/fulltext/S0006-3495(12)00935-6

Спасибо, я это читал, правда, воспроизовдить ещё не пробовал. За метод тот я взялся из-за того, что он (или его близкий вариант) используется в Clampfit'е, которым у меня обработана куча старых данных, и я хотел повторить его чтобы иметь возможность сравнивать результаты. Правда, Clampfit всё равно даёт чуть лучшее соотношение ложно-положительных и ложно-отрицительных ошибок, чем у меня вышло...

Axon ★★★★★
() автор топика
Последнее исправление: Axon (всего исправлений: 2)
Ответ на: комментарий от psv1967

Нельзя ли разметку для этого файла событий которые распознаны + номера событий на которые легла помеха?

Точки начала событий:

914.540222167968750
1086.960083007812500
1119.599975585937500
2067.440185546875000
2344.520263671875000
2689.800048828125000
2799.520263671875000
3049.160156250000000
3419.620117187500000
3500.500244140625000
4029.979492187500000
4160.160156250000000
4347.140136718750000
4388.959960937500000
4599.740722656250000
4898.439453125000000
4960.979492187500000
Помеха легла на 3, 4, 5, 6, 9, 11, 12, 13, 14 и 17 по счёту.

Axon ★★★★★
() автор топика
Ответ на: комментарий от Axon

«Протекает» зараза эта импульсная, в чистом виде помеха не хочет выделяться. Еще поковыряюсь конечно.

Если искажения остаточные от фильтров типа https://cran.r-project.org/web/packages/robfilter/robfilter.pdf не приемлемы, то два выхода:

1) Есть методика статистического разделения линейной смеси сигналов ICA. Но для её применения надо записать сигнал от двух рядом расположенных электродов.

Поскольку помеха и сигнал будут иметь различные источники, то вполне возможно их и разделит.

2) Убрать помеху.

Изолировать насос. Эластичной трубкой (или воронкой) гидравлически. Электрически — перевести его питание на автономный источник во время эксперимента.

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

1) Есть методика статистического разделения линейной смеси сигналов ICA. Но для её применения надо записать сигнал от двух рядом расположенных электродов.

Поскольку помеха и сигнал будут иметь различные источники, то вполне возможно их и разделит.

Во-первых, задача стоит в том, чтобы улучшить имеющиеся записи, а не сделать новые. :-) Во-вторых, это whole-cell patch-clamp, и второй электрод там воткнуть некуда.

Изолировать насос. Эластичной трубкой (или воронкой) гидравлически.

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

Электрически — перевести его питание на автономный источник во время эксперимента.

Помеха идёт не от электроники насоса, потому что при работающем моторе, но без тока жидкости (например, если полностью убрать прижим трубок), её нет.

Axon ★★★★★
() автор топика
Последнее исправление: Axon (всего исправлений: 1)
Ответ на: комментарий от Axon

Понятно, что записи уже сделаны, я еще пытаюсь. Если что получиться приемлемое сюда отпишу.

даже прямого контакта столбов раствора там нет

И все таки проблема в потоке. Вот пишут о ней, рекламируя замену перистальтическому насосу http://www.elveflow.com/microfluidic-tutorials/cell-biology-imaging-reviews-a...

Если наливать насосом в воронку, а уже она нужной высотой столба будет стабильно прокачивать кювету (ну и на выходе просто сливать в другую воронку), то проблема обязана уйти?

psv1967 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.