{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/cslp-ae-a-contrastive-split-latent-1","title":"CSLP-AE: A Contrastive Split-Latent Permutation Autoencoder Framework for Zero-Shot Electroencephalography Signal Conversion","arxiv_id":"2311.07788","date":"2023-11-13","proceeding":"NeurIPS 2023 11","authors":["Anders Vestergaard Nørskov","Alexander Neergaard Zahid","Morten Mørup"],"abstract":"Electroencephalography (EEG) is a prominent non-invasive neuroimaging technique providing insights into brain function. Unfortunately, EEG data exhibit a high degree of noise and variability across subjects hampering generalizable signal extraction. Therefore, a key aim in EEG analysis is to extract the underlying neural activation (content) as well as to account for the individual subject variability (style). We hypothesize that the ability to convert EEG signals between tasks and subjects requires the extraction of latent representations accounting for content and style. Inspired by recent advancements in voice conversion technologies, we propose a novel contrastive split-latent permutation autoencoder (CSLP-AE) framework that directly optimizes for EEG conversion. Importantly, the latent representations are guided using contrastive learning to promote the latent splits to explicitly represent subject (style) and task (content). We contrast CSLP-AE to conventional supervised, unsupervised (AE), and self-supervised (contrastive learning) training and find that the proposed approach provides favorable generalizable characterizations of subject and task. Importantly, the procedure also enables zero-shot conversion between unseen subjects. While the present work only considers conversion of EEG, the proposed CSLP-AE provides a general framework for signal conversion and extraction of content (task activation) and style (subject variability) components of general interest for the modeling and analysis of biological signals.","url_abs":"https://arxiv.org/abs/2311.07788v1","url_pdf":"https://arxiv.org/pdf/2311.07788v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"cslp-ae-a-contrastive-split-latent-1","repo_url":"https://github.com/andersxa/cslp-ae","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"},{"task_slug":"eeg-1","task_name":"EEG"},{"task_slug":"voice-conversion","task_name":"Voice Conversion"}],"methods":[{"method_slug":"contrastive-learning","method_name":"Contrastive Learning"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2311.07788","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2311.07788"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/andersxa/cslp-ae","reach":null}],"summary":{"ran":7,"ran_draft_wrong":3,"unverified":1},"by_repo_kind":{"official":{"samples":11,"ran":10,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":11,"samples":[{"code_sha256_prefix":"9ce72d5fb980ad4e","entry":"BaselineModel","repo":"andersxa/cslp-ae","repo_kind":"official","path":"split_model.py","file_url":"https://github.com/andersxa/cslp-ae/blob/HEAD/split_model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9ce72d5fb980ad4e"}},{"code_sha256_prefix":"d633de4d425afca2","entry":"ConvBlock","repo":"andersxa/cslp-ae","repo_kind":"official","path":"split_model.py","file_url":"https://github.com/andersxa/cslp-ae/blob/HEAD/split_model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d633de4d425afca2"}},{"code_sha256_prefix":"d3cbc9c3ac11ef5d","entry":"ConvReLU","repo":"andersxa/cslp-ae","repo_kind":"official","path":"split_model.py","file_url":"https://github.com/andersxa/cslp-ae/blob/HEAD/split_model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d3cbc9c3ac11ef5d"}},{"code_sha256_prefix":"787c5aa2a4dc64d2","entry":"PositionalEncoding","repo":"andersxa/cslp-ae","repo_kind":"official","path":"split_model.py","file_url":"https://github.com/andersxa/cslp-ae/blob/HEAD/split_model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"787c5aa2a4dc64d2"}},{"code_sha256_prefix":"bfe53a564b52ad65","entry":"StridedConvolutionalEncoder","repo":"andersxa/cslp-ae","repo_kind":"official","path":"split_model.py","file_url":"https://github.com/andersxa/cslp-ae/blob/HEAD/split_model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"bfe53a564b52ad65"}},{"code_sha256_prefix":"f6b97cb9103e0b3d","entry":"TransformerBottleneck","repo":"andersxa/cslp-ae","repo_kind":"official","path":"split_model.py","file_url":"https://github.com/andersxa/cslp-ae/blob/HEAD/split_model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f6b97cb9103e0b3d"}},{"code_sha256_prefix":"1ddf022bd8e8aec9","entry":"TransposedConvolutionalDecoder","repo":"andersxa/cslp-ae","repo_kind":"official","path":"split_model.py","file_url":"https://github.com/andersxa/cslp-ae/blob/HEAD/split_model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1ddf022bd8e8aec9"}},{"code_sha256_prefix":"69ba33002c35ec90","entry":"_trunc_normal_","repo":"andersxa/cslp-ae","repo_kind":"official","path":"split_model.py","file_url":"https://github.com/andersxa/cslp-ae/blob/HEAD/split_model.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"69ba33002c35ec90"}},{"code_sha256_prefix":"e1eaac14c2748c15","entry":"parse_list","repo":"andersxa/cslp-ae","repo_kind":"official","path":"data_preparation/create_dataset.py","file_url":"https://github.com/andersxa/cslp-ae/blob/HEAD/data_preparation/create_dataset.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e1eaac14c2748c15"}},{"code_sha256_prefix":"6586759c888019fc","entry":"trunc_normal_","repo":"andersxa/cslp-ae","repo_kind":"official","path":"split_model.py","file_url":"https://github.com/andersxa/cslp-ae/blob/HEAD/split_model.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6586759c888019fc"}},{"code_sha256_prefix":"ca94c6a6e6dc7654","entry":"SplitLatentModel","repo":"andersxa/cslp-ae","repo_kind":"official","path":"split_model.py","file_url":"https://github.com/andersxa/cslp-ae/blob/HEAD/split_model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ca94c6a6e6dc7654"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}