{"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/molecule-morphology-contrastive-pretraining","title":"Molecule-Morphology Contrastive Pretraining for Transferable Molecular Representation","arxiv_id":"2305.09790","date":"2023-04-27","proceeding":null,"authors":["Cuong Q. Nguyen","Dante Pertusi","Kim M. Branson"],"abstract":"Image-based profiling techniques have become increasingly popular over the past decade for their applications in target identification, mechanism-of-action inference, and assay development. These techniques have generated large datasets of cellular morphologies, which are typically used to investigate the effects of small molecule perturbagens. In this work, we extend the impact of such dataset to improving quantitative structure-activity relationship (QSAR) models by introducing Molecule-Morphology Contrastive Pretraining (MoCoP), a framework for learning multi-modal representation of molecular graphs and cellular morphologies. We scale MoCoP to approximately 100K molecules and 600K morphological profiles using data from the JUMP-CP Consortium and show that MoCoP consistently improves performances of graph neural networks (GNNs) on molecular property prediction tasks in ChEMBL20 across all dataset sizes. The pretrained GNNs are also evaluated on internal GSK pharmacokinetic data and show an average improvement of 2.6% and 6.3% in AUPRC for full and low data regimes, respectively. Our findings suggest that integrating cellular morphologies with molecular graphs using MoCoP can significantly improve the performance of QSAR models, ultimately expanding the deep learning toolbox available for QSAR applications.","url_abs":"https://arxiv.org/abs/2305.09790v2","url_pdf":"https://arxiv.org/pdf/2305.09790v2.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":"molecule-morphology-contrastive-pretraining","repo_url":"https://github.com/GSK-AI/mocop","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"molecular-property-prediction","task_name":"Molecular Property Prediction"},{"task_slug":"property-prediction","task_name":"Property Prediction"},{"task_slug":"molecular-representation","task_name":"molecular representation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2305.09790","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2305.09790"}},"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":"deterministic:regex_extraction","url":"https://github.com/GSK-AI/mocop","reach":null}],"summary":{"ran":2,"ran_draft_wrong":1,"ran_fixture":1,"unverified":2},"by_repo_kind":{"official":{"samples":6,"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":6,"samples":[{"code_sha256_prefix":"4873213bd1e02ef3","entry":"MultiLayerPerceptron","repo":"GSK-AI/mocop","repo_kind":"official","path":"mocop/model.py","file_url":"https://github.com/GSK-AI/mocop/blob/HEAD/mocop/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"4873213bd1e02ef3"}},{"code_sha256_prefix":"cb0271f097260acf","entry":"_supervised_metric","repo":"GSK-AI/mocop","repo_kind":"official","path":"mocop/model.py","file_url":"https://github.com/GSK-AI/mocop/blob/HEAD/mocop/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"cb0271f097260acf"}},{"code_sha256_prefix":"ff754043275c919e","entry":"_supervised_metric_regression","repo":"GSK-AI/mocop","repo_kind":"official","path":"mocop/model.py","file_url":"https://github.com/GSK-AI/mocop/blob/HEAD/mocop/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":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"ff754043275c919e"}},{"code_sha256_prefix":"62a6ca4d1750cc6c","entry":"accuracy","repo":"GSK-AI/mocop","repo_kind":"official","path":"mocop/model.py","file_url":"https://github.com/GSK-AI/mocop/blob/HEAD/mocop/model.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"62a6ca4d1750cc6c"}},{"code_sha256_prefix":"1fad275c5ff633a6","entry":"DualInputEncoder","repo":"GSK-AI/mocop","repo_kind":"official","path":"mocop/model.py","file_url":"https://github.com/GSK-AI/mocop/blob/HEAD/mocop/model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"1fad275c5ff633a6"}},{"code_sha256_prefix":"dd24546f8388acbe","entry":"_validation_epoch_end","repo":"GSK-AI/mocop","repo_kind":"official","path":"mocop/model.py","file_url":"https://github.com/GSK-AI/mocop/blob/HEAD/mocop/model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"dd24546f8388acbe"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}