diff --git a/.github/workflows/on-pull-request.yaml b/.github/workflows/on-pull-request.yaml index 5cdf21a..5f638cf 100644 --- a/.github/workflows/on-pull-request.yaml +++ b/.github/workflows/on-pull-request.yaml @@ -14,9 +14,5 @@ permissions: pull-requests: write jobs: - update-citations: - uses: ./.github/workflows/update-citations.yaml - build-preview: - needs: update-citations uses: ./.github/workflows/build-preview.yaml diff --git a/.github/workflows/on-push.yaml b/.github/workflows/on-push.yaml index 06dd001..042225f 100644 --- a/.github/workflows/on-push.yaml +++ b/.github/workflows/on-push.yaml @@ -14,11 +14,5 @@ permissions: pull-requests: write jobs: - update-citations: - # skip first run because nothing enabled or setup yet - if: github.run_number != 1 - uses: ./.github/workflows/update-citations.yaml - build-site: - needs: update-citations uses: ./.github/workflows/build-site.yaml diff --git a/.github/workflows/on-schedule.yaml b/.github/workflows/on-schedule.yaml deleted file mode 100644 index e1f8898..0000000 --- a/.github/workflows/on-schedule.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: on-schedule -run-name: on schedule - -on: - schedule: - # weekly - - cron: "0 0 * * 1" - - # run if user manually requests it - workflow_dispatch: - -permissions: - contents: write - pull-requests: write - -jobs: - update-citations: - # only run on user instance of template, not template itself - if: github.repository != 'greenelab/lab-website-template' - uses: ./.github/workflows/update-citations.yaml - with: - open-pr: true diff --git a/.github/workflows/update-citations.yaml b/.github/workflows/update-citations.yaml deleted file mode 100644 index 88c86db..0000000 --- a/.github/workflows/update-citations.yaml +++ /dev/null @@ -1,100 +0,0 @@ -name: update-citations -run-name: update citations - -on: - # run when called from another workflow - workflow_call: - inputs: - open-pr: - type: boolean - outputs: - changed: - value: ${{ jobs.update-citations.outputs.changed }} - - # run if user manually requests it - workflow_dispatch: - -permissions: - contents: write - pull-requests: write - -env: - FORCE_COLOR: true - GOOGLE_SCHOLAR_API_KEY: ${{ secrets.GOOGLE_SCHOLAR_API_KEY }} - -jobs: - update-citations: - runs-on: ubuntu-latest - timeout-minutes: 15 - - steps: - - name: Debug dump - uses: crazy-max/ghaction-dump-context@v2 - - - name: Checkout branch contents - if: github.event.action != 'closed' - uses: actions/checkout@v4 - with: - repository: ${{ github.event.pull_request.head.repo.full_name }} - ref: ${{ github.head_ref }} - - - name: Set up Python - if: github.event.action != 'closed' - uses: actions/setup-python@v5 - with: - python-version: "3.11" - cache: "pip" - cache-dependency-path: "**/requirements.txt" - - - name: Install Python packages - if: github.event.action != 'closed' - run: | - python -m pip install --upgrade --requirement ./_cite/requirements.txt - - - name: SSH debug - if: runner.debug == '1' - uses: mxschmitt/action-tmate@v3 - - - name: Build updated citations - if: github.event.action != 'closed' - run: python _cite/cite.py - timeout-minutes: 15 - - - name: Commit cache - if: failure() - uses: stefanzweifel/git-auto-commit-action@v5 - with: - file_pattern: "**/.cache/**" - commit_message: "Commit cache" - - - name: Check if citations changed - if: github.event.action != 'closed' - id: changed - uses: tj-actions/verify-changed-files@v18 - with: - files: | - _data/citations.yaml - - - name: Commit updated citations to branch - if: | - github.event.action != 'closed' && - steps.changed.outputs.files_changed == 'true' && - inputs.open-pr != true - uses: stefanzweifel/git-auto-commit-action@v5 - with: - commit_message: "Update citations" - - - name: Open pull request with updated citations - if: | - github.event.action != 'closed' && - steps.changed.outputs.files_changed == 'true' && - inputs.open-pr == true - uses: peter-evans/create-pull-request@v6 - with: - branch: citation-update - title: Periodic citation update - body: | - To see a live preview of this PR, close (don't merge) and reopen it. - - outputs: - changed: ${{ steps.changed.outputs.files_changed || false }} diff --git a/.gitignore b/.gitignore index ce175e3..bde5e01 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ _site +.bundle .sass-cache .jekyll-cache .jekyll-metadata diff --git a/Gemfile b/Gemfile index cbdd53f..4616727 100644 --- a/Gemfile +++ b/Gemfile @@ -4,8 +4,18 @@ source "https://rubygems.org" gem "jekyll", "~> 4.3" gem "webrick", "~> 1.7" +# stdlib gems no longer bundled with Ruby >= 3.4 +gem "logger" +gem "csv" +gem "base64" +gem "bigdecimal" +gem "ostruct" + gem "html-proofer", "~> 5.0" +# bibtex parsing for the publications page (see _plugins/bibtex.rb) +gem "bibtex-ruby" + # plugins group :jekyll_plugins do gem "jekyll-spaceship" diff --git a/Gemfile.lock b/Gemfile.lock index ee2cb12..6f6f8e7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,31 +10,36 @@ GEM fiber-annotation io-event (~> 1.1) timers (~> 4.1) + base64 (0.3.0) + benchmark (0.5.0) + bibtex-ruby (6.0.0) + latex-decode (~> 0.0) + bigdecimal (4.1.2) colorator (1.1.0) concurrent-ruby (1.2.2) console (1.23.4) fiber-annotation fiber-local json + csv (3.3.5) em-websocket (0.5.3) eventmachine (>= 0.12.9) http_parser.rb (~> 0) ethon (0.16.0) ffi (>= 1.15.0) eventmachine (1.2.7) + eventmachine (1.2.7-x64-mingw32) ffi (1.15.5) - ffi (1.15.5-x64-mingw-ucrt) fiber-annotation (0.2.0) fiber-local (1.0.0) forwardable-extended (2.6.0) gemoji (3.0.1) google-protobuf (3.22.0) - google-protobuf (3.22.0-arm64-darwin) - google-protobuf (3.22.0-x64-mingw-ucrt) hashery (2.1.2) - html-proofer (5.0.8) + html-proofer (5.2.1) addressable (~> 2.3) async (~> 2.1) + benchmark (~> 0.5) nokogiri (~> 1.13) pdf-reader (~> 2.11) rainbow (~> 3.0) @@ -84,17 +89,18 @@ GEM rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) + latex-decode (0.4.2) liquid (4.0.4) listen (3.8.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) + logger (1.7.0) mercenary (0.4.0) mini_portile2 (2.8.1) nokogiri (1.13.10) mini_portile2 (~> 2.8.0) racc (~> 1.4) - nokogiri (1.13.10-arm64-darwin) - racc (~> 1.4) + ostruct (0.6.3) pathutil (0.16.2) forwardable-extended (~> 2.6) pdf-reader (2.12.0) @@ -118,10 +124,20 @@ GEM sass-embedded (1.58.3) google-protobuf (~> 3.21) rake (>= 10.0.0) + sass-embedded (1.58.3-aarch64-linux-gnu) + google-protobuf (~> 3.21) + sass-embedded (1.58.3-arm-linux-gnueabihf) + google-protobuf (~> 3.21) sass-embedded (1.58.3-arm64-darwin) google-protobuf (~> 3.21) sass-embedded (1.58.3-x64-mingw-ucrt) google-protobuf (~> 3.21) + sass-embedded (1.58.3-x64-mingw32) + google-protobuf (~> 3.21) + sass-embedded (1.58.3-x86-linux-gnu) + google-protobuf (~> 3.21) + sass-embedded (1.58.3-x86_64-linux-gnu) + google-protobuf (~> 3.21) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) timers (4.3.5) @@ -135,6 +151,7 @@ GEM PLATFORMS aarch64-linux + arm64-darwin-25 linux universal-darwin-21 universal-darwin-22 @@ -144,6 +161,10 @@ PLATFORMS x86_64-linux DEPENDENCIES + base64 + bibtex-ruby + bigdecimal + csv html-proofer (~> 5.0) jekyll (~> 4.3) jekyll-feed @@ -151,6 +172,8 @@ DEPENDENCIES jekyll-redirect-from jekyll-sitemap jekyll-spaceship + logger + ostruct webrick (~> 1.7) BUNDLED WITH diff --git a/README.md b/README.md index 38f609c..ab65bf5 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,39 @@   - # cosilab's Website + # CoSI Lab Website + + Website of the Cooperative Systems and Intelligence (CoSI) lab. Visit **[cosilab.github.io](https://cosilab.github.io)** 🚀 _Built with [Lab Website Template](https://greene-lab.gitbook.io/lab-website-template-docs)_ + + ## Contributing + + ### Run the site locally + + Install the Ruby dependencies, then start the local Jekyll server: + + ```bash + bundle install + bundle exec jekyll serve + ``` + + Open [http://127.0.0.1:4000](http://127.0.0.1:4000) to preview the site. + + ### Update a biography + + Edit the relevant Markdown file in `_members/`. Member portraits should be + square 300 × 300 pixel images stored in `images/members/`. + + ### Add a publication + + Add or update the publication entry in `_bibliography/papers.bib`. The site + generates the publications list from this file. + + ### Open a pull request + + Preview and build the site locally before opening a pull request. Keep + binary asset changes focused, and squash commits when merging to avoid + unnecessary image files in the commit history. diff --git a/_bibliography/papers.bib b/_bibliography/papers.bib new file mode 100644 index 0000000..952316f --- /dev/null +++ b/_bibliography/papers.bib @@ -0,0 +1,501 @@ +--- +--- + +@article{sun2026enigma, + title={An Enigma of Artificial Reason: Investigating the Production-Evaluation Gap in Large Reasoning Models}, + author={Sun, Mingzhong and Yeo, Teresa and Solar-Lezama, Armando and Zhi-Xuan, Tan}, + journal={arXiv preprint arXiv:2606.01462}, + year={2026}, + arxiv={2606.01462}, + pdf={https://arxiv.org/pdf/2606.01462.pdf}, + bibtex_show={true}, +} + +@phdthesis{zhi2025scaling, + title={Scaling Cooperative Intelligence via Inverse Planning and Probabilistic Programming}, + author={Zhi-Xuan, Tan}, + year={2025}, + school={Massachusetts Institute of Technology}, + html={https://dspace.mit.edu/entities/publication/634ce59d-17d4-4f01-a9ae-2997cf40a609} +} + +@article{levine2025resource, + title={Resource Rational Contractualism Should Guide AI Alignment}, + author={Levine, Sydney and Franklin, Matija and Zhi-Xuan, Tan and Guyot, Secil Yanik and Wong, Lionel and Kilov, Daniel and Choi, Yejin and Tenenbaum, Joshua B and Goodman, Noah and Lazar, Seth and others}, + journal={arXiv preprint arXiv:2506.17434}, + year={2025}, + arxiv={2506.17434}, + pdf={https://arxiv.org/pdf/2506.17434.pdf}, + bibtex_show={true}, +} + +@article{edelman2025full, + title={Full-Stack Alignment: Co-Aligning AI and Institutions with Thick Models of Value}, + author={Edelman, Joe and Zhi-Xuan, Tan and Lowe, Ryan and Klingefjord, Oliver and Wang-Mascianica, Vincent and Franklin, Matija and Kearns, Ryan Othniel and Hain, Ellie and Sarkar, Atrisha and Bakker, Michiel and others}, + journal={arXiv preprint arXiv:2512.03399}, + year={2025}, + arxiv={2512.03399}, + html={https://www.full-stack-alignment.ai}, + pdf={https://arxiv.org/pdf/2512.03399.pdf}, + bibtex_show={true}, +} + +@article{ying2025language, + title={Language-Informed Synthesis of Rational Agent Models for Grounded Theory-of-Mind Reasoning On-The-Fly}, + author={Ying, Lance and Truong, Ryan and Collins, Katherine M and Zhang, Cedegao E and Wei, Megan and Brooke-Wilson, Tyler and Zhi-Xuan, Tan and Wong, Lionel and Tenenbaum, Joshua B}, + journal={Findings of the Association for Computational Linguistics: EMNLP 2025}, + pages={12217--12235}, + year={2025}, + publisher={Association for Computational Linguistics}, + html={https://aclanthology.org/2025.findings-emnlp.654}, + pdf={https://aclanthology.org/2025.findings-emnlp.654.pdf}, + arxiv={2506.16755}, + bibtex_show={true} +} + +@inproceedings{ying2025belief, + title={Belief Attribution as Mental Explanation: The Role of Accuracy, Informativity, and Causality}, + author={Ying, Lance and Hillel, Almog and Truong, Ryan and Mansinghka, Vikash K and Tenenbaum, Joshua B and Zhi-Xuan, Tan}, + booktitle={Proceedings of the Annual Meeting of the Cognitive Science Society}, + volume={47}, + year={2025}, + arxiv={2505.19376}, + pdf={https://arxiv.org/pdf/2505.19376.pdf}, + bibtex_show={true} +} + +@article{ying2025understanding, + title={Understanding Epistemic Language with a Language-augmented Bayesian Theory of Mind}, + author={Ying, Lance and Zhi-Xuan, Tan and Wong, Lionel and Mansinghka, Vikash and Tenenbaum, Joshua B}, + journal={Transactions of the Association for Computational Linguistics}, + year={2025}, + abstract={How do people understand and evaluate claims about others' beliefs, even though these beliefs cannot be directly observed? In this paper, we introduce a cognitive model of epistemic language interpretation, grounded in Bayesian inferences about other agents' goals, beliefs, and intentions: a language-augmented Bayesian theory-of-mind (LaBToM). By translating natural language into an epistemic ``language-of-thought'', then evaluating these translations against the inferences produced by inverting a probabilistic generative model of rational action and perception, LaBToM captures graded plausibility judgments about epistemic claims. We validate our model in an experiment where participants watch an agent navigate a maze to find keys hidden in boxes needed to reach their goal, then rate sentences about the agent's beliefs. In contrast with multimodal LLMs (GPT-4o, Gemini Pro) and ablated models, our model correlates highly with human judgments for a wide range of expressions, including modal language, uncertainty expressions, knowledge claims, likelihood comparisons, and attributions of false belief.}, + arxiv={2408.12022}, + bibtex_show={true}, + abbr={TACL}, + pdf={2025-epistemic-language.pdf} +} + +@article{kim2025hypothesis, + title={Hypothesis-driven theory-of-mind reasoning for large language models}, + author={Kim, Hyunwoo and Sclar, Melanie and Zhi-Xuan, Tan and Ying, Lance and Levine, Sydney and Liu, Yang and Tenenbaum, Joshua B and Choi, Yejin}, + journal={arXiv preprint arXiv:2502.11881}, + year={2025}, + arxiv={2502.11881}, + bibtex_show={true}, + pdf={https://arxiv.org/pdf/2502.11881} +} + +@article{trujillo2025resource, + title={Resource-Rational Virtual Bargaining for Moral Judgment: Toward a Probabilistic Cognitive Model}, + author={Trujillo, Diego and Zhang, Mindy and Zhi-Xuan, Tan and Tenenbaum, Joshua B and Levine, Sydney}, + journal={Topics in Cognitive Science}, + year={2025}, + publisher={Wiley Online Library}, + bibtex_show={true}, + abbr={TopiCS}, + pdf={https://onlinelibrary.wiley.com/doi/pdfdirect/10.1111/tops.12781}, + html={https://onlinelibrary.wiley.com/doi/full/10.1111/tops.12781} +} + +@article{zhixuan2024beyond, + title={Beyond Preferences in AI Alignment}, + author={Tan Zhi-Xuan and Micah Carroll and Matija Franklin and Hal Ashton}, + journal={Philosophical Studies}, + year={2024}, + month={11}, + abstract={The dominant practice of AI alignment assumes (1) that preferences are an adequate representation of human values, (2) that human rationality can be understood in terms of maximizing the satisfaction of preferences, and (3) that AI systems should be aligned with the preferences of one or more humans to ensure that they behave safely and in accordance with our values. Whether implicitly followed or explicitly endorsed, these commitments constitute what we term a preferentist approach to AI alignment. In this paper, we characterize and challenge the preferentist approach, describing conceptual and technical alternatives that are ripe for further research. We first survey the limits of rational choice theory as a descriptive model, explaining how preferences fail to capture the thick semantic content of human values, and how utility representations neglect the possible incommensurability of those values. We then critique the normativity of expected utility theory (EUT) for humans and AI, drawing upon arguments showing how rational agents need not comply with EUT, while highlighting how EUT is silent on which preferences are normatively acceptable. Finally, we argue that these limitations motivate a reframing of the targets of AI alignment: Instead of alignment with the preferences of a human user, developer, or humanity-writ-large, AI systems should be aligned with normative standards appropriate to their social roles, such as the role of a general-purpose assistant. Furthermore, these standards should be negotiated and agreed upon by all relevant stakeholders. On this alternative conception of alignment, a multiplicity of AI systems will be able to serve diverse ends, aligned with normative standards that promote mutual benefit and limit harm despite our plural and divergent values.}, + arxiv={2408.16984}, + bibtex_show={true}, + abbr={Phil.Studies}, + pdf={https://arxiv.org/pdf/2408.16984}, + html={https://link.springer.com/article/10.1007/s11098-024-02249-w} +} + +@article{collins2024building, + title={Building Machines that Learn and Think with People}, + author={Collins, Katherine M and Sucholutsky, Ilia and Bhatt, Umang and Chandra, Kartik and Wong, Lionel and Lee, Mina and Zhang, Cedegao E and Zhi-Xuan, Tan and Ho, Mark and Mansinghka, Vikash and Weller, Adrian and Tenenbaum, Joshua B and Griffiths, Thomas L}, + journal={Nature Human Behaviour}, + volume={8}, + number={10}, + pages={1851--1863}, + year={2024}, + abstract={What do we want from machine intelligence? We envision machines that are not just tools for thought, but partners in thought: reasonable, insightful, knowledgeable, reliable, and trustworthy systems that think with us. Current artificial intelligence (AI) systems satisfy some of these criteria, some of the time. In this Perspective, we show how the science of collaborative cognition can be put to work to engineer systems that really can be called ``thought partners,'' systems built to meet our expectations and complement our limitations. We lay out several modes of collaborative thought in which humans and AI thought partners can engage and propose desiderata for human-compatible thought partnerships. Drawing on motifs from computational cognitive science, we motivate an alternative scaling path for the design of thought partners and ecosystems around their use through a Bayesian lens, whereby the partners we construct actively build and reason over models of the human and world.}, + arxiv={2408.03943}, + bibtex_show={true}, + abbr={Nat.Hum.Behav.}, + pdf={https://arxiv.org/pdf/2408.03943}, + html={https://www.nature.com/articles/s41562-024-01991-9} +} + +@article{zhixuan2024infinite, + title={Infinite Ends from Finite Samples: Open-Ended Goal Inference as Top-Down Bayesian Filtering of Bottom-Up Proposals}, + author={Zhi-Xuan, Tan and Kang, Gloria and Mansinghka, Vikash and Tenenbaum, Joshua B}, + journal={Proceedings of the Annual Meeting of the Cognitive Science Society}, + volume={46}, + number={46}, + year={2024}, + month={7}, + abstract={The space of human goals is tremendously vast; and yet, from just a few moments of watching a scene or reading a story, we seem to spontaneously infer a range of plausible motivations for the people and characters involved. What explains this remarkable capacity for intuiting other agents' goals, despite the infinitude of ends they might pursue? And how does this cohere with our understanding of other people as approximately rational agents? In this paper, we introduce a sequential Monte Carlo model of open-ended goal inference, which combines top-down Bayesian inverse planning with bottom-up sampling based on the statistics of co-occurring subgoals. By proposing goal hypotheses related to the subgoals achieved by an agent, our model rapidly generates plausible goals without exhaustive search, then filters out goals that would be irrational given the actions taken so far. We validate this model in a goal inference task called Block Words, where participants try to guess the word that someone is stacking out of lettered blocks. In comparison to both heuristic bottom-up guessing and exact Bayesian inference over hundreds of goals, our model better predicts the mean, variance, efficiency, and resource rationality of human goal inferences, achieving similar accuracy to the exact model at a fraction of the cognitive cost, while also explaining garden-path effects that arise from misleading bottom-up cues. Our experiments thus highlight the importance of uniting top-down and bottom-up models for explaining the speed, accuracy, and generality of human theory-of-mind.}, + arxiv={2407.16770}, + bibtex_show={true}, + abbr={CogSci}, + pdf={2024-open-ended-goal-inference.pdf}, + code={https://github.com/ztangent/OpenEndedBlockWords.jl}, + supp={https://osf.io/bygwm/} +} + +@article{ying2024grounding, + title={Grounding Language about Belief in a Bayesian Theory-of-Mind}, + author={Ying, Lance and Zhi-Xuan, Tan and Wong, Lionel and Mansinghka, Vikash and Tenenbaum, Joshua}, + journal={Proceedings of the Annual Meeting of the Cognitive Science Society}, + volume={46}, + number={46}, + year={2024}, + month={7}, + abstract={Despite the fact that beliefs are mental states that cannot be directly observed, humans talk about each others' beliefs on a regular basis, often using rich compositional language to describe what others think and know. What explains this capacity to interpret the hidden epistemic content of other minds? In this paper, we take a step towards an answer by grounding the semantics of belief statements in a Bayesian theory-of-mind: By modeling how humans jointly infer coherent sets of goals, beliefs, and plans that explain an agent's actions, then evaluating statements about the agent's beliefs against these inferences via epistemic logic, our framework provides a functional role semantics for belief, explaining the gradedness and compositionality of human belief attributions, as well as their intimate connection with goals and plans. We evaluate this framework by studying how humans attribute goals and evaluate belief sentences while watching an agent solve a doors-and-keys gridworld puzzle that requires instrumental reasoning about hidden objects. In contrast to pure logical deduction, non-mentalizing baselines, and mentalizing that ignores the role of instrumental plans, our model provides a much better fit to human goal and belief attributions, demonstrating the importance of theory-of-mind for modeling how humans understand language about beliefs.}, + arxiv={2402.10416}, + bibtex_show={true}, + abbr={CogSci}, + html={https://escholarship.org/uc/item/2tk4d5jw}, + pdf={https://escholarship.org/content/qt2tk4d5jw/qt2tk4d5jw.pdf}, + supp={https://osf.io/z7nvu/} +} + +@article{dalrymple2024guaranteed, + title={Towards Guaranteed Safe AI: A Framework for Ensuring Robust and Reliable AI Systems}, + author={David "davidad" Dalrymple and Joar Skalse and Yoshua Bengio and Stuart Russell and Max Tegmark and Sanjit Seshia and Steve Omohundro and Christian Szegedy and Ben Goldhaber and Nora Ammann and Alessandro Abate and Joe Halpern and Clark Barrett and Ding Zhao and Tan Zhi-Xuan and Jeannette Wing and Joshua Tenenbaum}, + journal={arXiv preprint arXiv:2405.06624}, + year={2024}, + month={5}, + arxiv={2405.06624}, + bibtex_show={true}, + pdf={https://arxiv.org/pdf/2405.06624.pdf}, +} + +@inproceedings{zhixuan2024pragmatic, + title={Pragmatic Instruction Following and Goal Assistance via Cooperative Language Guided Inverse Plan Search}, + author={Zhi-Xuan, Tan and Ying, Lance and Mansinghka, Vikash and Tenenbaum, Joshua B}, + booktitle={Proceedings of the 23rd International Conference on Autonomous Agents and Multiagent Systems}, + year={2024}, + month={5}, + abstract={People often give instructions whose meaning is ambiguous without further context, expecting that their actions or goals will disambiguate their intentions. How can we build assistive agents that follow such instructions in a flexible, context-sensitive manner? This paper introduces cooperative language-guided inverse plan search (CLIPS), a Bayesian agent architecture for pragmatic instruction following and goal assistance. Our agent assists a human by modeling them as a cooperative planner who communicates joint plans to the assistant, then performs multimodal Bayesian inference over the human's goal from actions and language, using large language models (LLMs) to evaluate the likelihood of an instruction given a hypothesized plan. Given this posterior, our assistant acts to minimize expected goal achievement cost, enabling it to pragmatically follow ambiguous instructions and provide effective assistance even when uncertain about the goal. We evaluate these capabilities in two cooperative planning domains (Doors, Keys & Gems and VirtualHome), finding that CLIPS significantly outperforms GPT-4V, LLM-based literal instruction following and unimodal inverse planning in both accuracy and helpfulness, while closely matching the inferences and assistive judgments provided by human raters.}, + arxiv={2402.17930}, + bibtex_show={true}, + abbr={AAMAS}, + html={https://dl.acm.org/doi/abs/10.5555/3635637.3663074}, + pdf={2024-clips.pdf}, + code={https://github.com/probcomp/CLIPS.jl}, + supp={https://osf.io/v8ru7/} +} + +@inproceedings{oldenburg2024learning, + title={Learning and Sustaining Shared Normative Systems via Bayesian Rule Induction in Markov Games}, + author={Oldenburg, Ninell and Zhi-Xuan, Tan}, + booktitle={Proceedings of the 23rd International Conference on Autonomous Agents and Multiagent Systems}, + year={2024}, + month={5}, + abstract={A universal feature of human societies is the adoption of systems of rules and norms in the service of cooperative ends. How can we build learning agents that do the same, so that they may flexibly cooperate with the human institutions they are embedded in? We hypothesize that agents can achieve this by assuming there exists a shared set of norms that most others comply with while pursuing their individual desires, even if they do not know the exact content of those norms. By assuming shared norms, a newly introduced agent can infer the norms of an existing population from observations of compliance and violation. Furthermore, groups of agents can converge to a shared set of norms, even if they initially diverge in their beliefs about what the norms are. This in turn enables the stability of the normative system: since agents can bootstrap common knowledge of the norms, this leads the norms to be widely adhered to, enabling new entrants to rapidly learn those norms. We formalize this framework in the context of Markov games and demonstrate its operation in a multi-agent environment via approximately Bayesian rule induction of obligative and prohibitive norms. Using our approach, agents are able to rapidly learn and sustain a variety of cooperative institutions, including resource management norms and compensation for pro-social labor, promoting collective welfare while still allowing agents to act in their own interests.}, + arxiv={2402.13399}, + bibtex_show={true}, + abbr={AAMAS}, + html={https://dl.acm.org/doi/10.5555/3635637.3663011}, + pdf={2024-norm-learning-markov-games.pdf}, + code={https://github.com/ninell-oldenburg/social-contracts} +} + +@inproceedings{lew2023sequential, + title={Sequential Monte Carlo Steering of Large Language Models using Probabilistic Programs}, + author={Lew, Alexander K and Zhi-Xuan, Tan and Grand, Gabriel and Mansinghka, Vikash K}, + booktitle={ICML 2023 Workshop on Sampling and Optimization in Discrete Spaces (SoDS)}, + year={2023}, + month={7}, + abstract={Even after fine-tuning and reinforcement learning, large language models (LLMs) can be difficult, if not impossible, to control reliably with prompts alone. We propose a new inference-time approach to enforcing syntactic and semantic constraints on the outputs of LLMs, called sequential Monte Carlo (SMC) steering. The key idea is to specify language generation tasks as posterior inference problems in a class of discrete probabilistic sequence models, and replace standard decoding with sequential Monte Carlo inference. For a computational cost similar to that of beam search, SMC can steer LLMs to solve diverse tasks, including infilling, generation under syntactic constraints, and prompt intersection. To facilitate experimentation with SMC steering, we present a probabilistic programming library, LLaMPPL (this https URL), for concisely specifying new generation tasks as language model probabilistic programs, and automating steering of LLaMA-family Transformers.}, + arxiv={2306.03081}, + bibtex_show={true}, + pdf={https://arxiv.org/pdf/2306.03081.pdf}, +} + +@inproceedings{ying2023inferring, + title={Inferring the goals of communicating agents from actions and instructions}, + author={Ying, Lance and Zhi-Xuan, Tan and Mansinghka, Vikash and Tenenbaum, Joshua B}, + booktitle={Proceedings of the 2023 AAAI Fall Symposia}, + volume={2}, + number={1}, + pages={26--33}, + year={2023}, + abstract={When humans cooperate, they frequently coordinate their activity through both verbal communication and non-verbal actions, using this information to infer a shared goal and plan. How can we model this inferential ability? In this paper, we introduce a model of a cooperative team where one agent, the principal, may communicate natural language instructions about their shared plan to another agent, the assistant, using GPT-3 as a likelihood function for instruction utterances. We then show how a third person observer can infer the team's goal via multi-modal Bayesian inverse planning from actions and instructions, computing the posterior distribution over goals under the assumption that agents will act and communicate rationally to achieve them. We evaluate this approach by comparing it with human goal inferences in a multi-agent gridworld, finding that our model's inferences closely correlate with human judgments (R = 0.96). When compared to inference from actions alone, we also find that instructions lead to more rapid and less uncertain goal inference, highlighting the importance of verbal communication for cooperative agents.}, + arxiv={2306.16207}, + bibtex_show={true}, + html={https://ojs.aaai.org/index.php/AAAI-SS/article/view/27645}, + pdf={https://arxiv.org/pdf/2306.16207.pdf}, + supp={https://osf.io/gh758/} +} + +@inproceedings{ying2023neuro, + title={The Neuro-Symbolic Inverse Planning Engine (NIPE): Modeling Probabilistic Social Inferences from Linguistic Inputs}, + author={Ying, Lance and Collins, Katherine M and Wei, Megan and Zhang, Cedegao E and Zhi-Xuan, Tan and Weller, Adrian and Tenenbaum, Joshua B and Wong, Lionel}, + booktitle={ICML 2023 Workshop on Theory of Mind in Communicating Agents}, + year={2023}, + month={7}, + abstract={Human beings are social creatures. We routinely reason about other agents, and a crucial component of this social reasoning is inferring people's goals as we learn about their actions. In many settings, we can perform intuitive but reliable goal inference from language descriptions of agents, actions, and the background environments. In this paper, we study this process of language driving and influencing social reasoning in a probabilistic goal inference domain. We propose a neuro-symbolic model that carries out goal inference from linguistic inputs of agent scenarios. The "neuro" part is a large language model (LLM) that translates language descriptions to code representations, and the "symbolic" part is a Bayesian inverse planning engine. To test our model, we design and run a human experiment on a linguistic goal inference task. Our model closely matches human response patterns and better predicts human judgements than using an LLM alone.}, + arxiv={2306.14325}, + bibtex_show={true}, + pdf={https://arxiv.org/pdf/2306.14325.pdf}, +} + +@inproceedings{kwon2023not, + title={When it is not out of line to get out of line: The role of universalization and outcome-based reasoning in rule-breaking judgments}, + author={Kwon, Joe and Zhi-Xuan, Tan and Tenenbaum, Joshua and Levine, Sydney}, + booktitle={Proceedings of the Annual Meeting of the Cognitive Science Society}, + abstract={How do we know when it's OK to break moral rules? We propose that — alongside well-studied outcome-based measures of welfare and harm — people sometimes use universalization, asking "What if everyone felt at liberty to ignore the rule?" We develop a virtual environment where agents stand in line to gather water. Subjects judge agents who get out of line to try to get water more quickly. If subjects use universalization, they would need to imagine all agents getting out of line and going straight for the water in each environment. To test this prediction, we model an action's universalizability by simulating what would happen if every agent tried to follow a path directly to the water, then evaluating the effects. We also investigate the role of several outcome-based measures, including welfare aggregation and harm-based measures. We find that universalizability plays an important role in rule-breaking judgments alongside outcome-based concerns.}, + volume={45}, + number={45}, + year={2023}, + month={7}, + bibtex_show={true}, + abbr={CogSci}, + pdf={2023-universalization-rule-breaking.pdf}, +} + +@inproceedings{zhixuan2023bayesian, + title = {Bayesian Inverse Motion Planning for Online Goal Inference in Continuous Domains}, + author = {Zhi-Xuan, Tan and Kondic, Jovana and Slocum, Stewart and Tenenbaum, Joshua B and Mansinghka, Vikash K and Hadfield-Menell, Dylan}, + booktitle = {ICRA 2023 Workshop on Cognitive Modeling in Robot Learning}, + year = {2023}, + month = {6}, + pdf = {2023-inverse-motion-planning.pdf}, + url = {https://sites.google.com/view/cognitive-modeling-icra2023-ws/contributions?authuser=0#h.dk14d3kbwe65}, + html = {https://sites.google.com/view/cognitive-modeling-icra2023-ws/contributions?authuser=0#h.dk14d3kbwe65}, + bibtex_show={true}, + abstract = {Humans and other agents navigate their environments by acting efficiently to achieve their goals. In order to infer agents’ goals from their actions, it is thus necessary to model how agents achieve their goals efficiently. Here, we show how online goal inference and trajectory prediction in continuous domains can be performed via Bayesian inverse motion planning: By modeling an agent as an approximately Boltzmann-rational motion planner that produces low-cost trajectories while avoiding obstacles, and placing a prior over goals, we can infer the agent’s goal and future trajectory from partial trajectory observations. We compute these inferences online using a sequential Monte Carlo algorithm, which accounts for the multimodal distribution of trajectories due to obstacles, and exhibits better calibration at early timesteps than a Laplace approximation and a greedy baseline.}, + code = {https://github.com/InverseMotionPlanning/InverseMotionPlanning.jl} +} + + +@inproceedings{lew2023smcp3, + title = {SMCP3: Sequential Monte Carlo with Probabilistic Program Proposals}, + author = {Lew, Alexander K. and Matheos, George and Zhi-Xuan, Tan and Ghavamizadeh, Matin and Gothoskar, Nishad and Russell, Stuart and Mansinghka, Vikash K.}, + booktitle = {Proceedings of The 26th International Conference on Artificial Intelligence and Statistics}, + pages = {7061--7088}, + year = {2023}, + editor = {Ruiz, Francisco and Dy, Jennifer and van de Meent, Jan-Willem}, + volume = {206}, + series = {Proceedings of Machine Learning Research}, + month = {4}, + publisher = {PMLR}, + pdf = {https://proceedings.mlr.press/v206/lew23a/lew23a.pdf}, + url = {https://proceedings.mlr.press/v206/lew23a.html}, + html = {https://proceedings.mlr.press/v206/lew23a.html}, + bibtex_show={true}, + abbr={AISTATS}, + abstract = {This paper introduces SMCP3, a method for automatically implementing custom sequential Monte Carlo samplers for inference in probabilistic programs. Unlike particle filters and resample-move SMC (Gilks and Berzuini, 2001), SMCP3 algorithms can improve the quality of samples and weights using pairs of Markov proposal kernels that are also specified by probabilistic programs. Unlike Del Moral et al. (2006b), these proposals can themselves be complex probabilistic computations that generate auxiliary variables, apply deterministic transformations, and lack tractable marginal densities. This paper also contributes an efficient implementation in Gen that eliminates the need to manually derive incremental importance weights. SMCP3 thus simultaneously expands the design space that can be explored by SMC practitioners and reduces the implementation effort. SMCP3 is illustrated using applications to 3D object tracking, state-space modeling, and data clustering, showing that SMCP3 methods can simultaneously improve the quality and reduce the cost of marginal likelihood estimation and posterior inference.} +} + +@inproceedings{zhixuan2022abstract, + title={Abstract Interpretation for Generalized Heuristic Search in Model-Based Planning}, + author={Zhi-Xuan, Tan and Tenenbaum, Joshua B and Mansinghka, Vikash K}, + booktitle={ICML 2022 Workshop on Beyond Bayes: Paths Towards Universal Reasoning Systems}, + abstract={Domain-general model-based planners often derive their generality by constructing search heuristics through the relaxation or abstraction of symbolic world models. We illustrate how abstract interpretation can serve as a unifying framework for these abstraction-based heuristics, extending the reach of heuristic search to richer world models that make use of more complex datatypes and functions (e.g. sets, geometry), and even models with uncertainty and probabilistic effects. These heuristics can also be integrated with learning, allowing agents to jumpstart planning in novel world models via abstraction-derived information that is later refined by experience. This suggests that abstract interpretation can play a key role in building universal reasoning systems.}, + year={2022}, + bibtex_show={true}, + arxiv={2208.02938}, + pdf={2022-absint-planning.pdf} +} + +@inproceedings{zhixuan2022solving, + title={Solving the Baby Intuitions Benchmark with a Hierarchically Bayesian Theory of Mind}, + author={Zhi-Xuan, Tan and Gothoskar, Nishad and Pollok, Falk and Gutfreund, Dan and Tenenbaum, Joshua B and Mansinghka, Vikash K}, + booktitle={RSS 2022 Workshop on Social Intelligence in Humans and Robots}, + abstract={To facilitate the development of new models to bridge the gap between machine and human social intelligence, the recently proposed Baby Intuitions Benchmark (arXiv:2102.11938) provides a suite of tasks designed to evaluate commonsense reasoning about agents' goals and actions that even young infants exhibit. Here we present a principled Bayesian solution to this benchmark, based on a hierarchically Bayesian Theory of Mind (HBToM). By including hierarchical priors on agent goals and dispositions, inference over our HBToM model enables few-shot learning of the efficiency and preferences of an agent, which can then be used in commonsense plausibility judgements about subsequent agent behavior. This approach achieves near-perfect accuracy on most benchmark tasks, outperforming deep learning and imitation learning baselines while producing interpretable human-like inferences, demonstrating the advantages of structured Bayesian models of human social cognition.}, + year={2022}, + bibtex_show={true}, + arxiv={2208.02914}, + pdf={2022-solving-bib.pdf} +} + +@phdthesis{zhixuan2022pddl, + title={PDDL.jl: An Extensible Interpreter and Compiler Interface for Fast and Flexible AI Planning}, + author={Zhi-Xuan, Tan}, + year={2022}, + school={Massachusetts Institute of Technology}, + abstract={The Planning Domain Definition Language (PDDL) is a formal specification language for symbolic planning problems and domains that is widely used by the AI planning community. However, most implementations of PDDL are closely tied to particular planning systems and algorithms, and are not designed for interoperability or modular use within larger AI systems. This limitation also makes it difficult to support extensions to PDDL without implementing a dedicated planner for that extension, inhibiting the generality and reach of automated planning. To address these limitations, we present PDDL.jl, an extensible interpreter and compiler interface for fast and flexible AI planning. PDDL.jl exposes the semantics of planning domains through a common interface for executing actions, querying state variables, and other basic operations used within AI planning applications. PDDL.jl also supports the extension of PDDL semantics (e.g. to stochastic and continuous domains), domain abstraction for generalized heuristic search (via abstract interpretation), and domain compilation for efficient planning, enabling speed and flexibility for PDDL and its many descendants. Collectively, these features allow PDDL.jl to serve as a general high-performance platform for AI applications and research programs that leverage the integration of symbolic planning with other AI technologies, such as neuro-symbolic reinforcement learning, probabilistic programming, and Bayesian inverse planning for value learning and goal inference.}, + url={https://dspace.mit.edu/handle/1721.1/143179}, + selected={true}, + bibtex_show={true}, + html={https://dspace.mit.edu/handle/1721.1/143179}, + pdf={https://dspace.mit.edu/bitstream/handle/1721.1/143179/Tan-xuan-SM-EECS-2022-thesis.pdf}, + code={https://github.com/JuliaPlanners/PDDL.jl}, +} + +@inproceedings{alanqary2021modeling, + title={Modeling the Mistakes of Boundedly Rational Agents Within a Bayesian Theory of Mind}, + author={Alanqary, Arwa and Lin, Gloria Z and Le, Joie and Zhi-Xuan, Tan and Mansinghka, Vikash K and Tenenbaum, Joshua B}, + booktitle={Proceedings of the Annual Meeting of the Cognitive Science Society}, + abstract={When inferring the goals that others are trying to achieve, people intuitively understand that others might make mistakes along the way. This is crucial for activities such as teaching, offering assistance, and deciding between blame or forgiveness. However, Bayesian models of theory of mind have generally not accounted for these mistakes, instead modeling agents as mostly optimal in achieving their goals. As a result, they are unable to explain phenomena like locking oneself out of one's house, or losing a game of chess. Here, we extend the Bayesian Theory of Mind framework to model boundedly rational agents who may have mistaken goals, plans, and actions. We formalize this by modeling agents as probabilistic programs, where goals may be confused with semantically similar states, plans may be misguided due to resource-bounded planning, and actions may be unintended due to execution errors. We present experiments eliciting human goal inferences in two domains: (i) a gridworld puzzle with gems locked behind doors, and (ii) a block-stacking domain. Our model better explains human inferences than alternatives, while generalizing across domains. These findings indicate the importance of modeling others as bounded agents, in order to account for the full richness of human intuitive psychology.}, + volume={43}, + number={43}, + year={2021}, + month={7}, + selected={true}, + bibtex_show={true}, + abbr={CogSci}, + arxiv={2106.13249}, + html={https://escholarship.org/uc/item/7tr2w3c9}, + pdf={https://arxiv.org/pdf/2106.13249.pdf} +} + +@inproceedings{zhixuan2021genify, + title={Genify.jl: Transforming Julia into Gen to enable programmable inference}, + author={Zhi-Xuan, Tan and Becker, McCoy R and Mansinghka, Vikash K.}, + booktitle={Languages For Inference Workshop (LAFI 2021), 48th ACM SIGPLAN Symposium on Principles of Programming Languages}, + abstract={A wide variety of libraries written in Julia implement stochastic simulators of natural and social phenomena for the purposes of computational science. However, these simulators are not generally amenable to Bayesian inference, as they do not provide likelihoods for execution traces, support constraining of observed random variables, or allow random choices and subroutines to be selectively updated in Monte Carlo algorithms. + + To address these limitations, we present Genify.jl, an approach to transforming plain Julia code into generative functions in Gen, a universal probabilistic programming system with programmable inference. We accomplish this via lightweight transformation of lowered Julia code into Gen’s dynamic modeling language, combined with a user-friendly random variable addressing scheme that enables straightforward implementation of custom inference programs. + + We demonstrate the utility of this approach by transforming an existing agent-based simulator from plain Julia into Gen, and designing custom inference programs that increase accuracy and efficiency relative to generic SMC and MCMC methods. This performance improvement is achieved by proposing, constraining, or re-simulating random variables that are internal to the simulator, which is made possible by transformation into Gen.}, + year={2021}, + month={1}, + bibtex_show={true}, + html={https://popl21.sigplan.org/details/lafi-2021-papers/5/Genify-jl-Transforming-Julia-into-Gen-to-enable-programmable-inference}, + pdf={2021-genify.pdf}, + code={https://github.com/probcomp/Genify.jl} +} + +@inproceedings{zhixuan2020online, + title={Online Bayesian Goal Inference for Boundedly Rational Planning Agents}, + author={Zhi-Xuan, Tan and Mann, Jordyn and Silver, Tom and Tenenbaum, Josh and Mansinghka, Vikash}, + booktitle={Proceedings of the 34th International Conference on Neural Information Processing Systems}, + abstract={People routinely infer the goals of others by observing their actions over time. Remarkably, we can do so even when those actions lead to failure, enabling us to assist others when we detect that they might not achieve their goals. How might we endow machines with similar capabilities? Here we present an architecture capable of inferring an agent’s goals online from both optimal and non-optimal sequences of actions. Our architecture models agents as boundedly-rational planners that interleave search with execution by replanning, thereby accounting for sub-optimal behavior. These models are specified as probabilistic programs, allowing us to represent and perform efficient Bayesian inference over an agent's goals and internal planning processes. To perform such inference, we develop Sequential Inverse Plan Search (SIPS), a sequential Monte Carlo algorithm that exploits the online replanning assumption of these models, limiting computation by incrementally extending inferred plans as new actions are observed. We present experiments showing that this modeling and inference architecture outperforms Bayesian inverse reinforcement learning baselines, accurately inferring goals from both optimal and non-optimal trajectories involving failure and back-tracking, while generalizing across domains with compositional structure and sparse rewards.}, + pages={19238--19250}, + year={2020}, + month={12}, + selected={true}, + bibtex_show={true}, + abbr={NeurIPS}, + arxiv={2006.07532}, + html={https://proceedings.neurips.cc/paper/2020/hash/df3aebc649f9e3b674eeb790a4da224e-Abstract.html}, + pdf={https://proceedings.neurips.cc/paper/2020/file/df3aebc649f9e3b674eeb790a4da224e-Paper.pdf}, + code={https://github.com/probcomp/InversePlanning.jl} +} + +@inproceedings{zhixuan2020factorized, + title={Factorized Inference in Deep Markov Models for Incomplete Multimodal Time Series}, + author={Zhi-Xuan, Tan and Soh, Harold and Ong, Desmond C}, + booktitle={Proceedings of the AAAI Conference on Artificial Intelligence}, + abstract={Integrating deep learning with latent state space models has the potential to yield temporal models that are powerful, yet tractable and interpretable. Unfortunately, current models are not designed to handle missing data or multiple data modalities, which are both prevalent in real-world data. In this work, we introduce a factorized inference method for Multimodal Deep Markov Models (MDMMs), allowing us to filter and smooth in the presence of missing data, while also performing uncertainty-aware multimodal fusion. We derive this method by factorizing the posterior p (z| x) for non-linear state space models, and develop a variational backward-forward algorithm for inference. Because our method handles incompleteness over both time and modalities, it is capable of interpolation, extrapolation, conditional generation, label prediction, and weakly supervised learning of multimodal time series. We demonstrate these capabilities on both synthetic and real-world multimodal data under high levels of data deletion. Our method performs well even with more than 50% missing data, and outperforms existing deep approaches to inference in latent time series.}, + volume={34}, + number={06}, + pages={10334--10341}, + year={2020}, + month={2}, + doi={10.1609/aaai.v34i06.6597}, + bibtex_show={true}, + abbr={AAAI}, + arxiv={1905.13570}, + html={https://ojs.aaai.org/index.php/AAAI/article/view/6597}, + pdf={https://ojs.aaai.org/index.php/AAAI/article/view/6597/6453}, + code={https://github.com/ztangent/multimodal-dmm} +} + +@article{tan2020predator, + title={Predator dormancy is a stable adaptive strategy due to Parrondo's paradox}, + author={Tan, Zhi-Xuan and Koh, Jin Ming and Koonin, Eugene V and Cheong, Kang Hao}, + abstract={Many predators produce dormant offspring to escape harsh environmental conditions, but the evolutionary stability of this adaptation has not been fully explored. Like seed banks in plants, dormancy provides a stable competitive advantage when seasonal variations occur, because the persistence of dormant forms under harsh conditions compensates for the increased cost of producing dormant offspring. However, dormancy also exists in environments with minimal abiotic variation—an observation not accounted for by existing theory. Here it is demonstrated that dormancy can out-compete perennial activity under conditions of extensive prey density fluctuation caused by overpredation. It is shown that at a critical level of prey density fluctuations, dormancy becomes an evolutionarily stable strategy. This is interpreted as a manifestation of Parrondo's paradox: although neither the active nor dormant forms of a dormancy-capable predator can individually out-compete a perennially active predator, alternating between these two losing strategies can paradoxically result in a winning strategy. Parrondo's paradox may thus explain the widespread success of quiescent behavioral strategies such as dormancy, suggesting that dormancy emerges as a natural evolutionary response to the self-destructive tendencies of overpredation and related biological phenomena.}, + journal={Advanced Science}, + volume={7}, + number={3}, + pages={1901559}, + year={2020}, + publisher={Wiley Online Library}, + bibtex_show={true}, + html={https://onlinelibrary.wiley.com/doi/full/10.1002/advs.201901559}, + pdf={https://onlinelibrary.wiley.com/doi/pdfdirect/10.1002/advs.201901559} +} + +@article{ong2019modeling, + title={Modeling emotion in complex stories: the Stanford Emotional Narratives Dataset}, + author={Ong, Desmond C and Wu, Zhengxuan and Tan, Zhi-Xuan and Reddan, Marianne and Kahhale, Isabella and Mattek, Alison and Zaki, Jamil}, + journal={IEEE Transactions on Affective Computing}, + volume={12}, + number={3}, + pages={579--594}, + year={2019}, + publisher={IEEE}, + bibtex_show={true}, + arxiv={1912.05008}, + html={https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8414991/}, +} + +@inproceedings{wu2019attending, + title={Attending to emotional narratives}, + author={Wu, Zhengxuan and Zhang, Xiyu and Zhi-Xuan, Tan and Zaki, Jamil and Ong, Desmond C}, + booktitle={2019 8th International Conference on Affective Computing and Intelligent Interaction (ACII)}, + pages={648--654}, + year={2019}, + organization={IEEE}, + bibtex_show={true}, + arxiv={1907.04197}, + html={https://ieeexplore.ieee.org/abstract/document/8925497} +} + +@inproceedings{tan2019bayesian, + title={Bayesian Inference of Social Norms as Shared Constraints on Behavior}, + author={Tan, Zhi-Xuan and Ong, Desmond C}, + abstract={People act upon their desires, but often, also act in adherence to implicit social norms. How do people infer these unstated social norms from others' behavior, especially in novel social contexts? We propose that laypeople have intuitive theories of social norms as behavioral constraints shared across different agents in the same social context. We formalize inference of norms using a Bayesian Theory of Mind approach, and show that this computational approach provides excellent predictions of how people infer norms in two scenarios. Our results suggest that people separate the influence of norms and individual desires on others' actions, and have implications for modelling generalizations of hidden causes of behavior.}, + booktitle={Proceedings of the Annual Meeting of the Cognitive Science Society}, + volume={41}, + number={41}, + pages={2919--2925}, + year={2019}, + month={7}, + abbr={CogSci}, + bibtex_show={true}, + arxiv={1905.11110}, + pdf={https://cogsci.mindmodeling.org/2019/papers/0493/0493.pdf}, + code={https://github.com/ztangent/norms-cogsci19} +} + +@inproceedings{tan2019thats, + title={That’s mine! Learning ownership relations and norms for robots}, + author={Tan, Zhi-Xuan and Brawer, Jake and Scassellati, Brian}, + abstract={The ability for autonomous agents to learn and conform to human norms is crucial for their safety and effectiveness in social environments. While recent work has led to frameworks for the representation and inference of simple social rules, research into norm learning remains at an exploratory stage. Here, we present a robotic system capable of representing, learning, and inferring ownership relations and norms. Ownership is represented as a graph of probabilistic relations between objects and their owners, along with a database of predicate-based norms that constrain the actions permissible on owned objects. To learn these norms and relations, our system integrates (i) a novel incremental norm learning algorithm capable of both one-shot learning and induction from specific examples,(ii) Bayesian inference of ownership relations in response to apparent rule violations, and (iii) perceptbased prediction of an object’s likely owners. Through a series of simulated and real-world experiments, we demonstrate the competence and flexibility of the system in performing object manipulation tasks that require a variety of norms to be followed, laying the groundwork for future research into the acquisition and application of social norms.}, + booktitle={Proceedings of the AAAI Conference on Artificial Intelligence}, + volume={33}, + number={01}, + pages={8058--8065}, + year={2019}, + month={1}, + bibtex_show={true}, + abbr={AAAI}, + arxiv={1812.02576}, + html={https://ojs.aaai.org/index.php/AAAI/article/view/4808}, + pdf={https://ojs.aaai.org/index.php/AAAI/article/view/4808/4686} +} + +@article{tan2018cross, + title={Cross-issue solidarity and truth convergence in opinion dynamics}, + author={Tan, Zhi Xuan and Cheong, Kang Hao}, + abstract={How do movements and coalitions which engage with multiple social issues succeed in cross-issue solidarity, and when do they instead become fragmented? To address this, the mechanisms of cross-issue interaction have to be understood. Prior work on opinion dynamics and political disagreement has focused on single-issue consensus and polarization. Inspired by practices of cross-issue movement building, we have developed a general model of multi-issue opinion dynamics where agreement on one issue can promote greater inclusivity in discussing other issues, thereby avoiding the pitfalls of exclusivist interaction, where individuals engage only if they agree sufficiently on every issue considered. Our model shows that as more issues come into play, consensus and solidarity can only be maintained if inclusivity towards differing positions is increased. We further investigate whether greater inclusivity and compromise across issues lead people towards or away from normative truth, thereby addressing concerns about the non-ideal nature of political consensus.}, + journal={Journal of Physics A: Mathematical and Theoretical}, + volume={51}, + number={35}, + pages={355101}, + year={2018}, + publisher={IOP Publishing}, + bibtex_show={true}, + html={https://iopscience.iop.org/article/10.1088/1751-8121/aad030/meta}, + pdf={2017-cross-issue-solidarity.pdf} +} + +@article{tan2017nomadic, + title={Nomadic-colonial life strategies enable paradoxical survival and growth despite habitat destruction}, + author={Tan, Zhi Xuan and Cheong, Kang Hao}, + journal={Elife}, + volume={6}, + year={2017}, + publisher={eLife Sciences Publications, Ltd}, + doi={10.7554/eLife.21673}, + bibtex_show={true}, + html={https://elifesciences.org/articles/21673} +} diff --git a/_cite/.cache/cache.db b/_cite/.cache/cache.db deleted file mode 100644 index 13e939b..0000000 Binary files a/_cite/.cache/cache.db and /dev/null differ diff --git a/_cite/cite.py b/_cite/cite.py deleted file mode 100644 index e277722..0000000 --- a/_cite/cite.py +++ /dev/null @@ -1,206 +0,0 @@ -""" -cite process to convert sources and metasources into full citations -""" - -import traceback -from importlib import import_module -from pathlib import Path -from dotenv import load_dotenv -from util import * - - -# load environment variables -load_dotenv() - - -# save errors/warnings for reporting at end -errors = [] -warnings = [] - -# output citations file -output_file = "_data/citations.yaml" - - -log() - -log("Compiling sources") - -# compiled list of sources -sources = [] - -# in-order list of plugins to run -plugins = ["google-scholar", "pubmed", "orcid", "sources"] - -# loop through plugins -for plugin in plugins: - # convert into path object - plugin = Path(f"plugins/{plugin}.py") - - log(f"Running {plugin.stem} plugin") - - # get all data files to process with current plugin - files = Path.cwd().glob(f"_data/{plugin.stem}*.*") - files = list(filter(lambda p: p.suffix in [".yaml", ".yml", ".json"], files)) - - log(f"Found {len(files)} {plugin.stem}* data file(s)", indent=1) - - # loop through data files - for file in files: - log(f"Processing data file {file.name}", indent=1) - - # load data from file - try: - data = load_data(file) - # check if file in correct format - if not list_of_dicts(data): - raise Exception(f"{file.name} data file not a list of dicts") - except Exception as e: - log(e, indent=2, level="ERROR") - errors.append(e) - continue - - # loop through data entries - for index, entry in enumerate(data): - log(f"Processing entry {index + 1} of {len(data)}, {label(entry)}", level=2) - - # run plugin on data entry to expand into multiple sources - try: - expanded = import_module(f"plugins.{plugin.stem}").main(entry) - # check that plugin returned correct format - if not list_of_dicts(expanded): - raise Exception(f"{plugin.stem} plugin didn't return list of dicts") - # catch any plugin error - except Exception as e: - # log detailed pre-formatted/colored trace - print(traceback.format_exc()) - # log high-level error - log(e, indent=3, level="ERROR") - errors.append(e) - continue - - # loop through sources - for source in expanded: - if plugin.stem != "sources": - log(label(source), level=3) - - # include meta info about source - source["plugin"] = plugin.name - source["file"] = file.name - - # add source to compiled list - sources.append(source) - - if plugin.stem != "sources": - log(f"{len(expanded)} source(s)", indent=3) - - -log("Merging sources by id") - -# merge sources with matching (non-blank) ids -for a in range(0, len(sources)): - a_id = get_safe(sources, f"{a}.id", "") - if not a_id: - continue - for b in range(a + 1, len(sources)): - b_id = get_safe(sources, f"{b}.id", "") - if b_id == a_id: - log(f"Found duplicate {b_id}", indent=2) - sources[a].update(sources[b]) - sources[b] = {} -sources = [entry for entry in sources if entry] - - -log(f"{len(sources)} total source(s) to cite") - - -log() - -log("Generating citations") - -# list of new citations -citations = [] - - -# loop through compiled sources -for index, source in enumerate(sources): - log(f"Processing source {index + 1} of {len(sources)}, {label(source)}") - - # if explicitly flagged, remove/ignore entry - if get_safe(source, "remove", False) == True: - continue - - # new citation data for source - citation = {} - - # source id - _id = get_safe(source, "id", "").strip() - - # Manubot doesn't work without an id - if _id: - log("Using Manubot to generate citation", indent=1) - - try: - # run Manubot and set citation - citation = cite_with_manubot(_id) - - # if Manubot cannot cite source - except Exception as e: - plugin = get_safe(source, "plugin", "") - file = get_safe(source, "file", "") - # if regular source (id entered by user), throw error - if plugin == "sources.py": - log(e, indent=3, level="ERROR") - errors.append(f"Manubot could not generate citation for source {_id}") - # otherwise, if from metasource (id retrieved from some third-party API), just warn - else: - log(e, indent=3, level="WARNING") - warnings.append( - f"Manubot could not generate citation for source {_id} (from {file} with {plugin})" - ) - # discard source from citations - continue - - # preserve fields from input source, overriding existing fields - citation.update(source) - - # ensure date in proper format for correct date sorting - if get_safe(citation, "date", ""): - citation["date"] = format_date(get_safe(citation, "date", "")) - - # add new citation to list - citations.append(citation) - - -log() - -log("Saving updated citations") - - -# save new citations -try: - save_data(output_file, citations) -except Exception as e: - log(e, level="ERROR") - errors.append(e) - - -log() - - -# exit at end, so user can see all errors/warnings in one run -if len(warnings): - log(f"{len(warnings)} warning(s) occurred above", level="WARNING") - for warning in warnings: - log(warning, indent=1, level="WARNING") - -if len(errors): - log(f"{len(errors)} error(s) occurred above", level="ERROR") - for error in errors: - log(error, indent=1, level="ERROR") - log() - exit(1) - -else: - log("All done!", level="SUCCESS") - -log() diff --git a/_cite/plugins/google-scholar.py b/_cite/plugins/google-scholar.py deleted file mode 100644 index e3841b8..0000000 --- a/_cite/plugins/google-scholar.py +++ /dev/null @@ -1,61 +0,0 @@ -import os -from serpapi import GoogleSearch -from util import * - - -def main(entry): - """ - receives single list entry from google-scholar data file - returns list of sources to cite - """ - - # get api key (serp api key to access google scholar) - api_key = os.environ.get("GOOGLE_SCHOLAR_API_KEY", "") - if not api_key: - raise Exception('No "GOOGLE_SCHOLAR_API_KEY" env var') - - # serp api properties - params = { - "engine": "google_scholar_author", - "api_key": api_key, - "num": 100, # max allowed - } - - # get id from entry - _id = get_safe(entry, "gsid", "") - if not _id: - raise Exception('No "gsid" key') - - # query api - @log_cache - @cache.memoize(name=__file__, expire=1 * (60 * 60 * 24)) - def query(_id): - params["author_id"] = _id - return get_safe(GoogleSearch(params).get_dict(), "articles", []) - - response = query(_id) - - # list of sources to return - sources = [] - - # go through response and format sources - for work in response: - # create source - year = get_safe(work, "year", "") - source = { - "id": get_safe(work, "citation_id", ""), - # api does not provide Manubot-citeable id, so keep citation details - "title": get_safe(work, "title", ""), - "authors": list(map(str.strip, get_safe(work, "authors", "").split(","))), - "publisher": get_safe(work, "publication", ""), - "date": (year + "-01-01") if year else "", - "link": get_safe(work, "link", ""), - } - - # copy fields from entry to source - source.update(entry) - - # add source to list - sources.append(source) - - return sources diff --git a/_cite/plugins/orcid.py b/_cite/plugins/orcid.py deleted file mode 100644 index 2f7d04d..0000000 --- a/_cite/plugins/orcid.py +++ /dev/null @@ -1,109 +0,0 @@ -import json -from urllib.request import Request, urlopen -from util import * -from manubot.cite.handlers import prefix_to_handler as manubot_prefixes - - -def main(entry): - """ - receives single list entry from orcid data file - returns list of sources to cite - """ - - # orcid api - endpoint = "https://pub.orcid.org/v3.0/$ORCID/works" - headers = {"Accept": "application/json"} - - # get id from entry - _id = get_safe(entry, "orcid", "") - if not _id: - raise Exception('No "orcid" key') - - # query api - @log_cache - @cache.memoize(name=__file__, expire=1 * (60 * 60 * 24)) - def query(_id): - url = endpoint.replace("$ORCID", _id) - request = Request(url=url, headers=headers) - response = json.loads(urlopen(request).read()) - return get_safe(response, "group", []) - - response = query(_id) - - # list of sources to return - sources = [] - - # go through response structure and pull out ids e.g. doi:1234/56789 - for work in response: - # get list of ids - ids = [] - for summary in get_safe(work, "work-summary", []): - ids = ids + get_safe(summary, "external-ids.external-id", []) - - # find first id of particular "relationship" type - _id = next( - ( - id - for id in ids - if get_safe(id, "external-id-relationship", "") - in ["self", "version-of", "part-of"] - ), - ids[0] if len(ids) > 0 else None, - ) - - if _id == None: - continue - - # get id and id-type from response - id_type = get_safe(_id, "external-id-type", "") - id_value = get_safe(_id, "external-id-value", "") - - # create source - source = {"id": f"{id_type}:{id_value}"} - - # if not an id type that Manubot can cite, keep citation details - if id_type not in manubot_prefixes: - # get summaries - summaries = get_safe(work, "work-summary", []) - - # get first summary with defined sub-value - def first(get_func): - return next( - (value for value in map(get_func, summaries) if value), None - ) - - # get title - title = first(lambda s: get_safe(s, "title.title.value", "")) - - # get publisher - publisher = first(lambda s: get_safe(s, "journal-title.value", "")) - - # get date - date = ( - get_safe(work, "last-modified-date.value") - or first(lambda s: get_safe(s, "last-modified-date.value")) - or get_safe(work, "created-date.value") - or first(lambda s: get_safe(s, "created-date.value")) - or 0 - ) - - # get link - link = first(lambda s: get_safe(s, "url.value", "")) - - # keep available details - if title: - source["title"] = title - if publisher: - source["publisher"] = publisher - if date: - source["date"] = format_date(date) - if link: - source["link"] = link - - # copy fields from entry to source - source.update(entry) - - # add source to list - sources.append(source) - - return sources diff --git a/_cite/plugins/pubmed.py b/_cite/plugins/pubmed.py deleted file mode 100644 index 0f2ee60..0000000 --- a/_cite/plugins/pubmed.py +++ /dev/null @@ -1,46 +0,0 @@ -import json -from urllib.request import Request, urlopen -from urllib.parse import quote -from util import * - - -def main(entry): - """ - receives single list entry from pubmed data file - returns list of sources to cite - """ - - # ncbi api - endpoint = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=$TERM&retmode=json&retmax=1000&usehistory=y" - - # get id from entry - _id = get_safe(entry, "term", "") - if not _id: - raise Exception('No "term" key') - - # query api - @log_cache - @cache.memoize(name=__file__, expire=1 * (60 * 60 * 24)) - def query(_id): - url = endpoint.replace("$TERM", quote(_id)) - request = Request(url=url) - response = json.loads(urlopen(request).read()) - return get_safe(response, "esearchresult.idlist", []) - - response = query(_id) - - # list of sources to return - sources = [] - - # go through response and format sources - for _id in response: - # create source - source = {"id": f"pubmed:{_id}"} - - # copy fields from entry to source - source.update(entry) - - # add source to list - sources.append(source) - - return sources diff --git a/_cite/plugins/sources.py b/_cite/plugins/sources.py deleted file mode 100644 index 9dde4fa..0000000 --- a/_cite/plugins/sources.py +++ /dev/null @@ -1,6 +0,0 @@ -def main(entry): - """ - receives single list entry from sources data file - returns list of sources to cite - """ - return [entry] diff --git a/_cite/requirements.txt b/_cite/requirements.txt deleted file mode 100644 index 9808e76..0000000 --- a/_cite/requirements.txt +++ /dev/null @@ -1,7 +0,0 @@ -manubot~=0.6 -PyYAML~=6.0 -diskcache~=5.6 -rich~=13.6 -python-dotenv~=0.21 -google-search-results~=2.4 - diff --git a/_cite/util.py b/_cite/util.py deleted file mode 100644 index 5ccc8de..0000000 --- a/_cite/util.py +++ /dev/null @@ -1,241 +0,0 @@ -""" -utility functions for cite process and plugins -""" - -import subprocess -import json -import yaml -from yaml.loader import SafeLoader -from pathlib import Path -from datetime import date, datetime -from rich import print -from diskcache import Cache - - -# cache for time-consuming network requests -cache = Cache("./_cite/.cache") - - -# clear expired items from cache -cache.expire() - - -def log_cache(func): - """ - decorator to use around memoized function to log if cached or or not - """ - - def wrap(*args): - key = func.__cache_key__(*args) - if key in cache: - log(" (from cache)", level="INFO", newline=False) - return func(*args) - - return wrap - - -def log(message="\n--------------------\n", indent=0, level="", newline=True): - """ - log to terminal, color determined by indent and level - """ - - colors = { - 0: "[orange1]", - 1: "[salmon1]", - 2: "[violet]", - 3: "[sky_blue1]", - "ERROR": "[#F43F5E]", - "WARNING": "[#EAB308]", - "SUCCESS": "[#10B981]", - "INFO": "[grey70]", - } - prefixes = { - "ERROR": "🚫 ERROR: ", - "WARNING": "⚠️ WARNING: ", - } - color = get_safe(colors, level, "") or get_safe(colors, indent, "") or "[white]" - prefix = get_safe(prefixes, level, "") - if newline: - print() - print(indent * " " + color + prefix + str(message) + "[/]", end="", flush=True) - - -def label(entry): - """ - get "label" of dict entry (for logging purposes) - """ - - return str(list(entry.keys())[0]) + ": " + str(list(entry.values())[0]) - - -def get_safe(item, path, default=None): - """ - safely access value in nested lists/dicts - """ - - for part in str(path).split("."): - try: - part = int(part) - except ValueError: - part = part - try: - item = item[part] - except (KeyError, IndexError, AttributeError, TypeError): - return default - return item - - -def list_of_dicts(data): - """ - check if data is list of dicts - """ - - return isinstance(data, list) and all(isinstance(entry, dict) for entry in data) - - -def format_date(_date): - """ - format date as YYYY-MM-DD, or no date if malformed - """ - - if isinstance(_date, int): - return datetime.fromtimestamp(_date // 1000.0).strftime("%Y-%m-%d") - if isinstance(_date, (date, datetime)): - return _date.strftime("%Y-%m-%d") - try: - return datetime.strptime(_date, "%Y-%m-%d").strftime("%Y-%m-%d") - except Exception: - return "" - - -def load_data(path): - """ - read data from yaml or json file - """ - - # convert to path object - path = Path(path) - - # check if file exists - if not path.is_file(): - raise Exception("Can't find file") - - # try to open file - try: - file = open(path, encoding="utf8") - except Exception as e: - raise Exception(e or "Can't open file") - - # try to parse as yaml - try: - with file: - data = yaml.load(file, Loader=SafeLoader) - except Exception: - raise Exception("Can't parse file. Make sure it's valid YAML.") - - # if no errors, return data - return data - - -def save_data(path, data): - """ - write data to yaml file - """ - - # convert to path object - path = Path(path) - - # try to open file - try: - file = open(path, mode="w") - except Exception: - raise Exception("Can't open file for writing") - - # prevent yaml anchors/aliases (pointers) - yaml.Dumper.ignore_aliases = lambda *args: True - - # try to save data as yaml - try: - with file: - yaml.dump(data, file, default_flow_style=False, sort_keys=False) - except Exception: - raise Exception("Can't save YAML to file") - - # write warning note to top of file - note = "# DO NOT EDIT, GENERATED AUTOMATICALLY" - try: - with open(path, "r") as file: - data = file.read() - with open(path, "w") as file: - file.write(f"{note}\n\n{data}") - except Exception: - raise Exception("Can't write to file") - - -@log_cache -@cache.memoize(name="manubot", expire=90 * (60 * 60 * 24)) -def cite_with_manubot(_id): - """ - generate citation data for source id with Manubot - """ - - # run Manubot - try: - commands = ["manubot", "cite", _id, "--log-level=WARNING"] - output = subprocess.Popen(commands, stdout=subprocess.PIPE).communicate() - except Exception as e: - log(e, indent=3) - raise Exception("Manubot could not generate citation") - - # parse results as json - try: - manubot = json.loads(output[0])[0] - except Exception: - raise Exception("Couldn't parse Manubot response") - - # new citation with only needed info - citation = {} - - # original id - citation["id"] = _id - - # title - citation["title"] = get_safe(manubot, "title", "").strip() - - # authors - citation["authors"] = [] - for author in get_safe(manubot, "author", {}): - given = get_safe(author, "given", "").strip() - family = get_safe(author, "family", "").strip() - if given or family: - citation["authors"].append(" ".join([given, family])) - - # publisher - container = get_safe(manubot, "container-title", "").strip() - collection = get_safe(manubot, "collection-title", "").strip() - publisher = get_safe(manubot, "publisher", "").strip() - citation["publisher"] = container or publisher or collection or "" - - # extract date part - def date_part(citation, index): - try: - return citation["issued"]["date-parts"][0][index] - except (KeyError, IndexError, TypeError): - return "" - - # date - year = date_part(manubot, 0) - if year: - # fallbacks for month and day - month = date_part(manubot, 1) or "1" - day = date_part(manubot, 2) or "1" - citation["date"] = format_date(f"{year}-{month}-{day}") - else: - # if no year, consider date missing data - citation["date"] = "" - - # link - citation["link"] = get_safe(manubot, "URL", "").strip() - - # return citation data - return citation diff --git a/_config.yaml b/_config.yaml index 13e218c..e5efd07 100644 --- a/_config.yaml +++ b/_config.yaml @@ -1,19 +1,20 @@ # site properties and page defaults -title: cosilab +title: CoSI Lab +title-long: Cooperative Systems and Intelligence Lab subtitle: -description: An engaging 1-3 sentence description of your lab. +description: Scaling rational cooperation for an increasingly automated future. header: images/background.jpg footer: images/background.jpg proofer: false # site social media and other links links: - email: contact@cosilab.com - orcid: 0000-0001-8713-9213 - google-scholar: ETJoidYAAAAJ + email: cosi.laboratory@gmail.com + # orcid: 0000-0001-8713-9213 + # google-scholar: ETJoidYAAAAJ github: cosilab - twitter: cosilab - youtube: cosilab + # twitter: cosilab + # youtube: cosilab ### jekyll settings diff --git a/_data/citations.yaml b/_data/citations.yaml deleted file mode 100644 index 0e483e3..0000000 --- a/_data/citations.yaml +++ /dev/null @@ -1,247 +0,0 @@ -# DO NOT EDIT, GENERATED AUTOMATICALLY - -- id: doi:10.1093/nar/gkad1082 - title: "The Monarch Initiative in 2024: an analytic platform integrating phenotypes,\ - \ genes\_and diseases across species" - authors: - - Tim E Putman - - Kevin Schaper - - Nicolas Matentzoglu - - "Vincent\_P Rubinetti" - - "Faisal\_S Alquaddoomi" - - Corey Cox - - J Harry Caufield - - Glass Elsarboukh - - Sarah Gehrke - - Harshad Hegde - - "Justin\_T Reese" - - Ian Braun - - "Richard\_M Bruskiewich" - - Luca Cappelletti - - Seth Carbon - - "Anita\_R Caron" - - "Lauren\_E Chan" - - "Christopher\_G Chute" - - "Katherina\_G Cortes" - - "Vin\xEDcius De\_Souza" - - Tommaso Fontana - - "Nomi\_L Harris" - - "Emily\_L Hartley" - - Eric Hurwitz - - "Julius\_O B Jacobsen" - - Madan Krishnamurthy - - "Bryan\_J Laraway" - - "James\_A McLaughlin" - - "Julie\_A McMurry" - - "Sierra\_A T Moxon" - - "Kathleen\_R Mullen" - - "Shawn\_T O\u2019Neil" - - "Kent\_A Shefchek" - - Ray Stefancsik - - Sabrina Toro - - "Nicole\_A Vasilevsky" - - "Ramona\_L Walls" - - "Patricia\_L Whetzel" - - David Osumi-Sutherland - - Damian Smedley - - "Peter\_N Robinson" - - "Christopher\_J Mungall" - - "Melissa\_A Haendel" - - "Monica\_C Munoz-Torres" - publisher: Nucleic Acids Research - date: '2023-11-24' - link: https://doi.org/gs6kmr - orcid: 0000-0002-4655-3773 - plugin: orcid.py - file: orcid.yaml -- id: doi:10.1101/2023.10.11.560955 - title: Integration of 168,000 samples reveals global patterns of the human gut microbiome - authors: - - Richard J. Abdill - - Samantha P. Graham - - Vincent Rubinetti - - Frank W. Albert - - Casey S. Greene - - Sean Davis - - Ran Blekhman - publisher: Cold Spring Harbor Laboratory - date: '2023-10-11' - link: https://doi.org/gsvf5z - orcid: 0000-0002-4655-3773 - plugin: orcid.py - file: orcid.yaml -- id: doi:10.1093/nar/gkad289 - title: 'MyGeneset.info: an interactive and programmatic platform for community-curated - and user-created collections of genes' - authors: - - Ricardo Avila - - Vincent Rubinetti - - Xinghua Zhou - - Dongbo Hu - - Zhongchao Qian - - Marco Alvarado Cano - - Everaldo Rodolpho - - Ginger Tsueng - - Casey Greene - - Chunlei Wu - publisher: Nucleic Acids Research - date: '2023-04-18' - link: https://doi.org/gr5hb5 - orcid: 0000-0002-4655-3773 - plugin: orcid.py - file: orcid.yaml -- id: doi:10.1101/2023.01.05.522941 - title: Hetnet connectivity search provides rapid insights into how two biomedical - entities are related - authors: - - Daniel S. Himmelstein - - Michael Zietz - - Vincent Rubinetti - - Kyle Kloster - - Benjamin J. Heil - - Faisal Alquaddoomi - - Dongbo Hu - - David N. Nicholson - - Yun Hao - - Blair D. Sullivan - - Michael W. Nagle - - Casey S. Greene - publisher: Cold Spring Harbor Laboratory - date: '2023-01-07' - link: https://doi.org/grmcb9 - orcid: 0000-0002-4655-3773 - plugin: orcid.py - file: orcid.yaml -- id: doi:10.1093/gigascience/giad047 - title: Hetnet connectivity search provides rapid insights into how biomedical entities - are related - authors: - - Daniel S Himmelstein - - Michael Zietz - - Vincent Rubinetti - - Kyle Kloster - - Benjamin J Heil - - Faisal Alquaddoomi - - Dongbo Hu - - David N Nicholson - - Yun Hao - - Blair D Sullivan - - Michael W Nagle - - Casey S Greene - publisher: GigaScience - date: '2022-12-28' - link: https://doi.org/gsd85n - orcid: 0000-0002-4655-3773 - plugin: orcid.py - file: orcid.yaml -- id: doi:10.1101/2022.02.18.461833 - title: 'MolEvolvR: A web-app for characterizing proteins using molecular evolution - and phylogeny' - authors: - - Jacob D Krol - - Joseph T Burke - - Samuel Z Chen - - Lo M Sosinski - - Faisal S Alquaddoomi - - Evan P Brenner - - Ethan P Wolfe - - Vincent P Rubinetti - - Shaddai Amolitos - - Kellen M Reason - - John B Johnston - - Janani Ravi - publisher: Cold Spring Harbor Laboratory - date: '2022-02-22' - link: https://doi.org/gstx7j - orcid: 0000-0002-4655-3773 - plugin: orcid.py - file: orcid.yaml -- id: doi:10.1186/s13059-020-02021-3 - title: Compressing gene expression data using multiple latent space dimensionalities - learns complementary biological representations - authors: - - Gregory P. Way - - Michael Zietz - - Vincent Rubinetti - - Daniel S. Himmelstein - - Casey S. Greene - publisher: Genome Biology - date: '2020-05-11' - link: https://doi.org/gg2mjh - orcid: 0000-0002-4655-3773 - plugin: orcid.py - file: orcid.yaml -- id: doi:10.1371/journal.pcbi.1007128 - title: Open collaborative writing with Manubot - authors: - - Daniel S. Himmelstein - - Vincent Rubinetti - - David R. Slochower - - Dongbo Hu - - Venkat S. Malladi - - Casey S. Greene - - Anthony Gitter - publisher: PLOS Computational Biology - date: '2020-12-04' - link: https://doi.org/c7np - orcid: 0000-0002-4655-3773 - plugin: sources.py - file: sources.yaml - type: paper - description: Lorem ipsum _dolor_ **sit amet**, consectetur adipiscing elit, sed - do eiusmod tempor incididunt ut labore et dolore magna aliqua. - image: https://journals.plos.org/ploscompbiol/article/figure/image?size=inline&id=info:doi/10.1371/journal.pcbi.1007128.g001&rev=2 - buttons: - - type: manubot - link: https://greenelab.github.io/meta-review/ - - type: source - text: Manuscript Source - link: https://github.com/greenelab/meta-review - - type: website - link: http://manubot.org/ - tags: - - open science - - collaboration - repo: greenelab/meta-review -- id: doi:10.1101/573782 - title: Sequential compression of gene expression across dimensionalities and methods - reveals no single best method or dimensionality - authors: - - Gregory P. Way - - Michael Zietz - - Vincent Rubinetti - - Daniel S. Himmelstein - - Casey S. Greene - publisher: Cold Spring Harbor Laboratory - date: '2019-03-11' - link: https://doi.org/gfxjxf - orcid: 0000-0002-4655-3773 - plugin: orcid.py - file: orcid.yaml -- id: doi:10.1016/j.csbj.2020.05.017 - title: Constructing knowledge graphs and their biomedical applications - authors: - - David N. Nicholson - - Casey S. Greene - publisher: Computational and Structural Biotechnology Journal - date: '2020-01-01' - link: https://doi.org/gg7m48 - image: https://ars.els-cdn.com/content/image/1-s2.0-S2001037020302804-gr1.jpg - plugin: sources.py - file: sources.yaml -- id: doi:10.7554/eLife.32822 - title: Sci-Hub provides access to nearly all scholarly literature - authors: - - Daniel S Himmelstein - - Ariel Rodriguez Romero - - Jacob G Levernier - - Thomas Anthony Munro - - Stephen Reid McLaughlin - - Bastian Greshake Tzovaras - - Casey S Greene - publisher: eLife - date: '2018-03-01' - link: https://doi.org/ckcj - image: https://iiif.elifesciences.org/lax:32822%2Felife-32822-fig8-v3.tif/full/863,/0/default.webp - plugin: sources.py - file: sources.yaml diff --git a/_data/orcid.yaml b/_data/orcid.yaml deleted file mode 100644 index 005d380..0000000 --- a/_data/orcid.yaml +++ /dev/null @@ -1 +0,0 @@ -- orcid: 0000-0002-4655-3773 diff --git a/_data/projects.yaml b/_data/projects.yaml index b3eb2a7..feffdfa 100644 --- a/_data/projects.yaml +++ b/_data/projects.yaml @@ -1,47 +1,26 @@ -- title: Cool Dataset - subtitle: a subtitle - group: featured - image: images/photo.jpg - link: https://github.com/ - description: Lorem ipsum _dolor sit amet_, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - repo: greenelab/lab-website-template - tags: - - resource - -- title: Cool Package - subtitle: a subtitle - group: featured - image: images/photo.jpg - link: https://github.com/ - description: Lorem ipsum _dolor sit amet_, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - repo: greenelab/lab-website-template - tags: - - resource +- title: "An Enigma of Artificial Reason: Investigating the Production-Evaluation Gap in Large Reasoning Models" + image: projects/enigma-of-reason.jpg + link: https://arxiv.org/abs/2606.01462 + authors: + - "**Mingzhong Sun**" + - Teresa Yeo + - Armando Solar-Lezama + - "**Tan Zhi-Xuan**" + buttons: + - type: arxiv + link: https://arxiv.org/abs/2606.01462 -- title: Cool Tutorial - subtitle: a subtitle +- title: "Role-Based Self-Organization as a Boundedly Rational Process" image: images/photo.jpg - link: https://github.com/ - description: Lorem ipsum _dolor sit amet_, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - repo: greenelab/lab-website-template - tags: - - resource - - publication + authors: + - "**Joseph Low**" + - "**Bhavyesh Sajja**" + - "**Tan Zhi-Xuan**" -- title: Cool Web App - subtitle: a subtitle - image: images/photo.jpg - link: https://github.com/ - description: Lorem ipsum _dolor sit amet_, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - repo: greenelab/lab-website-template - tags: - - software - -- title: Cool Web Server - subtitle: a subtitle - image: images/photo.jpg - link: https://github.com/ - description: Lorem ipsum _dolor sit amet_, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - repo: greenelab/lab-website-template - tags: - - software +- title: "Evaluating Rational Contracting in Natural Language" + image: projects/rational-contracting.png + authors: + - "**Bhavyesh Sajja**" + - Max Kleiman-Weiner + - Roger Zimmermann + - "**Tan Zhi-Xuan**" diff --git a/_data/sources.yaml b/_data/sources.yaml deleted file mode 100644 index 62cd922..0000000 --- a/_data/sources.yaml +++ /dev/null @@ -1,23 +0,0 @@ -- id: doi:10.1371/journal.pcbi.1007128 - type: paper - description: Lorem ipsum _dolor_ **sit amet**, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - date: 2020-12-4 - image: https://journals.plos.org/ploscompbiol/article/figure/image?size=inline&id=info:doi/10.1371/journal.pcbi.1007128.g001&rev=2 - buttons: - - type: manubot - link: https://greenelab.github.io/meta-review/ - - type: source - text: Manuscript Source - link: https://github.com/greenelab/meta-review - - type: website - link: http://manubot.org/ - tags: - - open science - - collaboration - repo: greenelab/meta-review - -- id: doi:10.1016/j.csbj.2020.05.017 - image: https://ars.els-cdn.com/content/image/1-s2.0-S2001037020302804-gr1.jpg - -- id: doi:10.7554/eLife.32822 - image: https://iiif.elifesciences.org/lax:32822%2Felife-32822-fig8-v3.tif/full/863,/0/default.webp diff --git a/_data/types.yaml b/_data/types.yaml index b492b32..d37c554 100644 --- a/_data/types.yaml +++ b/_data/types.yaml @@ -14,10 +14,22 @@ phd: icon: fa-solid fa-graduation-cap description: PhD Student +research-assistant: + icon: fa-solid fa-flask + description: Research Assistant + undergrad: icon: fa-solid fa-user-graduate description: Undergraduate Student +urop-fyp-student: + icon: fa-solid fa-user-graduate + description: UROP / FYP Student + +collaborator: + icon: fa-solid fa-handshake + description: Collaborator + programmer: icon: fa-solid fa-code description: Programmer @@ -179,6 +191,11 @@ preprint: text: Preprint tooltip: Preprint +arxiv: + icon: fa-solid fa-scroll + text: Preprint + tooltip: Preprint + unpublished: icon: fa-regular fa-eye text: Unpublished diff --git a/_includes/card.html b/_includes/card.html index e944ba8..93348e3 100644 --- a/_includes/card.html +++ b/_includes/card.html @@ -1,19 +1,21 @@ {{ " " }}
{{ include.description | markdownify | remove: "
" | remove: "
" }} {% endif %} + {% if include.buttons.size > 0 %} + + {% endif %} + {% if include.tags or include.repo %} {% include tags.html tags=include.tags repo=include.repo %} {% endif %} diff --git a/_includes/citation.html b/_includes/citation.html index 338be68..c609ed9 100644 --- a/_includes/citation.html +++ b/_includes/citation.html @@ -10,7 +10,7 @@{{ citation.bibtex | xml_escape }}
+ {% endif %}
+
{% if citation.tags.size > 0 or citation.repo %}
{% include tags.html tags=citation.tags repo=citation.repo %}
{% endif %}
diff --git a/_includes/feature.html b/_includes/feature.html
index 8a4f9d4..79151de 100644
--- a/_includes/feature.html
+++ b/_includes/feature.html
@@ -4,20 +4,25 @@
data-flip
{% endif %}
>
-
- {{ include.title }}
diff --git a/_includes/footer.html b/_includes/footer.html index 70b9a80..1877f28 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -1,14 +1,4 @@ -{% assign image = page.footer | default: site.footer %} -{% assign dark = page.footer-dark | is_nil: site.footer-dark | is_nil: true %} - -