===== Python Development =====
* Use the [[https://cw.felk.cvut.cz/forum/forum-1728.html|forum]] to discuss any Python issues.
* If you want to use an IDE, there is a professional PyCharm licence available at [[https://download.cvut.cz|https://download.cvut.cz]] (but feel free to use [[https://www.xkcd.com/378/|butterflies]] instead).
* If you have experience with MATLAB programming, you can start by [[https://docs.scipy.org/doc/numpy/user/numpy-for-matlab-users.html|Numpy for MATLAB users]].
===== Common Issues and Solutions =====
* Not working with correct shapes of input/output data: Shapes of all input/output data are defined in the docstring of individual methods. Please strictly stick to the prescribed shapes.
* If you want to use i.e. np array <1xn> as (n,), you can use np.squeeze() in the beginning of the method.
* For returning data in certain shape, you can use np.expand_dims() or np.at_leastXd() (where X is the number of dimmensions).
* The template does not specify something correctly or differs from the assignment text
* You are probably using an old version of the template. As noted in the git repository readme: **Keep in mind that the assignments and the assignment templates will be updated during the semester. Always pull the current template version before starting to work on an assignment!**
===== Assignment Templates =====
* All assignment templates are stored in a [[https://gitlab.fel.cvut.cz/B201_B4B33RPZ/rpz-python-assignment-templates|git repository]]
* If you don't know how to use git: [[https://git-scm.com/book/en/v2|Pro Git book]], [[https://try.github.io/]], duckduck, google, ...
* Follow the instruction in the repository README
* Make sure to get the current template version before starting to work on an assignment
* Make sure **not to push the repository with your solutions to any public remote (=plagiarism!!!)**, you can use [[https://gitlab.fel.cvut.cz/|FEE GitLab]] for private remote repo.
* Each assignment template contains a Jupyter notebook (.ipynb) that you can use to testrun the assignment functions you implement. **This notebook will not be checked by the BRUTE.**
===== Package Versions =====
* The evaluation server has the following packages installed:
* python 3.9.2
* numpy (1.19.5)
* matplotlib (3.3.4)
* scipy (1.6.0)
* pillow (8.1.2)
* pandas (1.1.5)
* torch (1.8.1+cpu)
* torchvision (0.9.1+cpu)
* If there is something important missing, please contact us on [[https://cw.felk.cvut.cz/forum/forum-1728.html|forum]]. We will do our best to install it on the evaluation server.
===== Setup recommended by Radim =====
This setup is recommended by Radim Shpetleek(tm)(r) {{:courses:be5b33rpz:labs:rs.jpg?50|}}. \\ Works both on Windows and Linux. The macOS is not for serious work anymore.\\
- Install [[https://docs.conda.io/en/latest/miniconda.html|Miniconda]], Python version 3.X.\\
- Run **conda** CLI.\\
- Create conda environment and install basic apps with conda create --name rpz python=3 numpy matplotlib scipy pillow pandas
- Do one of the following:
**Work in the interactive python interpreter** after activating the environment with conda activate rpz
**OR** \\ \\
**Work in an IDE of your choice** (IntelliJ PyCharm, of course) and set the interpreter of your project to the **python** executable/binary in your environment's path. Run your scripts using PyCharm's //configurations//.[[https://docs.anaconda.com/anaconda/user-guide/tasks/integration/python-path/|How to find the path to your environment's interpreter?]]\\