Python resources

These are some of the resource to introduce you to basics Python. The resources contain videos, articles, books. Please feel free to come to iHuman lab and ask anyone at lab to get more information.

General resources

Getting Started

Whether you’re a beginner looking to set up your first Python environment or an experienced developer aiming to enhance efficiency, this tutorial guides you through configuring tools, managing dependencies, and mastering workflows that maximize your productivity.

Real python: Perfect Your Python Development Setup

  • Explore the essential steps to streamline and optimize your Python development environment
  • Dive into foundational concepts, discover expert tips, and learn to tailor your development setup to suit your specific needs

Conda

Dive deeper into efficient project management with Conda, a versatile tool for creating and managing Python environments. Whether you’re developing software or conducting research, Conda ensures seamless environment setup, eliminating dependency conflicts and promoting project reproducibility. Navigate Conda confidently to streamline your coding workflow and enhance collaboration.

Discover Conda’s capabilities: Why You Need Python Environments and How to Manage Them with Conda

  • Master the installation and utilization of Conda to create isolated Python environments tailored to your project requirements.
  • Learn best practices for environment management to optimize development efficiency and maintain code integrity.

Scientific Computing

Elevate your scientific computing endeavors with “Good Enough Practices in Scientific Computing.” This comprehensive guide equips you with essential methodologies for optimizing code performance, ensuring data integrity, and promoting reproducibility in research settings. Adopt best practices to enhance the efficiency and transparency of your scientific coding workflows.

Enhance your scientific practices here: Good Enough Practices in Scientific Computing

  • Navigate the guide to implement foundational practices in scientific programming, including effective data management and workflow optimization.
  • Incorporate version control strategies and virtual environments to maintain project integrity and facilitate collaboration in research environments.

Open Source

Engage with the dynamic world of open-source development through the Open Source Guide. Embrace collaboration and community-driven innovation as you navigate the principles of contributing effectively to open-source projects. From mastering version control with Git to exploring diverse projects aligned with your interests, empower yourself to make meaningful contributions and foster professional growth.

Join the open-source community here: Open Source Guide

  • Familiarize yourself with the ethos and methodologies of open-source development outlined in the Open Source Guide.
  • Enhance your proficiency in Git version control to efficiently manage code revisions and facilitate collaborative coding efforts.

PyVideo

Immerse yourself in PyVideo’s repository of educational content, where industry experts share profound insights and innovative practices in Python programming. From foundational concepts to advanced techniques and emerging trends, PyVideo enriches your learning journey with comprehensive tutorials and conference talks. Stay informed, inspired, and ahead in the ever-evolving Python ecosystem.

Explore PyVideo’s resources here: PyVideo

  • Navigate PyVideo to access a wealth of video content covering diverse topics in Python programming.
  • Take notes and integrate key learnings from expert presentations into your coding practices and project development.

WTF Python

Delve into the intriguing intricacies of Python with WTF Python—a curated collection of code snippets that unravel surprising behaviors and lesser-known features. Challenge yourself to decode these puzzling aspects of Python programming, gaining deeper insights into its flexibility and functionality. Discover the nuances that make Python a preferred language for diverse applications.

Unveil Python’s mysteries here: WTF Python

  • Engage with WTF Python to explore unconventional Python behaviors and expand your programming horizons.
  • Experiment with provided code snippets to deepen your understanding of Python’s unique capabilities and edge cases.

Python Tutor

Python Tutor, a sophisticated platform where code transcends the screen. Visualize your code execution step-by-step, gaining invaluable insights into Python’s mechanics. This interactive tool transforms abstract concepts into tangible understanding, making complex programming principles accessible and engaging.

Explore Python Tutor here: Python Tutor

  • Utilize Python Tutor to visualize code execution and understand variable interactions dynamically.
  • Experiment with different code snippets to solidify your grasp on fundamental Python concepts.

Visualizing NumPy

Capitalize on NumPy’s prowess in numerical computing and data manipulation through interactive tutorials offered by Visualizing NumPy Operations. Enhance your proficiency in array operations, indexing techniques, and vectorized computations with visual demonstrations that illustrate complex concepts effectively. Strengthen your skills to tackle sophisticated data-centric challenges with confidence and precision.

Master NumPy’s capabilities here: Visualizing NumPy Operations

  • Explore interactive tutorials on Visualizing NumPy Operations to deepen your understanding of NumPy’s capabilities and applications.
  • Apply learned concepts to practical scenarios, refining your data manipulation skills and optimizing performance in computational tasks.

Websites

Are you gearing up for job interviews or seeking internship opportunities in the realm of programming? Mastering Python can significantly enhance your skillset and boost your competitiveness in the job market. Here’s a tailored selection of platforms designed to equip you with essential Python skills and prepare you effectively for technical assessments:

  • Edx If you are new to python programming, definitely take Introduction to Computer Science and Programming Using Python course. It is one of the best courses out there from which you can learn lot of fundamental python programming skills.

  • HackerRank HackerRank has lot of resources to learn many programming languages. Regestration is free.

  • LeetCode LeetCode is much intensive platform to learn coding. It can be used if you want to prepare for interviews.

PyCon

PyCon is one of the best way to get in touch with great Python community. Lot of great talks and tutorials (highly recommended!).

Pytorch

As a new student, Pytroch will be an essential tool for your deep learning research due to its flexibility and extensive community support. To streamline your workflow and boost productivity, we’ve compiled a guide to key PyTorch libraries and tools that simplify model development, training, and evaluation.

A github repository with lot of resources: The incredible Pytorch

PyTorch Lightning

GitHub Link: PyTorch Lightning

PyTorch Lightning is our preferred framework for developing deep learning models in the lab. It automates the tedious aspects of deep learning research, such as setting up training loops, logging metrics, and handling distributed training across multiple GPUs or TPUs. By standardizing best practices and providing a clean interface, PyTorch Lightning enables rapid prototyping and seamless scaling of research projects.

Key Features:

  • Automated Training Loop: Write minimal code to define your model, optimizer, and data loaders, and PyTorch Lightning takes care of the rest.
  • Reproducibility: Ensures deterministic training behavior for reproducible research results.
  • Scalability: Easily scale your models from single GPU to multi-GPU or even distributed training without changing your codebase.
  • Experiment Management: Built-in support for logging, visualization, and tracking experiments, making it easier to monitor and compare model performance.

In our lab, we predominantly use PyTorch Lightning for its ability to accelerate the development cycle and ensure consistency across experiments. It encourages best practices in deep learning research and facilitates collaboration among team members.

Ray

Another python package we extensively use in our lab is Ray. Ray a powerful parallel processing library designed to streamline distributed computing tasks in Python. Whether you’re working with machine learning models, simulations, or data processing pipelines, Ray provides efficient tools for scaling your applications across multiple cores or clusters.

Key Features of Ray

Task Parallelism with Remote Functions

Ray enables you to define functions (@ray.remote) that can execute asynchronously across multiple workers. These functions can leverage the computing resources efficiently, executing tasks concurrently without blocking the main thread.

Actor Model for Stateful Services

Ray’s Actor model allows you to create and manage stateful objects that maintain their internal state across multiple function invocations. This is useful for building complex applications where maintaining state across distributed components is crucial.

Distributed Data Processing with Ray Libraries

Ray comes with additional libraries that extend its capabilities for distributed computing:

Resources and Documentation

Explore more about Ray’s capabilities, including installation guides, tutorials, and API references, through its official documentation: