Python: Difference between revisions
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 | 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. | |||
= 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: | |||
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:
- 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[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 withelse
andelif
(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 byexcept
clauses; it also ensures that clean-up code in afinally
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 andyield
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.
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: