Python: Difference between revisions

From EMC23 - Satellite Of Love
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
Python is an interpreted high-level general-purpose programming language. Its design philosophy emphasizes code readability with its use of significant indentation. Its language constructs as well as its object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects.
Python is an interpreted high-level general-purpose programming language. Its design philosophy emphasizes code readability with its use of significant indentation. Its language constructs as well as its object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects.


The standard prrogramming language for data science and for us especially:
The standard programming language for data science and for us especially:
 
* [[Machine Learning]], [[Deep  Learning]] using [[tensorflow]] or [[pytorch]])
* audio analysis and manipulation using [[librosa]]
 
Also used to interface with 3d software such as poser 3d/blender and audacity and Libre Office.
 
= Package Manager =
 
* Miniconda is a minimal installer of conda
* Conda is an open-source package management system and environment management system that runs on Windows, macOS, and Linux. Conda quickly installs, runs, and updates packages and their dependencies. Conda easily creates, saves, loads, and switches between environments on your local computer. It was created for Python programs but it can package and distribute software for any language.
 
= Tips =
* Use vector operations over loops when possible
* Kow your data structures and which methods are faster
 
= Statements and control flow =
Python's Statement include (among others):
* The Assignment (computer science)|assignment statement, using a single equals sign <code>=</code>.
* The <code>if-then-else|if</code> statement, which conditionally executes a block of code, along with <code>else</code> and <code>elif</code> (a contraction of else-if).
 
* The <code>Foreach#Python|for]]</code> statement, which iterates over an iterable object, capturing each element to a local variable for use by the attached block.
 
* The <code>While loop#Python|while]]</code> statement, which executes a block of code as long as its condition is true.
 
* The <code>Exception handling syntax#Python|try</code> statement, which allows exceptions raised in its attached code block to be caught and handled by <code>except</code> clauses; it also ensures that clean-up code in a <code>finally</code> block will always be run regardless of how the block exits.
 
* The <code>raise</code> statement, used to raise a specified exception or re-raise a caught exception.
 
* The <code>class</code> statement, which executes a block of code and attaches its local namespace to a class (computer science)|class, for use in object-oriented programming.
* The <code>def</code> statement, which defines a function or method.
 
* The <code>dispose pattern#Language constructs|with</code> statement, which encloses a code block within a context manager (for example, acquiring a [[lock (computer science)|lock]] before the block of code is run and releasing the lock afterwards, or opening a [[Computer file|file]] and then closing it), allowing resource acquisition is initialization (RAII)-like behavior and replaces a common try/finally idiom.
 
* The [[break statement|<code>break</code>]] statement, exits from a loop.
* The <code>continue</code> statement, skips this iteration and continues with the next item.
* The <code>del</code> statement, removes a variable, which means the reference from the name to the value is deleted and trying to use that variable will cause an error. A deleted variable can be reassigned.
* The <code>pass</code> statement, which serves as a [[NOP (code)|NOP]]. It is syntactically needed to create an empty code block.
* The <code>assertion (programming)|assert</code> statement, used during debugging to check for conditions that should apply.
* The <code>yield</code> statement, which returns a value from a generator (computer programming)#Python|generator function and <code>yield</code> is also an operator. This form is used to implement coroutines.
* The <code>return</code> statement, used to return a value from a function.
* The <code>include directive|import</code> statement, which is used to import modules whose functions or variables can be used in the current program.
 
 


* machine learning, deep-learning using [[tensorflow]] or [[pytorch]])


* audio analysis and manipulation using [[librosa]]
= Essential Software =
== Tensorflow ==
 
== Librosa ==
 
== Keras ==
 
== Music21 ==
 
== Matplotlib ==
Graphing and visual displays in Music21 are provided by Matplotlib. Matplotlib itself has additional dependencies (such as NumPy).
 
On Mac if you are using the version from python.org, run:
 
pip3 install matplotlib
 
and you should be set. If you are using a version from anaconda (conda, miniconda, etc.), you should run these lines:
 
conda install matplotlib
conda install python.app
numpy
Numeric extensions to Python. Included with Matplotlib.
 
On Mac if you are using the version of python 3 from python.org, run:
 
pip3 install numpy
and you should be set.
 
== scipy ==
Scientific extensions to Python. These are used to accelerate audio searching and fast-Fourier transforms in music21. If you will only be using symbolic music, it is not used, and not essential in any case.
 
On Mac if you are using the version from python.org, run:
 
pip3 install scipy
and you should be set.
 
== pyaudio ==
Allows for recording within python. We use it for the audioSearch module, and nowhere else. Not essential. Requires portaudio and, on the Mac, the XCode command-line development tools.
 
On the Mac, run:
 
xcode-select --install
brew install portaudio
pip3 install pyaudio
 
== pygame ==
Allows for realtime MIDI performance. We use it in the midi.realtime module, and nowhere else. It is therefore not essential.
 
On the Mac, run:
 
pip3 install pygame
Installing Additional Software Components
Additional functionality of music21 is available with the installation of numerous helper applications. While not essential for all applications, these tools will aid in working with music21.
 
== MuseScore ==
MuseScore offers a free, full-featured, cross-platform (Windows, Mac OS, Ubuntu, Debian, and Fedora) application for viewing and editing music notation. MuseScore can import and export MusicXML, and provides an excellent way to view, edit, and export musical data for working in music21. Downloading MuseScore (version 2 or higher) is highly recommended for working with music21.
 
https://musescore.org/en
 
== Lilypond ==
Lilypond is a free, open-source music display program that can produce beautiful scores. Music21 can generate PDF or PNG (like JPG) files automatically if Lilypond is installed on your system. Download it at:


Also used to inrterface with 3d software such as poser 3d/blender and audacity.
http://lilypond.org/

Latest revision as of 19:49, 11 October 2021

Python is an interpreted high-level general-purpose programming language. Its design philosophy emphasizes code readability with its use of significant indentation. Its language constructs as well as its object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects.

The standard programming language for data science and for us especially:

Also used to interface with 3d software such as poser 3d/blender and audacity and Libre Office.

Package Manager[edit]

  • Miniconda is a minimal installer of conda
  • Conda is an open-source package management system and environment management system that runs on Windows, macOS, and Linux. Conda quickly installs, runs, and updates packages and their dependencies. Conda easily creates, saves, loads, and switches between environments on your local computer. It was created for Python programs but it can package and distribute software for any language.

Tips[edit]

  • Use vector operations over loops when possible
  • Kow your data structures and which methods are faster

Statements and control flow[edit]

Python's Statement include (among others):

  • The Assignment (computer science)|assignment statement, using a single equals sign =.
  • The if-then-else|if statement, which conditionally executes a block of code, along with else and elif (a contraction of else-if).
  • The Foreach#Python|for]] statement, which iterates over an iterable object, capturing each element to a local variable for use by the attached block.
  • The While loop#Python|while]] statement, which executes a block of code as long as its condition is true.
  • The Exception handling syntax#Python|try statement, which allows exceptions raised in its attached code block to be caught and handled by except clauses; it also ensures that clean-up code in a finally block will always be run regardless of how the block exits.
  • The raise statement, used to raise a specified exception or re-raise a caught exception.
  • The class statement, which executes a block of code and attaches its local namespace to a class (computer science)|class, for use in object-oriented programming.
  • The def statement, which defines a function or method.
  • The dispose pattern#Language constructs|with statement, which encloses a code block within a context manager (for example, acquiring a lock before the block of code is run and releasing the lock afterwards, or opening a file and then closing it), allowing resource acquisition is initialization (RAII)-like behavior and replaces a common try/finally idiom.
  • The break statement, exits from a loop.
  • The continue statement, skips this iteration and continues with the next item.
  • The del statement, removes a variable, which means the reference from the name to the value is deleted and trying to use that variable will cause an error. A deleted variable can be reassigned.
  • The pass statement, which serves as a NOP. It is syntactically needed to create an empty code block.
  • The assertion (programming)|assert statement, used during debugging to check for conditions that should apply.
  • The yield statement, which returns a value from a generator (computer programming)#Python|generator function and yield is also an operator. This form is used to implement coroutines.
  • The return statement, used to return a value from a function.
  • The include directive|import statement, which is used to import modules whose functions or variables can be used in the current program.



Essential Software[edit]

Tensorflow[edit]

Librosa[edit]

Keras[edit]

Music21[edit]

Matplotlib[edit]

Graphing and visual displays in Music21 are provided by Matplotlib. Matplotlib itself has additional dependencies (such as NumPy).

On Mac if you are using the version from python.org, run:

pip3 install matplotlib

and you should be set. If you are using a version from anaconda (conda, miniconda, etc.), you should run these lines:

conda install matplotlib conda install python.app numpy Numeric extensions to Python. Included with Matplotlib.

On Mac if you are using the version of python 3 from python.org, run:

pip3 install numpy and you should be set.

scipy[edit]

Scientific extensions to Python. These are used to accelerate audio searching and fast-Fourier transforms in music21. If you will only be using symbolic music, it is not used, and not essential in any case.

On Mac if you are using the version from python.org, run:

pip3 install scipy and you should be set.

pyaudio[edit]

Allows for recording within python. We use it for the audioSearch module, and nowhere else. Not essential. Requires portaudio and, on the Mac, the XCode command-line development tools.

On the Mac, run:

xcode-select --install brew install portaudio pip3 install pyaudio

pygame[edit]

Allows for realtime MIDI performance. We use it in the midi.realtime module, and nowhere else. It is therefore not essential.

On the Mac, run:

pip3 install pygame Installing Additional Software Components Additional functionality of music21 is available with the installation of numerous helper applications. While not essential for all applications, these tools will aid in working with music21.

MuseScore[edit]

MuseScore offers a free, full-featured, cross-platform (Windows, Mac OS, Ubuntu, Debian, and Fedora) application for viewing and editing music notation. MuseScore can import and export MusicXML, and provides an excellent way to view, edit, and export musical data for working in music21. Downloading MuseScore (version 2 or higher) is highly recommended for working with music21.

https://musescore.org/en

Lilypond[edit]

Lilypond is a free, open-source music display program that can produce beautiful scores. Music21 can generate PDF or PNG (like JPG) files automatically if Lilypond is installed on your system. Download it at:

http://lilypond.org/