├── .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 |
--------------------------------------------------------------------------------