Blitzortung.org Forum

Full Version: Determining lightning polarity (positive or negative) by raw signal processing?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
Cutty ,
seems that I am a bit better than 50%, so its not only guessing... It was also a bit hard with the weak signal of the C channel. I propose to use the H channels (preferably A and B) ONLY to define the start of the signal; then the polarity of the E field peak at the start defines the polarity of the stroke. No comparison of the phase of A or B with the E field intended.
This procedure works only if the start can be identified clearly giving us the ground wave and if the E field signal is clean. Also this can only work on a part of the signals, when there are cload discharges everything becomes muddled. Anyway, this is my proposal and we can see if it works and when.
Hello,

Not posted anything for a long time, I installed the BLUE station 2959 in Resita city, Romania and will install my old station, 951 soon.

I gained interest again in this old idea, to estimate the polarities by signal processing.

Will start to code a prototype soon in python, and the steps I thought are the following:

1. Get a list of the detected strikes for a certain period (let's say, last 10 mins)

2. For each strike, get the involved station list

3. For each station, match the corresponding E-field signal, discard the stations that do not have E-field signals

4. Now we have a list of only valid E-field signals for a computed lightning

5. Use a python library (scipy) to analyze the signal and find the first E-field peak, discarding the unusable signals

6. Determine the dominant sign of the peak (+/-) and this I think should be the rough estimate of the polarity.


I am determined to do this, because after, I can analyze the spatial distribution of the lightning polarity and possible determine if a storm is super-cellular or not.

Any suggestions are appreciated,

Best regards, Liviu.

NOTE to moderators: you can move this thread to the Internal discussions
Made some progress in building a program with python to estimate the polarities of detected strikes.

This is the very first version and it's quite rudimentary. Basically, for each strike, I get the signals of the detectors listed in the strike data, and try to make a match.

However, only about 20% of the strikes can be matched with signal data (from data.lightningmaps.org). I read here that it's a problem with the timestamps within the strikes or signals. Has anyone a working solution on how to time-match the two datasets?

 Anyway, for the strikes that can be match, I filter only the signals with an E-field channel, then using a peak detection algorithm, I check for the sign of the first peak (from what I read in literature and from what was posted in this topic, so if the sign is -, the polarity is positive and vice-versa, as we are interested in the second peak sign, which is usually, the opposite of the first peak .. will work on this, to check for this duality between first and second peak, and to discard the analysis if it's too ambiguous). 

Here I have a lot of work to do, to improve the current algorithm and to make the estimate more reliable (some conditionals, better peak detection functions, noise ignoring and so on).

Ok, then I create a list for each strike, with sign data from each signal involved, and find out the dominant sign and assign the polarity.

I am currently downloading signal data for a couple of days, to have a large dataset to work with and will post updates.

I also have the capability to archive some signal data (have about 4.5 TB of HDD space on my server). I have two servers, the first, a xeon physical server that I own (40 core, 80 threads, 128 GB RAM), which I use for WRF-ARW numerical weather prediction and I can also use it for my experiments with lightning data and a cloud webserver that can also be used for data storage.
Pages: 1 2