UVA Research Computing

Research Computing

Creating innovative solutions for researchers

/tag/ivy

  • Ivy Secure Environment

    Ivy Ivy is a secure computing environment for researchers consisting of virtual machines (Linux and Windows) and Jupyter Notebooks. Researchers can use Ivy to process and store sensitive data with the confidence that the environment is secure and meets HIPAA requirements. Overview Ivy consists of two separate computing environments. Access to one environment does not automatically grant access to the others: Virtual Machines JupyterLab Notebooks - Coming Soon! Data Transfer In/Out of Ivy HIPAA Compliance Coming Soon - Secure HPC Requesting Access University of Virginia tenure stream and academic general faculty, research faculty, research scientists, and postdoctoral associates may request an account on Ivy.
  • Globus Data Transfer

    Globus Data Transfer Is a simplified way to access and move your research data, across all systems, using any existing identity. Transfer data to and from systems such as: Laptops HPC clusters (Rivanna) Secure computing (Ivy) Lab / departmental storage Tape archives Cloud storage Off-campus resources (XSEDE, National Labs) Access them all using just a web browser. This can help you share research data with colleagues, co-investigators, or to move data back and forth between a lab workstation and Rivanna or your personal computer. Data stored at a different institution? At a supercomputing facility? All you need is your campus login.
  • Non-Sensitive Data Storage

    /home /home is a free 50GB space provided to users of the Rivanna HPC system and is visible from the Rivanna login and compute nodes. /home is the default working directory when logging on to Rivanna. Users can also access their home directory at /home/$USER, where $USER is an individual’s UVa computing ID. /scratch /scratch is a Lustre high performance parallel filesystem accessible via the Rivanna login and compute nodes. All Rivanna HPC users are granted 10TB for free and can access this space within Rivanna at /scratch/$USER, where $USER is an individual’s UVa computing ID. The /scratch directory is not intended for long-term data storage.
  • Computing Environments at UVA

    Rivanna The primary vehicle for high-performance computing since 2014 has been the Rivanna cluster. Rivanna is a heterogenous system consisting of approximately 186 x 20-core nodes with 128GB of RAM each, 25 x 28-core nodes with 256 GB of RAM, and 152 x 40-core nodes with 384GB each. Five “big memory” nodes offer 1TB of RAM with 16 cores each. All nodes are supported by a high-performance FDR Infiniband network using Mellanox hardware and some have EDR Infiniband. A number of nodes supporting specialty hardware are included; there are 8 nodes with NVIDIA K80 GPGPUs, 4 nodes with NVIDIA V100 GPGPUs, 1 node with NVIDIA V100, and 2 nodes with NVIDIA RTX2080TI boards.
  • Computing Systems

    UVA Research Computing can help you find the right system for your computational workloads. From supercomputers to HIPAA secure systems to cloud-based deployments with advanced infrastructure, various systems are available to researchers. Are you submitting a grant proposal and need standard information about UVA research computing environments? Get it here. High Performance Computing - Rivanna A traditional high performance cluster with job scheduler, large file system, modules, and MPI processing. Get Started on Rivanna
    Secure Computing for Sensitive Data - Ivy A multi-platform, HIPAA-compliant system for secure data that includes dedicated virtual machines (Linux and Windows), JupyterLab Notebooks, and Apache Spark.

  • Workshops

    UVA Research Computing provides training opportunities covering a variety of data analysis, basic programming and computational topics. All of the classes listed below are taught by experts and are freely available to UVa faculty, staff and students. Upcoming Workshops DATE WORKSHOP INSTRUCTOR 01/30/20 Using Rivanna from the Command Line Gladys Andino 01/31/20 Fundamentals of Matlab Ed Hall 02/06/20 Parallel Computing with Matlab Ed Hall 02/11/20 Shiny Web Apps in R Christina Gancayco 02/13/20 Software Containers for HPC Environments Ruoshi Sun 02/13/20 Statistical Methods in Matlab Ed Hall 02/18/20 Intro to Image Processing with Fiji/ImageJ Karsten Siller 02/19/20 Moving R to HPC Jackie Huband 02/20/20 High Performance Python Karsten Siller 02/20/20 Optimization Methods in Matlab Ed Hall 02/25/20 Automation of Image Processing with Fiji/ImageJ Karsten Siller 02/26/20 Optimizing R Code Jackie Huband 02/27/20 C/C++ and Fortran on Rivanna Ruoshi Sun 02/27/20 Deep Learning in Matlab Christina Gancayco 03/04/20 Parallelizing R Jackie Huband 03/05/20 Image Processing in Matlab Christina Gancayco 03/18/20 Parallel R with MPI Jackie Huband 03/26/20 Julia on Rivanna Ed Hall View All Upcoming Workshops on CADRE Academy ↗]() – View All Upcoming Workshops
  • Pricing

    Below is a schedule of prices for Research Computing resources. Rivanna Allocations Type SU Limits Cost SU Lifetime Standard 100,000 per application; renewable up to 3x per year (400,000 total SUs) Free 12 months Deans’ Allocations None Free 12 months by default, negotiable Purchased None $0.015 (<1M SUs); $0.01 (=1M SUs) Forever Instructional 25,000 Free 2 weeks after last teaching session * GPU node charge rate is 2.0 SUs instead of 1.0. ** Non-UVA personnel are charged at a rate of $0.07/SU About Allocations
  • Research Data Storage

    There are a variety of options for storing large-scale research data at UVA. Non-sensitive data storage systems can be accessed from the Rivanna high performance computing system. Sensitive data can be stored and accessed within the Ivy secure computing environment. Information Technology Services (ITS) also provides multiple tiers of data storage for personal and non-research storage needs. .tg {border-collapse:collapse;border-spacing:0;border-color:#ccc;} .tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#fff;} .tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#f0f0f0;} .tg .tg-hy9w{background-color:#eceeef;border-color:inherit;vertical-align:top} .tg .tg-dc35{background-color:#f9f9f9;border-color:inherit;vertical-align:top} .tg .tg-0qmj{font-weight:bold;background-color:#eceeef;border-color:inherit;vertical-align:top} Non-Sensitive Data Storage Name Quota Price Data Protection Accessible from Best Practices Project Storage 1TB increments $60 /TB/yr 2 week snapshots Rivanna, NFS mount /projectis ideal for long-term storage of data to be accessed from Rivanna.
  • Secure Computing for Surgical Research

    RC is working with Dr. Eric Schneider to create a secure computing environment for the research of the Healthcare Surgical Outcome team. Data from this project will contain HIPAA identifiers, as well as Medicare information, and requires more security and control of data ingress/egress than projects previously hosted on the Ivy platform. After successful implementation of this project, RC will create a similar computing environment for DoD blast and traumatic brain injury data collected by Dr. Schneider before he joined UVA. PI: Eric Schneider (Department of Surgery)
  • Bioinformatics Packages on Ivy Linux VM

    Available Packages The following bioinformatics packages are available on the Ivy Linux Virtual Machines Bowtie2 Bowtie2 is a memory-efficient tool for aligning short sequences to long reference genomes. For bowtie2 usage information, please click here HISAT2 HISAT2 is a fast and sensitive tool for aligning short reads against the general human population (as well as single reference genome) * Requires approval before installation For HISAT2 usage information, please click here
  • Bioinformatics Packages on Windows VM

    Available Packages The following bioinformatics packages are available on the Windows Virtual Machines Bowtie2 For more information on bowtie2, please click here HISAT2 Requires approval before installation. For more information on HISAT2, please click here
  • Data Analysis Packages on Ivy Linux VM

    Available Packages The following Data Analysis packages are available on the Ivy Linux Virtual Machines MATLAB MATrix LABoratory (MATLAB for short) is a software designed for quick scientific calculations, such as matrix manipulation, plotting, and others. It has hundreds of built-in functions for a wide variety of computations and several tools designed for specific research disciplines, including statistics and partial differential equations. * Limited licenses available, for more information on MATLAB and licensing, please click here SAS SAS is large platform independent software with multiple components, and is used for statistical analysis, data ETL operations, as well as several other reporting problems.
  • Data Analysis Packages on Ivy Windows VM

    Available Packages The following Data Analysis packages are available on the Ivy Windows Virtual Machines MATLAB MATrix LABoratory (MATLAB for short) is a software designed for quick scientific calculations, such as matrix manipulation, plotting, and others. It has hundreds of built-in functions for a wide variety of computations and several tools designed for specific research disciplines, including statistics and partial differential equations. * Limited licenses available, for more information on MATLAB and licensing, please click here SAS SAS is large platform independent software with multiple components, and is used for statistical analysis, data ETL operations, as well as several other reporting problems.
  • Database Software on Ivy Linux VM

    The following database software are available on the Ivy Linux Virtual Machines MySQL Is the most popular open-source relational database, used in academia and industry worldwide. It has been in use for over 20 years and is backed by a large developer community. It is available in both free and proprietary versions. MariaDB MariaDB is a community developed version of MySQL, and is highly compatible with MySQL and other relational databases. Existing databases can be easily migrated between MySQL and MariaDB, and vice versa. PostgreSQL Unlike MariaDB and MySQL, PostgreSQL is an object relational database, and can be used in a manner similar to other relational databases.
  • UVa Licensed SPSS on Ivy Windows VM

    SPSS Overview SPSS (or Statistical Package for Social Sciences), was initially developed as a social survey project but later on has grown to encompass statistical applications in almost all disciplines. Different industries use SPSS for their data analysis work. Its features include database management, reporting, graphing, among many others. SPSS Usage SPSS is available only on the Windows VM at the moment. To run SPSS go to: Start Menu > All Programs > IBM SPSS Statistics Licensing We have a limited number of SPSS licenses available, which are provided on a first-come-first-serve basis. As a consequence, availability of SPSS on your VM is not always guaranteed once a VM request is submitted.
  • cTAKES on Ivy Linux VMs

    cTAKES Overview cTAKES or The clinical Text Analysis and Knowledge Extraction System, is a Mayo Clinic developed Natural Language Processing (NLP) tool used to extract information out of clinical records. It is open-source, and built on the Apache Unstructured Information Management Architecture. cTAKES is modular, expandable, for a number of generic use cases, and contains excellent best practice notes. cTAKES Usage cTAKES components Some of cTAKES components are listed below: Sentence boundary detection (OpenNLP technology) *Tokenization (rule-based) Morphologic normalization (NLM’s LVG) POS tagging (OpenNLP technology) Shallow parsing (OpenNLP technology) Named Entity Recognition Negation and context identification (both based on NegEx) cTAKES Named Entities cTAKES contains the following Named Entities:
  • cTAKES on Ivy Windows VMs

    cTAKES Overview cTAKES or The clinical Text Analysis and Knowledge Extraction System, is a Mayo Clinic developed Natural Language Processing (NLP) tool used to extract information out of clinical records. It is open-source, and built on the Apache Unstructured Information Management Architecture. cTAKES is modular, expandable, for a number of generic use cases, and contains excellent best practice notes. cTAKES Usage cTAKES components Some of cTAKES components are listed below: Sentence boundary detection (OpenNLP technology) *Tokenization (rule-based) Morphologic normalization (NLM’s LVG) POS tagging (OpenNLP technology) Shallow parsing (OpenNLP technology) Named Entity Recognition Negation and context identification (both based on NegEx) cTAKES Named Entities cTAKES contains the following Named Entities:
  • User Licensed Stata on Ivy Linux VMs

    Stata Overview Stata is a graphical data analysis tool developed by StataCorp, and is short for Statiscs and Data. It is used in various disciplines, including biomedicine, economics, epidemiology, among others. It is capable of performing statistical analysis, simulations, regression, and data management. Besides the standard version Stata also ships with the MP version (multi=processing), and SE for large databases. NB Users requesting an installation of Stata would be required to bring their own license. Please consult with us before requesting an installation. You may also request a Stata license from the UVa Software Gateway
  • User Licensed Stata on Ivy Windows VMs

    Stata Overview Stata is a graphical data analysis tool developed by StataCorp, and is short for Statiscs and Data. It is used in various disciplines, including biomedicine, economics, epidemiology, among others. It is capable of performing statistical analysis, simulations, regression, and data management. Besides the standard version Stata also ships with the MP version (multi=processing), and SE for large databases. NB Users requesting an installation of Stata would be required to bring their own license. Please consult with us before requesting an installation. You may also request a Stata license from the UVa Software Gateway
  • UVa Licensed IDL on Ivy Linux VMs

    IDL Overview IDL, short for Interactive Data Language, is an interactive shell based data analysis programming language. Used vastly in medical imaging, it can quickly create visualizations and graphs of large data sets in a few easy steps due to its vector nature. FORTRAN users would be familiar with the IDL syntax. IDL is not to be confused with Java IDL or Microsoft IDL. Basic IDL Usage To start IDL, open a terminal window and type idl. This will start the interactive shell. Variables in IDL To initialize variables in IDL, type: <variable_name> = <variable_value> e.g. x = 3 and hit Enter/Return
  • UVa Licensed IDL on Ivy Windows VMs

    IDL Overview IDL, short for Interactive Data Language, is an interactive shell based data analysis programming language. Used vastly in medical imaging, it can quickly create visualizations and graphs of large data sets in a few easy steps due to its vector nature. FORTRAN users would be familiar with the IDL syntax. IDL is not to be confused with Java IDL or Microsoft IDL. Licensing We have a limited number of IDL Licenses available, which are provided on a first-come-first-serve basis. As a consequence, availability of IDL on your VM is not always guaranteed once a VM request is submitted.
  • UVa Licensed MATLAB on Ivy Linux Virtual Machines

    MATLAB Overview MATLAB is a high-performance language for technical computing. It integrates computation, visualization, and programming environment. MATLAB stands for MATrix LABoratory. MATLAB was made to provide easy access to matrix software developed by the LINPACK (linear system package) and EISPACK (Eigen system package) projects. MATLAB includes a programming language environment with built-in editing and debugging tools, and supports object-oriented programming. Programming in MATLAB MATLAB has many advantages compared to conventional computer languages (e.g., C, FORTRAN) for solving technical problems. MATLAB is an interactive system whose basic data element is an array, and almost all problems can be solved in MATLAB using that one data element.
  • UVa Licensed MATLAB on Ivy Windows Virtual Machines

    MATLAB Overview MATLAB is a high-performance language for technical computing. It integrates computation, visualization, and programming environment. MATLAB stands for MATrix LABoratory. MATLAB was made to provide easy access to matrix software developed by the LINPACK (linear system package) and EISPACK (Eigen system package) projects. MATLAB includes a programming language environment with built-in editing and debugging tools, and supports object-oriented programming. Programming in MATLAB MATLAB has many advantages compared to conventional computer languages (e.g., C, FORTRAN) for solving technical problems. MATLAB is an interactive system whose basic data element is an array, and almost all problems can be solved in MATLAB using that one data element.
  • UVa Licensed SAS on the Ivy Linux VM

    SAS Overview SAS is a command-driven software package used for statistical analysis and data visualization. It is available in . It is one of the most widely used statistical software packages in both industry and academia. You may use it if you have a large number of statistical algorithms. It is not limited to an industry, and could be used in both scientific and non-scientific contexts. We only offer the Teaching & Research version at the moment. Common Usage For this example we will use a common scenario from SAS Clinical Standards Toolkit, which is used for supporting clinical research activiites.
  • UVa Licensed SAS on the Ivy Windows VM

    SAS Overview SAS is a command-driven software package used for statistical analysis and data visualization. It is available in . It is one of the most widely used statistical software packages in both industry and academia. You may use it if you have a large number of statistical algorithms. It is not limited to an industry, and could be used in both scientific and non-scientific contexts. We only offer the Teaching & Research version at the moment. Common Usage For this example we will use a common scenario from SAS Clinical Standards Toolkit, which is used for supporting clinical research activiites.
  • Image Processing Software on Ivy Linux VM

    Pre-approved packages The following software packages are pre-approved for image processing on an Ivy Linux VM KNIME KNIME is open source analytics platform for data mining and pipelining. KNIME’s Image Processing Plugin allows users to perform common image processing techniques such as registration, segmentation, and feature extraction. KNIME is compatible with over 120 image file types and can be used alongside ImageJ. ImageJ ImageJ is a Java-based image processing program developed at the NIH. ImageJ can be used interactively through a graphical user interface or automatically with Java. OpenCV OpenCV is an open source library for computer vision applications.
  • Image Processing Software on Ivy Windows VM

    Pre-approved packages The following software packages are pre-approved for image processing on an Ivy Windows VM Axiovision Axiovision is software for microscopy image processing and analysis. Axiovision is highly configurableto meet the needs of your individual workflows. KNIME KNIME is open source analytics platform for data mining and pipelining. KNIME’s Image Processing Plugin allows users to perform common image processing techniques such as registration, segmentation, and feature extraction. KNIME is compatible with over 120 image file types and can be used alongside ImageJ. ImageJ ImageJ is a Java-based image processing program developed at the NIH. ImageJ can be used interactively through a graphical user interface or automatically with Java.
  • Preinstalled Java SDK on Ivy Windows VM

    Java SDK Overview Ivy Windows VMs are installed with Java SDK 1.8. Java is a popular Object Oriented programming language and is used in a multitude of scenarios. It is available under the GNU General Public License for all users. The SDK consists of a large number of tools such as javac that help in application development. Running Java commands from the Command Prompt Open a Windows Command Prompt and enter java followed by the desired command. E.g. to find the version of the SDK java -version Running your code To compile java code, first cd to the location of your .
  • Preinstalled Rodeo on Ivy Linux VM

    Rodeo Overview Our Linux VMs are installed with Rodeo version 2.5, as of the last update. Rodeo is a lightweight, Python based, IDE for data science. It has a very streamlined code-to-plot workflow, with easily extensible packages that make it simple to analyze difficult patterns in data. It includes many data analysis features under one roof, and adopts features from iPython Notebook (it actually runs atop the iPython kernel). Like most Python projects, it is open source and available for free. Launching Rodeo You can launch Rodeo from the Applications menu. It is a self contained IDE that would not require any knowledge of the command line.
  • Preinstalled Rodeo On Ivy Windows VM

    Rodeo Overview Our Windows VMs are installed with Rodeo version 1.3, as of the last update. Rodeo is a lightweight, Python based, IDE for data science. It has a very streamlined code-to-plot workflow, with easily extensible packages that make it simple to analyze difficult patterns in data. It includes many data analysis features under one roof, and adopts features from iPython Notebook (it actually runs atop the iPython kernel). Like most Python projects, it is open source and available for free. Launching Rodeo You can launch Rodeo from the Start menu. It is a self contained IDE that would not require any knowledge of the command line.
  • Preinstalled Strawberry Perl on Ivy Windows VM

    Perl Our VMs have Strawberry Perl 5.24 available as part of the Windows VM, as of the last writing. Licensed as open source under the GPL, it is most often used to develop mission critical software, and has excellent integration with markup languages such as HTML, XML, amongst others. Since it is both Object Oriented as well as procedural, it could be used within a multitude of programming projects. It includes built in database integration via its DBI module. Other than DBI, it has thousands of modules, making it one of the most extensible languages. Due to its interpreted nature, Perl is similar to Python and would be easy to understand for those familiar with Python.
  • Sumatra PDF on Ivy Windows VM

    Sumatra PDF Overview Sumatra PDF is an open source software to view PDF files in Windows. It could be used to view PDF documents stored within the Ivy VM. As of the latest version, Sumatra supports multiple formats including PDF, EPUB, MOBI, and XPS. Running Sumatra PDF From the Start menu, go to All Programs and search for Sumatra PDF. Click on the icon to run it. More Information For more information, visit the Sumatra PDF official website.
  • Preinstalled R on Ivy Linux VM

    R Overview R is an open source programming language, used by Data Miners, Scientists, Data Analysts, and Statisticians. It is available under the GNU GPL V2 license from the Comprehensive R Archive Network R can be used for many statistical, modeling, and graphical solutions. It is very Object Oriented in nature and is easily extensible. Running the command line R console Type R at the terminal to launch the R console. Installing packages Our Linux VMs come equipped with R preinstalled. Most major R packages are also installed and further could be installed from CRAN using (from within the R console)
  • Preinstalled R on Ivy Windows VM

    R Overview R is an open source programming language, used by Data Miners, Scientists, Data Analysts, and Statisticians. It is available under the GNU GPL V2 license from the Comprehensive R Archive Network R can be used for many statistical, modeling, and graphical solutions. It is very Object Oriented in nature and is easily extensible. Running Rstudio from the desktop You can start R in a Graphical interface using the RStudio application from the desktop Running the command line R console Type R at the command prompt to launch the R console. Installing packages Our Windows VMs come equipped with R preinstalled.
  • Preinstalled Python 2 and Python 3 with Anaconda on Ivy Linux VM

    Anaconda Our VMs have python 2 and 3 available as part of the Anaconda distribution. Anaconda comes installed with many packages best suited for scientific computing, data processing, and data analysis, while making deployment very simple. Its package manager conda installs and updates python packages and dependencies, keeping different package versions isolated on a project-by-project basis. Anaconda is available as open source under the New BSD license. It also ships with pip, the common python package manager. Installing packages Packages could be installed via pip or conda package managers Installing packages on a Linux VM A) Using conda Open the bash terminal, and type:
  • Preinstalled Python 2 and Python 3 with Anaconda on Ivy Windows VM

    Anaconda Our VMs have python 2 and 3 available as part of the Anaconda distribution. Anaconda comes installed with many packages best suited for scientific computing, data processing, and data analysis, while making deployment very simple. Its package manager conda installs and updates python packages and dependencies, keeping different package versions isolated on a project-by-project basis. Anaconda is available as open source under the New BSD license. It also ships with pip, the common python package manager. Installing packages Packages could be installed via pip or conda package managers Installing packages on a Windows VM A) Using conda From the Start menu, open a new Command Prompt (or Anaconda prompt) window, and type:
  • What is Research Computing?

    UVA Research Computing (RC) is a new program that aims to support computational biomedical research by providing advanced cyberinfrastructure and expertise in data analysis at scale. Our mission is to foster a culture of computational thinking and promote interdisciplinary collaboration in various data-driven research domains. We offer services related to high performance computing, cloud architecture, scientific programming and big data solutions. We also aim to promote computationally intensive research at UVA through collaborative efforts such as UVA’s own CADRE (Computation And Data Resource Exchange) and XSEDE (Extreme Science and Engineering Discovery Environment). One of our driving philosophies is that researchers already have medical and scientific expertise, and should not have to become computing experts on top of that.
  • Preinstalled Office 2016 on Ivy Windows VM

    Microsoft Office Overview The Ivy Windows VMs are installed with Microsoft Office 2016. Features such as OneDrive are not available since Ivy is not connected to the public internet. Therefore in order to load documents in and out of the VM, you would have to use the Globus DTN. Softwares available The following software are available for use on the Ivy Windows VM: Word 2016 Excel 2016 PowerPoint 2016 Access 2016 OneNote 2016 Outlook 2016 Publisher 2016 Running Office All Office software could be accessed from the Start menu using Start > All Programs More Information For more Information about Microsoft Office, please visit its official website.
  • User Guides

    High Performance Computing Standard and high security HPC to run your code, generally written in R, Python or shell scripts. Get Started › Secure Computing Secure virtual machines and interactive notebooks for processing HIPAA and other sensitive data. Get Started ›
    Storage Need large, or extremely large storage offsite or on grounds? Can you count in GB, TB, or PB? Learn more about storage options and pricing. Get Started ›
    Cloud Have an idea you’d like to test? Need an environment provisioned in short-order? We can help you build in the AWS cloud.

  • High Performance Computing

    Research Computing supports all UVA researchers who are interested in writing code to address their scientific inquiries. Whether these programming tasks are implemented interactively, in a series of scripts or as an open-source software package, services are available to provide guidance and enable collaborative development. RC has specific expertise in object oriented programming in Matlab, R, and Python. Examples of service areas include: Collaborating on package development Reviewing and debugging code Preparing scripts to automate or expedite tasks Developing web interfaces for interactive data exploration Advising on integration of existing software tools UVA has two local HPC facilities available to researchers: Rivanna and Ivy.
  • Perl

    Perl Our VMs have Perl 5.16.3 available as part of the base linux VM. Licensed as open source under the GPL, it is most often used to develop mission critical software, and has excellent integration with markup languages such as HTML, XML, amongst others. Since it is both Object Oriented as well as procedural, it could be used within a multitude of programming projects. It includes built in database integration via its DBI module. Other than DBI, it has thousands of modules, making it one of the most extensible languages. Due to its interpreted nature, Perl is similar to Python and would be easy to understand for those familiar with Python.