Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

complex filterbank output #8

Open
siemion opened this issue Nov 16, 2020 · 10 comments
Open

complex filterbank output #8

siemion opened this issue Nov 16, 2020 · 10 comments
Assignees
Labels
enhancement New feature or request

Comments

@siemion
Copy link
Member

siemion commented Nov 16, 2020

Add the ability to output complex filterbank output (complex fourier coefficients) concurrently or in place of Stokes I, XX or YY.

@david-macmahon
Copy link
Contributor

What does this mean? The cross-polarization mode already outputs real(XY*) and imag(XY*).

@siemion
Copy link
Member Author

siemion commented Nov 16, 2020

This would be to acquire just the individual complex Fourier components after channelization for extracting small parts of the band following candidate identification.

@david-macmahon
Copy link
Contributor

I think this would be better handled by a separate program and certainly a different output format than filterbank which has no provision for indicating A) that the data are voltages or B) that the data are complex. It's not like these "voltage filterbank" files would be usable with any existing software that reads filterbank files, so why shoe horn it into that file format?

@jack-h
Copy link

jack-h commented Nov 17, 2020

Is there an existing (i.e. used by BL) file format which is a reasonable to use for this? -- is it just .raw ?

@siemion
Copy link
Member Author

siemion commented Nov 17, 2020

This particular output mode would (typically) only be used for interim storage, so wouldn't need to be a fully formed archival format. Note that when I said "complex filterbank" I was using filterbank in the generic sense rather than the specific Filterbank format sense. In the envisioned use, select voltages would be extracted as a snapshot around candidates of interest. What format these should take is a good question - .raw would be a bit heavy, but maybe a version with restricted keywords would work. We wouldn't want metadata to dominate the total size. Another option might be sigmf - https://github.com/gnuradio/SigMF.

@siemion
Copy link
Member Author

siemion commented Nov 17, 2020

Also per the suggestion about a separate program, in normal usage of this mode we would generate both the voltage and detected products simultaneously, and rawspec already does the latter, so having it be able to output the voltages as well would be ideal. Also would save having to do the channelization twice.

@david-macmahon
Copy link
Contributor

david-macmahon commented Nov 17, 2020

Sending incoming 8-bit coarsely channelized voltage data to the GPU for further channelization and then recording the resultant finely channelized 32-bit floating point voltage data would increase the volume and rate of the recorded data by a factor of 4x, which would mean a 4x reduction in bandwidth capacity per node vs recording just the 8-bit coarsely channelized voltages to begin with.

@jack-h
Copy link

jack-h commented Nov 18, 2020 via email

@radonnachie
Copy link
Contributor

radonnachie commented Nov 18, 2020

A 3 part solution seems to cover all grounds of this, and may better highlight any misunderstandings in the goal of this issue.

Just rehashing the context, in case there is a misnomer: the current overall setup (of which rawspec is but a part) produces products that are used to determine if any sub-band of the input is of interest. Storing the fine channelisation ("complex fourier coefficients") of the band of interest provides the source data such that any other calculations can be run.

Producing the finely channeled band of interest would require:

  1. selective coarse channel rawspec processing (bandpassing the coarse channel data for computation frugality)
  2. bandpassing fine channelisation outputs (for storage frugality)
  3. raw complex fine channelisation storage (for data fidelity)

....1. is already implemented within rawspec.

I imagine that specifying 2. could lead to automatic calculation of the parameters for 1., i.e. specifying a fine-channel bandpass would always limit the coarse channels processed to the minimum required. 2. would just effect some sort of truncation of the output (bandpass).

I further imagine 3. would be a default-false flag, and rawspec wouldn't worry about whether or not the action is within best practices. Rather the fine-channel-complex-output-flag would just typically be used with coarse and fine channel bandpasses.

If all is agreeable, I think that the above specifies more atomic issues.

@jack-h
Copy link

jack-h commented Nov 18, 2020 via email

@texadactyl texadactyl added the enhancement New feature or request label Nov 17, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

5 participants