{"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/arxiv-2608-21551","title":"Sparse Separable Factor Analysis in the Complex Domain with an Application to Local Field Potential Data","arxiv_id":"2608.21551","date":"2026-08-21","proceeding":null,"authors":["Ian Hultman","Kirtikanth Kalapatapu","Yassine Filali","Rainbo Hultman","Sanvesh Srivastava"],"abstract":"Complex-valued arrays arise in signal processing, where scientific interpretation depends on retaining amplitude and phase information. Existing covariance estimation methods either ignore the multiway organization of such data or rely on real-domain embeddings that do not directly exploit their complex structure. We develop sparse separable factor analysis (SSFA), a latent factor model for complex-valued arrays with a separable covariance structure across modes. Each mode-specific covariance matrix is modeled through a low-rank Hermitian factor structure and a diagonal residual covariance matrix. To obtain interpretable estimates, we impose elementwise lasso penalties on the complex loading matrices and estimate the SSFA parameters using a mode-wise parameter-expanded expectation-maximization procedure. The resulting loading updates admit closed-form complex soft-thresholding solutions, which shrink the modulus of each loading while preserving its phase. A separate balancing step resolves the scale nonidentifiability of the separable covariance structure. Simulation studies show that SSFA improves covariance estimation relative to vectorization-based methods, including complex principal component analysis. We apply SSFA to local field potential recordings from mice, where we compare separability structures induced by different groupings of brain region, frequency, and time and perform model-based imputation of recordings missing because of electrode misplacement.","url_abs":"https://arxiv.org/abs/2608.21551","url_pdf":"https://arxiv.org/pdf/2608.21551","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2608.21551","atlas_url":"https://app.syntology.ai/?focus=2608.21551","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2608.21551"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/IHultman/SSFA","reach":null}],"summary":{"ran_fixture":2,"ran_honours":1,"ran_violates":1,"unverified":6},"by_repo_kind":{"found_in_text":{"samples":10,"ran":4,"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":10,"samples":[{"code_sha256_prefix":"bdcf26d0167af625","entry":"calculate_likelihood_array","repo":"IHultman/SSFA","repo_kind":"found_in_text","path":"SSFA.py","file_url":"https://github.com/IHultman/SSFA/blob/HEAD/SSFA.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"bdcf26d0167af625"}},{"code_sha256_prefix":"0d30fa129bc77bce","entry":"log_n_factorial","repo":"IHultman/SSFA","repo_kind":"found_in_text","path":"SSFA.py","file_url":"https://github.com/IHultman/SSFA/blob/HEAD/SSFA.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0d30fa129bc77bce"}},{"code_sha256_prefix":"5813cb9973fa472d","entry":"rcnorm","repo":"IHultman/SSFA","repo_kind":"found_in_text","path":"SSFA.py","file_url":"https://github.com/IHultman/SSFA/blob/HEAD/SSFA.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5813cb9973fa472d"}},{"code_sha256_prefix":"385d55f7f1b19f29","entry":"tucker_prod_seq","repo":"IHultman/SSFA","repo_kind":"found_in_text","path":"SSFA.py","file_url":"https://github.com/IHultman/SSFA/blob/HEAD/SSFA.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"385d55f7f1b19f29"}},{"code_sha256_prefix":"e146bcdad764b35b","entry":"SSFA_RuntimeError","repo":"IHultman/SSFA","repo_kind":"found_in_text","path":"SSFA.py","file_url":"https://github.com/IHultman/SSFA/blob/HEAD/SSFA.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":"e146bcdad764b35b"}},{"code_sha256_prefix":"0988f98f98f7fb02","entry":"calculate_likelihood_vector","repo":"IHultman/SSFA","repo_kind":"found_in_text","path":"SSFA.py","file_url":"https://github.com/IHultman/SSFA/blob/HEAD/SSFA.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":"0988f98f98f7fb02"}},{"code_sha256_prefix":"6d4834f410b11c67","entry":"pxem_w_lasso","repo":"IHultman/SSFA","repo_kind":"found_in_text","path":"SSFA.py","file_url":"https://github.com/IHultman/SSFA/blob/HEAD/SSFA.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":"6d4834f410b11c67"}},{"code_sha256_prefix":"2b024e8659035155","entry":"ssfa","repo":"IHultman/SSFA","repo_kind":"found_in_text","path":"SSFA.py","file_url":"https://github.com/IHultman/SSFA/blob/HEAD/SSFA.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":"2b024e8659035155"}},{"code_sha256_prefix":"6108dfa0a25871ce","entry":"ssfa_array","repo":"IHultman/SSFA","repo_kind":"found_in_text","path":"SSFA.py","file_url":"https://github.com/IHultman/SSFA/blob/HEAD/SSFA.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":"6108dfa0a25871ce"}},{"code_sha256_prefix":"8df93d1008bb6e75","entry":"ssfa_vector","repo":"IHultman/SSFA","repo_kind":"found_in_text","path":"SSFA.py","file_url":"https://github.com/IHultman/SSFA/blob/HEAD/SSFA.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":"8df93d1008bb6e75"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":{"kind":"leaderboard_placements","source":"Syntology's leaderboard-shaped extractor over the paper's own arXiv-HTML tables: a model pointed at a cell, the number was read from that cell and checked against the board's metric, dataset, split and scale, and an independent check accepted the entry; not reviewed by the paper's authors or the archive's editors","extractor_model":"global.anthropic.claude-sonnet-4-5-20250929-v1:0","verifier_model":null,"prompt_sha":"fa63d4bb9d755694","coverage":{"sentence":"Syntology has checked 6,885 of the 9,623 papers on this site that are newer than the archive; results from the others appear after they are checked.","papers_newer_than_archive":9623,"papers_checked":6885},"entries":[],"not_placed":{"boards":0,"rejected_by_independent_check":0,"refused_by_a_rule":0,"check_did_not_answer":0,"proposed_without_a_cell":0,"declined_by_site":0}}}