Download scripts/crop_unknown_data.py from Laibaff7/cda-emr-classifier: direct link, hf CLI and curl.
- Browser
- Download file 1.61 kB
-
https://huggingface.co/Laibaff7/cda-emr-classifier/resolve/main/scripts/crop_unknown_data.py
- Command line
-
hf download hf://Laibaff7/cda-emr-classifier/scripts/crop_unknown_data.py
-
curl -L -o crop_unknown_data.py https://huggingface.co/Laibaff7/cda-emr-classifier/resolve/main/scripts/crop_unknown_data.py
1.61 kB
| """ | |
| Add a cropped-spectrum column (channels 700:1018, 318 channels) to the | |
| unknown-data parquet, processed row-group by row-group to bound memory. | |
| Input : Data Parquet/unknown_data_after_noise_filter.parquet | |
| Output: Data Parquet/unknown_data_after_noise_filter_cropped.parquet | |
| """ | |
| import os | |
| import pyarrow.compute as pc | |
| import pyarrow.parquet as pq | |
| ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
| SRC = os.path.join(ROOT, 'Data Parquet', 'unknown_data_after_noise_filter.parquet') | |
| DST = os.path.join(ROOT, 'Data Parquet', 'unknown_data_after_noise_filter_cropped.parquet') | |
| START, END = 700, 1018 # channels 700..1017 (inclusive) -> 318 channels | |
| def main(): | |
| pf = pq.ParquetFile(SRC) | |
| n_rgs = pf.metadata.num_row_groups | |
| print(f'{SRC}\n rows: {pf.metadata.num_rows:,} row groups: {n_rgs}') | |
| writer = None | |
| for i in range(n_rgs): | |
| t = pf.read_row_group(i) | |
| cropped = pc.list_slice(t.column('spectrum'), START, END) | |
| t = t.append_column('spectrum_cropped', cropped) | |
| if writer is None: | |
| writer = pq.ParquetWriter(DST, t.schema) | |
| writer.write_table(t) | |
| if (i + 1) % 4 == 0 or i + 1 == n_rgs: | |
| print(f' row group {i + 1}/{n_rgs}') | |
| writer.close() | |
| print(f'Wrote {DST}') | |
| # Verify | |
| out = pq.ParquetFile(DST) | |
| print(f'Output rows: {out.metadata.num_rows:,}') | |
| sample = out.read_row_group(0, columns=['spectrum_cropped']).slice(0, 3).to_pydict()['spectrum_cropped'] | |
| print('sample cropped lengths:', [len(s) for s in sample]) | |
| if __name__ == '__main__': | |
| main() |