""" RTX-Neuro Example: Reading MEG/EEG Data This example demonstrates how to read neuroimaging data from various file formats using the rtx_neuro library. Supported formats: - EDF/EDF+ (European Data Format) - FIF (Elekta/Neuromag) - CTF (.ds directories) - BTi/4D-Neuroimaging - KIT/Yokogawa/Ricoh (.con, .sqd) - EGI (.raw, .mff) """ import rtx_neuro as rtx import numpy as np # Example 1: Read EDF file def read_edf_example(): """Read an EDF/EDF+ file.""" # Replace with your actual file path raw = rtx.io.read_raw_edf("path/to/recording.edf") # Access metadata print(f"Sampling frequency: {raw.sfreq} Hz") print(f"Number of channels: {raw.n_channels}") print(f"Number of samples: {raw.n_samples}") print(f"Duration: {raw.duration:.2f} seconds") print(f"Channel names: {raw.ch_names[:5]}...") # First 5 channels # Get data as numpy array # Full data data = raw.get_data() print(f"Data shape: {data.shape}") # (n_channels, n_samples) # Specific time window data_segment = raw.get_data(tmin=0.0, tmax=10.0) # First 10 seconds print(f"Segment shape: {data_segment.shape}") return raw, data # Example 2: Read FIF file (Elekta/Neuromag MEG) def read_fif_example(): """Read an Elekta/Neuromag FIF file.""" raw = rtx.io.read_raw_fif("path/to/recording.fif") print(f"FIF file: {raw.path}") print(f"MEG channels: {raw.n_channels}") # Get specific channels by name channel_indices = raw.pick_channels(["MEG0111", "MEG0121", "MEG0131"]) print(f"Picked channel indices: {channel_indices}") return raw # Example 3: Read CTF MEG data def read_ctf_example(): """Read a CTF MEG dataset (.ds directory).""" raw = rtx.io.read_raw_ctf("path/to/dataset.ds") print(f"CTF dataset loaded") print(f"Channels: {raw.n_channels}") print(f"Sample rate: {raw.sfreq} Hz") return raw # Example 4: Read BTi/4D-Neuroimaging data def read_bti_example(): """Read 4D-Neuroimaging/BTi MEG data.""" raw = rtx.io.read_raw_bti("path/to/bti_directory") print(f"BTi data loaded") print(f"Channels: {raw.n_channels}") return raw # Example 5: Read KIT/Yokogawa data def read_kit_example(): """Read Yokogawa/KIT/Ricoh MEG data.""" raw = rtx.io.read_raw_kit("path/to/recording.con") # Or for .sqd files: # raw = rtx.io.read_raw_kit("path/to/recording.sqd") print(f"KIT data loaded") print(f"Channels: {raw.n_channels}") return raw # Example 6: Read EGI data def read_egi_example(): """Read EGI data (.raw or .mff format).""" # For .raw files: raw = rtx.io.read_raw_egi("path/to/recording.raw") # For MFF directories: # raw = rtx.io.read_raw_egi("path/to/recording.mff") print(f"EGI data loaded") print(f"Channels: {raw.n_channels}") return raw # Example 7: Working with data def data_manipulation_example(): """Demonstrate data manipulation workflows.""" raw = rtx.io.read_raw_edf("path/to/recording.edf") # Get full data data = raw.get_data() # Basic numpy operations mean_signal = np.mean(data, axis=1) # Mean per channel max_amplitude = np.max(np.abs(data)) # Time vector times = np.arange(raw.n_samples) / raw.sfreq # Select specific channels eeg_indices = raw.pick_channels(["Fp1", "Fp2", "Fz"]) selected_data = data[eeg_indices, :] print(f"Selected {len(eeg_indices)} channels") print(f"Max amplitude: {max_amplitude:.2f} uV") return data, times if __name__ == "__main__": print("RTX-Neuro Data Reading Examples") print("=" * 40) print("\nNote: Replace file paths with your actual data files.") print("\nAvailable functions:") print("- read_edf_example()") print("- read_fif_example()") print("- read_ctf_example()") print("- read_bti_example()") print("- read_kit_example()") print("- read_egi_example()") print("- data_manipulation_example()")