├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ └── feature_request.yml ├── pull_request_template.md └── workflows │ ├── pre-commit.yml │ └── tests.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .vscode ├── launch.json └── settings.json ├── LICENSE ├── README.md ├── configs ├── hydra │ ├── default.yaml │ └── launcher │ │ └── slurm.yaml └── train.yaml ├── report ├── paper │ ├── example_paper.blg │ ├── fancyhdr.sty │ ├── icml2018.bst │ ├── icml2018_ift6269.sty │ ├── icml_numpapers.eps │ ├── icml_numpapers.pdf │ ├── images │ │ └── .gitkeep │ ├── main.aux │ ├── main.bbl │ ├── main.blg │ ├── main.fdb_latexmk │ ├── main.fls │ ├── main.out │ ├── main.synctex.gz │ ├── main.tex │ └── references.bib └── plots │ ├── data │ └── .gitkeep │ ├── notebook.ipynb │ └── saved │ └── .gitkeep ├── requirements.txt ├── src ├── .gitkeep ├── dataset.py ├── model.py ├── scripts │ └── run.sh ├── task.py ├── train.py └── utils │ └── ast_eval.py └── tests ├── .gitkeep └── test_all.py /.gitattributes: -------------------------------------------------------------------------------- 1 | # Ignore specific file types (e.g., `.js` files) 2 | report/** linguist-vendored 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.yml: -------------------------------------------------------------------------------- 1 | name: 🐛Bug Report 2 | description: File a bug report here 3 | title: "[BUG]: " 4 | labels: ["bug"] 5 | assignees: ["JayantGoel001"] 6 | body: 7 | - type: markdown 8 | attributes: 9 | value: | 10 | Thanks for taking the time to fill out this bug report 🤗 11 | Make sure there aren't any open/closed issues for this topic 😃 12 | 13 | - type: textarea 14 | id: bug-description 15 | attributes: 16 | label: Description of the bug 17 | description: Give us a brief description of what happened and what should have happened 18 | validations: 19 | required: true 20 | 21 | - type: textarea 22 | id: steps-to-reproduce 23 | attributes: 24 | label: Steps To Reproduce 25 | description: Steps to reproduce the behavior. 26 | placeholder: | 27 | 1. Go to '...' 28 | 2. Click on '...' 29 | 3. Scroll down to '...' 30 | 4. See error 31 | validations: 32 | required: true 33 | 34 | - type: textarea 35 | id: additional-information 36 | attributes: 37 | label: Additional Information 38 | description: | 39 | Provide any additional information such as logs, screenshots, likes, scenarios in which the bug occurs so that it facilitates resolving the issue. 40 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yml: -------------------------------------------------------------------------------- 1 | name: ✨Feature Request 2 | description: Request a new feature or enhancement 3 | labels: ["enhancement"] 4 | title: "[FEAT]: " 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Please make sure this feature request hasn't been already submitted by someone by looking through other open/closed issues 10 | 11 | - type: textarea 12 | id: description 13 | attributes: 14 | label: Description 15 | description: Give us a brief description of the feature or enhancement you would like 16 | validations: 17 | required: true 18 | 19 | - type: textarea 20 | id: additional-information 21 | attributes: 22 | label: Additional Information 23 | description: Give us some additional information on the feature request like proposed solutions, links, screenshots, etc. 24 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | Closes # 8 | 9 | ## 📑 Description 10 | 11 | 12 | 16 | 17 | ## ✅ Checks 18 | 19 | - [ ] My pull request adheres to the code style of this project 20 | - [ ] My code requires changes to the documentation 21 | - [ ] I have updated the documentation as required 22 | - [ ] All the tests have passed if applicable 23 | - [ ] Branch name follows `type/descript` (e.g. `feature/add-llm-agents`) 24 | - [ ] Ready for code review 25 | 26 | ## ℹ Additional Information 27 | 28 | -------------------------------------------------------------------------------- /.github/workflows/pre-commit.yml: -------------------------------------------------------------------------------- 1 | name: pre-commit 2 | 3 | on: 4 | pull_request: 5 | push: 6 | branches: [main] 7 | 8 | jobs: 9 | pre-commit: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | - name: Set up Python 3.10 14 | uses: actions/setup-python@v4 15 | with: 16 | python-version: 3.10.16 17 | - uses: pre-commit/action@v3.0.0 18 | -------------------------------------------------------------------------------- /.github/workflows/tests.yml: -------------------------------------------------------------------------------- 1 | name: Python Package Pytest 2 | on: [push] 3 | 4 | jobs: 5 | test-all: 6 | runs-on: ubuntu-latest 7 | strategy: 8 | max-parallel: 5 9 | 10 | steps: 11 | - uses: actions/checkout@v3 12 | - name: Set up Python 3.11 13 | uses: actions/setup-python@v4 14 | with: 15 | python-version: 3.11.2 16 | - name: Install dependencies 17 | run: | 18 | pip install --upgrade pip 19 | pip install -r requirements.txt 20 | - name: Test with pytest 21 | run: | 22 | pytest 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # poetry 98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 99 | # This is especially recommended for binary packages to ensure reproducibility, and is more 100 | # commonly ignored for libraries. 101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 102 | #poetry.lock 103 | 104 | # pdm 105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 106 | #pdm.lock 107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 108 | # in version control. 109 | # https://pdm.fming.dev/#use-with-ide 110 | .pdm.toml 111 | 112 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 113 | __pypackages__/ 114 | 115 | # Celery stuff 116 | celerybeat-schedule 117 | celerybeat.pid 118 | 119 | # SageMath parsed files 120 | *.sage.py 121 | 122 | # Environments 123 | .env 124 | .venv 125 | env/ 126 | venv/ 127 | ENV/ 128 | env.bak/ 129 | venv.bak/ 130 | 131 | # Spyder project settings 132 | .spyderproject 133 | .spyproject 134 | 135 | # Rope project settings 136 | .ropeproject 137 | 138 | # mkdocs documentation 139 | /site 140 | 141 | # mypy 142 | .mypy_cache/ 143 | .dmypy.json 144 | dmypy.json 145 | 146 | # Pyre type checker 147 | .pyre/ 148 | 149 | # pytype static type analyzer 150 | .pytype/ 151 | 152 | # Cython debug symbols 153 | cython_debug/ 154 | 155 | # PyCharm 156 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 157 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 158 | # and can be added to the global gitignore or merged into this file. For a more nuclear 159 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 160 | #.idea/ 161 | #sandbox.ipynb 162 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | exclude: \.ipynb$ 2 | default_language_version: 3 | python: python3.10 # Update this to a valid Python version 4 | repos: 5 | - repo: https://github.com/pre-commit/pre-commit-hooks 6 | rev: v3.2.0 7 | hooks: 8 | - id: trailing-whitespace 9 | - id: end-of-file-fixer 10 | - id: check-yaml 11 | args: [--unsafe] 12 | - id: check-added-large-files 13 | args: [--maxkb=51200] # Allow files up to 50MB 14 | - repo: https://github.com/pre-commit/mirrors-prettier 15 | rev: v3.0.1 16 | hooks: 17 | - id: prettier 18 | args: [--write] 19 | types_or: [html] 20 | - repo: https://github.com/psf/black 21 | rev: 22.12.0 22 | hooks: 23 | - id: black 24 | args: [--line-length=110] 25 | - repo: https://github.com/pycqa/isort 26 | rev: 5.12.0 27 | hooks: 28 | - id: isort 29 | args: ["--profile", "black", "--line-length=110"] 30 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Python Debugger: Current File", 9 | "type": "debugpy", 10 | "request": "launch", 11 | "program": "src/train.py", 12 | "console": "integratedTerminal", 13 | "args": [ 14 | "hydra/launcher=slurm", 15 | ], 16 | "env": { 17 | "HYDRA_FULL_ERROR": "1" 18 | }, 19 | "justMyCode": false 20 | 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "python.testing.pytestArgs": [ 3 | "tests" 4 | ], 5 | "python.testing.unittestEnabled": false, 6 | "python.testing.pytestEnabled": true, 7 | "editor.formatOnSave": true, 8 | "black-formatter.args": [ 9 | "--line-length=110" 10 | ], 11 | "git.postCommitCommand": "push", 12 | } 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🚀 Your Research Project Template 2 | 3 | This template provides tools and best practices to quick-start your research project with a fully functional environment and backbones for your codebase. It is based on my own experience and the experience of others and aims to help you get started effectively. Feel free to use this template and modify it to suit your needs. The template includes the following: 4 | 5 | - ⚡ [Pytorch Lightning](https://lightning.ai/docs/pytorch/stable/): A framework to organize your deep learning research. 6 | - 🔧 [Hydra](https://hydra.cc/): A powerful configuration management system. 7 | - ✅ [Pre-commit](https://pre-commit.com/): A tool to ensure clean and formatted code. 8 | - 🧪 [Unit Testing](https://docs.pytest.org/en/6.2.x/): For verifying that each function works as expected. 9 | - 📊 [WandB integration](https://wandb.ai/site): For experiment tracking and visualization. 10 | - 🤖 [CI with Github Actions](https://docs.github.com/en/actions): Continuous Integration setup to maintain project quality. 11 | 12 | Additional utilities: 13 | - Ready-to-use Jupyter notebook in `report/plots/notebook.ipynb` for making reproducible Seaborn plots, pulling data directly from your WandB project. 14 | - Pre-implemented VScode debugger config file in `.vscode/launch.json` for debugging your code. 15 | 16 | --- 17 | 18 | ## 🛠️ Tools Overview 19 | 20 | ### ⚡ PyTorch Lightning 21 | This template is built around the PyTorch Lightning framework. You are expected to organize your modules in the `src` folder: 22 | - `src/model.py`: Define your model architecture and the `forward` function. Each model should be a class inheriting from `pl.LightningModule`. 23 | - `src/dataset.py`: Define your datasets (`torch.utils.data.Dataset`) and datamodules (`pl.LightningDataModule`). 24 | - `src/task.py`: Implement your global forward function, loss function, train and evaluation steps, and metrics. Add custom callbacks if needed. 25 | - `src/train.py`: The main script. It loads the configuration file, instantiates components, trains the model, and saves logs and outputs. 26 | 27 | Learn more about PyTorch Lightning [here](https://lightning.ai/docs/pytorch/stable/). 28 | 29 | --- 30 | 31 | ### 🔧 Hydra Configuration 32 | The template uses Hydra for flexible configuration management. Configuration files are stored in the `configs` folder: 33 | - `configs/train.yaml`: The main config file where you define hyperparameters. 34 | 35 | You can also define different configurations for different experiments, overwrite configs, create nested configs etc... The configuration system is very flexible and allows you to define your own configuration structure. Use Hydra to structure your configuration system effectively. More details [here](https://hydra.cc/). 36 | 37 | --- 38 | 39 | ### ✅ Pre-commit 40 | Pre-commit hooks ensure that your code is clean and formatted before committing any change when working with multiple collaborators. The hooks are defined in the `.pre-commit-config.yaml` file. 41 | When the hooks are triggered, you need to re-commit any change it made. They are also automatically run by the CI pipeline on your remote repository to maintain code quality. 42 | Install them with: 43 | ```bash 44 | pre-commit install 45 | ``` 46 | 47 | --- 48 | 49 | ### 🧪 Unit Testing 50 | A unit test file, `test_all.py`, is included to verify that each of your functions works as expected. While not mandatory for simple projects, it is a good practice for larger or collaborative projects. The tests are automatically run by the CI pipeline on your remote repository, and notifications are sent if any test fails. 51 | 52 | --- 53 | 54 | ### 📊 WandB Integration 55 | Log experiments and metrics seamlessly with WandB. The integration is already included in the template, and logging is as simple as using the `self.log()` function in PyTorch Lightning. To configure WandB, just edit `configs/train.yaml`: 56 | ```yaml 57 | logger: 58 | _target_: lightning.pytorch.loggers.WandbLogger 59 | entity: # Add your WandB entity here 60 | project: # Add your WandB project here 61 | ``` 62 | Learn more about WandB [here](https://wandb.ai/site). 63 | 64 | --- 65 | 66 | ## ⚙️ Installation 67 | Python 3.6 or later is required. It is recommended to use a virtual environment to avoid package conflicts. 68 | 69 | 1️⃣ Install dependencies: 70 | ```bash 71 | pip install -r requirements.txt 72 | ``` 73 | 74 | 2️⃣ Set up pre-commit hooks: 75 | ```bash 76 | pre-commit install 77 | ``` 78 | 79 | 3️⃣ Configure WandB (if applicable): 80 | Edit `configs/train.yaml` with your WandB entity and project information. 81 | 82 | 4️⃣ You're good to go! 83 | 84 | --- 85 | 86 | ## ▶️ Usage 87 | 88 | To run your code, simply execute the `train.py` script. Pass hyperparameters as arguments: 89 | ```bash 90 | python train.py seed=0 my_custom_argument=config_1 91 | ``` 92 | This will launch a training run with the specified hyperparameters. 93 | 94 | For parallel jobs on a cluster, use Hydra’s `--multirun` feature: 95 | ```bash 96 | python train.py --multirun seed=0,1,2,3,4 my_custom_argument=config_1,config_2 97 | ``` 98 | 99 | If using Slurm, the default launcher config `hydra/launcher/slurm.yaml` based on the `submitit` plugin for Hydra will be used. 100 | 101 | Learn more about Hydra [here](https://hydra.cc/docs/intro). 102 | 103 | --- 104 | 105 | ## 🤝 Contribution 106 | 107 | All kinds of contributions are welcome! You can add tools, improve practices, or suggest trade-offs. 108 | 👉 If you add external dependencies, make sure to update the `requirements.txt` file. 109 | 110 | This template is directly inspired by our project [PrequentialCode](https://github.com/3rdCore/PrequentialCode), made possible by Eric Elmoznino, and Tejas Kasetty : 111 | 112 | 113 | 114 | 115 | 116 | --- 117 | 118 | Feel free to dive in and start your project! 🌟 119 | -------------------------------------------------------------------------------- /configs/hydra/default.yaml: -------------------------------------------------------------------------------- 1 | defaults: 2 | - _self_ 3 | 4 | run: 5 | dir: ${save_dir}/outputs/${now:%Y-%m-%d}_${now:%H-%M-%S} 6 | sweep: 7 | dir: ${save_dir}/outputs_multiruns/${now:%Y-%m-%d}_${now:%H-%M-%S} 8 | subdir: ${hydra.job.num} 9 | -------------------------------------------------------------------------------- /configs/hydra/launcher/slurm.yaml: -------------------------------------------------------------------------------- 1 | #override hydra/launcher=submitit_slurm with custom attributes 2 | defaults: 3 | - submitit_slurm 4 | 5 | partition: long 6 | cpus_per_task: 2 7 | gres: gpu:1 8 | tasks_per_node: 1 9 | mem_gb: 32 10 | timeout_min: 1440 # 24 hours 11 | array_parallelism: 60 12 | 13 | # change the setup to match your own conda/virtualenv setup on the cluster 14 | setup: 15 | - "module --quiet load miniconda/3" 16 | - "conda activate env" 17 | -------------------------------------------------------------------------------- /configs/train.yaml: -------------------------------------------------------------------------------- 1 | defaults: 2 | - hydra: default 3 | - _self_ 4 | 5 | save_dir: "logs/" 6 | seed: 1 7 | 8 | logger: 9 | _target_: lightning.pytorch.loggers.WandbLogger 10 | entity: # Add your wandb entity here 11 | project: # Add your wandb project here 12 | name: ${now:%Y-%m-%d}_${now:%H-%M-%S} 13 | save_dir: ${save_dir} 14 | offline: False 15 | tags: null 16 | 17 | trainer: 18 | max_epochs: 10 19 | enable_progress_bar: True 20 | log_every_n_steps: 1 21 | 22 | #overwrite with your own class name and attributes 23 | 24 | datamodule: null 25 | 26 | task: null 27 | 28 | callbacks: null 29 | -------------------------------------------------------------------------------- /report/paper/example_paper.blg: -------------------------------------------------------------------------------- 1 | This is BibTeX, Version 0.99dThe top-level auxiliary file: example_paper.aux 2 | The style file: icml2018.bst 3 | Database file #1: example_paper.bib 4 | -------------------------------------------------------------------------------- /report/paper/fancyhdr.sty: -------------------------------------------------------------------------------- 1 | % fancyhdr.sty version 3.2 2 | % Fancy headers and footers for LaTeX. 3 | % Piet van Oostrum, 4 | % Dept of Computer and Information Sciences, University of Utrecht, 5 | % Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands 6 | % Telephone: +31 30 2532180. Email: piet@cs.uu.nl 7 | % ======================================================================== 8 | % LICENCE: 9 | % This file may be distributed under the terms of the LaTeX Project Public 10 | % License, as described in lppl.txt in the base LaTeX distribution. 11 | % Either version 1 or, at your option, any later version. 12 | % ======================================================================== 13 | % MODIFICATION HISTORY: 14 | % Sep 16, 1994 15 | % version 1.4: Correction for use with \reversemargin 16 | % Sep 29, 1994: 17 | % version 1.5: Added the \iftopfloat, \ifbotfloat and \iffloatpage commands 18 | % Oct 4, 1994: 19 | % version 1.6: Reset single spacing in headers/footers for use with 20 | % setspace.sty or doublespace.sty 21 | % Oct 4, 1994: 22 | % version 1.7: changed \let\@mkboth\markboth to 23 | % \def\@mkboth{\protect\markboth} to make it more robust 24 | % Dec 5, 1994: 25 | % version 1.8: corrections for amsbook/amsart: define \@chapapp and (more 26 | % importantly) use the \chapter/sectionmark definitions from ps@headings if 27 | % they exist (which should be true for all standard classes). 28 | % May 31, 1995: 29 | % version 1.9: The proposed \renewcommand{\headrulewidth}{\iffloatpage... 30 | % construction in the doc did not work properly with the fancyplain style. 31 | % June 1, 1995: 32 | % version 1.91: The definition of \@mkboth wasn't restored on subsequent 33 | % \pagestyle{fancy}'s. 34 | % June 1, 1995: 35 | % version 1.92: The sequence \pagestyle{fancyplain} \pagestyle{plain} 36 | % \pagestyle{fancy} would erroneously select the plain version. 37 | % June 1, 1995: 38 | % version 1.93: \fancypagestyle command added. 39 | % Dec 11, 1995: 40 | % version 1.94: suggested by Conrad Hughes 41 | % CJCH, Dec 11, 1995: added \footruleskip to allow control over footrule 42 | % position (old hardcoded value of .3\normalbaselineskip is far too high 43 | % when used with very small footer fonts). 44 | % Jan 31, 1996: 45 | % version 1.95: call \@normalsize in the reset code if that is defined, 46 | % otherwise \normalsize. 47 | % this is to solve a problem with ucthesis.cls, as this doesn't 48 | % define \@currsize. Unfortunately for latex209 calling \normalsize doesn't 49 | % work as this is optimized to do very little, so there \@normalsize should 50 | % be called. Hopefully this code works for all versions of LaTeX known to 51 | % mankind. 52 | % April 25, 1996: 53 | % version 1.96: initialize \headwidth to a magic (negative) value to catch 54 | % most common cases that people change it before calling \pagestyle{fancy}. 55 | % Note it can't be initialized when reading in this file, because 56 | % \textwidth could be changed afterwards. This is quite probable. 57 | % We also switch to \MakeUppercase rather than \uppercase and introduce a 58 | % \nouppercase command for use in headers. and footers. 59 | % May 3, 1996: 60 | % version 1.97: Two changes: 61 | % 1. Undo the change in version 1.8 (using the pagestyle{headings} defaults 62 | % for the chapter and section marks. The current version of amsbook and 63 | % amsart classes don't seem to need them anymore. Moreover the standard 64 | % latex classes don't use \markboth if twoside isn't selected, and this is 65 | % confusing as \leftmark doesn't work as expected. 66 | % 2. include a call to \ps@empty in ps@@fancy. This is to solve a problem 67 | % in the amsbook and amsart classes, that make global changes to \topskip, 68 | % which are reset in \ps@empty. Hopefully this doesn't break other things. 69 | % May 7, 1996: 70 | % version 1.98: 71 | % Added % after the line \def\nouppercase 72 | % May 7, 1996: 73 | % version 1.99: This is the alpha version of fancyhdr 2.0 74 | % Introduced the new commands \fancyhead, \fancyfoot, and \fancyhf. 75 | % Changed \headrulewidth, \footrulewidth, \footruleskip to 76 | % macros rather than length parameters, In this way they can be 77 | % conditionalized and they don't consume length registers. There is no need 78 | % to have them as length registers unless you want to do calculations with 79 | % them, which is unlikely. Note that this may make some uses of them 80 | % incompatible (i.e. if you have a file that uses \setlength or \xxxx=) 81 | % May 10, 1996: 82 | % version 1.99a: 83 | % Added a few more % signs 84 | % May 10, 1996: 85 | % version 1.99b: 86 | % Changed the syntax of \f@nfor to be resistent to catcode changes of := 87 | % Removed the [1] from the defs of \lhead etc. because the parameter is 88 | % consumed by the \@[xy]lhead etc. macros. 89 | % June 24, 1997: 90 | % version 1.99c: 91 | % corrected \nouppercase to also include the protected form of \MakeUppercase 92 | % \global added to manipulation of \headwidth. 93 | % \iffootnote command added. 94 | % Some comments added about \@fancyhead and \@fancyfoot. 95 | % Aug 24, 1998 96 | % version 1.99d 97 | % Changed the default \ps@empty to \ps@@empty in order to allow 98 | % \fancypagestyle{empty} redefinition. 99 | % Oct 11, 2000 100 | % version 2.0 101 | % Added LPPL license clause. 102 | % 103 | % A check for \headheight is added. An errormessage is given (once) if the 104 | % header is too large. Empty headers don't generate the error even if 105 | % \headheight is very small or even 0pt. 106 | % Warning added for the use of 'E' option when twoside option is not used. 107 | % In this case the 'E' fields will never be used. 108 | % 109 | % Mar 10, 2002 110 | % version 2.1beta 111 | % New command: \fancyhfoffset[place]{length} 112 | % defines offsets to be applied to the header/footer to let it stick into 113 | % the margins (if length > 0). 114 | % place is like in fancyhead, except that only E,O,L,R can be used. 115 | % This replaces the old calculation based on \headwidth and the marginpar 116 | % area. 117 | % \headwidth will be dynamically calculated in the headers/footers when 118 | % this is used. 119 | % 120 | % Mar 26, 2002 121 | % version 2.1beta2 122 | % \fancyhfoffset now also takes h,f as possible letters in the argument to 123 | % allow the header and footer widths to be different. 124 | % New commands \fancyheadoffset and \fancyfootoffset added comparable to 125 | % \fancyhead and \fancyfoot. 126 | % Errormessages and warnings have been made more informative. 127 | % 128 | % Dec 9, 2002 129 | % version 2.1 130 | % The defaults for \footrulewidth, \plainheadrulewidth and 131 | % \plainfootrulewidth are changed from \z@skip to 0pt. In this way when 132 | % someone inadvertantly uses \setlength to change any of these, the value 133 | % of \z@skip will not be changed, rather an errormessage will be given. 134 | 135 | % March 3, 2004 136 | % Release of version 3.0 137 | 138 | % Oct 7, 2004 139 | % version 3.1 140 | % Added '\endlinechar=13' to \fancy@reset to prevent problems with 141 | % includegraphics in header when verbatiminput is active. 142 | 143 | % March 22, 2005 144 | % version 3.2 145 | % reset \everypar (the real one) in \fancy@reset because spanish.ldf does 146 | % strange things with \everypar between << and >>. 147 | 148 | \def\ifancy@mpty#1{\def\temp@a{#1}\ifx\temp@a\@empty} 149 | 150 | \def\fancy@def#1#2{\ifancy@mpty{#2}\fancy@gbl\def#1{\leavevmode}\else 151 | \fancy@gbl\def#1{#2\strut}\fi} 152 | 153 | \let\fancy@gbl\global 154 | 155 | \def\@fancyerrmsg#1{% 156 | \ifx\PackageError\undefined 157 | \errmessage{#1}\else 158 | \PackageError{Fancyhdr}{#1}{}\fi} 159 | \def\@fancywarning#1{% 160 | \ifx\PackageWarning\undefined 161 | \errmessage{#1}\else 162 | \PackageWarning{Fancyhdr}{#1}{}\fi} 163 | 164 | % Usage: \@forc \var{charstring}{command to be executed for each char} 165 | % This is similar to LaTeX's \@tfor, but expands the charstring. 166 | 167 | \def\@forc#1#2#3{\expandafter\f@rc\expandafter#1\expandafter{#2}{#3}} 168 | \def\f@rc#1#2#3{\def\temp@ty{#2}\ifx\@empty\temp@ty\else 169 | \f@@rc#1#2\f@@rc{#3}\fi} 170 | \def\f@@rc#1#2#3\f@@rc#4{\def#1{#2}#4\f@rc#1{#3}{#4}} 171 | 172 | % Usage: \f@nfor\name:=list\do{body} 173 | % Like LaTeX's \@for but an empty list is treated as a list with an empty 174 | % element 175 | 176 | \newcommand{\f@nfor}[3]{\edef\@fortmp{#2}% 177 | \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}} 178 | 179 | % Usage: \def@ult \cs{defaults}{argument} 180 | % sets \cs to the characters from defaults appearing in argument 181 | % or defaults if it would be empty. All characters are lowercased. 182 | 183 | \newcommand\def@ult[3]{% 184 | \edef\temp@a{\lowercase{\edef\noexpand\temp@a{#3}}}\temp@a 185 | \def#1{}% 186 | \@forc\tmpf@ra{#2}% 187 | {\expandafter\if@in\tmpf@ra\temp@a{\edef#1{#1\tmpf@ra}}{}}% 188 | \ifx\@empty#1\def#1{#2}\fi} 189 | % 190 | % \if@in 191 | % 192 | \newcommand{\if@in}[4]{% 193 | \edef\temp@a{#2}\def\temp@b##1#1##2\temp@b{\def\temp@b{##1}}% 194 | \expandafter\temp@b#2#1\temp@b\ifx\temp@a\temp@b #4\else #3\fi} 195 | 196 | \newcommand{\fancyhead}{\@ifnextchar[{\f@ncyhf\fancyhead h}% 197 | {\f@ncyhf\fancyhead h[]}} 198 | \newcommand{\fancyfoot}{\@ifnextchar[{\f@ncyhf\fancyfoot f}% 199 | {\f@ncyhf\fancyfoot f[]}} 200 | \newcommand{\fancyhf}{\@ifnextchar[{\f@ncyhf\fancyhf{}}% 201 | {\f@ncyhf\fancyhf{}[]}} 202 | 203 | % New commands for offsets added 204 | 205 | \newcommand{\fancyheadoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyheadoffset h}% 206 | {\f@ncyhfoffs\fancyheadoffset h[]}} 207 | \newcommand{\fancyfootoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyfootoffset f}% 208 | {\f@ncyhfoffs\fancyfootoffset f[]}} 209 | \newcommand{\fancyhfoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyhfoffset{}}% 210 | {\f@ncyhfoffs\fancyhfoffset{}[]}} 211 | 212 | % The header and footer fields are stored in command sequences with 213 | % names of the form: \f@ncy with for [eo], from [lcr] 214 | % and from [hf]. 215 | 216 | \def\f@ncyhf#1#2[#3]#4{% 217 | \def\temp@c{}% 218 | \@forc\tmpf@ra{#3}% 219 | {\expandafter\if@in\tmpf@ra{eolcrhf,EOLCRHF}% 220 | {}{\edef\temp@c{\temp@c\tmpf@ra}}}% 221 | \ifx\@empty\temp@c\else 222 | \@fancyerrmsg{Illegal char `\temp@c' in \string#1 argument: 223 | [#3]}% 224 | \fi 225 | \f@nfor\temp@c{#3}% 226 | {\def@ult\f@@@eo{eo}\temp@c 227 | \if@twoside\else 228 | \if\f@@@eo e\@fancywarning 229 | {\string#1's `E' option without twoside option is useless}\fi\fi 230 | \def@ult\f@@@lcr{lcr}\temp@c 231 | \def@ult\f@@@hf{hf}{#2\temp@c}% 232 | \@forc\f@@eo\f@@@eo 233 | {\@forc\f@@lcr\f@@@lcr 234 | {\@forc\f@@hf\f@@@hf 235 | {\expandafter\fancy@def\csname 236 | f@ncy\f@@eo\f@@lcr\f@@hf\endcsname 237 | {#4}}}}}} 238 | 239 | \def\f@ncyhfoffs#1#2[#3]#4{% 240 | \def\temp@c{}% 241 | \@forc\tmpf@ra{#3}% 242 | {\expandafter\if@in\tmpf@ra{eolrhf,EOLRHF}% 243 | {}{\edef\temp@c{\temp@c\tmpf@ra}}}% 244 | \ifx\@empty\temp@c\else 245 | \@fancyerrmsg{Illegal char `\temp@c' in \string#1 argument: 246 | [#3]}% 247 | \fi 248 | \f@nfor\temp@c{#3}% 249 | {\def@ult\f@@@eo{eo}\temp@c 250 | \if@twoside\else 251 | \if\f@@@eo e\@fancywarning 252 | {\string#1's `E' option without twoside option is useless}\fi\fi 253 | \def@ult\f@@@lcr{lr}\temp@c 254 | \def@ult\f@@@hf{hf}{#2\temp@c}% 255 | \@forc\f@@eo\f@@@eo 256 | {\@forc\f@@lcr\f@@@lcr 257 | {\@forc\f@@hf\f@@@hf 258 | {\expandafter\setlength\csname 259 | f@ncyO@\f@@eo\f@@lcr\f@@hf\endcsname 260 | {#4}}}}}% 261 | \fancy@setoffs} 262 | 263 | % Fancyheadings version 1 commands. These are more or less deprecated, 264 | % but they continue to work. 265 | 266 | \newcommand{\lhead}{\@ifnextchar[{\@xlhead}{\@ylhead}} 267 | \def\@xlhead[#1]#2{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#2}} 268 | \def\@ylhead#1{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#1}} 269 | 270 | \newcommand{\chead}{\@ifnextchar[{\@xchead}{\@ychead}} 271 | \def\@xchead[#1]#2{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#2}} 272 | \def\@ychead#1{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#1}} 273 | 274 | \newcommand{\rhead}{\@ifnextchar[{\@xrhead}{\@yrhead}} 275 | \def\@xrhead[#1]#2{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#2}} 276 | \def\@yrhead#1{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#1}} 277 | 278 | \newcommand{\lfoot}{\@ifnextchar[{\@xlfoot}{\@ylfoot}} 279 | \def\@xlfoot[#1]#2{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#2}} 280 | \def\@ylfoot#1{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#1}} 281 | 282 | \newcommand{\cfoot}{\@ifnextchar[{\@xcfoot}{\@ycfoot}} 283 | \def\@xcfoot[#1]#2{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#2}} 284 | \def\@ycfoot#1{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#1}} 285 | 286 | \newcommand{\rfoot}{\@ifnextchar[{\@xrfoot}{\@yrfoot}} 287 | \def\@xrfoot[#1]#2{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#2}} 288 | \def\@yrfoot#1{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#1}} 289 | 290 | \newlength{\fancy@headwidth} 291 | \let\headwidth\fancy@headwidth 292 | \newlength{\f@ncyO@elh} 293 | \newlength{\f@ncyO@erh} 294 | \newlength{\f@ncyO@olh} 295 | \newlength{\f@ncyO@orh} 296 | \newlength{\f@ncyO@elf} 297 | \newlength{\f@ncyO@erf} 298 | \newlength{\f@ncyO@olf} 299 | \newlength{\f@ncyO@orf} 300 | \newcommand{\headrulewidth}{0.4pt} 301 | \newcommand{\footrulewidth}{0pt} 302 | \newcommand{\footruleskip}{.3\normalbaselineskip} 303 | 304 | % Fancyplain stuff shouldn't be used anymore (rather 305 | % \fancypagestyle{plain} should be used), but it must be present for 306 | % compatibility reasons. 307 | 308 | \newcommand{\plainheadrulewidth}{0pt} 309 | \newcommand{\plainfootrulewidth}{0pt} 310 | \newif\if@fancyplain \@fancyplainfalse 311 | \def\fancyplain#1#2{\if@fancyplain#1\else#2\fi} 312 | 313 | \headwidth=-123456789sp %magic constant 314 | 315 | % Command to reset various things in the headers: 316 | % a.o. single spacing (taken from setspace.sty) 317 | % and the catcode of ^^M (so that epsf files in the header work if a 318 | % verbatim crosses a page boundary) 319 | % It also defines a \nouppercase command that disables \uppercase and 320 | % \Makeuppercase. It can only be used in the headers and footers. 321 | \let\fnch@everypar\everypar% save real \everypar because of spanish.ldf 322 | \def\fancy@reset{\fnch@everypar{}\restorecr\endlinechar=13 323 | \def\baselinestretch{1}% 324 | \def\nouppercase##1{{\let\uppercase\relax\let\MakeUppercase\relax 325 | \expandafter\let\csname MakeUppercase \endcsname\relax##1}}% 326 | \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e 327 | \ifx\@normalsize\undefined \normalsize % for ucthesis.cls 328 | \else \@normalsize \fi 329 | \else% NFSS (2.09) present 330 | \@newbaseline% 331 | \fi} 332 | 333 | % Initialization of the head and foot text. 334 | 335 | % The default values still contain \fancyplain for compatibility. 336 | \fancyhf{} % clear all 337 | % lefthead empty on ``plain'' pages, \rightmark on even, \leftmark on odd pages 338 | % evenhead empty on ``plain'' pages, \leftmark on even, \rightmark on odd pages 339 | \if@twoside 340 | \fancyhead[el,or]{\fancyplain{}{\sl\rightmark}} 341 | \fancyhead[er,ol]{\fancyplain{}{\sl\leftmark}} 342 | \else 343 | \fancyhead[l]{\fancyplain{}{\sl\rightmark}} 344 | \fancyhead[r]{\fancyplain{}{\sl\leftmark}} 345 | \fi 346 | \fancyfoot[c]{\rm\thepage} % page number 347 | 348 | % Use box 0 as a temp box and dimen 0 as temp dimen. 349 | % This can be done, because this code will always 350 | % be used inside another box, and therefore the changes are local. 351 | 352 | \def\@fancyvbox#1#2{\setbox0\vbox{#2}\ifdim\ht0>#1\@fancywarning 353 | {\string#1 is too small (\the#1): ^^J Make it at least \the\ht0.^^J 354 | We now make it that large for the rest of the document.^^J 355 | This may cause the page layout to be inconsistent, however\@gobble}% 356 | \dimen0=#1\global\setlength{#1}{\ht0}\ht0=\dimen0\fi 357 | \box0} 358 | 359 | % Put together a header or footer given the left, center and 360 | % right text, fillers at left and right and a rule. 361 | % The \lap commands put the text into an hbox of zero size, 362 | % so overlapping text does not generate an errormessage. 363 | % These macros have 5 parameters: 364 | % 1. LEFTSIDE BEARING % This determines at which side the header will stick 365 | % out. When \fancyhfoffset is used this calculates \headwidth, otherwise 366 | % it is \hss or \relax (after expansion). 367 | % 2. \f@ncyolh, \f@ncyelh, \f@ncyolf or \f@ncyelf. This is the left component. 368 | % 3. \f@ncyoch, \f@ncyech, \f@ncyocf or \f@ncyecf. This is the middle comp. 369 | % 4. \f@ncyorh, \f@ncyerh, \f@ncyorf or \f@ncyerf. This is the right component. 370 | % 5. RIGHTSIDE BEARING. This is always \relax or \hss (after expansion). 371 | 372 | \def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset 373 | \@fancyvbox\headheight{\hbox 374 | {\rlap{\parbox[b]{\headwidth}{\raggedright#2}}\hfill 375 | \parbox[b]{\headwidth}{\centering#3}\hfill 376 | \llap{\parbox[b]{\headwidth}{\raggedleft#4}}}\headrule}}#5} 377 | 378 | \def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset 379 | \@fancyvbox\footskip{\footrule 380 | \hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2}}\hfill 381 | \parbox[t]{\headwidth}{\centering#3}\hfill 382 | \llap{\parbox[t]{\headwidth}{\raggedleft#4}}}}}#5} 383 | 384 | \def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi 385 | \hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}} 386 | 387 | \def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi 388 | \vskip-\footruleskip\vskip-\footrulewidth 389 | \hrule\@width\headwidth\@height\footrulewidth\vskip\footruleskip}} 390 | 391 | \def\ps@fancy{% 392 | \@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%for amsbook 393 | % 394 | % Define \MakeUppercase for old LaTeXen. 395 | % Note: we used \def rather than \let, so that \let\uppercase\relax (from 396 | % the version 1 documentation) will still work. 397 | % 398 | \@ifundefined{MakeUppercase}{\def\MakeUppercase{\uppercase}}{}% 399 | \@ifundefined{chapter}{\def\sectionmark##1{\markboth 400 | {\MakeUppercase{\ifnum \c@secnumdepth>\z@ 401 | \thesection\hskip 1em\relax \fi ##1}}{}}% 402 | \def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne 403 | \thesubsection\hskip 1em\relax \fi ##1}}}% 404 | {\def\chaptermark##1{\markboth {\MakeUppercase{\ifnum \c@secnumdepth>\m@ne 405 | \@chapapp\ \thechapter. \ \fi ##1}}{}}% 406 | \def\sectionmark##1{\markright{\MakeUppercase{\ifnum \c@secnumdepth >\z@ 407 | \thesection. \ \fi ##1}}}}% 408 | %\csname ps@headings\endcsname % use \ps@headings defaults if they exist 409 | \ps@@fancy 410 | \gdef\ps@fancy{\@fancyplainfalse\ps@@fancy}% 411 | % Initialize \headwidth if the user didn't 412 | % 413 | \ifdim\headwidth<0sp 414 | % 415 | % This catches the case that \headwidth hasn't been initialized and the 416 | % case that the user added something to \headwidth in the expectation that 417 | % it was initialized to \textwidth. We compensate this now. This loses if 418 | % the user intended to multiply it by a factor. But that case is more 419 | % likely done by saying something like \headwidth=1.2\textwidth. 420 | % The doc says you have to change \headwidth after the first call to 421 | % \pagestyle{fancy}. This code is just to catch the most common cases were 422 | % that requirement is violated. 423 | % 424 | \global\advance\headwidth123456789sp\global\advance\headwidth\textwidth 425 | \fi} 426 | \def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy} 427 | \def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy} 428 | \let\ps@@empty\ps@empty 429 | \def\ps@@fancy{% 430 | \ps@@empty % This is for amsbook/amsart, which do strange things with \topskip 431 | \def\@mkboth{\protect\markboth}% 432 | \def\@oddhead{\@fancyhead\fancy@Oolh\f@ncyolh\f@ncyoch\f@ncyorh\fancy@Oorh}% 433 | \def\@oddfoot{\@fancyfoot\fancy@Oolf\f@ncyolf\f@ncyocf\f@ncyorf\fancy@Oorf}% 434 | \def\@evenhead{\@fancyhead\fancy@Oelh\f@ncyelh\f@ncyech\f@ncyerh\fancy@Oerh}% 435 | \def\@evenfoot{\@fancyfoot\fancy@Oelf\f@ncyelf\f@ncyecf\f@ncyerf\fancy@Oerf}% 436 | } 437 | % Default definitions for compatibility mode: 438 | % These cause the header/footer to take the defined \headwidth as width 439 | % And to shift in the direction of the marginpar area 440 | 441 | \def\fancy@Oolh{\if@reversemargin\hss\else\relax\fi} 442 | \def\fancy@Oorh{\if@reversemargin\relax\else\hss\fi} 443 | \let\fancy@Oelh\fancy@Oorh 444 | \let\fancy@Oerh\fancy@Oolh 445 | 446 | \let\fancy@Oolf\fancy@Oolh 447 | \let\fancy@Oorf\fancy@Oorh 448 | \let\fancy@Oelf\fancy@Oelh 449 | \let\fancy@Oerf\fancy@Oerh 450 | 451 | % New definitions for the use of \fancyhfoffset 452 | % These calculate the \headwidth from \textwidth and the specified offsets. 453 | 454 | \def\fancy@offsolh{\headwidth=\textwidth\advance\headwidth\f@ncyO@olh 455 | \advance\headwidth\f@ncyO@orh\hskip-\f@ncyO@olh} 456 | \def\fancy@offselh{\headwidth=\textwidth\advance\headwidth\f@ncyO@elh 457 | \advance\headwidth\f@ncyO@erh\hskip-\f@ncyO@elh} 458 | 459 | \def\fancy@offsolf{\headwidth=\textwidth\advance\headwidth\f@ncyO@olf 460 | \advance\headwidth\f@ncyO@orf\hskip-\f@ncyO@olf} 461 | \def\fancy@offself{\headwidth=\textwidth\advance\headwidth\f@ncyO@elf 462 | \advance\headwidth\f@ncyO@erf\hskip-\f@ncyO@elf} 463 | 464 | \def\fancy@setoffs{% 465 | % Just in case \let\headwidth\textwidth was used 466 | \fancy@gbl\let\headwidth\fancy@headwidth 467 | \fancy@gbl\let\fancy@Oolh\fancy@offsolh 468 | \fancy@gbl\let\fancy@Oelh\fancy@offselh 469 | \fancy@gbl\let\fancy@Oorh\hss 470 | \fancy@gbl\let\fancy@Oerh\hss 471 | \fancy@gbl\let\fancy@Oolf\fancy@offsolf 472 | \fancy@gbl\let\fancy@Oelf\fancy@offself 473 | \fancy@gbl\let\fancy@Oorf\hss 474 | \fancy@gbl\let\fancy@Oerf\hss} 475 | 476 | \newif\iffootnote 477 | \let\latex@makecol\@makecol 478 | \def\@makecol{\ifvoid\footins\footnotetrue\else\footnotefalse\fi 479 | \let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol} 480 | \def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi} 481 | \def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi} 482 | \def\iffloatpage#1#2{\if@fcolmade #1\else #2\fi} 483 | 484 | \newcommand{\fancypagestyle}[2]{% 485 | \@namedef{ps@#1}{\let\fancy@gbl\relax#2\relax\ps@fancy}} 486 | -------------------------------------------------------------------------------- /report/paper/icml2018.bst: -------------------------------------------------------------------------------- 1 | %% File: `icml2017.bst' 2 | %% A modification of `plainnl.bst' for use with natbib package 3 | %% 4 | %% Copyright 2010 Hal Daum\'e III 5 | %% Modified by J. Fürnkranz 6 | %% - Changed labels from (X and Y, 2000) to (X & Y, 2000) 7 | %% - Changed References to last name first and abbreviated first names. 8 | %% Modified by Iain Murray 2018 (who suggests adopting a standard .bst in future...) 9 | %% - Made it actually use abbreviated first names 10 | %% 11 | %% Copyright 1993-2007 Patrick W Daly 12 | %% Max-Planck-Institut f\"ur Sonnensystemforschung 13 | %% Max-Planck-Str. 2 14 | %% D-37191 Katlenburg-Lindau 15 | %% Germany 16 | %% E-mail: daly@mps.mpg.de 17 | %% 18 | %% This program can be redistributed and/or modified under the terms 19 | %% of the LaTeX Project Public License Distributed from CTAN 20 | %% archives in directory macros/latex/base/lppl.txt; either 21 | %% version 1 of the License, or any later version. 22 | %% 23 | % Version and source file information: 24 | % \ProvidesFile{icml2010.mbs}[2007/11/26 1.93 (PWD)] 25 | % 26 | % BibTeX `plainnat' family 27 | % version 0.99b for BibTeX versions 0.99a or later, 28 | % for LaTeX versions 2.09 and 2e. 29 | % 30 | % For use with the `natbib.sty' package; emulates the corresponding 31 | % member of the `plain' family, but with author-year citations. 32 | % 33 | % With version 6.0 of `natbib.sty', it may also be used for numerical 34 | % citations, while retaining the commands \citeauthor, \citefullauthor, 35 | % and \citeyear to print the corresponding information. 36 | % 37 | % For version 7.0 of `natbib.sty', the KEY field replaces missing 38 | % authors/editors, and the date is left blank in \bibitem. 39 | % 40 | % Includes field EID for the sequence/citation number of electronic journals 41 | % which is used instead of page numbers. 42 | % 43 | % Includes fields ISBN and ISSN. 44 | % 45 | % Includes field URL for Internet addresses. 46 | % 47 | % Includes field DOI for Digital Object Idenfifiers. 48 | % 49 | % Works best with the url.sty package of Donald Arseneau. 50 | % 51 | % Works with identical authors and year are further sorted by 52 | % citation key, to preserve any natural sequence. 53 | % 54 | ENTRY 55 | { address 56 | author 57 | booktitle 58 | chapter 59 | doi 60 | eid 61 | edition 62 | editor 63 | howpublished 64 | institution 65 | isbn 66 | issn 67 | journal 68 | key 69 | month 70 | note 71 | number 72 | organization 73 | pages 74 | publisher 75 | school 76 | series 77 | title 78 | type 79 | url 80 | volume 81 | year 82 | } 83 | {} 84 | { label extra.label sort.label short.list } 85 | 86 | INTEGERS { output.state before.all mid.sentence after.sentence after.block } 87 | 88 | FUNCTION {init.state.consts} 89 | { #0 'before.all := 90 | #1 'mid.sentence := 91 | #2 'after.sentence := 92 | #3 'after.block := 93 | } 94 | 95 | STRINGS { s t } 96 | 97 | FUNCTION {output.nonnull} 98 | { 's := 99 | output.state mid.sentence = 100 | { ", " * write$ } 101 | { output.state after.block = 102 | { add.period$ write$ 103 | newline$ 104 | "\newblock " write$ 105 | } 106 | { output.state before.all = 107 | 'write$ 108 | { add.period$ " " * write$ } 109 | if$ 110 | } 111 | if$ 112 | mid.sentence 'output.state := 113 | } 114 | if$ 115 | s 116 | } 117 | 118 | FUNCTION {output} 119 | { duplicate$ empty$ 120 | 'pop$ 121 | 'output.nonnull 122 | if$ 123 | } 124 | 125 | FUNCTION {output.check} 126 | { 't := 127 | duplicate$ empty$ 128 | { pop$ "empty " t * " in " * cite$ * warning$ } 129 | 'output.nonnull 130 | if$ 131 | } 132 | 133 | FUNCTION {fin.entry} 134 | { add.period$ 135 | write$ 136 | newline$ 137 | } 138 | 139 | FUNCTION {new.block} 140 | { output.state before.all = 141 | 'skip$ 142 | { after.block 'output.state := } 143 | if$ 144 | } 145 | 146 | FUNCTION {new.sentence} 147 | { output.state after.block = 148 | 'skip$ 149 | { output.state before.all = 150 | 'skip$ 151 | { after.sentence 'output.state := } 152 | if$ 153 | } 154 | if$ 155 | } 156 | 157 | FUNCTION {not} 158 | { { #0 } 159 | { #1 } 160 | if$ 161 | } 162 | 163 | FUNCTION {and} 164 | { 'skip$ 165 | { pop$ #0 } 166 | if$ 167 | } 168 | 169 | FUNCTION {or} 170 | { { pop$ #1 } 171 | 'skip$ 172 | if$ 173 | } 174 | 175 | FUNCTION {new.block.checka} 176 | { empty$ 177 | 'skip$ 178 | 'new.block 179 | if$ 180 | } 181 | 182 | FUNCTION {new.block.checkb} 183 | { empty$ 184 | swap$ empty$ 185 | and 186 | 'skip$ 187 | 'new.block 188 | if$ 189 | } 190 | 191 | FUNCTION {new.sentence.checka} 192 | { empty$ 193 | 'skip$ 194 | 'new.sentence 195 | if$ 196 | } 197 | 198 | FUNCTION {new.sentence.checkb} 199 | { empty$ 200 | swap$ empty$ 201 | and 202 | 'skip$ 203 | 'new.sentence 204 | if$ 205 | } 206 | 207 | FUNCTION {field.or.null} 208 | { duplicate$ empty$ 209 | { pop$ "" } 210 | 'skip$ 211 | if$ 212 | } 213 | 214 | FUNCTION {emphasize} 215 | { duplicate$ empty$ 216 | { pop$ "" } 217 | { "\emph{" swap$ * "}" * } 218 | if$ 219 | } 220 | 221 | INTEGERS { nameptr namesleft numnames } 222 | 223 | FUNCTION {format.names} 224 | { 's := 225 | #1 'nameptr := 226 | s num.names$ 'numnames := 227 | numnames 'namesleft := 228 | { namesleft #0 > } 229 | { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't := 230 | nameptr #1 > 231 | { namesleft #1 > 232 | { ", " * t * } 233 | { numnames #2 > 234 | { "," * } 235 | 'skip$ 236 | if$ 237 | t "others" = 238 | { " et~al." * } 239 | { " and " * t * } 240 | if$ 241 | } 242 | if$ 243 | } 244 | 't 245 | if$ 246 | nameptr #1 + 'nameptr := 247 | namesleft #1 - 'namesleft := 248 | } 249 | while$ 250 | } 251 | 252 | FUNCTION {format.key} 253 | { empty$ 254 | { key field.or.null } 255 | { "" } 256 | if$ 257 | } 258 | 259 | FUNCTION {format.authors} 260 | { author empty$ 261 | { "" } 262 | { author format.names } 263 | if$ 264 | } 265 | 266 | FUNCTION {format.editors} 267 | { editor empty$ 268 | { "" } 269 | { editor format.names 270 | editor num.names$ #1 > 271 | { " (eds.)" * } 272 | { " (ed.)" * } 273 | if$ 274 | } 275 | if$ 276 | } 277 | 278 | FUNCTION {format.isbn} 279 | { isbn empty$ 280 | { "" } 281 | { new.block "ISBN " isbn * } 282 | if$ 283 | } 284 | 285 | FUNCTION {format.issn} 286 | { issn empty$ 287 | { "" } 288 | { new.block "ISSN " issn * } 289 | if$ 290 | } 291 | 292 | FUNCTION {format.url} 293 | { url empty$ 294 | { "" } 295 | { new.block "URL \url{" url * "}" * } 296 | if$ 297 | } 298 | 299 | FUNCTION {format.doi} 300 | { doi empty$ 301 | { "" } 302 | { new.block "\doi{" doi * "}" * } 303 | if$ 304 | } 305 | 306 | FUNCTION {format.title} 307 | { title empty$ 308 | { "" } 309 | { title "t" change.case$ } 310 | if$ 311 | } 312 | 313 | FUNCTION {format.full.names} 314 | {'s := 315 | #1 'nameptr := 316 | s num.names$ 'numnames := 317 | numnames 'namesleft := 318 | { namesleft #0 > } 319 | { s nameptr 320 | "{vv~}{ll}" format.name$ 't := 321 | nameptr #1 > 322 | { 323 | namesleft #1 > 324 | { ", " * t * } 325 | { 326 | numnames #2 > 327 | { "," * } 328 | 'skip$ 329 | if$ 330 | t "others" = 331 | { " et~al." * } 332 | { " and " * t * } 333 | if$ 334 | } 335 | if$ 336 | } 337 | 't 338 | if$ 339 | nameptr #1 + 'nameptr := 340 | namesleft #1 - 'namesleft := 341 | } 342 | while$ 343 | } 344 | 345 | FUNCTION {author.editor.full} 346 | { author empty$ 347 | { editor empty$ 348 | { "" } 349 | { editor format.full.names } 350 | if$ 351 | } 352 | { author format.full.names } 353 | if$ 354 | } 355 | 356 | FUNCTION {author.full} 357 | { author empty$ 358 | { "" } 359 | { author format.full.names } 360 | if$ 361 | } 362 | 363 | FUNCTION {editor.full} 364 | { editor empty$ 365 | { "" } 366 | { editor format.full.names } 367 | if$ 368 | } 369 | 370 | FUNCTION {make.full.names} 371 | { type$ "book" = 372 | type$ "inbook" = 373 | or 374 | 'author.editor.full 375 | { type$ "proceedings" = 376 | 'editor.full 377 | 'author.full 378 | if$ 379 | } 380 | if$ 381 | } 382 | 383 | FUNCTION {output.bibitem} 384 | { newline$ 385 | "\bibitem[" write$ 386 | label write$ 387 | ")" make.full.names duplicate$ short.list = 388 | { pop$ } 389 | { * } 390 | if$ 391 | "]{" * write$ 392 | cite$ write$ 393 | "}" write$ 394 | newline$ 395 | "" 396 | before.all 'output.state := 397 | } 398 | 399 | FUNCTION {n.dashify} 400 | { 't := 401 | "" 402 | { t empty$ not } 403 | { t #1 #1 substring$ "-" = 404 | { t #1 #2 substring$ "--" = not 405 | { "--" * 406 | t #2 global.max$ substring$ 't := 407 | } 408 | { { t #1 #1 substring$ "-" = } 409 | { "-" * 410 | t #2 global.max$ substring$ 't := 411 | } 412 | while$ 413 | } 414 | if$ 415 | } 416 | { t #1 #1 substring$ * 417 | t #2 global.max$ substring$ 't := 418 | } 419 | if$ 420 | } 421 | while$ 422 | } 423 | 424 | FUNCTION {format.date} 425 | { year duplicate$ empty$ 426 | { "empty year in " cite$ * warning$ 427 | pop$ "" } 428 | 'skip$ 429 | if$ 430 | month empty$ 431 | 'skip$ 432 | { month 433 | " " * swap$ * 434 | } 435 | if$ 436 | extra.label * 437 | } 438 | 439 | FUNCTION {format.btitle} 440 | { title emphasize 441 | } 442 | 443 | FUNCTION {tie.or.space.connect} 444 | { duplicate$ text.length$ #3 < 445 | { "~" } 446 | { " " } 447 | if$ 448 | swap$ * * 449 | } 450 | 451 | FUNCTION {either.or.check} 452 | { empty$ 453 | 'pop$ 454 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 455 | if$ 456 | } 457 | 458 | FUNCTION {format.bvolume} 459 | { volume empty$ 460 | { "" } 461 | { "volume" volume tie.or.space.connect 462 | series empty$ 463 | 'skip$ 464 | { " of " * series emphasize * } 465 | if$ 466 | "volume and number" number either.or.check 467 | } 468 | if$ 469 | } 470 | 471 | FUNCTION {format.number.series} 472 | { volume empty$ 473 | { number empty$ 474 | { series field.or.null } 475 | { output.state mid.sentence = 476 | { "number" } 477 | { "Number" } 478 | if$ 479 | number tie.or.space.connect 480 | series empty$ 481 | { "there's a number but no series in " cite$ * warning$ } 482 | { " in " * series * } 483 | if$ 484 | } 485 | if$ 486 | } 487 | { "" } 488 | if$ 489 | } 490 | 491 | FUNCTION {format.edition} 492 | { edition empty$ 493 | { "" } 494 | { output.state mid.sentence = 495 | { edition "l" change.case$ " edition" * } 496 | { edition "t" change.case$ " edition" * } 497 | if$ 498 | } 499 | if$ 500 | } 501 | 502 | INTEGERS { multiresult } 503 | 504 | FUNCTION {multi.page.check} 505 | { 't := 506 | #0 'multiresult := 507 | { multiresult not 508 | t empty$ not 509 | and 510 | } 511 | { t #1 #1 substring$ 512 | duplicate$ "-" = 513 | swap$ duplicate$ "," = 514 | swap$ "+" = 515 | or or 516 | { #1 'multiresult := } 517 | { t #2 global.max$ substring$ 't := } 518 | if$ 519 | } 520 | while$ 521 | multiresult 522 | } 523 | 524 | FUNCTION {format.pages} 525 | { pages empty$ 526 | { "" } 527 | { pages multi.page.check 528 | { "pp.\ " pages n.dashify tie.or.space.connect } 529 | { "pp.\ " pages tie.or.space.connect } 530 | if$ 531 | } 532 | if$ 533 | } 534 | 535 | FUNCTION {format.eid} 536 | { eid empty$ 537 | { "" } 538 | { "art." eid tie.or.space.connect } 539 | if$ 540 | } 541 | 542 | FUNCTION {format.vol.num.pages} 543 | { volume field.or.null 544 | number empty$ 545 | 'skip$ 546 | { "\penalty0 (" number * ")" * * 547 | volume empty$ 548 | { "there's a number but no volume in " cite$ * warning$ } 549 | 'skip$ 550 | if$ 551 | } 552 | if$ 553 | pages empty$ 554 | 'skip$ 555 | { duplicate$ empty$ 556 | { pop$ format.pages } 557 | { ":\penalty0 " * pages n.dashify * } 558 | if$ 559 | } 560 | if$ 561 | } 562 | 563 | FUNCTION {format.vol.num.eid} 564 | { volume field.or.null 565 | number empty$ 566 | 'skip$ 567 | { "\penalty0 (" number * ")" * * 568 | volume empty$ 569 | { "there's a number but no volume in " cite$ * warning$ } 570 | 'skip$ 571 | if$ 572 | } 573 | if$ 574 | eid empty$ 575 | 'skip$ 576 | { duplicate$ empty$ 577 | { pop$ format.eid } 578 | { ":\penalty0 " * eid * } 579 | if$ 580 | } 581 | if$ 582 | } 583 | 584 | FUNCTION {format.chapter.pages} 585 | { chapter empty$ 586 | 'format.pages 587 | { type empty$ 588 | { "chapter" } 589 | { type "l" change.case$ } 590 | if$ 591 | chapter tie.or.space.connect 592 | pages empty$ 593 | 'skip$ 594 | { ", " * format.pages * } 595 | if$ 596 | } 597 | if$ 598 | } 599 | 600 | FUNCTION {format.in.ed.booktitle} 601 | { booktitle empty$ 602 | { "" } 603 | { editor empty$ 604 | { "In " booktitle emphasize * } 605 | { "In " format.editors * ", " * booktitle emphasize * } 606 | if$ 607 | } 608 | if$ 609 | } 610 | 611 | FUNCTION {empty.misc.check} 612 | { author empty$ title empty$ howpublished empty$ 613 | month empty$ year empty$ note empty$ 614 | and and and and and 615 | key empty$ not and 616 | { "all relevant fields are empty in " cite$ * warning$ } 617 | 'skip$ 618 | if$ 619 | } 620 | 621 | FUNCTION {format.thesis.type} 622 | { type empty$ 623 | 'skip$ 624 | { pop$ 625 | type "t" change.case$ 626 | } 627 | if$ 628 | } 629 | 630 | FUNCTION {format.tr.number} 631 | { type empty$ 632 | { "Technical Report" } 633 | 'type 634 | if$ 635 | number empty$ 636 | { "t" change.case$ } 637 | { number tie.or.space.connect } 638 | if$ 639 | } 640 | 641 | FUNCTION {format.article.crossref} 642 | { key empty$ 643 | { journal empty$ 644 | { "need key or journal for " cite$ * " to crossref " * crossref * 645 | warning$ 646 | "" 647 | } 648 | { "In \emph{" journal * "}" * } 649 | if$ 650 | } 651 | { "In " } 652 | if$ 653 | " \citet{" * crossref * "}" * 654 | } 655 | 656 | FUNCTION {format.book.crossref} 657 | { volume empty$ 658 | { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ 659 | "In " 660 | } 661 | { "Volume" volume tie.or.space.connect 662 | " of " * 663 | } 664 | if$ 665 | editor empty$ 666 | editor field.or.null author field.or.null = 667 | or 668 | { key empty$ 669 | { series empty$ 670 | { "need editor, key, or series for " cite$ * " to crossref " * 671 | crossref * warning$ 672 | "" * 673 | } 674 | { "\emph{" * series * "}" * } 675 | if$ 676 | } 677 | 'skip$ 678 | if$ 679 | } 680 | 'skip$ 681 | if$ 682 | " \citet{" * crossref * "}" * 683 | } 684 | 685 | FUNCTION {format.incoll.inproc.crossref} 686 | { editor empty$ 687 | editor field.or.null author field.or.null = 688 | or 689 | { key empty$ 690 | { booktitle empty$ 691 | { "need editor, key, or booktitle for " cite$ * " to crossref " * 692 | crossref * warning$ 693 | "" 694 | } 695 | { "In \emph{" booktitle * "}" * } 696 | if$ 697 | } 698 | { "In " } 699 | if$ 700 | } 701 | { "In " } 702 | if$ 703 | " \citet{" * crossref * "}" * 704 | } 705 | 706 | FUNCTION {article} 707 | { output.bibitem 708 | format.authors "author" output.check 709 | author format.key output 710 | new.block 711 | format.title "title" output.check 712 | new.block 713 | crossref missing$ 714 | { journal emphasize "journal" output.check 715 | eid empty$ 716 | { format.vol.num.pages output } 717 | { format.vol.num.eid output } 718 | if$ 719 | format.date "year" output.check 720 | } 721 | { format.article.crossref output.nonnull 722 | eid empty$ 723 | { format.pages output } 724 | { format.eid output } 725 | if$ 726 | } 727 | if$ 728 | format.issn output 729 | format.doi output 730 | format.url output 731 | new.block 732 | note output 733 | fin.entry 734 | } 735 | 736 | FUNCTION {book} 737 | { output.bibitem 738 | author empty$ 739 | { format.editors "author and editor" output.check 740 | editor format.key output 741 | } 742 | { format.authors output.nonnull 743 | crossref missing$ 744 | { "author and editor" editor either.or.check } 745 | 'skip$ 746 | if$ 747 | } 748 | if$ 749 | new.block 750 | format.btitle "title" output.check 751 | crossref missing$ 752 | { format.bvolume output 753 | new.block 754 | format.number.series output 755 | new.sentence 756 | publisher "publisher" output.check 757 | address output 758 | } 759 | { new.block 760 | format.book.crossref output.nonnull 761 | } 762 | if$ 763 | format.edition output 764 | format.date "year" output.check 765 | format.isbn output 766 | format.doi output 767 | format.url output 768 | new.block 769 | note output 770 | fin.entry 771 | } 772 | 773 | FUNCTION {booklet} 774 | { output.bibitem 775 | format.authors output 776 | author format.key output 777 | new.block 778 | format.title "title" output.check 779 | howpublished address new.block.checkb 780 | howpublished output 781 | address output 782 | format.date output 783 | format.isbn output 784 | format.doi output 785 | format.url output 786 | new.block 787 | note output 788 | fin.entry 789 | } 790 | 791 | FUNCTION {inbook} 792 | { output.bibitem 793 | author empty$ 794 | { format.editors "author and editor" output.check 795 | editor format.key output 796 | } 797 | { format.authors output.nonnull 798 | crossref missing$ 799 | { "author and editor" editor either.or.check } 800 | 'skip$ 801 | if$ 802 | } 803 | if$ 804 | new.block 805 | format.btitle "title" output.check 806 | crossref missing$ 807 | { format.bvolume output 808 | format.chapter.pages "chapter and pages" output.check 809 | new.block 810 | format.number.series output 811 | new.sentence 812 | publisher "publisher" output.check 813 | address output 814 | } 815 | { format.chapter.pages "chapter and pages" output.check 816 | new.block 817 | format.book.crossref output.nonnull 818 | } 819 | if$ 820 | format.edition output 821 | format.date "year" output.check 822 | format.isbn output 823 | format.doi output 824 | format.url output 825 | new.block 826 | note output 827 | fin.entry 828 | } 829 | 830 | FUNCTION {incollection} 831 | { output.bibitem 832 | format.authors "author" output.check 833 | author format.key output 834 | new.block 835 | format.title "title" output.check 836 | new.block 837 | crossref missing$ 838 | { format.in.ed.booktitle "booktitle" output.check 839 | format.bvolume output 840 | format.number.series output 841 | format.chapter.pages output 842 | new.sentence 843 | publisher "publisher" output.check 844 | address output 845 | format.edition output 846 | format.date "year" output.check 847 | } 848 | { format.incoll.inproc.crossref output.nonnull 849 | format.chapter.pages output 850 | } 851 | if$ 852 | format.isbn output 853 | format.doi output 854 | format.url output 855 | new.block 856 | note output 857 | fin.entry 858 | } 859 | 860 | FUNCTION {inproceedings} 861 | { output.bibitem 862 | format.authors "author" output.check 863 | author format.key output 864 | new.block 865 | format.title "title" output.check 866 | new.block 867 | crossref missing$ 868 | { format.in.ed.booktitle "booktitle" output.check 869 | format.bvolume output 870 | format.number.series output 871 | format.pages output 872 | address empty$ 873 | { organization publisher new.sentence.checkb 874 | organization output 875 | publisher output 876 | format.date "year" output.check 877 | } 878 | { address output.nonnull 879 | format.date "year" output.check 880 | new.sentence 881 | organization output 882 | publisher output 883 | } 884 | if$ 885 | } 886 | { format.incoll.inproc.crossref output.nonnull 887 | format.pages output 888 | } 889 | if$ 890 | format.isbn output 891 | format.doi output 892 | format.url output 893 | new.block 894 | note output 895 | fin.entry 896 | } 897 | 898 | FUNCTION {conference} { inproceedings } 899 | 900 | FUNCTION {manual} 901 | { output.bibitem 902 | format.authors output 903 | author format.key output 904 | new.block 905 | format.btitle "title" output.check 906 | organization address new.block.checkb 907 | organization output 908 | address output 909 | format.edition output 910 | format.date output 911 | format.url output 912 | new.block 913 | note output 914 | fin.entry 915 | } 916 | 917 | FUNCTION {mastersthesis} 918 | { output.bibitem 919 | format.authors "author" output.check 920 | author format.key output 921 | new.block 922 | format.title "title" output.check 923 | new.block 924 | "Master's thesis" format.thesis.type output.nonnull 925 | school "school" output.check 926 | address output 927 | format.date "year" output.check 928 | format.url output 929 | new.block 930 | note output 931 | fin.entry 932 | } 933 | 934 | FUNCTION {misc} 935 | { output.bibitem 936 | format.authors output 937 | author format.key output 938 | title howpublished new.block.checkb 939 | format.title output 940 | howpublished new.block.checka 941 | howpublished output 942 | format.date output 943 | format.issn output 944 | format.url output 945 | new.block 946 | note output 947 | fin.entry 948 | empty.misc.check 949 | } 950 | 951 | FUNCTION {phdthesis} 952 | { output.bibitem 953 | format.authors "author" output.check 954 | author format.key output 955 | new.block 956 | format.btitle "title" output.check 957 | new.block 958 | "PhD thesis" format.thesis.type output.nonnull 959 | school "school" output.check 960 | address output 961 | format.date "year" output.check 962 | format.url output 963 | new.block 964 | note output 965 | fin.entry 966 | } 967 | 968 | FUNCTION {proceedings} 969 | { output.bibitem 970 | format.editors output 971 | editor format.key output 972 | new.block 973 | format.btitle "title" output.check 974 | format.bvolume output 975 | format.number.series output 976 | address output 977 | format.date "year" output.check 978 | new.sentence 979 | organization output 980 | publisher output 981 | format.isbn output 982 | format.doi output 983 | format.url output 984 | new.block 985 | note output 986 | fin.entry 987 | } 988 | 989 | FUNCTION {techreport} 990 | { output.bibitem 991 | format.authors "author" output.check 992 | author format.key output 993 | new.block 994 | format.title "title" output.check 995 | new.block 996 | format.tr.number output.nonnull 997 | institution "institution" output.check 998 | address output 999 | format.date "year" output.check 1000 | format.url output 1001 | new.block 1002 | note output 1003 | fin.entry 1004 | } 1005 | 1006 | FUNCTION {unpublished} 1007 | { output.bibitem 1008 | format.authors "author" output.check 1009 | author format.key output 1010 | new.block 1011 | format.title "title" output.check 1012 | new.block 1013 | note "note" output.check 1014 | format.date output 1015 | format.url output 1016 | fin.entry 1017 | } 1018 | 1019 | FUNCTION {default.type} { misc } 1020 | 1021 | 1022 | MACRO {jan} {"January"} 1023 | 1024 | MACRO {feb} {"February"} 1025 | 1026 | MACRO {mar} {"March"} 1027 | 1028 | MACRO {apr} {"April"} 1029 | 1030 | MACRO {may} {"May"} 1031 | 1032 | MACRO {jun} {"June"} 1033 | 1034 | MACRO {jul} {"July"} 1035 | 1036 | MACRO {aug} {"August"} 1037 | 1038 | MACRO {sep} {"September"} 1039 | 1040 | MACRO {oct} {"October"} 1041 | 1042 | MACRO {nov} {"November"} 1043 | 1044 | MACRO {dec} {"December"} 1045 | 1046 | 1047 | 1048 | MACRO {acmcs} {"ACM Computing Surveys"} 1049 | 1050 | MACRO {acta} {"Acta Informatica"} 1051 | 1052 | MACRO {cacm} {"Communications of the ACM"} 1053 | 1054 | MACRO {ibmjrd} {"IBM Journal of Research and Development"} 1055 | 1056 | MACRO {ibmsj} {"IBM Systems Journal"} 1057 | 1058 | MACRO {ieeese} {"IEEE Transactions on Software Engineering"} 1059 | 1060 | MACRO {ieeetc} {"IEEE Transactions on Computers"} 1061 | 1062 | MACRO {ieeetcad} 1063 | {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} 1064 | 1065 | MACRO {ipl} {"Information Processing Letters"} 1066 | 1067 | MACRO {jacm} {"Journal of the ACM"} 1068 | 1069 | MACRO {jcss} {"Journal of Computer and System Sciences"} 1070 | 1071 | MACRO {scp} {"Science of Computer Programming"} 1072 | 1073 | MACRO {sicomp} {"SIAM Journal on Computing"} 1074 | 1075 | MACRO {tocs} {"ACM Transactions on Computer Systems"} 1076 | 1077 | MACRO {tods} {"ACM Transactions on Database Systems"} 1078 | 1079 | MACRO {tog} {"ACM Transactions on Graphics"} 1080 | 1081 | MACRO {toms} {"ACM Transactions on Mathematical Software"} 1082 | 1083 | MACRO {toois} {"ACM Transactions on Office Information Systems"} 1084 | 1085 | MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} 1086 | 1087 | MACRO {tcs} {"Theoretical Computer Science"} 1088 | 1089 | 1090 | READ 1091 | 1092 | FUNCTION {sortify} 1093 | { purify$ 1094 | "l" change.case$ 1095 | } 1096 | 1097 | INTEGERS { len } 1098 | 1099 | FUNCTION {chop.word} 1100 | { 's := 1101 | 'len := 1102 | s #1 len substring$ = 1103 | { s len #1 + global.max$ substring$ } 1104 | 's 1105 | if$ 1106 | } 1107 | 1108 | FUNCTION {format.lab.names} 1109 | { 's := 1110 | s #1 "{vv~}{ll}" format.name$ 1111 | s num.names$ duplicate$ 1112 | #2 > 1113 | { pop$ " et~al." * } 1114 | { #2 < 1115 | 'skip$ 1116 | { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = 1117 | { " et~al." * } 1118 | { " \& " * s #2 "{vv~}{ll}" format.name$ * } 1119 | if$ 1120 | } 1121 | if$ 1122 | } 1123 | if$ 1124 | } 1125 | 1126 | FUNCTION {author.key.label} 1127 | { author empty$ 1128 | { key empty$ 1129 | { cite$ #1 #3 substring$ } 1130 | 'key 1131 | if$ 1132 | } 1133 | { author format.lab.names } 1134 | if$ 1135 | } 1136 | 1137 | FUNCTION {author.editor.key.label} 1138 | { author empty$ 1139 | { editor empty$ 1140 | { key empty$ 1141 | { cite$ #1 #3 substring$ } 1142 | 'key 1143 | if$ 1144 | } 1145 | { editor format.lab.names } 1146 | if$ 1147 | } 1148 | { author format.lab.names } 1149 | if$ 1150 | } 1151 | 1152 | FUNCTION {author.key.organization.label} 1153 | { author empty$ 1154 | { key empty$ 1155 | { organization empty$ 1156 | { cite$ #1 #3 substring$ } 1157 | { "The " #4 organization chop.word #3 text.prefix$ } 1158 | if$ 1159 | } 1160 | 'key 1161 | if$ 1162 | } 1163 | { author format.lab.names } 1164 | if$ 1165 | } 1166 | 1167 | FUNCTION {editor.key.organization.label} 1168 | { editor empty$ 1169 | { key empty$ 1170 | { organization empty$ 1171 | { cite$ #1 #3 substring$ } 1172 | { "The " #4 organization chop.word #3 text.prefix$ } 1173 | if$ 1174 | } 1175 | 'key 1176 | if$ 1177 | } 1178 | { editor format.lab.names } 1179 | if$ 1180 | } 1181 | 1182 | FUNCTION {calc.short.authors} 1183 | { type$ "book" = 1184 | type$ "inbook" = 1185 | or 1186 | 'author.editor.key.label 1187 | { type$ "proceedings" = 1188 | 'editor.key.organization.label 1189 | { type$ "manual" = 1190 | 'author.key.organization.label 1191 | 'author.key.label 1192 | if$ 1193 | } 1194 | if$ 1195 | } 1196 | if$ 1197 | 'short.list := 1198 | } 1199 | 1200 | FUNCTION {calc.label} 1201 | { calc.short.authors 1202 | short.list 1203 | "(" 1204 | * 1205 | year duplicate$ empty$ 1206 | short.list key field.or.null = or 1207 | { pop$ "" } 1208 | 'skip$ 1209 | if$ 1210 | * 1211 | 'label := 1212 | } 1213 | 1214 | FUNCTION {sort.format.names} 1215 | { 's := 1216 | #1 'nameptr := 1217 | "" 1218 | s num.names$ 'numnames := 1219 | numnames 'namesleft := 1220 | { namesleft #0 > } 1221 | { 1222 | s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't := 1223 | nameptr #1 > 1224 | { 1225 | " " * 1226 | namesleft #1 = t "others" = and 1227 | { "zzzzz" * } 1228 | { numnames #2 > nameptr #2 = and 1229 | { "zz" * year field.or.null * " " * } 1230 | 'skip$ 1231 | if$ 1232 | t sortify * 1233 | } 1234 | if$ 1235 | } 1236 | { t sortify * } 1237 | if$ 1238 | nameptr #1 + 'nameptr := 1239 | namesleft #1 - 'namesleft := 1240 | } 1241 | while$ 1242 | } 1243 | 1244 | FUNCTION {sort.format.title} 1245 | { 't := 1246 | "A " #2 1247 | "An " #3 1248 | "The " #4 t chop.word 1249 | chop.word 1250 | chop.word 1251 | sortify 1252 | #1 global.max$ substring$ 1253 | } 1254 | 1255 | FUNCTION {author.sort} 1256 | { author empty$ 1257 | { key empty$ 1258 | { "to sort, need author or key in " cite$ * warning$ 1259 | "" 1260 | } 1261 | { key sortify } 1262 | if$ 1263 | } 1264 | { author sort.format.names } 1265 | if$ 1266 | } 1267 | 1268 | FUNCTION {author.editor.sort} 1269 | { author empty$ 1270 | { editor empty$ 1271 | { key empty$ 1272 | { "to sort, need author, editor, or key in " cite$ * warning$ 1273 | "" 1274 | } 1275 | { key sortify } 1276 | if$ 1277 | } 1278 | { editor sort.format.names } 1279 | if$ 1280 | } 1281 | { author sort.format.names } 1282 | if$ 1283 | } 1284 | 1285 | FUNCTION {author.organization.sort} 1286 | { author empty$ 1287 | { organization empty$ 1288 | { key empty$ 1289 | { "to sort, need author, organization, or key in " cite$ * warning$ 1290 | "" 1291 | } 1292 | { key sortify } 1293 | if$ 1294 | } 1295 | { "The " #4 organization chop.word sortify } 1296 | if$ 1297 | } 1298 | { author sort.format.names } 1299 | if$ 1300 | } 1301 | 1302 | FUNCTION {editor.organization.sort} 1303 | { editor empty$ 1304 | { organization empty$ 1305 | { key empty$ 1306 | { "to sort, need editor, organization, or key in " cite$ * warning$ 1307 | "" 1308 | } 1309 | { key sortify } 1310 | if$ 1311 | } 1312 | { "The " #4 organization chop.word sortify } 1313 | if$ 1314 | } 1315 | { editor sort.format.names } 1316 | if$ 1317 | } 1318 | 1319 | 1320 | FUNCTION {presort} 1321 | { calc.label 1322 | label sortify 1323 | " " 1324 | * 1325 | type$ "book" = 1326 | type$ "inbook" = 1327 | or 1328 | 'author.editor.sort 1329 | { type$ "proceedings" = 1330 | 'editor.organization.sort 1331 | { type$ "manual" = 1332 | 'author.organization.sort 1333 | 'author.sort 1334 | if$ 1335 | } 1336 | if$ 1337 | } 1338 | if$ 1339 | " " 1340 | * 1341 | year field.or.null sortify 1342 | * 1343 | " " 1344 | * 1345 | cite$ 1346 | * 1347 | #1 entry.max$ substring$ 1348 | 'sort.label := 1349 | sort.label * 1350 | #1 entry.max$ substring$ 1351 | 'sort.key$ := 1352 | } 1353 | 1354 | ITERATE {presort} 1355 | 1356 | SORT 1357 | 1358 | STRINGS { longest.label last.label next.extra } 1359 | 1360 | INTEGERS { longest.label.width last.extra.num number.label } 1361 | 1362 | FUNCTION {initialize.longest.label} 1363 | { "" 'longest.label := 1364 | #0 int.to.chr$ 'last.label := 1365 | "" 'next.extra := 1366 | #0 'longest.label.width := 1367 | #0 'last.extra.num := 1368 | #0 'number.label := 1369 | } 1370 | 1371 | FUNCTION {forward.pass} 1372 | { last.label label = 1373 | { last.extra.num #1 + 'last.extra.num := 1374 | last.extra.num int.to.chr$ 'extra.label := 1375 | } 1376 | { "a" chr.to.int$ 'last.extra.num := 1377 | "" 'extra.label := 1378 | label 'last.label := 1379 | } 1380 | if$ 1381 | number.label #1 + 'number.label := 1382 | } 1383 | 1384 | FUNCTION {reverse.pass} 1385 | { next.extra "b" = 1386 | { "a" 'extra.label := } 1387 | 'skip$ 1388 | if$ 1389 | extra.label 'next.extra := 1390 | extra.label 1391 | duplicate$ empty$ 1392 | 'skip$ 1393 | { "{\natexlab{" swap$ * "}}" * } 1394 | if$ 1395 | 'extra.label := 1396 | label extra.label * 'label := 1397 | } 1398 | 1399 | EXECUTE {initialize.longest.label} 1400 | 1401 | ITERATE {forward.pass} 1402 | 1403 | REVERSE {reverse.pass} 1404 | 1405 | FUNCTION {bib.sort.order} 1406 | { sort.label 'sort.key$ := 1407 | } 1408 | 1409 | ITERATE {bib.sort.order} 1410 | 1411 | SORT 1412 | 1413 | FUNCTION {begin.bib} 1414 | { preamble$ empty$ 1415 | 'skip$ 1416 | { preamble$ write$ newline$ } 1417 | if$ 1418 | "\begin{thebibliography}{" number.label int.to.str$ * "}" * 1419 | write$ newline$ 1420 | "\providecommand{\natexlab}[1]{#1}" 1421 | write$ newline$ 1422 | "\providecommand{\url}[1]{\texttt{#1}}" 1423 | write$ newline$ 1424 | "\expandafter\ifx\csname urlstyle\endcsname\relax" 1425 | write$ newline$ 1426 | " \providecommand{\doi}[1]{doi: #1}\else" 1427 | write$ newline$ 1428 | " \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi" 1429 | write$ newline$ 1430 | } 1431 | 1432 | EXECUTE {begin.bib} 1433 | 1434 | EXECUTE {init.state.consts} 1435 | 1436 | ITERATE {call.type$} 1437 | 1438 | FUNCTION {end.bib} 1439 | { newline$ 1440 | "\end{thebibliography}" write$ newline$ 1441 | } 1442 | 1443 | EXECUTE {end.bib} 1444 | -------------------------------------------------------------------------------- /report/paper/icml2018_ift6269.sty: -------------------------------------------------------------------------------- 1 | % File: icml2018_ift6269.sty (LaTeX style file for ICML-2018, version of 2017-10-28) 2 | 3 | % This file contains the LaTeX formatting parameters for a two-column 4 | % conference proceedings that is 8.5 inches wide by 11 inches high. 5 | % 6 | % Modified by Iain Murray 2018: changed years, location. Remove affiliation notes when anonymous. 7 | % Move times dependency from .tex to .sty so fewer people delete it. 8 | % 9 | % Modified by Daniel Roy 2017: changed byline to use footnotes for affiliations, and removed emails 10 | % 11 | % Modified by Percy Liang 12/2/2013: changed the year, location from the previous template for ICML 2014 12 | 13 | % Modified by Fei Sha 9/2/2013: changed the year, location form the previous template for ICML 2013 14 | % 15 | % Modified by Fei Sha 4/24/2013: (1) remove the extra whitespace after the first author's email address (in %the camera-ready version) (2) change the Proceeding ... of ICML 2010 to 2014 so PDF's metadata will show up % correctly 16 | % 17 | % Modified by Sanjoy Dasgupta, 2013: changed years, location 18 | % 19 | % Modified by Francesco Figari, 2012: changed years, location 20 | % 21 | % Modified by Christoph Sawade and Tobias Scheffer, 2011: added line 22 | % numbers, changed years 23 | % 24 | % Modified by Hal Daume III, 2010: changed years, added hyperlinks 25 | % 26 | % Modified by Kiri Wagstaff, 2009: changed years 27 | % 28 | % Modified by Sam Roweis, 2008: changed years 29 | % 30 | % Modified by Ricardo Silva, 2007: update of the ifpdf verification 31 | % 32 | % Modified by Prasad Tadepalli and Andrew Moore, merely changing years. 33 | % 34 | % Modified by Kristian Kersting, 2005, based on Jennifer Dy's 2004 version 35 | % - running title. If the original title is to long or is breaking a line, 36 | % use \icmltitlerunning{...} in the preamble to supply a shorter form. 37 | % Added fancyhdr package to get a running head. 38 | % - Updated to store the page size because pdflatex does compile the 39 | % page size into the pdf. 40 | % 41 | % Hacked by Terran Lane, 2003: 42 | % - Updated to use LaTeX2e style file conventions (ProvidesPackage, 43 | % etc.) 44 | % - Added an ``appearing in'' block at the base of the first column 45 | % (thus keeping the ``appearing in'' note out of the bottom margin 46 | % where the printer should strip in the page numbers). 47 | % - Added a package option [accepted] that selects between the ``Under 48 | % review'' notice (default, when no option is specified) and the 49 | % ``Appearing in'' notice (for use when the paper has been accepted 50 | % and will appear). 51 | % 52 | % Originally created as: ml2k.sty (LaTeX style file for ICML-2000) 53 | % by P. Langley (12/23/99) 54 | 55 | %%%%%%%%%%%%%%%%%%%% 56 | %% This version of the style file supports both a ``review'' version 57 | %% and a ``final/accepted'' version. The difference is only in the 58 | %% text that appears in the note at the bottom of the first column of 59 | %% the first page. The default behavior is to print a note to the 60 | %% effect that the paper is under review and don't distribute it. The 61 | %% final/accepted version prints an ``Appearing in'' note. To get the 62 | %% latter behavior, in the calling file change the ``usepackage'' line 63 | %% from: 64 | %% \usepackage{icml2018} 65 | %% to 66 | %% \usepackage[accepted]{icml2018} 67 | %%%%%%%%%%%%%%%%%%%% 68 | 69 | \NeedsTeXFormat{LaTeX2e} 70 | \ProvidesPackage{icml2018_ift6269}[2018/01/01 v2.0 ICML Conference Style File] 71 | 72 | % Before 2018, \usepackage{times} was in the example TeX, but inevitably 73 | % not everybody did it. 74 | \RequirePackage{times} 75 | 76 | % Use fancyhdr package 77 | \RequirePackage{fancyhdr} 78 | \RequirePackage{color} 79 | \RequirePackage{algorithm} 80 | \RequirePackage{algorithmic} 81 | \RequirePackage{natbib} 82 | \RequirePackage{eso-pic} % used by \AddToShipoutPicture 83 | \RequirePackage{forloop} 84 | 85 | %%%%%%%% Options 86 | \DeclareOption{accepted}{% 87 | \renewcommand{\Notice@String}{\ICML@appearing} 88 | \gdef\isaccepted{1} 89 | } 90 | \DeclareOption{nohyperref}{% 91 | \gdef\nohyperref{1} 92 | } 93 | 94 | \ifdefined\nohyperref\else\ifdefined\hypersetup 95 | \definecolor{mydarkblue}{rgb}{0,0.08,0.45} 96 | \hypersetup{ % 97 | pdftitle={}, 98 | pdfauthor={}, 99 | pdfsubject={IFT 6269 project}, 100 | pdfkeywords={}, 101 | pdfborder=0 0 0, 102 | pdfpagemode=UseNone, 103 | colorlinks=true, 104 | linkcolor=mydarkblue, 105 | citecolor=mydarkblue, 106 | filecolor=mydarkblue, 107 | urlcolor=mydarkblue, 108 | pdfview=FitH} 109 | 110 | \ifdefined\isaccepted \else 111 | \hypersetup{pdfauthor={Anonymous Submission}} 112 | \fi 113 | \fi\fi 114 | 115 | %%%%%%%%%%%%%%%%%%%% 116 | % This string is printed at the bottom of the page for the 117 | % final/accepted version of the ``appearing in'' note. Modify it to 118 | % change that text. 119 | %%%%%%%%%%%%%%%%%%%% 120 | \newcommand{\ICML@appearing}{\textit{IFT 6269 project report - Universit\'{e} de Montr\'{e}al}} 121 | 122 | %%%%%%%%%%%%%%%%%%%% 123 | % This string is printed at the bottom of the page for the draft/under 124 | % review version of the ``appearing in'' note. Modify it to change 125 | % that text. 126 | %%%%%%%%%%%%%%%%%%%% 127 | \newcommand{\Notice@String}{Preliminary work. Under review by the 128 | International Conference on Machine Learning (ICML)\@. Do not distribute.} 129 | 130 | % Cause the declared options to actually be parsed and activated 131 | \ProcessOptions\relax 132 | 133 | % Uncomment the following for debugging. It will cause LaTeX to dump 134 | % the version of the ``appearing in'' string that will actually appear 135 | % in the document. 136 | %\typeout{>> Notice string='\Notice@String'} 137 | 138 | % Change citation commands to be more like old ICML styles 139 | \newcommand{\yrcite}[1]{\citeyearpar{#1}} 140 | \renewcommand{\cite}[1]{\citep{#1}} 141 | 142 | 143 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 144 | % to ensure the letter format is used. pdflatex does compile the 145 | % page size into the pdf. This is done using \pdfpagewidth and 146 | % \pdfpageheight. As Latex does not know this directives, we first 147 | % check whether pdflatex or latex is used. 148 | % 149 | % Kristian Kersting 2005 150 | % 151 | % in order to account for the more recent use of pdfetex as the default 152 | % compiler, I have changed the pdf verification. 153 | % 154 | % Ricardo Silva 2007 155 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 156 | 157 | \paperwidth=8.5in 158 | \paperheight=11in 159 | 160 | % old PDFLaTex verification, circa 2005 161 | % 162 | %\newif\ifpdf\ifx\pdfoutput\undefined 163 | % \pdffalse % we are not running PDFLaTeX 164 | %\else 165 | % \pdfoutput=1 % we are running PDFLaTeX 166 | % \pdftrue 167 | %\fi 168 | 169 | \newif\ifpdf %adapted from ifpdf.sty 170 | \ifx\pdfoutput\undefined 171 | \else 172 | \ifx\pdfoutput\relax 173 | \else 174 | \ifcase\pdfoutput 175 | \else 176 | \pdftrue 177 | \fi 178 | \fi 179 | \fi 180 | 181 | \ifpdf 182 | % \pdfpagewidth=\paperwidth 183 | % \pdfpageheight=\paperheight 184 | \setlength{\pdfpagewidth}{8.5in} 185 | \setlength{\pdfpageheight}{11in} 186 | \fi 187 | 188 | % Physical page layout 189 | 190 | \evensidemargin -0.23in 191 | \oddsidemargin -0.23in 192 | \setlength\textheight{9.0in} 193 | \setlength\textwidth{6.75in} 194 | \setlength\columnsep{0.25in} 195 | \setlength\headheight{10pt} 196 | \setlength\headsep{10pt} 197 | \addtolength{\topmargin}{-20pt} 198 | \addtolength{\topmargin}{-0.29in} 199 | 200 | % Historically many authors tried to include packages like geometry or fullpage, 201 | % which change the page layout. It either makes the proceedings inconsistent, or 202 | % wastes organizers' time chasing authors. So let's nip these problems in the 203 | % bud here. -- Iain Murray 2018. 204 | %\RequirePackage{printlen} 205 | \AtBeginDocument{% 206 | % To get the numbers below, include printlen package above and see lengths like this: 207 | %\printlength\oddsidemargin\\ 208 | %\printlength\headheight\\ 209 | %\printlength\textheight\\ 210 | %\printlength\marginparsep\\ 211 | %\printlength\footskip\\ 212 | %\printlength\hoffset\\ 213 | %\printlength\paperwidth\\ 214 | %\printlength\topmargin\\ 215 | %\printlength\headsep\\ 216 | %\printlength\textwidth\\ 217 | %\printlength\marginparwidth\\ 218 | %\printlength\marginparpush\\ 219 | %\printlength\voffset\\ 220 | %\printlength\paperheight\\ 221 | % 222 | \newif\ifmarginsmessedwith 223 | \marginsmessedwithfalse 224 | \ifdim\oddsidemargin=-16.62178pt \else oddsidemargin has been altered.\\ \marginsmessedwithtrue\fi 225 | \ifdim\headheight=10.0pt \else headheight has been altered.\\ \marginsmessedwithtrue\fi 226 | \ifdim\textheight=650.43pt \else textheight has been altered.\\ \marginsmessedwithtrue\fi 227 | \ifdim\marginparsep=11.0pt \else marginparsep has been altered.\\ \marginsmessedwithtrue\fi 228 | \ifdim\footskip=0.0pt \else footskip has been altered.\\ \marginsmessedwithtrue\fi 229 | \ifdim\hoffset=0.0pt \else hoffset has been altered.\\ \marginsmessedwithtrue\fi 230 | \ifdim\paperwidth=614.295pt \else paperwidth has been altered.\\ \marginsmessedwithtrue\fi 231 | \ifdim\topmargin=-24.95781pt \else topmargin has been altered.\\ \marginsmessedwithtrue\fi 232 | \ifdim\headsep=10.0pt \else headsep has been altered.\\ \marginsmessedwithtrue\fi 233 | \ifdim\textwidth=487.8225pt \else textwidth has been altered.\\ \marginsmessedwithtrue\fi 234 | \ifdim\marginparwidth=65.0pt \else marginparwidth has been altered.\\ \marginsmessedwithtrue\fi 235 | \ifdim\marginparpush=5.0pt \else marginparpush has been altered.\\ \marginsmessedwithtrue\fi 236 | \ifdim\voffset=0.0pt \else voffset has been altered.\\ \marginsmessedwithtrue\fi 237 | \ifdim\paperheight=794.96999pt \else paperheight has been altered.\\ \marginsmessedwithtrue\fi 238 | \ifmarginsmessedwith 239 | 240 | \textbf{\large \em The page layout violates the ICML style.} 241 | 242 | Please do not change the page layout, or include packages like geometry, 243 | savetrees, or fullpage, which change it for you. 244 | 245 | We're not able to reliably undo arbitrary changes to the style. Please remove 246 | the offending package(s), or layout-changing commands and try again. 247 | 248 | \fi} 249 | 250 | 251 | %% The following is adapted from code in the acmconf.sty conference 252 | %% style file. The constants in it are somewhat magical, and appear 253 | %% to work well with the two-column format on US letter paper that 254 | %% ICML uses, but will break if you change that layout, or if you use 255 | %% a longer block of text for the copyright notice string. Fiddle with 256 | %% them if necessary to get the block to fit/look right. 257 | %% 258 | %% -- Terran Lane, 2003 259 | %% 260 | %% The following comments are included verbatim from acmconf.sty: 261 | %% 262 | %%% This section (written by KBT) handles the 1" box in the lower left 263 | %%% corner of the left column of the first page by creating a picture, 264 | %%% and inserting the predefined string at the bottom (with a negative 265 | %%% displacement to offset the space allocated for a non-existent 266 | %%% caption). 267 | %%% 268 | \def\ftype@copyrightbox{8} 269 | \def\@copyrightspace{ 270 | % Create a float object positioned at the bottom of the column. Note 271 | % that because of the mystical nature of floats, this has to be called 272 | % before the first column is populated with text (e.g., from the title 273 | % or abstract blocks). Otherwise, the text will force the float to 274 | % the next column. -- TDRL. 275 | \@float{copyrightbox}[b] 276 | \begin{center} 277 | \setlength{\unitlength}{1pc} 278 | \begin{picture}(20,1.5) 279 | % Create a line separating the main text from the note block. 280 | % 4.818pc==0.8in. 281 | \put(0,2.5){\line(1,0){4.818}} 282 | % Insert the text string itself. Note that the string has to be 283 | % enclosed in a parbox -- the \put call needs a box object to 284 | % position. Without the parbox, the text gets splattered across the 285 | % bottom of the page semi-randomly. The 19.75pc distance seems to be 286 | % the width of the column, though I can't find an appropriate distance 287 | % variable to substitute here. -- TDRL. 288 | \put(0,0){\parbox[b]{19.75pc}{\small \Notice@String}} 289 | \end{picture} 290 | \end{center} 291 | \end@float} 292 | 293 | % Note: A few Latex versions need the next line instead of the former. 294 | % \addtolength{\topmargin}{0.3in} 295 | % \setlength\footheight{0pt} 296 | \setlength\footskip{0pt} 297 | %\pagestyle{empty} 298 | \flushbottom 299 | \sloppy 300 | 301 | % Clear out the addcontentsline command 302 | \def\addcontentsline#1#2#3{} 303 | 304 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 305 | %%% commands for formatting paper title, author names, and addresses. 306 | 307 | %%start%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 308 | %%%%%% title as running head -- Kristian Kersting 2005 %%%%%%%%%%%%% 309 | 310 | 311 | %\makeatletter 312 | %\newtoks\mytoksa 313 | %\newtoks\mytoksb 314 | %\newcommand\addtomylist[2]{% 315 | % \mytoksa\expandafter{#1}% 316 | % \mytoksb{#2}% 317 | % \edef#1{\the\mytoksa\the\mytoksb}% 318 | %} 319 | %\makeatother 320 | 321 | % box to check the size of the running head 322 | \newbox\titrun 323 | 324 | % general page style 325 | \pagestyle{fancy} 326 | \fancyhf{} 327 | \fancyhead{} 328 | \fancyfoot{} 329 | % set the width of the head rule to 1 point 330 | \renewcommand{\headrulewidth}{1pt} 331 | 332 | % definition to set the head as running head in the preamble 333 | \def\icmltitlerunning#1{\gdef\@icmltitlerunning{#1}} 334 | 335 | % main definition adapting \icmltitle from 2004 336 | \long\def\icmltitle#1{% 337 | 338 | %check whether @icmltitlerunning exists 339 | % if not \icmltitle is used as running head 340 | \ifx\undefined\@icmltitlerunning% 341 | \gdef\@icmltitlerunning{#1} 342 | \fi 343 | 344 | %add it to pdf information 345 | \ifdefined\nohyperref\else\ifdefined\hypersetup 346 | \hypersetup{pdftitle={#1}} 347 | \fi\fi 348 | 349 | %get the dimension of the running title 350 | \global\setbox\titrun=\vbox{\small\bf\@icmltitlerunning} 351 | 352 | % error flag 353 | \gdef\@runningtitleerror{0} 354 | 355 | % running title too long 356 | \ifdim\wd\titrun>\textwidth% 357 | {\gdef\@runningtitleerror{1}}% 358 | % running title breaks a line 359 | \else\ifdim\ht\titrun>6.25pt 360 | {\gdef\@runningtitleerror{2}}% 361 | \fi 362 | \fi 363 | 364 | % if there is somthing wrong with the running title 365 | \ifnum\@runningtitleerror>0 366 | \typeout{}% 367 | \typeout{}% 368 | \typeout{*******************************************************}% 369 | \typeout{Title exceeds size limitations for running head.}% 370 | \typeout{Please supply a shorter form for the running head} 371 | \typeout{with \string\icmltitlerunning{...}\space prior to \string\begin{document}}% 372 | \typeout{*******************************************************}% 373 | \typeout{}% 374 | \typeout{}% 375 | % set default running title 376 | \chead{\small\bf Title Suppressed Due to Excessive Size}% 377 | \else 378 | % 'everything' fine, set provided running title 379 | \chead{\small\bf\@icmltitlerunning}% 380 | \fi 381 | 382 | % no running title on the first page of the paper 383 | \thispagestyle{empty} 384 | 385 | %%%%%%%%%%%%%%%%%%%% Kristian Kersting %%%%%%%%%%%%%%%%%%%%%%%%% 386 | %end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 387 | 388 | {\center\baselineskip 18pt 389 | \toptitlebar{\Large\bf #1}\bottomtitlebar} 390 | } 391 | 392 | 393 | \gdef\icmlfullauthorlist{} 394 | \newcommand\addstringtofullauthorlist{\g@addto@macro\icmlfullauthorlist} 395 | \newcommand\addtofullauthorlist[1]{% 396 | \ifdefined\icmlanyauthors% 397 | \addstringtofullauthorlist{, #1}% 398 | \else% 399 | \addstringtofullauthorlist{#1}% 400 | \gdef\icmlanyauthors{1}% 401 | \fi% 402 | \ifdefined\nohyperref\else\ifdefined\hypersetup% 403 | \hypersetup{pdfauthor=\icmlfullauthorlist}% 404 | \fi\fi} 405 | 406 | 407 | \def\toptitlebar{\hrule height1pt \vskip .25in} 408 | \def\bottomtitlebar{\vskip .22in \hrule height1pt \vskip .3in} 409 | 410 | \newenvironment{icmlauthorlist}{% 411 | \setlength\topsep{0pt} 412 | \setlength\parskip{0pt} 413 | \begin{center} 414 | }{% 415 | \end{center} 416 | } 417 | 418 | \newcounter{@affiliationcounter} 419 | \newcommand{\@pa}[1]{% 420 | % ``#1'' 421 | \ifcsname the@affil#1\endcsname 422 | % do nothing 423 | \else 424 | \ifcsname @icmlsymbol#1\endcsname 425 | % nothing 426 | \else 427 | \stepcounter{@affiliationcounter}% 428 | \newcounter{@affil#1}% 429 | \setcounter{@affil#1}{\value{@affiliationcounter}}% 430 | \fi 431 | \fi% 432 | \ifcsname @icmlsymbol#1\endcsname 433 | \textsuperscript{\csname @icmlsymbol#1\endcsname\,}% 434 | \else 435 | %\expandafter\footnotemark[\arabic{@affil#1}\,]% 436 | \textsuperscript{\arabic{@affil#1}\,}% 437 | \fi 438 | } 439 | 440 | %\newcommand{\icmlauthor}[2]{% 441 | %\addtofullauthorlist{#1}% 442 | %#1\@for\theaffil:=#2\do{\pa{\theaffil}}% 443 | %} 444 | \newcommand{\icmlauthor}[2]{% 445 | \ifdefined\isaccepted 446 | \mbox{\bf #1}\,\@for\theaffil:=#2\do{\@pa{\theaffil}} \addtofullauthorlist{#1}% 447 | \else 448 | \ifdefined\@icmlfirsttime 449 | \else 450 | \gdef\@icmlfirsttime{1} 451 | \mbox{\bf Anonymous Authors}\@pa{@anon} \addtofullauthorlist{Anonymous Authors} 452 | \fi 453 | \fi 454 | } 455 | 456 | \newcommand{\icmlsetsymbol}[2]{% 457 | \expandafter\gdef\csname @icmlsymbol#1\endcsname{#2} 458 | } 459 | 460 | 461 | \newcommand{\icmlaffiliation}[2]{% 462 | \ifdefined\isaccepted 463 | \ifcsname the@affil#1\endcsname 464 | \expandafter\gdef\csname @affilname\csname the@affil#1\endcsname\endcsname{#2}% 465 | \else 466 | {\bf AUTHORERR: Error in use of \textbackslash{}icmlaffiliation command. Label ``#1'' not mentioned in some \textbackslash{}icmlauthor\{author name\}\{labels here\} command beforehand. } 467 | \typeout{}% 468 | \typeout{}% 469 | \typeout{*******************************************************}% 470 | \typeout{Affiliation label undefined. }% 471 | \typeout{Make sure \string\icmlaffiliation\space follows } 472 | \typeout{all of \string\icmlauthor\space commands}% 473 | \typeout{*******************************************************}% 474 | \typeout{}% 475 | \typeout{}% 476 | \fi 477 | \else % \isaccepted 478 | % can be called multiple times... it's idempotent 479 | \expandafter\gdef\csname @affilname1\endcsname{Anonymous Institution, Anonymous City, Anonymous Region, Anonymous Country} 480 | \fi 481 | } 482 | 483 | \newcommand{\icmlcorrespondingauthor}[2]{ 484 | \ifdefined\isaccepted 485 | \ifdefined\icmlcorrespondingauthor@text 486 | \g@addto@macro\icmlcorrespondingauthor@text{, #1 \textless{}#2\textgreater{}} 487 | \else 488 | \gdef\icmlcorrespondingauthor@text{#1 \textless{}#2\textgreater{}} 489 | \fi 490 | \else 491 | \gdef\icmlcorrespondingauthor@text{Anonymous Author \textless{}anon.email@domain.com\textgreater{}} 492 | \fi 493 | } 494 | 495 | \newcommand{\icmlEqualContribution}{\textsuperscript{*}Equal contribution } 496 | 497 | \newcounter{@affilnum} 498 | \newcommand{\printAffiliationsAndNotice}[1]{% 499 | \stepcounter{@affiliationcounter}% 500 | {\let\thefootnote\relax\footnotetext{\hspace*{-\footnotesep}\ifdefined\isaccepted #1\fi% 501 | \forloop{@affilnum}{1}{\value{@affilnum} < \value{@affiliationcounter}}{ 502 | \textsuperscript{\arabic{@affilnum}}\ifcsname @affilname\the@affilnum\endcsname% 503 | \csname @affilname\the@affilnum\endcsname% 504 | \else 505 | {\bf AUTHORERR: Missing \textbackslash{}icmlaffiliation.} 506 | \fi 507 | }. 508 | \ifdefined\icmlcorrespondingauthor@text 509 | Correspondence to: \icmlcorrespondingauthor@text. 510 | \else 511 | {\bf AUTHORERR: Missing \textbackslash{}icmlcorrespondingauthor.} 512 | \fi 513 | 514 | \ \\ 515 | \Notice@String 516 | } 517 | } 518 | } 519 | 520 | %\makeatother 521 | 522 | \long\def\icmladdress#1{% 523 | {\bf The \textbackslash{}icmladdress command is no longer used. See the example\_paper PDF .tex for usage of \textbackslash{}icmlauther and \textbackslash{}icmlaffiliation.} 524 | } 525 | 526 | %% keywords as first class citizens 527 | \def\icmlkeywords#1{% 528 | % \ifdefined\isaccepted \else 529 | % \par {\bf Keywords:} #1% 530 | % \fi 531 | % \ifdefined\nohyperref\else\ifdefined\hypersetup 532 | % \hypersetup{pdfkeywords={#1}} 533 | % \fi\fi 534 | % \ifdefined\isaccepted \else 535 | % \par {\bf Keywords:} #1% 536 | % \fi 537 | \ifdefined\nohyperref\else\ifdefined\hypersetup 538 | \hypersetup{pdfkeywords={#1}} 539 | \fi\fi 540 | } 541 | 542 | % modification to natbib citations 543 | \setcitestyle{authoryear,round,citesep={;},aysep={,},yysep={;}} 544 | 545 | % Redefinition of the abstract environment. 546 | \renewenvironment{abstract} 547 | {% 548 | % Insert the ``appearing in'' copyright notice. 549 | %\@copyrightspace 550 | \centerline{\large\bf Abstract} 551 | \vspace{-0.12in}\begin{quote}} 552 | {\par\end{quote}\vskip 0.12in} 553 | 554 | % numbered section headings with different treatment of numbers 555 | 556 | \def\@startsection#1#2#3#4#5#6{\if@noskipsec \leavevmode \fi 557 | \par \@tempskipa #4\relax 558 | \@afterindenttrue 559 | % Altered the following line to indent a section's first paragraph. 560 | % \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse\fi 561 | \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \fi 562 | \if@nobreak \everypar{}\else 563 | \addpenalty{\@secpenalty}\addvspace{\@tempskipa}\fi \@ifstar 564 | {\@ssect{#3}{#4}{#5}{#6}}{\@dblarg{\@sict{#1}{#2}{#3}{#4}{#5}{#6}}}} 565 | 566 | \def\@sict#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth 567 | \def\@svsec{}\else 568 | \refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname}\fi 569 | \@tempskipa #5\relax 570 | \ifdim \@tempskipa>\z@ 571 | \begingroup #6\relax 572 | \@hangfrom{\hskip #3\relax\@svsec.~}{\interlinepenalty \@M #8\par} 573 | \endgroup 574 | \csname #1mark\endcsname{#7}\addcontentsline 575 | {toc}{#1}{\ifnum #2>\c@secnumdepth \else 576 | \protect\numberline{\csname the#1\endcsname}\fi 577 | #7}\else 578 | \def\@svsechd{#6\hskip #3\@svsec #8\csname #1mark\endcsname 579 | {#7}\addcontentsline 580 | {toc}{#1}{\ifnum #2>\c@secnumdepth \else 581 | \protect\numberline{\csname the#1\endcsname}\fi 582 | #7}}\fi 583 | \@xsect{#5}} 584 | 585 | \def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth 586 | \def\@svsec{}\else 587 | \refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname\hskip 0.4em }\fi 588 | \@tempskipa #5\relax 589 | \ifdim \@tempskipa>\z@ 590 | \begingroup #6\relax 591 | \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par} 592 | \endgroup 593 | \csname #1mark\endcsname{#7}\addcontentsline 594 | {toc}{#1}{\ifnum #2>\c@secnumdepth \else 595 | \protect\numberline{\csname the#1\endcsname}\fi 596 | #7}\else 597 | \def\@svsechd{#6\hskip #3\@svsec #8\csname #1mark\endcsname 598 | {#7}\addcontentsline 599 | {toc}{#1}{\ifnum #2>\c@secnumdepth \else 600 | \protect\numberline{\csname the#1\endcsname}\fi 601 | #7}}\fi 602 | \@xsect{#5}} 603 | 604 | % section headings with less space above and below them 605 | \def\thesection {\arabic{section}} 606 | \def\thesubsection {\thesection.\arabic{subsection}} 607 | \def\section{\@startsection{section}{1}{\z@}{-0.12in}{0.02in} 608 | {\large\bf\raggedright}} 609 | \def\subsection{\@startsection{subsection}{2}{\z@}{-0.10in}{0.01in} 610 | {\normalsize\bf\raggedright}} 611 | \def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-0.08in}{0.01in} 612 | {\normalsize\sc\raggedright}} 613 | \def\paragraph{\@startsection{paragraph}{4}{\z@}{1.5ex plus 614 | 0.5ex minus .2ex}{-1em}{\normalsize\bf}} 615 | \def\subparagraph{\@startsection{subparagraph}{5}{\z@}{1.5ex plus 616 | 0.5ex minus .2ex}{-1em}{\normalsize\bf}} 617 | 618 | % Footnotes 619 | \footnotesep 6.65pt % 620 | \skip\footins 9pt 621 | \def\footnoterule{\kern-3pt \hrule width 0.8in \kern 2.6pt } 622 | \setcounter{footnote}{0} 623 | 624 | % Lists and paragraphs 625 | \parindent 0pt 626 | \topsep 4pt plus 1pt minus 2pt 627 | \partopsep 1pt plus 0.5pt minus 0.5pt 628 | \itemsep 2pt plus 1pt minus 0.5pt 629 | \parsep 2pt plus 1pt minus 0.5pt 630 | \parskip 6pt 631 | 632 | \leftmargin 2em \leftmargini\leftmargin \leftmarginii 2em 633 | \leftmarginiii 1.5em \leftmarginiv 1.0em \leftmarginv .5em 634 | \leftmarginvi .5em 635 | \labelwidth\leftmargini\advance\labelwidth-\labelsep \labelsep 5pt 636 | 637 | \def\@listi{\leftmargin\leftmargini} 638 | \def\@listii{\leftmargin\leftmarginii 639 | \labelwidth\leftmarginii\advance\labelwidth-\labelsep 640 | \topsep 2pt plus 1pt minus 0.5pt 641 | \parsep 1pt plus 0.5pt minus 0.5pt 642 | \itemsep \parsep} 643 | \def\@listiii{\leftmargin\leftmarginiii 644 | \labelwidth\leftmarginiii\advance\labelwidth-\labelsep 645 | \topsep 1pt plus 0.5pt minus 0.5pt 646 | \parsep \z@ \partopsep 0.5pt plus 0pt minus 0.5pt 647 | \itemsep \topsep} 648 | \def\@listiv{\leftmargin\leftmarginiv 649 | \labelwidth\leftmarginiv\advance\labelwidth-\labelsep} 650 | \def\@listv{\leftmargin\leftmarginv 651 | \labelwidth\leftmarginv\advance\labelwidth-\labelsep} 652 | \def\@listvi{\leftmargin\leftmarginvi 653 | \labelwidth\leftmarginvi\advance\labelwidth-\labelsep} 654 | 655 | \abovedisplayskip 7pt plus2pt minus5pt% 656 | \belowdisplayskip \abovedisplayskip 657 | \abovedisplayshortskip 0pt plus3pt% 658 | \belowdisplayshortskip 4pt plus3pt minus3pt% 659 | 660 | % Less leading in most fonts (due to the narrow columns) 661 | % The choices were between 1-pt and 1.5-pt leading 662 | \def\@normalsize{\@setsize\normalsize{11pt}\xpt\@xpt} 663 | \def\small{\@setsize\small{10pt}\ixpt\@ixpt} 664 | \def\footnotesize{\@setsize\footnotesize{10pt}\ixpt\@ixpt} 665 | \def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt} 666 | \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt} 667 | \def\large{\@setsize\large{14pt}\xiipt\@xiipt} 668 | \def\Large{\@setsize\Large{16pt}\xivpt\@xivpt} 669 | \def\LARGE{\@setsize\LARGE{20pt}\xviipt\@xviipt} 670 | \def\huge{\@setsize\huge{23pt}\xxpt\@xxpt} 671 | \def\Huge{\@setsize\Huge{28pt}\xxvpt\@xxvpt} 672 | 673 | % Revised formatting for figure captions and table titles. 674 | \newsavebox\newcaptionbox\newdimen\newcaptionboxwid 675 | 676 | \long\def\@makecaption#1#2{ 677 | \vskip 10pt 678 | \baselineskip 11pt 679 | \setbox\@tempboxa\hbox{#1. #2} 680 | \ifdim \wd\@tempboxa >\hsize 681 | \sbox{\newcaptionbox}{\small\sl #1.~} 682 | \newcaptionboxwid=\wd\newcaptionbox 683 | \usebox\newcaptionbox {\footnotesize #2} 684 | % \usebox\newcaptionbox {\small #2} 685 | \else 686 | \centerline{{\small\sl #1.} {\small #2}} 687 | \fi} 688 | 689 | \def\fnum@figure{Figure \thefigure} 690 | \def\fnum@table{Table \thetable} 691 | 692 | % Strut macros for skipping spaces above and below text in tables. 693 | \def\abovestrut#1{\rule[0in]{0in}{#1}\ignorespaces} 694 | \def\belowstrut#1{\rule[-#1]{0in}{#1}\ignorespaces} 695 | 696 | \def\abovespace{\abovestrut{0.20in}} 697 | \def\aroundspace{\abovestrut{0.20in}\belowstrut{0.10in}} 698 | \def\belowspace{\belowstrut{0.10in}} 699 | 700 | % Various personal itemization commands. 701 | \def\texitem#1{\par\noindent\hangindent 12pt 702 | \hbox to 12pt {\hss #1 ~}\ignorespaces} 703 | \def\icmlitem{\texitem{$\bullet$}} 704 | 705 | % To comment out multiple lines of text. 706 | \long\def\comment#1{} 707 | 708 | 709 | 710 | 711 | %% Line counter (not in final version). Adapted from NIPS style file by Christoph Sawade 712 | 713 | % Vertical Ruler 714 | % This code is, largely, from the CVPR 2010 conference style file 715 | % ----- define vruler 716 | \makeatletter 717 | \newbox\icmlrulerbox 718 | \newcount\icmlrulercount 719 | \newdimen\icmlruleroffset 720 | \newdimen\cv@lineheight 721 | \newdimen\cv@boxheight 722 | \newbox\cv@tmpbox 723 | \newcount\cv@refno 724 | \newcount\cv@tot 725 | % NUMBER with left flushed zeros \fillzeros[] 726 | \newcount\cv@tmpc@ \newcount\cv@tmpc 727 | \def\fillzeros[#1]#2{\cv@tmpc@=#2\relax\ifnum\cv@tmpc@<0\cv@tmpc@=-\cv@tmpc@\fi 728 | \cv@tmpc=1 % 729 | \loop\ifnum\cv@tmpc@<10 \else \divide\cv@tmpc@ by 10 \advance\cv@tmpc by 1 \fi 730 | \ifnum\cv@tmpc@=10\relax\cv@tmpc@=11\relax\fi \ifnum\cv@tmpc@>10 \repeat 731 | \ifnum#2<0\advance\cv@tmpc1\relax-\fi 732 | \loop\ifnum\cv@tmpc<#1\relax0\advance\cv@tmpc1\relax\fi \ifnum\cv@tmpc<#1 \repeat 733 | \cv@tmpc@=#2\relax\ifnum\cv@tmpc@<0\cv@tmpc@=-\cv@tmpc@\fi \relax\the\cv@tmpc@}% 734 | % \makevruler[][][][][] 735 | \def\makevruler[#1][#2][#3][#4][#5]{ 736 | \begingroup\offinterlineskip 737 | \textheight=#5\vbadness=10000\vfuzz=120ex\overfullrule=0pt% 738 | \global\setbox\icmlrulerbox=\vbox to \textheight{% 739 | { 740 | \parskip=0pt\hfuzz=150em\cv@boxheight=\textheight 741 | \cv@lineheight=#1\global\icmlrulercount=#2% 742 | \cv@tot\cv@boxheight\divide\cv@tot\cv@lineheight\advance\cv@tot2% 743 | \cv@refno1\vskip-\cv@lineheight\vskip1ex% 744 | \loop\setbox\cv@tmpbox=\hbox to0cm{ % side margin 745 | \hfil {\hfil\fillzeros[#4]\icmlrulercount} 746 | }% 747 | \ht\cv@tmpbox\cv@lineheight\dp\cv@tmpbox0pt\box\cv@tmpbox\break 748 | \advance\cv@refno1\global\advance\icmlrulercount#3\relax 749 | \ifnum\cv@refno<\cv@tot\repeat 750 | } 751 | } 752 | \endgroup 753 | }% 754 | \makeatother 755 | % ----- end of vruler 756 | 757 | 758 | % \makevruler[][][][][] 759 | \def\icmlruler#1{\makevruler[12pt][#1][1][3][\textheight]\usebox{\icmlrulerbox}} 760 | \AddToShipoutPicture{% 761 | \icmlruleroffset=\textheight 762 | \advance\icmlruleroffset by 5.2pt % top margin 763 | \color[rgb]{.7,.7,.7} 764 | \ifdefined\isaccepted \else 765 | \AtTextUpperLeft{% 766 | \put(\LenToUnit{-35pt},\LenToUnit{-\icmlruleroffset}){%left ruler 767 | \icmlruler{\icmlrulercount}} 768 | % \put(\LenToUnit{1.04\textwidth},\LenToUnit{-\icmlruleroffset}){%right ruler 769 | % \icmlruler{\icmlrulercount}} 770 | } 771 | \fi 772 | } 773 | \endinput 774 | -------------------------------------------------------------------------------- /report/paper/icml_numpapers.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/3rdCore/Research_Project_Template/e6a9c7d18e727b903f916fe9581b7715a9fcdb67/report/paper/icml_numpapers.pdf -------------------------------------------------------------------------------- /report/paper/images/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/3rdCore/Research_Project_Template/e6a9c7d18e727b903f916fe9581b7715a9fcdb67/report/paper/images/.gitkeep -------------------------------------------------------------------------------- /report/paper/main.aux: -------------------------------------------------------------------------------- 1 | \relax 2 | \providecommand\hyper@newdestlabel[2]{} 3 | \providecommand\HyField@AuxAddToFields[1]{} 4 | \providecommand\HyField@AuxAddToCoFields[2]{} 5 | \citation{Pearl_2009} 6 | \newlabel{subsec:background}{{1}{1}{}{section.1}{}} 7 | \citation{chevalley2024derivingcausalordersinglevariable} 8 | \citation{faria_differentiable_2022} 9 | \citation{brouillard2020differentiablecausaldiscoveryinterventional,lorch2022amortizedinferencecausalstructure} 10 | \newlabel{subsec:setting}{{2}{2}{}{section.2}{}} 11 | \newlabel{fig:DAG}{{1}{2}{Graphical model of the data-generation process augmented with the unobserved latent variables. $I_k$ represent the interventional regime and the $z_i \; i \in [1,N]$ are boolean variable that encode the state of each mechanism $p(X_i | \text {Pa}(X_i))$}{figure.1}{}} 12 | \citation{kingma2022autoencodingvariationalbayes} 13 | \citation{SCMVAE} 14 | \newlabel{subsec:Relevance}{{2.1}{3}{}{subsection.2.1}{}} 15 | \newlabel{subsec:Method}{{3}{3}{}{section.3}{}} 16 | \newlabel{fig:assumption}{{2}{3}{Illustration of the necessity of the assumption considered on the data-generation process. a). \textbf {Single Target / Uniq. Intervention}: The regime $\mathcal {I}_1$ can't be the observational regime $\mathcal {O}$ because this would break the interventional-Faithfulness assumption ($\mathcal {I}_2$ would then correspond to a intervention made on marginal $p(x_1)$ which should also alter the marginal of its descendent: $p(x_2)$, which is not what we observe). $\mathcal {I}_2$ can't be $\mathcal {O}$ because this would break the single target assumption (In $\mathcal {I}_1$, while the marginal $p(x_1)$ has changed, $p(x_2)$ remain not affected. For this to be possible is to have performed an intervention on $p(x_1)$ and one on $p(x_2|x_1)$ to cancel out the effect of the first one on $p(x_2)$). Therefore, the only possible observational regime is $\mathcal {I}_3$. b) \textbf {Multiple Target / Uniq. Intervention}: Here we add another regime $\mathcal {I}_4$ targeting both $p(x_1)$ and $p(x_2|x_1)$. In this case, the regimes become completely symmetric and the observational regime can't be identified. c) \textbf {Single Target / Non-Uniq. intervention}: Here we add another regime $\mathcal {I}_4$. In this case, $\mathcal I_1$ and $\mathcal {I}_4$ have symmetric role and the observational regime once again can't be identified}{figure.2}{}} 17 | \citation{CausalVAE} 18 | \citation{jang2017categoricalreparameterizationgumbelsoftmax} 19 | \newlabel{fig:architecture}{{3}{4}{Architecture of the variational Auto-Encoder. An encoder takes as input the data $x$ and outputs the parameters of the approximate posterior categorical distribution $q_\phi (z | x)$. The sampled discrete latent variables $z$ are then fed to the decoder that outputs the parameters of the likelihood distribution $p_\theta (x | z)$. During backpropagation, the discrete latents are approximated using the Gumbel-Softmax re-parametrization trick. For more details on the architecture of the likelyhood model $p_\theta (x | z)$, we refer to Figure \ref {fig:architecture_decoder}}{figure.3}{}} 20 | \newlabel{subsec:Experiments}{{4}{4}{}{section.4}{}} 21 | \citation{fu2019cyclicalannealingschedulesimple} 22 | \newlabel{fig:architecture_decoder}{{4}{5}{Architecture of the likelihood model $p_\theta (x | z)$. Each mechanism $f_i$ is modeled as a gaussian distribution with mean $\mu _\theta (x_i, \text {Pa}(X_i), z_i)$ and unit variance. The mean of the input sample is reconstructed autoregressively following the topological order of the graph $\mathcal {G}$}{figure.4}{}} 23 | \newlabel{subsec:modeltrainingdetails}{{4.2}{5}{}{subsection.4.2}{}} 24 | \bibdata{references} 25 | \bibcite{brouillard2020differentiablecausaldiscoveryinterventional}{{1}{2020}{{Brouillard et~al.}}{{Brouillard, Lachapelle, Lacoste, Lacoste-Julien, and Drouin}}} 26 | \bibcite{chevalley2024derivingcausalordersinglevariable}{{2}{2024}{{Chevalley et~al.}}{{Chevalley, Schwab, and Mehrjou}}} 27 | \bibcite{faria_differentiable_2022}{{3}{2022}{{Faria et~al.}}{{Faria, Martins, and Figueiredo}}} 28 | \bibcite{fu2019cyclicalannealingschedulesimple}{{4}{2019}{{Fu et~al.}}{{Fu, Li, Liu, Gao, Celikyilmaz, and Carin}}} 29 | \bibcite{jang2017categoricalreparameterizationgumbelsoftmax}{{5}{2017}{{Jang et~al.}}{{Jang, Gu, and Poole}}} 30 | \newlabel{fig:losses}{{5}{6}{Training curves of the model. Horizontal line represent the optimal least-square error between the sample value and its conditional mean. The ELBO is decomposed into the reconstruction error and the KL term. The reconstruction error decreases steadily while the KL term oscillates following the cyclical annealing schedule}{figure.5}{}} 31 | \newlabel{fig:ARI}{{6}{6}{ARI of the model at identifying the different interventional regimes. The model is able to identify the different regimes on 50\% of the samples}{figure.6}{}} 32 | \newlabel{subsec:Conclusion}{{5}{6}{}{section.5}{}} 33 | \bibcite{kingma2022autoencodingvariationalbayes}{{6}{2022}{{Kingma \& Welling}}{{Kingma and Welling}}} 34 | \bibcite{SCMVAE}{{7}{2022}{{Komanduri et~al.}}{{Komanduri, Wu, Huang, Chen, and Wu}}} 35 | \bibcite{lorch2022amortizedinferencecausalstructure}{{8}{2022}{{Lorch et~al.}}{{Lorch, Sussex, Rothfuss, Krause, and Schölkopf}}} 36 | \bibcite{Pearl_2009}{{9}{2009}{{Pearl}}{{}}} 37 | \bibcite{CausalVAE}{{10}{2021}{{Yang et~al.}}{{Yang, Liu, Chen, Shen, Hao, and Wang}}} 38 | \bibstyle{icml2018} 39 | \gdef \@abspage@last{7} 40 | -------------------------------------------------------------------------------- /report/paper/main.bbl: -------------------------------------------------------------------------------- 1 | \begin{thebibliography}{0} 2 | \providecommand{\natexlab}[1]{#1} 3 | \providecommand{\url}[1]{\texttt{#1}} 4 | \expandafter\ifx\csname urlstyle\endcsname\relax 5 | \providecommand{\doi}[1]{doi: #1}\else 6 | \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi 7 | 8 | \end{thebibliography} 9 | -------------------------------------------------------------------------------- /report/paper/main.blg: -------------------------------------------------------------------------------- 1 | This is BibTeX, Version 0.99d (TeX Live 2024) 2 | Capacity: max_strings=200000, hash_size=200000, hash_prime=170003 3 | The top-level auxiliary file: main.aux 4 | The style file: icml2018.bst 5 | Database file #1: references.bib 6 | Warning--I didn't find a database entry for "Pearl_2009" 7 | Warning--I didn't find a database entry for "chevalley2024derivingcausalordersinglevariable" 8 | Warning--I didn't find a database entry for "faria_differentiable_2022" 9 | Warning--I didn't find a database entry for "brouillard2020differentiablecausaldiscoveryinterventional" 10 | Warning--I didn't find a database entry for "lorch2022amortizedinferencecausalstructure" 11 | Warning--I didn't find a database entry for "kingma2022autoencodingvariationalbayes" 12 | Warning--I didn't find a database entry for "SCMVAE" 13 | Warning--I didn't find a database entry for "CausalVAE" 14 | Warning--I didn't find a database entry for "jang2017categoricalreparameterizationgumbelsoftmax" 15 | Warning--I didn't find a database entry for "fu2019cyclicalannealingschedulesimple" 16 | You've used 0 entries, 17 | 2773 wiz_defined-function locations, 18 | 606 strings with 5176 characters, 19 | and the built_in function-call counts, 33 in all, are: 20 | = -- 0 21 | > -- 0 22 | < -- 0 23 | + -- 0 24 | - -- 0 25 | * -- 2 26 | := -- 10 27 | add.period$ -- 0 28 | call.type$ -- 0 29 | change.case$ -- 0 30 | chr.to.int$ -- 0 31 | cite$ -- 0 32 | duplicate$ -- 0 33 | empty$ -- 1 34 | format.name$ -- 0 35 | if$ -- 1 36 | int.to.chr$ -- 1 37 | int.to.str$ -- 1 38 | missing$ -- 0 39 | newline$ -- 8 40 | num.names$ -- 0 41 | pop$ -- 0 42 | preamble$ -- 1 43 | purify$ -- 0 44 | quote$ -- 0 45 | skip$ -- 1 46 | stack$ -- 0 47 | substring$ -- 0 48 | swap$ -- 0 49 | text.length$ -- 0 50 | text.prefix$ -- 0 51 | top$ -- 0 52 | type$ -- 0 53 | warning$ -- 0 54 | while$ -- 0 55 | width$ -- 0 56 | write$ -- 7 57 | (There were 10 warnings) 58 | -------------------------------------------------------------------------------- /report/paper/main.fdb_latexmk: -------------------------------------------------------------------------------- 1 | # Fdb version 4 2 | ["bibtex main"] 1735016552.49755 "main.aux" "main.bbl" "main" 1735016554.80609 0 3 | "./icml2018.bst" 1734375046 27146 0bcbc907a3d06db63404eb67ccc4a315 "" 4 | "./references.bib" 1734981368 16252 ad226379b927d3dc9eae4b377612db5f "" 5 | "main.aux" 1735016554 5307 539286bb410e7253aa25409df5b60c88 "pdflatex" 6 | (generated) 7 | "main.bbl" 8 | "main.blg" 9 | (rewritten before read) 10 | ["pdflatex"] 1735016552.67906 "/home/mila/t/tom.marty/IFT6269/project/VariationalCausalModelling/paper/report/main.tex" "main.pdf" "main" 1735016554.80672 0 11 | "/home/mila/t/tom.marty/IFT6269/project/VariationalCausalModelling/paper/report/main.tex" 1735016549 32104 6639c38c625e41e15ff53c3c79b114fc "" 12 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc" 1165713224 4850 80dc9bab7f31fb78a000ccfed0e27cab "" 13 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 "" 14 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr7t.tfm" 1136768653 960 379cc0019370a9e0208a0a3f949f847a "" 15 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm" 1136768653 1292 bd42be2f344128bff6d35d98474adfe3 "" 16 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb7t.tfm" 1136768653 2172 fd0c924230362ff848a33632ed45dc23 "" 17 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8r.tfm" 1136768653 4524 6bce29db5bc272ba5f332261583fee9c "" 18 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr7t.tfm" 1136768653 2124 2601a75482e9426d33db523edf23570a "" 19 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8c.tfm" 1136768653 1352 fa28a7e6d323c65ce7d13d5342ff6be2 "" 20 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm" 1136768653 4408 25b74d011a4c66b7f212c0cc3c90061b "" 21 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri7t.tfm" 1136768653 2288 f478fc8fed18759effb59f3dad7f3084 "" 22 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm" 1136768653 4640 532ca3305aad10cc01d769f3f91f1029 "" 23 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmro7t.tfm" 1136768653 2212 ddd058020f70d31af08b213e40125079 "" 24 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmro8r.tfm" 1136768653 4548 f370a182a02c40d95c5554802dc0f174 "" 25 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmbsy5.tfm" 1246382020 1120 1e8878807317373affa7f7bba4cf2f6a "" 26 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmbsy7.tfm" 1246382020 1120 7f9f170e8aa57527ad6c49feafd45d54 "" 27 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1246382020 1004 54797486969f23fa377b128694d548df "" 28 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex9.tfm" 1246382020 996 a18840b13b499c08ac2de96a99eda4bc "" 29 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib5.tfm" 1246382020 1496 c79f6914c6d39ffb3759967363d1be79 "" 30 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib7.tfm" 1246382020 1508 6e807ff901c35a5f1fde0ca275533df8 "" 31 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm" 1246382020 916 f87d7c45f9c908e672703b83b72241a3 "" 32 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm" 1246382020 924 9904cf1d39e9767e7a3622f2a125a565 "" 33 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm" 1246382020 928 2dc8d444221b7a635bb58038579b861a "" 34 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm" 1246382020 908 2921f8a10601f252058503cc6570e581 "" 35 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm" 1246382020 940 75ac932a52f80982a9f8ea75d03a34cf "" 36 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm" 1246382020 940 228d6584342e91276bf566bcf9716b83 "" 37 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmbsy10.tfm" 1136768653 1116 4e6ba9d7914baa6482fd69f67d126380 "" 38 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmbx10.tfm" 1136768653 1328 c834bbb027764024c09d3d2bf908b5f0 "" 39 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmbx5.tfm" 1136768653 1332 f817c21a1ba54560425663374f1b651a "" 40 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmbx7.tfm" 1136768653 1336 3125ccb448c1a09074e3aa4a9832f130 "" 41 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1136768653 1512 f21f83efb36853c0b70002322c1ab3ad "" 42 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmmi9.tfm" 1136768653 1524 d89e2d087a9828407a196f428428ef4a "" 43 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmmib10.tfm" 1136768653 1524 554068197b70979a55370e6c6495f441 "" 44 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmr6.tfm" 1136768653 1300 b62933e007d01cfd073f79b963c01526 "" 45 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmr9.tfm" 1136768653 1292 6b21b9c2c7bebb38aa2273f7ca0fb3af "" 46 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm" 1136768653 1116 933a60c408fc0a863a92debe84b2d294 "" 47 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmsy9.tfm" 1136768653 1116 25a7bf822c58caf309a702ef79f4afbb "" 48 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/rsfs/rsfs10.tfm" 1229303445 688 37338d6ab346c2f1466b29e195316aa4 "" 49 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/rsfs/rsfs5.tfm" 1229303445 684 3a51bd4fd9600428d5264cf25f04bb9a "" 50 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/rsfs/rsfs7.tfm" 1229303445 692 1b6510779f0f05e9cbf03e0f6c8361e6 "" 51 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb" 1248133631 30251 6afa5cb1d0204815a708a080681d4674 "" 52 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb" 1248133631 36299 5f9df58c2139e7edcf37c8fca4bd384d "" 53 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb" 1248133631 37912 77d683123f92148345f3fc36a38d9ab1 "" 54 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi6.pfb" 1248133631 37166 8ab3487cbe3ab49ebce74c29ea2418db "" 55 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb" 1248133631 36281 c355509802a035cadc5f15869451dcee "" 56 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi9.pfb" 1248133631 36094 798f80770b3b148ceedd006d487db67c "" 57 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmib10.pfb" 1248133631 36912 b448ef9ad9d7228ec3c6e71005136d55 "" 58 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb" 1248133631 35752 024fb6c41858982481f6968b5fc26508 "" 59 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr5.pfb" 1248133631 31809 8670ca339bf94e56da1fc21c80635e2a "" 60 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb" 1248133631 32734 69e00a6b65cedb993666e42eedb3d48f "" 61 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb" 1248133631 32762 224316ccc9ad3ca0423a14971cfa7fc1 "" 62 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr9.pfb" 1248133631 33993 9b89b85fd2d9df0482bd47194d1d3bf3 "" 63 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb" 1248133631 32569 5e5ddc8df908dea60932f3c484a54c0d "" 64 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb" 1248133631 32716 08e384dc442464e7285e891af9f45947 "" 65 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy9.pfb" 1248133631 32442 c975af247b6702f7ca0c299af3616b80 "" 66 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cmextra/cmmib5.pfb" 1248133631 40540 ffff783419ea8147938742206b9b7b57 "" 67 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cmextra/cmmib7.pfb" 1248133631 39386 0bb525d495ceab21fe797301a586e0d7 "" 68 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm10.pfb" 1248133631 34694 ad62b13721ee8eda1dcc8993c8bd7041 "" 69 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb" 1136849748 45758 19968a0990191524e34e1994d4a31cb6 "" 70 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/urw/times/utmb8a.pfb" 1136849748 44729 811d6c62865936705a31c797a1d5dada "" 71 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/urw/times/utmr8a.pfb" 1136849748 46026 6dab18b61c907687b520c72847215a68 "" 72 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/urw/times/utmri8a.pfb" 1136849748 45458 a3faba884469519614ca56ba5f6b1de1 "" 73 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr7t.vf" 1136768653 1344 6ff472164bf9de0fb2e864b28ac156d9 "" 74 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmb7t.vf" 1136768653 1372 788387fea833ef5963f4c5bffe33eb89 "" 75 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmr7t.vf" 1136768653 1380 0ea3a3370054be6da6acd929ec569f06 "" 76 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8c.vf" 1136768653 3556 8a9a6dcbcd146ef985683f677f4758a6 "" 77 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmri7t.vf" 1136768653 1384 a9d8adaf491ce34e5fba99dc7bbe5f39 "" 78 | "/home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmro7t.vf" 1136768653 1384 5daa35f30ad788d676a07a579b5db7fa "" 79 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1461363279 71627 94eb9990bed73c364d7f53f960cc8c5b "" 80 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty" 1575674566 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 "" 81 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1576625341 40635 c40361e206be584d448876bba8a64a3b "" 82 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/bitset/bitset.sty" 1576016050 33961 6b5c75130e435b2bfdb9f480a09a39f9 "" 83 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1576625223 8371 9d55b8bd010bc717624922fb3477d92e "" 84 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/iftex/iftex.sty" 1644112042 7237 bdd120a32c8fdb4b433cf9ca2e7cd98a "" 85 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty" 1575499628 8356 7bbb2c2373aa810be568c29e333da8ed "" 86 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty" 1576625065 31769 002a487f55041f8e805cfbf6385ffd97 "" 87 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1576878844 5412 d5a2436094cd7be85769db90f29250a6 "" 88 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1701727651 17865 1a9bd36b4f98178fa551aca822290953 "" 89 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1576015897 19007 15924f7228aca6c6d184b115f4baa231 "" 90 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty" 1593379760 20089 80423eac55aa175305d35b49e04fe23b "" 91 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/stringenc/stringenc.sty" 1575152242 21514 b7557edcee22835ef6b03ede1802dad4 "" 92 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty" 1576624663 7008 f92eaa0a3872ed622bbf538217cd2ab7 "" 93 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/algorithms/algorithm.sty" 1251330371 3249 15763257e50278eef5db1952ccde229c "" 94 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/algorithms/algorithmic.sty" 1251330371 9318 793e9d5a71e74e730d97f6bf5d7e2bca "" 95 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amscls/amsthm.sty" 1591045760 12594 0d51ac3a545aaaa555021326ff22a6cc "" 96 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty" 1359763108 5949 3f3fd50a8cc94c3d4cbf4fc66cd3df1c "" 97 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty" 1359763108 13829 94730e64147574077f8ecfea9bb69af4 "" 98 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd" 1359763108 961 6518c6525a34feb5e8250ffa91731cff "" 99 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd" 1359763108 961 d02606146ba5601b5645f987c92e6193 "" 100 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty" 1717359999 2222 2166a1f7827be30ddc30434e5efcee1b "" 101 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty" 1717359999 4173 d22509bc0c91281d991b2de7c88720dd "" 102 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty" 1730928152 88370 c780f23aea0ece6add91e09b44dca2cd "" 103 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty" 1717359999 4474 23ca1d3a79a57b405388059456d0a8df "" 104 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsmath/amstext.sty" 1717359999 2444 71618ea5f2377e33b04fb97afdd0eac2 "" 105 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty" 1728505250 1695 be6b4d13b33db697fd3fd30b24716c1a "" 106 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/base/article.cls" 1730496337 20144 d7d3a15c7efd9458741458961c8a96e7 "" 107 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/base/atbegshi-ltx.sty" 1717359999 2963 e56732bbb93cfa019febfd0c7eaf1d21 "" 108 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/base/atveryend-ltx.sty" 1717359999 2378 05fbb4f2b23b0e142f8cd3440c37e72e "" 109 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/base/ifthen.sty" 1717359999 5525 3792dcd5bc92158cfaf00cc591e557cf "" 110 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/base/size10.clo" 1730496337 8448 bd43e47d84d3704b7eabd59a92e43bf1 "" 111 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty" 1579038678 6078 f1cb470c9199e7110a27851508ed7a5c "" 112 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1579991033 13886 d1306dcf79a944f6988e688c1785f9ce "" 113 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/eso-pic/eso-pic.sty" 1683144721 11876 6ef493863ae0d7a984706973240c2237 "" 114 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty" 1601931149 46845 3b58f70c6e861a13d927bff09d35ecbc "" 115 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/float/float.sty" 1137110151 6749 16d2656a1984957e674b149555f1ea1d "" 116 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/forloop/forloop.sty" 1683232158 1720 8470a0e13fbd4c8d2cc96497e30c2ec0 "" 117 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1459978653 1213 620bba36b25224fa9b7e1ccb4ecb76fd "" 118 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1465944070 1224 978390e9c2234eab29404bc21b268d1e "" 119 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def" 1713382759 19440 9da9dcbb27470349a580fca7372d454b "" 120 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/color.sty" 1730496337 7245 57f7defed4fb41562dc4b6ca13958ca9 "" 121 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/graphics.sty" 1730496337 18363 dee506cb8d56825d8a4d020f5d5f8704 "" 122 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/graphicx.sty" 1717359999 8010 6f2ad8c2b2ffbd607af6475441c7b5e4 "" 123 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/keyval.sty" 1717359999 2671 70891d50dac933918b827d326687c6e8 "" 124 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/mathcolor.ltx" 1667332637 2885 9c645d672ae17285bba324998918efd8 "" 125 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/trig.sty" 1717359999 4023 2c9f39712cf7b43d3eb93a8bbd5c8f67 "" 126 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/grfext/grfext.sty" 1575499774 7133 b94bbacbee6e4fdccdc7f810b2aec370 "" 127 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty" 1580250785 17914 4c28a13fc3d975e6e81c9bea1d697276 "" 128 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def" 1730838014 48154 82da9991b9f0390b3a9d3af6c8618af4 "" 129 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty" 1730838014 222112 c22dbd2288f89f7ba942ac22f7d00f11 "" 130 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/nameref.sty" 1705871765 11026 182c63f139a71afd30a28e5f1ed2cd1c "" 131 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def" 1730838014 14249 ff700eb13ce975a424b2dd99b1a83044 "" 132 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/puenc.def" 1730838014 117112 7533bff456301d32e6d6356fad15f543 "" 133 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/jknapltx/mathrsfs.sty" 1137110241 300 12fa6f636b617656f2810ee82cb05015 "" 134 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/jknapltx/ursfs.fd" 1137110241 548 cc4e3557704bfed27c7002773fad6c90 "" 135 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1655478651 22555 6d8e155cfef6d82c3d5c742fea7c992e "" 136 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty" 1665067230 13815 760b0c02f691ea230f5359c4e1de23a7 "" 137 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def" 1716410060 29785 9f93ab201fe5dd053afcc6c1bcf7d266 "" 138 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af "" 139 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/listings/listings.cfg" 1727126400 1865 301ae3c26fb8c0243307b619a6aa2dd3 "" 140 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/listings/listings.sty" 1727126400 81640 997090b6c021dc4af9ee00a97b85c5b4 "" 141 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/listings/lstmisc.sty" 1727126400 77051 be68720e5402397a830abb9eed5a2cb4 "" 142 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/listings/lstpatch.sty" 1710360531 353 9024412f43e92cd5b21fe9ded82d0610 "" 143 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/makecell/makecell.sty" 1249334690 15773 2dd7dde1ec1c2a3d0c85bc3b273e04d8 "" 144 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/mathtools/mathtools.sty" 1728349409 62711 3b0ed1d68b598a75677c10d16646d5e5 "" 145 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/mathtools/mhsetup.sty" 1616101747 5582 a43dedf8e5ec418356f1e9dfe5d29fc3 "" 146 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/microtype-pdftex.def" 1711748042 48246 4fd40a0fb055e75ab59718b607ff1a02 "" 147 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/microtype.cfg" 1711748042 26842 362f00e9d49f97a0d1db424012abc18b "" 148 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/microtype.sty" 1711748042 99956 8aeb768ea37a20e7c141d3963de3aa3d "" 149 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/mt-cmr.cfg" 1711748042 22906 026654df5c1c11d4cfce85f7d020ab90 "" 150 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/mt-msa.cfg" 1711748042 5929 2cd2d7d771ace91b3a8a9068f854dc60 "" 151 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/mt-msb.cfg" 1711748042 5594 8fda8f8cdec9bc22efbe5b6131c207e1 "" 152 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/mt-ptm.cfg" 1711748042 12427 d0509cf2dc5b993687981d2c918820f1 "" 153 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/natbib/natbib.sty" 1291685959 45456 1c8843383c0bd05870c45fa0ebea6cc2 "" 154 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/omlptm.fd" 1137110629 577 008ea4bacb8ccf8c2a39dc94e000ef1f "" 155 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/ot1pcr.fd" 1137110629 985 1ed784d7bfe47179f3550d2303b073f8 "" 156 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/ot1ptm.fd" 1137110629 961 15056f4a61917ceed3a44e4ac11fcc52 "" 157 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/times.sty" 1586716065 856 8e0e5c8cca7b18e0400f97f5a2b90a99 "" 158 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd" 1137110629 619 96f56dc5d1ef1fe1121f1cfeec70ee0c "" 159 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/refcount/refcount.sty" 1576624809 9878 9e94e8fa600d95f9c7731bb21dfb67a4 "" 160 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1657483315 9714 ba3194bd52c8499b3f1e3eb91d409670 "" 161 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/subfigure/subfigure.cfg" 1167176009 2062 a0e7d66e09e508f51289a656aec06ed2 "" 162 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/subfigure/subfigure.sty" 1167176009 15188 91281c7ddbccfa54a8e0c3b56ab5aa72 "" 163 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/aliasctr.sty" 1683232183 2547 a5a59eb03f587b4c267981c894cde4cb "" 164 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/parseargs.sty" 1683232183 1696 0b33b5336cb99d15b904405f9c077915 "" 165 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-amsthm.sty" 1683232183 4682 8f2186b1227fdefc9dcd77a366d53aa3 "" 166 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-autoref.sty" 1683232183 3272 133720bc624d01252e2858c1a29ee3de "" 167 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-kv.sty" 1683232183 15445 e93b10139ca6d334bd7f636226a85389 "" 168 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-listof.sty" 1683232183 6224 5b50b2177552839e49f62ff6045310e1 "" 169 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-patch.sty" 1683232183 6878 1730928da9b392ec6c2f6b0e2273b4b9 "" 170 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-restate.sty" 1683232183 8051 10018eb9c2d166333bfceb517a425f4d "" 171 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thmtools.sty" 1683232183 1913 873bc7fbf18d7dd934dc3a6cc156472e "" 172 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/tools/array.sty" 1730496337 14552 27664839421e418b87f56fa4c6f66b1a "" 173 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/tools/calc.sty" 1717359999 10214 61188260d324e94bc2f66825d7d3fdf4 "" 174 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/units/nicefrac.sty" 1137111039 4029 0462ee5ab265cf59dc15a41a3b883101 "" 175 | "/home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/url/url.sty" 1388531844 12796 8edb7d69a20b857904dd0ea757c14ec9 "" 176 | "/home/mila/t/tom.marty/texlive/texmf-dist/web2c/texmf.cnf" 1727217670 42021 a58d36c7ede3d2fc9f93da62d691ddff "" 177 | "/home/mila/t/tom.marty/texlive/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1733177944 5476137 43c0230dd941424b41e064ab804b4b07 "" 178 | "/home/mila/t/tom.marty/texlive/texmf-var/web2c/pdftex/pdflatex.fmt" 1733178204 3343746 ffe13feaa6f4714a86a7ac368b119e02 "" 179 | "/home/mila/t/tom.marty/texlive/texmf.cnf" 1733177921 614 6ac0f7114afdf26402b4fc286485d5f9 "" 180 | "fancyhdr.sty" 1734375046 20513 c218706a0007a151d0bea8842e5f4187 "" 181 | "icml2018_ift6269.sty" 1734375046 26950 33d59f8d0b79dc1f6837a17fe5b11e47 "" 182 | "images/ARI.pdf" 1735015166 15133 72ec5f994765ef4f7649c823c1b49269 "" 183 | "images/DAG.pdf" 1734374990 94875 56c02f8b0fdacc2c87edb44493736b42 "" 184 | "images/architecture.pdf" 1734452574 80040 623575fa57154e43920a715083959c94 "" 185 | "images/architecture_decoder.pdf" 1734455100 50173 424d72ce42a265884007b4b86db41f7c "" 186 | "images/assumption.pdf" 1734541120 98576 9db73dfffa57b8b6680069de54753542 "" 187 | "images/results.pdf" 1735014920 29471 29b70e5a7f3aba9449ad2905a9297dcc "" 188 | "main.aux" 1735016554 5307 539286bb410e7253aa25409df5b60c88 "pdflatex" 189 | "main.bbl" 1735016552 3556 18fc10d978feea52f2ddd7724b871769 "bibtex main" 190 | "main.out" 1735016553 0 d41d8cd98f00b204e9800998ecf8427e "pdflatex" 191 | "main.tex" 1735016549 32104 6639c38c625e41e15ff53c3c79b114fc "" 192 | (generated) 193 | "main.aux" 194 | "main.log" 195 | "main.out" 196 | "main.pdf" 197 | (rewritten before read) 198 | -------------------------------------------------------------------------------- /report/paper/main.fls: -------------------------------------------------------------------------------- 1 | PWD /home/mila/t/tom.marty/IFT6269/project/VariationalCausalModelling/paper/report 2 | INPUT /home/mila/t/tom.marty/texlive/texmf.cnf 3 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/web2c/texmf.cnf 4 | INPUT /home/mila/t/tom.marty/texlive/texmf-var/web2c/pdftex/pdflatex.fmt 5 | INPUT /home/mila/t/tom.marty/IFT6269/project/VariationalCausalModelling/paper/report/main.tex 6 | OUTPUT main.log 7 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/base/article.cls 8 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/base/article.cls 9 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/base/size10.clo 10 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/base/size10.clo 11 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/base/size10.clo 12 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/microtype.sty 13 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/microtype.sty 14 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/keyval.sty 15 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/keyval.sty 16 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty 17 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty 18 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/microtype-pdftex.def 19 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/microtype-pdftex.def 20 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/microtype-pdftex.def 21 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/microtype.cfg 22 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/microtype.cfg 23 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/microtype.cfg 24 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/graphicx.sty 25 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/graphicx.sty 26 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/graphics.sty 27 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/graphics.sty 28 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/trig.sty 29 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/trig.sty 30 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg 31 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg 32 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg 33 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def 34 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def 35 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def 36 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/subfigure/subfigure.sty 37 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/subfigure/subfigure.sty 38 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/subfigure/subfigure.cfg 39 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/subfigure/subfigure.cfg 40 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/subfigure/subfigure.cfg 41 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty 42 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty 43 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty 44 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty 45 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty 46 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsmath/amstext.sty 47 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsmath/amstext.sty 48 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty 49 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty 50 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty 51 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty 52 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty 53 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty 54 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty 55 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty 56 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty 57 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/mathtools/mathtools.sty 58 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/mathtools/mathtools.sty 59 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/tools/calc.sty 60 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/tools/calc.sty 61 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/mathtools/mhsetup.sty 62 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/mathtools/mhsetup.sty 63 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/jknapltx/mathrsfs.sty 64 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/jknapltx/mathrsfs.sty 65 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/units/nicefrac.sty 66 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/units/nicefrac.sty 67 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/base/ifthen.sty 68 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/base/ifthen.sty 69 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amscls/amsthm.sty 70 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amscls/amsthm.sty 71 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thmtools.sty 72 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thmtools.sty 73 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-patch.sty 74 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-patch.sty 75 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/parseargs.sty 76 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/parseargs.sty 77 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-kv.sty 78 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-kv.sty 79 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty 80 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty 81 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-autoref.sty 82 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-autoref.sty 83 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/aliasctr.sty 84 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/aliasctr.sty 85 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-listof.sty 86 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-listof.sty 87 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-restate.sty 88 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-restate.sty 89 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-amsthm.sty 90 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/thmtools/thm-amsthm.sty 91 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/tools/array.sty 92 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/tools/array.sty 93 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/makecell/makecell.sty 94 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/makecell/makecell.sty 95 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/listings/listings.sty 96 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/listings/listings.sty 97 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/listings/lstpatch.sty 98 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/listings/lstpatch.sty 99 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/listings/lstpatch.sty 100 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/listings/lstmisc.sty 101 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/listings/lstmisc.sty 102 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/listings/lstmisc.sty 103 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/listings/listings.cfg 104 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/listings/listings.cfg 105 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/listings/listings.cfg 106 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty 107 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty 108 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/iftex/iftex.sty 109 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/iftex/iftex.sty 110 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty 111 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty 112 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty 113 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty 114 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty 115 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty 116 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty 117 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty 118 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty 119 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty 120 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty 121 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty 122 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/nameref.sty 123 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/nameref.sty 124 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/refcount/refcount.sty 125 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/refcount/refcount.sty 126 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty 127 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty 128 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty 129 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty 130 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/stringenc/stringenc.sty 131 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/stringenc/stringenc.sty 132 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def 133 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def 134 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def 135 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty 136 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty 137 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/puenc.def 138 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/puenc.def 139 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/puenc.def 140 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/url/url.sty 141 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/url/url.sty 142 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/bitset/bitset.sty 143 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/bitset/bitset.sty 144 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty 145 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty 146 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty 147 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/base/atbegshi-ltx.sty 148 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/base/atbegshi-ltx.sty 149 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def 150 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def 151 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def 152 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty 153 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/base/atveryend-ltx.sty 154 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/base/atveryend-ltx.sty 155 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty 156 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty 157 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty 158 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty 159 | INPUT ./icml2018_ift6269.sty 160 | INPUT icml2018_ift6269.sty 161 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/times.sty 162 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/times.sty 163 | INPUT ./fancyhdr.sty 164 | INPUT fancyhdr.sty 165 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/color.sty 166 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/color.sty 167 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg 168 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg 169 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg 170 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/mathcolor.ltx 171 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/mathcolor.ltx 172 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/graphics/mathcolor.ltx 173 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/algorithms/algorithm.sty 174 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/algorithms/algorithm.sty 175 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/float/float.sty 176 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/float/float.sty 177 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/algorithms/algorithmic.sty 178 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/algorithms/algorithmic.sty 179 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/natbib/natbib.sty 180 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/natbib/natbib.sty 181 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/eso-pic/eso-pic.sty 182 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/eso-pic/eso-pic.sty 183 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/forloop/forloop.sty 184 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/forloop/forloop.sty 185 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/ot1ptm.fd 186 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/ot1ptm.fd 187 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/ot1ptm.fd 188 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/map/fontname/texfonts.map 189 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr7t.tfm 190 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def 191 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def 192 | INPUT ./main.aux 193 | INPUT ./main.aux 194 | INPUT main.aux 195 | OUTPUT main.aux 196 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/mt-ptm.cfg 197 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/mt-ptm.cfg 198 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/mt-ptm.cfg 199 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii 200 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii 201 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii 202 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty 203 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty 204 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/grfext/grfext.sty 205 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/grfext/grfext.sty 206 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg 207 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg 208 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg 209 | INPUT ./main.out 210 | INPUT ./main.out 211 | INPUT main.out 212 | INPUT main.out 213 | INPUT ./main.out 214 | INPUT ./main.out 215 | OUTPUT main.out 216 | OUTPUT main.pdf 217 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr7t.tfm 218 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb7t.tfm 219 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr7t.tfm 220 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb7t.tfm 221 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb7t.tfm 222 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/mt-cmr.cfg 223 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/mt-cmr.cfg 224 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/mt-cmr.cfg 225 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm 226 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm 227 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd 228 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd 229 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd 230 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm 231 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/mt-msa.cfg 232 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/mt-msa.cfg 233 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/mt-msa.cfg 234 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm 235 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm 236 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd 237 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd 238 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd 239 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm 240 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/mt-msb.cfg 241 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/mt-msb.cfg 242 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/microtype/mt-msb.cfg 243 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm 244 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm 245 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/jknapltx/ursfs.fd 246 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/jknapltx/ursfs.fd 247 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/jknapltx/ursfs.fd 248 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/rsfs/rsfs10.tfm 249 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/rsfs/rsfs7.tfm 250 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/rsfs/rsfs5.tfm 251 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr7t.tfm 252 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmr9.tfm 253 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmr6.tfm 254 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmmi9.tfm 255 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm 256 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmsy9.tfm 257 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm 258 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex9.tfm 259 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm 260 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm 261 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm 262 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm 263 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm 264 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/rsfs/rsfs10.tfm 265 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/rsfs/rsfs5.tfm 266 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr7t.tfm 267 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/omlptm.fd 268 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/omlptm.fd 269 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/omlptm.fd 270 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri7t.tfm 271 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr7t.tfm 272 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb7t.tfm 273 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmbx10.tfm 274 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmbx7.tfm 275 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmbx5.tfm 276 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmmib10.tfm 277 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib7.tfm 278 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib5.tfm 279 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/cm/cmbsy10.tfm 280 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmbsy7.tfm 281 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmbsy5.tfm 282 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd 283 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd 284 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd 285 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8c.tfm 286 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr7t.tfm 287 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri7t.tfm 288 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmb7t.vf 289 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8r.tfm 290 | INPUT /home/mila/t/tom.marty/texlive/texmf-var/fonts/map/pdftex/updmap/pdftex.map 291 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc 292 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmb7t.vf 293 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8r.tfm 294 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmr7t.vf 295 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm 296 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmb7t.vf 297 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8r.tfm 298 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmr7t.vf 299 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm 300 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmr7t.vf 301 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm 302 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmr7t.vf 303 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm 304 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmri7t.vf 305 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm 306 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8c.vf 307 | INPUT ./images/DAG.pdf 308 | INPUT ./images/DAG.pdf 309 | INPUT ./images/DAG.pdf 310 | INPUT ./images/DAG.pdf 311 | INPUT ./images/DAG.pdf 312 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmro7t.tfm 313 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmb7t.vf 314 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8r.tfm 315 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmri7t.vf 316 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm 317 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/times/ptmro7t.vf 318 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/times/ptmro8r.tfm 319 | INPUT ./images/assumption.pdf 320 | INPUT ./images/assumption.pdf 321 | INPUT ./images/assumption.pdf 322 | INPUT ./images/assumption.pdf 323 | INPUT ./images/assumption.pdf 324 | INPUT ./images/architecture.pdf 325 | INPUT ./images/architecture.pdf 326 | INPUT ./images/architecture.pdf 327 | INPUT ./images/architecture.pdf 328 | INPUT ./images/architecture.pdf 329 | INPUT ./images/architecture_decoder.pdf 330 | INPUT ./images/architecture_decoder.pdf 331 | INPUT ./images/architecture_decoder.pdf 332 | INPUT ./images/architecture_decoder.pdf 333 | INPUT ./images/architecture_decoder.pdf 334 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/ot1pcr.fd 335 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/ot1pcr.fd 336 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/tex/latex/psnfss/ot1pcr.fd 337 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr7t.tfm 338 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr7t.vf 339 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm 340 | INPUT ./images/results.pdf 341 | INPUT ./images/results.pdf 342 | INPUT ./images/results.pdf 343 | INPUT ./images/results.pdf 344 | INPUT ./images/results.pdf 345 | INPUT ./images/ARI.pdf 346 | INPUT ./images/ARI.pdf 347 | INPUT ./images/ARI.pdf 348 | INPUT ./images/ARI.pdf 349 | INPUT ./images/ARI.pdf 350 | INPUT ./main.bbl 351 | INPUT ./main.bbl 352 | INPUT main.bbl 353 | INPUT main.aux 354 | INPUT ./main.out 355 | INPUT ./main.out 356 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb 357 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb 358 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb 359 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi6.pfb 360 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb 361 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi9.pfb 362 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmib10.pfb 363 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cmextra/cmmib5.pfb 364 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cmextra/cmmib7.pfb 365 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb 366 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr5.pfb 367 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb 368 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb 369 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr9.pfb 370 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb 371 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb 372 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy9.pfb 373 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm10.pfb 374 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb 375 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/urw/times/utmb8a.pfb 376 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/urw/times/utmr8a.pfb 377 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/urw/times/utmr8a.pfb 378 | INPUT /home/mila/t/tom.marty/texlive/texmf-dist/fonts/type1/urw/times/utmri8a.pfb 379 | -------------------------------------------------------------------------------- /report/paper/main.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/3rdCore/Research_Project_Template/e6a9c7d18e727b903f916fe9581b7715a9fcdb67/report/paper/main.out -------------------------------------------------------------------------------- /report/paper/main.synctex.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/3rdCore/Research_Project_Template/e6a9c7d18e727b903f916fe9581b7715a9fcdb67/report/paper/main.synctex.gz -------------------------------------------------------------------------------- /report/paper/main.tex: -------------------------------------------------------------------------------- 1 | %%%%%%%% ICML 2018 EXAMPLE LATEX SUBMISSION FILE %%%%%%%%%%%%%%%%% 2 | 3 | \documentclass{article} 4 | 5 | % Recommended, but optional, packages for figures and better typesetting: 6 | \usepackage{microtype} 7 | \usepackage{graphicx} 8 | \usepackage{subfigure} 9 | \usepackage{booktabs} % for professional tables 10 | \usepackage{amsmath} 11 | \usepackage{amsfonts} 12 | \usepackage{amssymb} 13 | \usepackage{mathtools} 14 | \usepackage{mathrsfs} 15 | \usepackage{nicefrac} 16 | \usepackage{amsthm} 17 | \usepackage{thmtools} 18 | \usepackage{thm-restate} 19 | %\usepackage[ruled]{algorithm2e} % Comment out this line 20 | \usepackage{array, makecell} 21 | \usepackage{listings} 22 | % hyperref makes hyperlinks in the resulting PDF. 23 | % If your build breaks (sometimes temporarily if a hyperlink spans a page) 24 | % please comment out the following usepackage line and replace 25 | % \usepackage{icml2018} with \usepackage[nohyperref]{icml2018} above. 26 | \usepackage{hyperref} 27 | \newcommand\todo[1]{\textcolor{red}{#1}} 28 | 29 | % Attempt to make hyperref and algorithmic work together better: 30 | \newcommand{\theHalgorithm}{\arabic{algorithm}} 31 | 32 | % Use the following line for the initial blind version submitted for review: 33 | %\usepackage{icml2018_ift6269} 34 | 35 | % If accepted, instead use the following line for the camera-ready submission: 36 | \usepackage[accepted]{icml2018_ift6269} 37 | % SLJ: -> use this for your IFT 6269 project report! 38 | 39 | % The \icmltitle you define below is probably too long as a header. 40 | % Therefore, a short form for the running title is supplied here: 41 | \icmltitlerunning{Autoregressive VAE for Causal Modeling} 42 | 43 | \begin{document} 44 | 45 | \twocolumn[ 46 | \icmltitle{A very Exciting Project Title} 47 | 48 | % It is OKAY to include author information, even for blind 49 | % submissions: the style file will automatically remove it for you 50 | % unless you've provided the [accepted] option to the icml2018 51 | % package. 52 | 53 | % List of affiliations: The first argument should be a (short) 54 | % identifier you will use later to specify author affiliations 55 | % Academic affiliations should list Department, University, City, Region, Country 56 | % Industry affiliations should list Company, City, Region, Country 57 | 58 | % You can specify symbols, otherwise they are numbered in order. 59 | % Ideally, you should not use this facility. Affiliations will be numbered 60 | % in order of appearance and this is the preferred way. 61 | 62 | \begin{icmlauthorlist} 63 | \icmlauthor{Tom Marty}{udem,mi} 64 | \end{icmlauthorlist} 65 | 66 | \icmlaffiliation{udem}{Université de Montréal, Québec, Canada} 67 | \icmlaffiliation{mi}{Mila, Quebec AI Institute} 68 | 69 | \icmlcorrespondingauthor{Tom Marty}{tom.marty@mila.quebec} 70 | 71 | % You may provide any keywords that you 72 | % find helpful for describing your paper; these are used to populate 73 | % the "keywords" metadata in the PDF but will not be shown in the document 74 | \icmlkeywords{Machine Learning, ICML} 75 | 76 | \vskip 0.3in 77 | ] 78 | 79 | % this must go after the closing bracket ] following \twocolumn[ ... 80 | 81 | % This command actually creates the footnote in the first column 82 | % listing the affiliations and the copyright notice. 83 | % The command takes one argument, which is text to display at the start of the footnote. 84 | % The \icmlEqualContribution command is standard text for equal contribution. 85 | % Remove it (just {}) if you do not need this facility. 86 | 87 | \printAffiliationsAndNotice{} % otherwise use the standard text. 88 | 89 | \begin{abstract} 90 | 91 | \end{abstract} 92 | 93 | \bibliography{references} 94 | \bibliographystyle{icml2018} 95 | 96 | \end{document} 97 | 98 | % This document was modified from the file originally made available by 99 | % Pat Langley and Andrea Danyluk for ICML-2K. This version was created 100 | % by Iain Murray in 2018. It was modified from a version from Dan Roy in 101 | % 2017, which was based on a version from Lise Getoor and Tobias 102 | % Scheffer, which was slightly modified from the 2010 version by 103 | % Thorsten Joachims & Johannes Fuernkranz, slightly modified from the 104 | % 2009 version by Kiri Wagstaff and Sam Roweis's 2008 version, which is 105 | % slightly modified from Prasad Tadepalli's 2007 version which is a 106 | % lightly changed version of the previous year's version by Andrew 107 | % Moore, which was in turn edited from those of Kristian Kersting and 108 | % Codrina Lauth. Alex Smola contributed to the algorithmic style files. 109 | -------------------------------------------------------------------------------- /report/paper/references.bib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/3rdCore/Research_Project_Template/e6a9c7d18e727b903f916fe9581b7715a9fcdb67/report/paper/references.bib -------------------------------------------------------------------------------- /report/plots/data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/3rdCore/Research_Project_Template/e6a9c7d18e727b903f916fe9581b7715a9fcdb67/report/plots/data/.gitkeep -------------------------------------------------------------------------------- /report/plots/notebook.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Imports and API" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 1, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "import sys\n", 17 | "import os\n", 18 | "from copy import deepcopy\n", 19 | "from typing import Any\n", 20 | "\n", 21 | "import numpy as np\n", 22 | "import pandas as pd\n", 23 | "import matplotlib.pyplot as plt\n", 24 | "import seaborn as sns\n", 25 | "from scipy.ndimage import gaussian_filter1d\n", 26 | "import wandb\n", 27 | "\n", 28 | "sys.path.append(\"../../\")\n", 29 | "\n", 30 | "# Style for making nice-looking paper plots with page-scale figure size units\n", 31 | "sns.set_theme(\n", 32 | " style=\"ticks\",\n", 33 | " context=\"paper\",\n", 34 | " palette=\"deep\",\n", 35 | " rc={\n", 36 | " \"font.size\": 5,\n", 37 | " \"axes.titlesize\": 6,\n", 38 | " \"axes.labelsize\": 6,\n", 39 | " \"axes.labelpad\": 2,\n", 40 | " \"xtick.labelsize\": 4.5,\n", 41 | " \"ytick.labelsize\": 4.5,\n", 42 | " \"legend.title_fontsize\": 4.5,\n", 43 | " \"legend.fontsize\": 4.5,\n", 44 | " \"legend.markerscale\": 0.5,\n", 45 | " \"axes.spines.top\": False,\n", 46 | " \"axes.spines.right\": False,\n", 47 | " \"axes.linewidth\": 0.4,\n", 48 | " \"xtick.major.width\": 0.4,\n", 49 | " \"ytick.major.width\": 0.4,\n", 50 | " \"xtick.major.size\": 2.5,\n", 51 | " \"ytick.major.size\": 2.5,\n", 52 | " \"xtick.minor.size\": 1.5,\n", 53 | " \"ytick.minor.size\": 1.5,\n", 54 | " \"xtick.minor.width\": 0.2,\n", 55 | " \"ytick.minor.width\": 0.2,\n", 56 | " \"figure.constrained_layout.use\": True,\n", 57 | " \"figure.dpi\": 200,\n", 58 | " },\n", 59 | ")\n", 60 | "\n", 61 | "\n", 62 | "# Weights & Biases\n", 63 | "api = wandb.Api()\n", 64 | "\n", 65 | "\n", 66 | "def get_run_results(\n", 67 | " entity: str,\n", 68 | " project: str,\n", 69 | " metrics: list[str],\n", 70 | " filters: dict[str, Any],\n", 71 | " posthoc_nested_config_filters: dict[str, Any] = {},\n", 72 | " x_axis: str = \"epoch\",\n", 73 | " user: str | None = None,\n", 74 | " save_path: str | None = None,\n", 75 | ") -> pd.DataFrame:\n", 76 | " \"\"\"Pulls data from the W&B API and returns a dataframe with either the best epoch performance for each run\n", 77 | " (when `best_epoch=True`) or the entire training trajectory across runs (when `best_epoch=False`).\n", 78 | "\n", 79 | " Args:\n", 80 | " entity (str): W&B entity.\n", 81 | " dataset (str): The W&B project.\n", 82 | " metrics (list[str]): Logged metrics we want to keep.\n", 83 | " filters (dict[str, Any]): W&B API filters used to select only a subset of runs. See code below for examples.\n", 84 | " x_axis (str): The x-axis to plot the metrics against.\n", 85 | " save_path (str, optional): Optionally save the resulting dataframe. Note that if the file already exists, we retrieve its data and return that rather than querying the API. Defaults to `None`.\n", 86 | "\n", 87 | " Returns:\n", 88 | " pd.DataFrame: Dataframe of results. It contains the run id, epoch, config arguments, and `metrics`.\n", 89 | " \"\"\"\n", 90 | " # If data has already been downloaded, don't make another API call\n", 91 | " if os.path.exists(save_path):\n", 92 | " print(f\"Loading from cached file {save_path}...\")\n", 93 | " data = pd.read_csv(save_path)\n", 94 | " return data\n", 95 | "\n", 96 | " # Fetch all run data from the API\n", 97 | " runs = api.runs(f\"{entity}/{project}\", filters=filters)\n", 98 | " if user is not None:\n", 99 | " runs = [run for run in runs if run.user.username == user]\n", 100 | " filtered_runs = []\n", 101 | " for run in runs:\n", 102 | " config = run.config\n", 103 | " is_valid = True\n", 104 | " for key, value in posthoc_nested_config_filters.items():\n", 105 | " nested_attribute = key.split(\".\")\n", 106 | " attribute_config = deepcopy(config)\n", 107 | " for attribute in nested_attribute:\n", 108 | " if attribute not in attribute_config:\n", 109 | " is_valid = False\n", 110 | " break\n", 111 | " attribute_config = attribute_config[attribute]\n", 112 | " if isinstance(attribute_config, list):\n", 113 | " attribute_config = \",\".join(attribute_config)\n", 114 | " if attribute_config != value:\n", 115 | " is_valid = False\n", 116 | " break\n", 117 | " if is_valid:\n", 118 | " filtered_runs.append(run)\n", 119 | " runs = filtered_runs\n", 120 | "\n", 121 | " # Collect all of the run histories into a dataframe\n", 122 | " data = []\n", 123 | " for run in runs:\n", 124 | " if \"self\" in run.config:\n", 125 | " del run.config[\"self\"] # Present in SGD runs, but causes python errors\n", 126 | " # List values cause problems when assigning to a dataframe\n", 127 | " for key, value in run.config.items():\n", 128 | " if isinstance(value, list):\n", 129 | " run.config[key] = \", \".join(value)\n", 130 | " run_data = run.history(samples=1000000, x_axis=x_axis, keys=metrics)\n", 131 | " run_data = run_data.assign(run_id=run.id, **run.config)\n", 132 | " data.append(run_data)\n", 133 | " data = pd.concat(data)\n", 134 | "\n", 135 | " # Re-order columns\n", 136 | " data = data[[\"run_id\", x_axis] + metrics + list(run.config.keys())]\n", 137 | "\n", 138 | " # Cache data\n", 139 | " if save_path is not None:\n", 140 | " data.to_csv(save_path, index=False)\n", 141 | "\n", 142 | " return data\n", 143 | "\n", 144 | "\n", 145 | "# Plotting\n", 146 | "\"\"\"default method order in plots\n", 147 | "\n", 148 | " Example:\n", 149 | " [\"prequential\", \"train\", ...]\n", 150 | "\"\"\"\n", 151 | "default_method_order = [\n", 152 | "]\n", 153 | "\n", 154 | "\"\"\"default method color in plots\n", 155 | "\n", 156 | " Example:\n", 157 | " \"prequential\": sns.color_palette()[0],\n", 158 | " \"train\": sns.color_palette()[1],\n", 159 | " ...\n", 160 | "\"\"\"\n", 161 | "default_method_hue = {\n", 162 | "}\n", 163 | "\n", 164 | "\n", 165 | "\"\"\"rename metrics\n", 166 | "\n", 167 | " Example: \n", 168 | " \"val_tasks/n_sample_loss_train\": \"Training error\",\n", 169 | " \"b_kl\": \"Generalization error\",\n", 170 | "\"\"\"\n", 171 | "metric_name_map = {\n", 172 | "}\n", 173 | "\n", 174 | "def custom_plot(\n", 175 | " ax,\n", 176 | " data,\n", 177 | " x,\n", 178 | " y,\n", 179 | " xlabel,\n", 180 | " ylabel,\n", 181 | " hue=None,\n", 182 | " hide_legend: bool = True,\n", 183 | " errorbar: str = \"se\",\n", 184 | " **kwargs,\n", 185 | "):\n", 186 | " # methods = data[\"method\"].unique()\n", 187 | " hue_order = None # [m for m in default_method_order if m in methods]\n", 188 | " palette = None # {m: default_method_hue[m] for m in methods}\n", 189 | "\n", 190 | " sns.lineplot(\n", 191 | " data=data,\n", 192 | " x=x,\n", 193 | " y=y,\n", 194 | " hue=hue,\n", 195 | " hue_order=hue_order,\n", 196 | " palette=palette,\n", 197 | " errorbar=errorbar,\n", 198 | " ax=ax,\n", 199 | " **kwargs,\n", 200 | " )\n", 201 | "\n", 202 | " ax.set(\n", 203 | " xscale=\"log\",\n", 204 | " xlabel=xlabel,\n", 205 | " ylabel=ylabel, #metric_name_map[y],\n", 206 | " )\n", 207 | " if hide_legend:\n", 208 | " ax.legend().remove()\n", 209 | "\n", 210 | " return ax\n", 211 | "\n", 212 | "\n", 213 | "def smooth_data(\n", 214 | " data,\n", 215 | " metrics,\n", 216 | " sigma=20.0,\n", 217 | "):\n", 218 | " metrics = [m for m in metrics if m in data.columns]\n", 219 | "\n", 220 | " def smooth(x, smoothing_columns, sigma):\n", 221 | " x.loc[:, smoothing_columns] = gaussian_filter1d(\n", 222 | " x[smoothing_columns], sigma, axis=0\n", 223 | " )\n", 224 | " return x\n", 225 | "\n", 226 | " data = data.sort_values([\"run_id\",\"epoch\"])\n", 227 | " data = (\n", 228 | " data.groupby(\"run_id\")\n", 229 | " .apply(\n", 230 | " lambda x: smooth(x, metrics, sigma=sigma),\n", 231 | " include_groups=False,\n", 232 | " )\n", 233 | " .reset_index(level=\"run_id\")\n", 234 | " )\n", 235 | "\n", 236 | " return data" 237 | ] 238 | }, 239 | { 240 | "cell_type": "markdown", 241 | "metadata": {}, 242 | "source": [ 243 | "## Example of how to use the API to get the data:" 244 | ] 245 | }, 246 | { 247 | "cell_type": "code", 248 | "execution_count": null, 249 | "metadata": {}, 250 | "outputs": [], 251 | "source": [ 252 | "# Example from the project \"Prequential-ICL\"\n", 253 | "data_icl_linreg = get_run_results(\n", 254 | " entity=\"dhanya-shridar\",\n", 255 | " project=\"Prequential-ICL\",\n", 256 | " metrics=[\"val_tasks/n_sample_loss_nexttoken\"],\n", 257 | " x_axis=\"n_samples\",\n", 258 | " filters={\n", 259 | " \"config.dataset.name\": \"linear_regression\",\n", 260 | " \"config.task_name\": \"meta_optimizer\",\n", 261 | " \"tags\": {\n", 262 | " \"$in\": [\n", 263 | " \"experiments/prequential_vs_train/regression\",\n", 264 | " ]\n", 265 | " },\n", 266 | " },\n", 267 | " user=\"ericelmoznino\",\n", 268 | " save_path=\"data/icl_linreg.csv\",\n", 269 | ")\n", 270 | "data_icl_linreg = smooth_data(data_icl_linreg, [\"val_tasks/n_sample_loss_nexttoken\"])\n", 271 | "data_icl_linreg[\"method\"] = data_icl_linreg[\"meta_objective\"]" 272 | ] 273 | }, 274 | { 275 | "cell_type": "code", 276 | "execution_count": null, 277 | "metadata": {}, 278 | "outputs": [], 279 | "source": [ 280 | "fig, axs = plt.subplots(1, 3, figsize=(5.5, 1.3))\n", 281 | "\n", 282 | "custom_plot(axs[0], data_icl_linreg, x=\"n_samples\", y=\"val_tasks/n_sample_loss_nexttoken\")\n", 283 | "custom_plot(axs[1], data_icl_linreg, x=\"n_samples\", y=\"val_tasks/n_sample_loss_nexttoken\")\n", 284 | "custom_plot(axs[2], data_icl_linreg, x=\"n_samples\", y=\"val_tasks/n_sample_loss_nexttoken\")\n", 285 | "\n", 286 | "axs[0].set(title=\"First plot\")\n", 287 | "axs[1].set(title=\"Second plot\", ylabel=None)\n", 288 | "axs[2].set(title=\"Third plot\", ylabel=None)\n", 289 | "\n", 290 | "fig.savefig(\"saved/example.pdf\")\n", 291 | "\n", 292 | "plt.show()" 293 | ] 294 | }, 295 | { 296 | "cell_type": "markdown", 297 | "metadata": {}, 298 | "source": [ 299 | "# Appendix\n", 300 | "\n", 301 | "This section contains all the plots that will go in Appendix" 302 | ] 303 | } 304 | ], 305 | "metadata": { 306 | "kernelspec": { 307 | "display_name": "EnvPreq", 308 | "language": "python", 309 | "name": "python3" 310 | }, 311 | "language_info": { 312 | "codemirror_mode": { 313 | "name": "ipython", 314 | "version": 3 315 | }, 316 | "file_extension": ".py", 317 | "mimetype": "text/x-python", 318 | "name": "python", 319 | "nbconvert_exporter": "python", 320 | "pygments_lexer": "ipython3", 321 | "version": "3.10.15" 322 | } 323 | }, 324 | "nbformat": 4, 325 | "nbformat_minor": 2 326 | } 327 | -------------------------------------------------------------------------------- /report/plots/saved/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/3rdCore/Research_Project_Template/e6a9c7d18e727b903f916fe9581b7715a9fcdb67/report/plots/saved/.gitkeep -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | pre-commit 2 | numpy 3 | pandas 4 | matplotlib 5 | seaborn 6 | torch 7 | lightning 8 | torchdata 9 | wandb 10 | omegaconf 11 | hydra-core 12 | beartype 13 | submitit 14 | hydra-submitit-launcher 15 | pytest 16 | -------------------------------------------------------------------------------- /src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/3rdCore/Research_Project_Template/e6a9c7d18e727b903f916fe9581b7715a9fcdb67/src/.gitkeep -------------------------------------------------------------------------------- /src/dataset.py: -------------------------------------------------------------------------------- 1 | import copy 2 | import warnings 3 | from abc import ABC, abstractmethod 4 | from typing import Any, Dict, Iterable, List, Literal, Optional 5 | 6 | import numpy as np 7 | import torch 8 | import torch.nn as nn 9 | from beartype import beartype 10 | from lightning import LightningDataModule 11 | from pytorch_lightning.utilities.seed import isolate_rng 12 | from torch import FloatTensor, Tensor 13 | from torch.utils.data import DataLoader, Dataset 14 | from torchdata.datapipes.map import MapDataPipe 15 | 16 | warnings.filterwarnings("ignore", message=".*does not have many workers.*") 17 | 18 | 19 | class Custom_Dataset(Dataset): 20 | @beartype 21 | def __init__( 22 | self, 23 | ): 24 | super().__init__() 25 | # add your setup 26 | 27 | self.data, self.task_params = self.gen_data() 28 | 29 | @beartype 30 | def __len__(self) -> int: 31 | pass 32 | 33 | @beartype 34 | def __getitem__( 35 | self, index 36 | ) -> Any: # be careful of the return type, please read lightning doc for best-practices 37 | pass 38 | 39 | @beartype 40 | @torch.inference_mode() 41 | def gen_data( 42 | self, 43 | n_samples: int, 44 | ) -> Any: # be careful on the return type 45 | x = None 46 | y = None 47 | data_dict = {"x": x, "y": y} 48 | params_dict = None 49 | 50 | return data_dict, params_dict 51 | 52 | 53 | class CustomDataModule(LightningDataModule): 54 | @beartype 55 | def __init__( 56 | self, 57 | train_dataset: Dataset, 58 | val_dataset: Dataset, 59 | batch_size: int, 60 | num_workers: int = 0, 61 | ): 62 | super().__init__() 63 | self.save_hyperparameters() 64 | self.train_dataset = train_dataset 65 | self.val_dataset = val_dataset 66 | 67 | # setup 68 | 69 | @beartype 70 | def train_dataloader(self) -> DataLoader: 71 | return DataLoader( 72 | self.train_dataset, 73 | batch_size=self.hparams.batch_size, 74 | num_workers=self.hparams.num_workers, 75 | shuffle=True, 76 | collate_fn=None, 77 | ) 78 | 79 | @beartype 80 | def val_dataloader(self) -> DataLoader: 81 | return DataLoader( 82 | self.val_dataset, 83 | batch_size=self.hparams.batch_size, 84 | num_workers=self.hparams.num_workers, 85 | shuffle=False, 86 | collate_fn=None, 87 | ) 88 | -------------------------------------------------------------------------------- /src/model.py: -------------------------------------------------------------------------------- 1 | from abc import ABC, abstractmethod 2 | from typing import Any 3 | 4 | import torch 5 | from beartype import beartype 6 | from torch import Tensor, nn 7 | from torch.nn import functional as F 8 | 9 | 10 | class abstract_model(ABC, nn.Module): 11 | def __init__(self): 12 | super().__init__() 13 | 14 | @abstractmethod 15 | def forward(self, x: Any) -> Any: 16 | """Perform forward pass of the model.""" 17 | pass 18 | 19 | 20 | class my_model(abstract_model): 21 | @beartype 22 | def __init__( 23 | self, 24 | ) -> None: 25 | super().__init__() 26 | 27 | @beartype 28 | def forward(self, x: Any) -> Any: 29 | """Perform forward pass of the model.""" 30 | pass 31 | 32 | @beartype 33 | def to(self, device): 34 | super().to(device) 35 | # custom .to operations here 36 | return self 37 | -------------------------------------------------------------------------------- /src/scripts/run.sh: -------------------------------------------------------------------------------- 1 | 2 | ######################################################### 3 | #This is where you can launch your code from the command line 4 | 5 | 6 | # For launching parallel jobs, you can use the following command with --multirun: 7 | # This will start a naive grid search over the carthesian product of the arguments you provide 8 | 9 | python train.py --multirun hydra/launcher=mila_tom save_dir=logs seed=0,1,2,3,4 my_custom_argument=config_1,config_2 10 | 11 | # For launching a single job, you can use the same command without --multirun. Make sure to provide a single value for each argument : 12 | 13 | python train.py hydra/launcher=mila_tom save_dir=logs seed=0 my_custom_argument=config_1 14 | 15 | # For more information on how to use Hydra, please refer to the documentation: https://hydra.cc/docs/intro 16 | ######################################################### 17 | -------------------------------------------------------------------------------- /src/task.py: -------------------------------------------------------------------------------- 1 | import random 2 | from abc import ABC, abstractmethod 3 | from typing import Any, Iterable, Literal 4 | 5 | import torch 6 | from beartype import beartype 7 | from lightning import Callback, LightningModule 8 | from torch import Tensor 9 | 10 | 11 | class my_custom_task(ABC, LightningModule): 12 | @beartype 13 | def __init__( 14 | self, 15 | lr: float = 1e-4, 16 | ): 17 | super().__init__() 18 | self.save_hyperparameters() # ignore the instance of nn.Module that are already stored ignore=['my_module']) 19 | 20 | @beartype 21 | def forward(self, x: Any) -> Any: 22 | """Forward pass of the model.""" 23 | pass 24 | 25 | @beartype 26 | def training_step(self, data, batch_idx) -> Tensor: 27 | pass 28 | # return loss #can also return a dict with key 'loss' 29 | 30 | @beartype 31 | def validation_step(self, data, batch_idx) -> Tensor: 32 | pass 33 | # return loss #can also return a dict with key 'loss' 34 | 35 | @abstractmethod 36 | def loss_function(self, target: Any, preds: Any) -> Tensor: 37 | """Loss function to be used in the training loop.""" 38 | pass 39 | 40 | """ example of lightning hooks that can be overwrited 41 | @torch.inference_mode() 42 | def on_train_end(self): 43 | pass 44 | """ 45 | 46 | def configure_optimizers(self) -> None: 47 | return torch.optim.Adam(self.parameters(), lr=self.hparams.lr) 48 | 49 | """example of property that can be added 50 | @property 51 | def is_a_lightning_module(self) -> bool: 52 | return True 53 | """ 54 | 55 | 56 | class MyCustomCallback(Callback): 57 | def __init__(self) -> None: 58 | super().__init__() 59 | 60 | def on_train_epoch_start(self, trainer, pl_module) -> None: # pl_module is the LightningModule 61 | # setattr(pl_module, "my_param", new_param) 62 | pass 63 | -------------------------------------------------------------------------------- /src/train.py: -------------------------------------------------------------------------------- 1 | import hydra 2 | import torch 3 | from lightning import Trainer, seed_everything 4 | from omegaconf import OmegaConf 5 | 6 | from utils import ast_eval 7 | 8 | # torch.set_float32_matmul_precision("medium") # or 'high' based on your needs 9 | 10 | 11 | @hydra.main(config_path="../configs/", config_name="train", version_base=None) 12 | def train(cfg): 13 | seed_everything(cfg.seed) 14 | dataset = hydra.utils.instantiate( 15 | cfg.datamodule 16 | ) # can also pass previously instantiated object : (attribute=my_attribute)! 17 | task = hydra.utils.instantiate(cfg.task) 18 | logger = hydra.utils.instantiate(cfg.logger) if cfg.logger else False 19 | callbacks = ( 20 | [hydra.utils.instantiate(cfg.callbacks[cb]) for cb in cfg.callbacks] if cfg.callbacks else None 21 | ) 22 | 23 | if logger: 24 | logger.experiment.config.update(OmegaConf.to_container(cfg, resolve=True)) 25 | logger.experiment.config.update({"seed": cfg.seed}) 26 | 27 | trainer = Trainer( 28 | logger=logger, 29 | callbacks=callbacks, 30 | enable_checkpointing=False, 31 | **cfg.trainer, 32 | ) 33 | trainer.fit(model=task, datamodule=dataset) 34 | 35 | 36 | if __name__ == "__main__": 37 | train() 38 | -------------------------------------------------------------------------------- /src/utils/ast_eval.py: -------------------------------------------------------------------------------- 1 | """Contains an AST-based math expression resolver for omegaconf/hydra. 2 | 3 | Ever wondered if it is possible to solve simple math equations in an OmegaConf config (or in a 4 | Hydra config)? well, this is the solution: simply import this module in your python app where you 5 | intend to use omegaconf (or Hydra), and then use the `{ast_eval:'EXPRESSION'}` resolver. 6 | 7 | Enjoy! 8 | """ 9 | 10 | import ast 11 | import operator as op 12 | 13 | import omegaconf 14 | from beartype import beartype 15 | 16 | supported_ast_operators = { 17 | ast.Add: op.add, 18 | ast.Sub: op.sub, 19 | ast.Mult: op.mul, 20 | ast.Div: op.truediv, 21 | ast.USub: op.neg, 22 | } 23 | 24 | supported_ast_nodes = ( 25 | ast.Expression, 26 | ast.BinOp, 27 | ast.UnaryOp, 28 | ast.Constant, 29 | *supported_ast_operators.keys(), 30 | ) 31 | 32 | 33 | @beartype 34 | def _ast_eval_expr(node): 35 | """Evaluates part of an expression (potentially recursively).""" 36 | if isinstance(node, ast.Num): 37 | return node.n 38 | elif isinstance(node, ast.BinOp): 39 | return supported_ast_operators[type(node.op)]( # noqa 40 | _ast_eval_expr(node.left), 41 | _ast_eval_expr(node.right), 42 | ) 43 | elif isinstance(node, ast.UnaryOp): 44 | return supported_ast_operators[type(node.op)](_ast_eval_expr(node.operand)) # noqa 45 | else: 46 | raise ValueError(f"unsupported operation: {type(node)}") 47 | 48 | 49 | @beartype 50 | def ast_eval(expression: str): 51 | """Evaluates a simple arithmetic expression using the AST package.""" 52 | node = ast.parse(expression, mode="eval") 53 | subnodes = list(ast.walk(node)) 54 | node_types_supported = [isinstance(n, supported_ast_nodes) for n in subnodes] 55 | if not all(node_types_supported): 56 | unsupported_types = ", ".join( 57 | [ 58 | str(type(subnodes[nidx])) 59 | for nidx, supported in enumerate(node_types_supported) 60 | if not supported 61 | ] 62 | ) 63 | raise ValueError( 64 | "invalid expression; only simple arithmetic ops are supported\n" 65 | f"found invalid expression node type(s): {unsupported_types}" 66 | ) 67 | return _ast_eval_expr(node.body) 68 | 69 | 70 | omegaconf.OmegaConf.register_new_resolver("ast_eval", ast_eval) 71 | 72 | 73 | # Example usage: 74 | 75 | assert ast_eval("2 * (-4 + 15 / 2)") == 7 76 | 77 | config = omegaconf.OmegaConf.create( 78 | { 79 | "a": 4, 80 | "b": 15, 81 | "result": "${ast_eval:'2 * (-${a} + ${b} / 2)'}", 82 | } 83 | ) 84 | assert config.result == 7 85 | -------------------------------------------------------------------------------- /tests/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/3rdCore/Research_Project_Template/e6a9c7d18e727b903f916fe9581b7715a9fcdb67/tests/.gitkeep -------------------------------------------------------------------------------- /tests/test_all.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | 3 | ######################################################### 4 | 5 | # This is a dummy test to check if the test suite is working 6 | # For more information on how to use pytest, visit https://docs.pytest.org/en/stable/ 7 | 8 | # Make sure your test functions start with test_ 9 | ######################################################### 10 | 11 | 12 | def test_Hello_World(): 13 | print("Hello World") 14 | assert True 15 | --------------------------------------------------------------------------------