Instructor: Shusen Wang and Xuting Tang
TA: Xiao Yao
Meeting Time:
Office Hours:
Contact the Instructor:
For questions regarding grading, talk to the instructor during office hours or send him emails.
For any other questions, come during the office hours; the instructor will NOT reply such emails.
Prerequisite:
Elementary linear algebra, e.g., matrix multiplication, eigenvalue decomposition, and matrix norms.
Elementary calculus, e.g., convex function, differentiation of scalar functions, first derivative, and second derivative.
Python programming (especially the Numpy library) and Jupyter Notebook.
Goal: This is a practical course; the students will be able to use DL methods for solving real-world ML, CV, and NLP problems. The students will also learn math and theories for understanding ML and DL.
Slides: All the slides are available here: [link]
Preparations
Install the software packages by following [this]
Study elementary matrix algebra by following [this book]
Finish the [sample questions] before Quiz 1.
Jan 23, Lecture 1
Fundamental ML problems
Regression
Jan 30, Lecture 2
Read these before coming: [Matrix Calculus] [Logistic Regression]
Regression (Cont.)
Classification: logistic regression and SVM.
Feb 6, Lecture 3
Feb 6, Quiz 1 after the lecture
Coverage: vectors norms (ℓ2-norm, ℓ1-norm, ℓp-norm, ℓ∞-norm), vector inner product, matrix multiplication, matrix trace, matrix Frobenius norm, scalar function differential, convex function, use Numpy for matrix computation, and ML basics.
Policy: Printed material, notes, and books are allowed. No electronic device (except electronic calculator).
Feb 13, Lecture 4
Read Sections 1 to 4 before coming: [neural networks and backpropagation]
Regularizations.
Scientific computing libraries.
Neural networks.
Feb 20, Lecture 5
Keras.
Convolutional neural networks (CNNs).
Feb 27, Lecture 6
Mar 5, Lecture 7
Read the note before coming: [lecture note]
CNN architectures.
Parallel computing.
Mar 12, Lecture 8
Federated learning.
Text processing.
Simple RNN.
Mar 19, Lecture 9
Mar 26, Lecture 10
Attention and self-attention.
Transformer and BERT.
Apr 2, Lecture 11
SVD and PCA.
Autoencoders.
Variational Autoencoder (VAE).
Apr 9, online Quiz 2 before the lecture
Coverage: vector and matrix operations, gradients, ML basics, neural networks, CNNs, parallel computing.
Time limit: 30 minutes.
Sample: [click here]
Apr 9, Lecture 12
GAN.
Data evasion attak.
Data poisoning attack.
Apr 16, Lecture 13
Monte Carlo
Deep reinforcement learning.
Apr 23, online Quiz 3 before the lecture
Coverage: ML basics, CNNs, RNNs, Transformer, and reinforcement learning.
Time limit: 30 minutes.
Apr 23, Lecture 14
Policy-based reinforcement learning.
Actor-critic method.
Apr 30, Lecture 15
AlphaGo.
Meta learning.
May 14, online Final Exam
Homework 1: Linear Algebra Basics
Available only on Canvas (auto-graded.)
Submit to Canvas before Feb 6.
Homework 2: Implement Numerical Optimization Algorithms
You will need the knowledge in the lecture note: [Logistic Regression]
Submit to Canvas before Feb 23.
Homework 3: Machine Learning Basics
Available only on Canvas (auto-graded.)
Submit to Canvas before Mar 8.
Homework 4: Implement a Convolutional Neural Network
Available at the course’s repo [click here].
Submit to Canvas before Mar 22.
Homework 5: Implement a Recurrent Neural Network
Available at the course’s repo [click here].
Submit to Canvas before Apr 12.
You may get up to 2 bonus scores by doing extra work.
Bonus 1: Implement Parallel Algorithms (Voluntary)
Available at the course’s repo [click here].
You will need the knowledge in the lecture note: [Parallel Computing]
You can choose to implement Federated Averaging or/and Decentralized Optimization. You may get up to 2 bonus points for each.
Submit to Canvas before Apr 5 (firm deadline).
Bonus 2: Implement an Autoencoder Network (Voluntary)
Available at the course’s repo [click here].
You may get up to 1 bonus point.
Submit to Canvas before May 1 (firm deadline).
Required (Please notice the difference between “required” and “recommended”):
Highly Recommended:
Recommended:
Y. Nesterov. Introductory Lectures on Convex Optimization Book. Springer, 2013. (Available online.)
D. S. Watkins. Fundamentals of Matrix Computations. John Wiley & Sons, 2004.
I. Goodfellow, Y. Bengio, A. Courville, Y. Bengio. Deep learning. MIT press, 2016. (Available online.)
M. Mohri, A. Rostamizadeh, and A. Talwalkar. Foundations of machine learning. MIT press, 2012.
J. Friedman, T. Hastie, and R. Tibshirani. The elements of statistical learning. Springer series in statistics, 2001. (Available online.)
Weights:
Homework 50%
Quizzes 30% (students’ average score is likely around 20)
Final 20% (students’ average score is likely around 20)
Bonus
Expected grade on record:
An average student is expected to lose at least 10 points.
If an average student does not collect any bonus score, his grade on record is expected to be “B+”. An average student needs at least 3 bonus scores to get “A”.
According to Stevens’s policy, a score lower than 73.0 will be fail.
Late penalty:
Late submissions of assignments or project document for whatever reason will be punished. 2% of the score of an assignment/project will be deducted per day. For example, if an assignment is submitted 15 days and 1 minute later than the deadline (counted as 16 days) and it gets a grade of 95%, then the score after the deduction will be: 95% - 2*16% = 63%.
All the deadlines for bonus are firm. Late submission will not receive bonus score.
May 1 is the firm deadline for all the homework and the course project. Submissions later than the firm deadline will not be graded.


Tons de azul
blue-1
blue-2
blue-3
blue-4
blue-5
blue-6
blue-7
Tons de vermelhos
red-1
red-2
red-3
red-4
red-5
red-6
red-7
Tons de verde
green-1
green-2
green-3
green-4
green-5
green-6
green-7
Tons de violeta
violet-1
violet-2
violet-3
violet-4
violet-5
violet-6
violet-7
Tons de ciano
cyan-1
cyan-2
cyan-3
cyan-4
cyan-5
cyan-6
cyan-7
Tons de amarelo
yellow-1
yellow-2
yellow-3
yellow-4
yellow-5
yellow-6
yellow-7
Tons de indigo
indigo-1
indigo-2
indigo-3
indigo-4
indigo-5
indigo-6
indigo-7
Tons de preto
dark-1
dark-2
dark-3
dark-4
dark-5
dark-6
dark-7
Tons de rosa
pink-1
pink-2
pink-3
pink-4
pink-5
pink-6
pink-7
Tons de laranja
orange-1
orange-2
orange-3
orange-4
orange-5
orange-6
orange-7
Cores do tema
primary
secondary
danger
warning
info
success
dark
Cores gradients
gradient-db
gradient-oy
gradient-vp
gradient-bi
gradient-rb
gradient-red
gradient-violet
gradient-dark
gradient-light


Résumé
— Hi! I’m a beginner software engineer with 1 year of experience in system design, application development, and database modeling. I strive to craft fast and reliable systems.
Experience
-
June 2020 – present
-
- call center software development and support
- development and support of software for remote control of a robot
-
-
21th June 2014
Got my internal passport (with the most awkward photo... at least it was like this before getting the pass)
-
1998 - 2014
Too much information...
-
3th March 1998
Born in Zaporizhzhia, Ukraine
Education
-
October 2019 - January 2020
Certificate of Python Course Completion at Light Academy -
September 2019 - January 2021
-
- wrote the diploma
- learned Python
-
-
September 2015 - June 2019
-
- tried not to be lazy
- did a lot of laboratory work
- learned everything from assembler language to JavaScript; by the end of my studies I forgot everything safely
-
-
September 2004 - May 2015
Student at General education school No. 38
- tested my teachers nervous systems; recognized that testing is not my cup of tea.
Languages
Skills
Character
Likes😃
Dislikes😞
Wants
🔥 TO BE GOOD SOFTWARE ENGINEER
🔥 TO OWN MY SCHEDULE
🔥 TO READ MORE


adaptiveDesignProcedure documentation!¶
A design procedure of the training data for Machine Learning algorithms able to iteratively add datapoints according to function discrete gradient.
Reference & How to cite¶
Most of the theoretical aspects behind adaptiveDesignProcedure are reported in: M. Bracconi and M. Maestri, “Training set design for Machine Learning techniques applied to the approximation of computationally intensive first-principles kinetic models”, Chemical Engineering Journal, 2020, DOI:10.1016/j.cej.2020.125469.
Installation¶
The official distribution is on GitHub, and you can clone the repository using:
git clone https://github.com/mbracconi/adaptiveDesignProcedure.git
Change directory:
cd adaptiveDesignProcedure
To install the package type:
python setup.py install
To uninstall the package you have to rerun the installation and record the installed files in order to remove them:
python setup.py install --record installed_files.txt
pcat installed_files.txt | xargs rm -rf


Dear
We have received a request to reset the password for this account on the IHTSDO-MLDS system. If this was you, please follow the link below to reset your password:
Password Reset Link
Regards, SNOMED International.


Weather Forecast: Mostly Sunny Today
It will be mostly sunny today, but some places in lowlands and valleys will be foggy for most of the day.
It will be a fairly calm day, light south wind forecast in eastern Bulgaria. Maximum temperatures between 7C and 12C, lower in areas with lasting fog. Atmospheric pressure will drop; it will be below average for the month.
This is the the National Institute of Meteorology and Hydrology (NIMH) weather forecast.


Loading...
PONG THE GAME
1 vs 1
1 vs Computer
Player One
Player one nick:
Pick your paddle color:
Up/Down
W
S
Player Two
Player Two nick:
Pick your paddle color:
Up/Down
Ready
Start Game
Player1
Score: 0
Time: 00:00
Round: 0
Player2
Score: 0
End Game


{include file="mobile/public/head" /}
{$company->name}
{$company->address}
{if condition="!$company_id and $itemprocess_status eq 1"}{$company->vote|number_format}票
{else/} {if condition="$company->id eq $company_id"}{$company->vote|number_format}票
{else/}{$company->vote|number_format}票
{/if} {/if}


Michael Schumacher's wife Corinna hits back at claims she is hiding F1 legend away
Corinna Schumacher responded to manager Willi Weber's remarks by saying seven-times Formula One champ is 'in the best of hands' and she is following his wishes
by Gareth BicknellMichael Schumacher's wife Corinna has hit back at his former manager's claims that she is hiding the truth about the Formula One legend's condition.
Seven-times F1 champion Schumacher suffered a serious brain injury in December 2013 in a skiing accident in the French Alps, which left him in a coma.
Little has since been revealed about Schumacher's condition of the seven-time world champion since he moved to being treated at his family's Lake Geneva home in September 2014.
Earlier this month, Willi Weber, his long-term manager, said he believed Corinna Schumacher feared the truth about Schumacher’s condition entering the public domain . He claimed she had knocked back several requests by him to see the former Ferrari driver.
But now Corinna has hit back at Weber in a rare interview, saying 50-year-old Schumacher was "in the very best of hands" and she was following his wishes by keeping details of his condition under wraps.
"He is in the best of hands right now and we are doing everything we can to help him," she said to She's Mercedes magazine.
"Try to understand that we follow Michael's desire to keep his health a secret.
"You can be sure that he is in the very best of hands and that we are doing everything humanly possible to help him.
"Please understand if we are following Michael's wishes and keeping such a sensitive subject as health, as it has always been, in privacy."
Weber spoke out earlier this month in German TV documentary The Michael Schumacher Tale.
He said: "I know that Michael has been hit hard, but unfortunately I do not know what progress he makes .
"I’d like to know how he’s doing and shake hands or stroke his face.
"But unfortunately, this is rejected by Corinna. She’s probably afraid that I’ll see right away what’s going on and make the truth public.
"I firmly believe in Michael’s recovery, because I know he is a fighter. If there is a chance, he will use it. That cannot be the end.
"I pray for him and am convinced that we will see him again."
Schumacher's seven F1 crowns included five in a row between 2000 and 2004, after he also won back-to-back titles in 194 and 1995.
Lewis Hamilton is one behind Schumacher's record after clinching the 2019 title earlier this month.


In coding challenges and problems, being able to understand the problem statement is often half the battle. I've written some purposefully-convoluted practice problem statements, along with a set of questions for each problem set.
You answer most of these questions simply by selecting the part of the problem statement that provides the answer. At the end, there are usually a few follow-up questions that you answer by filling in the blank.


The aim of this research project is to design assistive technologies to better support creative expression of people with visual impairments. Most of the available assistive tools and accessible technologies support visually impaired people access the contents produced by others – specifically sighted individuals (e.g., how to read a book, access webpage, recognize shapes, or images etc.). However, our goal is to focus on understanding how blind and visually impaired people produce creative contents themselves. We also aim to design assistive systems to better support creative work of visually impaired individuals and sharing of the produced artworks among both sighted and visually impaired people.
Peer-production communities like Wikipedia and OpenStreetMap have become important sources of freely available information nowadays. Despite having millions of contributors, these peer-production communities are alleged to have participation disparities, with men significantly outnumbering women. Focusing on OpenStreetMap, this project investigates the relationship between participation and content disparities to understand whether content of interest to men is better represented than content of interest to women.
We proposed a novel secret sharing approach to compute the probability of a patient to develop a specific disease without revealing sensitive data (patient's genome, name of the disease, disease marker of medical center, and the result of the query i.e. chances of the disease) to dishonest adversaries and ensuring authentication of the genomic data. We proved the practicality of our system via extensive experiments using real human genome datasets.
Outcome: COMPSAC 2018 , GHC 2015
In this project, I participated in a systematic literature review and qualitative coding of scholarly articles on smart technologies (wearables, smartphones, VR devices etc.) designed to support autistic children. We formulated a set of design implications to guide the development of autism support smart technologies.
We quantatively analyzed the impact of social networking on postpartum depression (PPD) in Bangladeshi Women. We conducted an online survey to learn about people's awareness about PPD in Bangladesh and proposed several design choices for tailoring social networking sites and apps to provide better support to mothers facing PPD. Apart from this, I co-designed a self-monitoring mobile app, PurpleAid, to handle common health hazards of women.
We designed a novel health support system for low-to-moderate income people which almost accurately diagnoses diseases by measuring five vital signs of body with a biometric data acquisition device and taking symptoms as input from the users into a mobile application.
We designed a speech therapy system, SpeechAid, to improve the speaking ability of patients having speech and language disorders. Extended work on this project include automated virtual agent and peer-to-peer feedback.


[§526-3] Scope. This chapter applies to disclaimers of any interest in or power over property, whenever created. [L 2000, c 43, pt of §1]


?Ludwigia
octovalvis
(Jacq.)
Raven
.
,
.
T.P.
Ramamoorthy
1980
Determined
by
Missouri
Botanical
Garden
PLANTS
OF
CUBA
Santa
Clara
Prov.
”
cÀ?
Mttwt^-flrhitn;
ii
ul1
nl1
1
ii'^'TTiiiiiiiLimjWTir^
ÇÀinui
!
Á]f
'ImnJmÈ
‰fer^SSS^tOO
lu.
d‚i^s\syljÑvUL4i
.
H
H.
A.
Senn
March
*±i*S,
193g
01447413
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Dr. Billy Carmack is the owner and clinic director for Carmack
Chiropractic and Sports Therapy. He is a native Texan, growing up in
the Dallas area and attended the University of North Texas on a
basketball scholarship. Upon finishing his academic and basketball
career at UNT, Dr. Carmack traveled and worked throughout Europe for
3 years before discovering beach volleyball and relocating to Miami
Beach, FL. It was while competing on the East Coast pro-beach
volleyball circuit that he experienced the awesome power of
chiropractic and physical medicine. The injuries and chronic conditions
that are a part of playing competitive sports had become debilitating
for Dr. Carmack at a time when he should have been at peak physical
condition and performance.
Through a combination of chiropractic
treatment, physical medicine and soft-tissue therapy, Dr. Carmack was
able to resume playing the sport he loved pain free and stronger than
ever. It was this experience that ultimately led him to return to school
to pursue his chiropractic degree with the desire to bring this life-changing healing experience to other athletes and all those suffering
from similar conditions. Although the “spark had been lit” from these
experiences, Dr. Carmack felt the time was not right and he continued
traveling and playing beach volleyball. During this time – before
entering chiropractic college – Dr. Carmack returned to UNT as a
graduate student, earning a Master’s Degree in Kinesiology and Sports
Psychology. In 2006 Dr. Carmack returned to his hometown of Dallas to
attend Parker College of Chiropractic, graduating in 2008. He has spent
the last 10 years conceiving, developing and perfecting the Carmack
Protocol for soft-tissue injury that is performed in the clinic today.
Coupled with the amazing benefits of the chiropractic adjustment, we
believe there is no better way to treat sports injuries and the chronic
conditions of the modern world. Dr. Carmack has committed his life to
being the best healing professional he can be and hopes you are willing
to share the experience of healing your body with him!
Dr. Dixie Mayfield attended chiropractic school at Parker University in Dallas, TX, and is originally from Ardmore, OK. She started her career in healthcare there as a licensed massage therapist, but quickly decided that her clients needed more than what massage could offer. “How could I release muscle tissue but not address the joint dysfunction?” “What would be the best way to make profound, life-long changes in peoples’ lives?”, she asked herself. In her quest to answer these questions, Dr. Mayfield found chiropractic and her true passion.
Since graduating from Parker University, Dr. Mayfield has sought to integrate soft tissue therapy, chiropractic and multiple modalities into her professional philosophy, always seeking “new and better ways to get people better!” Upon meeting Dr. Carmack, she knew she had found her mentor and has continued to evolve and thrive under his tutelage. She states, “The Carmack Protocol, in my opinion, is the perfect marriage between soft tissue work and the treatment of joint function. It is the missing link I’ve been searching for all these years. I am in awe of the advancements we continually make in patient care. Every week I learn something new that benefits my patients and makes me a more capable doctor. There is no musculoskeletal problem I wouldn’t take on with full confidence!”


{{define "content"}}
| Name | Quorum | Master | Slave Count | Sentinel Count | |||
|---|---|---|---|---|---|---|---|
| {{.Info.Name}} | {{if .HasQuorum}} {{else}} {{end}} | {{.Info.IP}}:{{.Info.Port}} | {{if .HasInfo }}{{if eq .Master.Info.Replication.ConnectedSlaves 0}} {{else}} {{end}} {{.Master.Info.Replication.ConnectedSlaves}} | {{else}}0 | {{end}} {{if .HasQuorum }} {{if .MissingSentinels }}{{.SentinelCount}} of {{.NeededSentinels}} | {{else}}{{.SentinelCount }} of {{.NeededSentinels}} | {{end}} {{else}}{{.SentinelCount }} of {{.NeededSentinels}} | {{end}}
These pods are unable to failover because they lack quorum. This is due to not having enough sentinels active to initiate a failover.
To fix this the constellation needs rebalanced. For now this is a global action, but pod-specific actions will be added.
| Name | Quorum | Master | Slave Count | Sentinel Count | |
|---|---|---|---|---|---|
| {{.Info.Name}} | {{.Info.Quorum}} | {{.Info.IP}}:{{.Info.Port}} | {{if .HasInfo }}{{.Master.Info.Replication.ConnectedSlaves}} | {{else}}0 | {{end}}{{.SentinelCount}} |
These pods are missing one or more sentinels. They may have quorum but do not have quorum+1 sentinels actively monitoring it.
To fix this you will need to reset the pod from the pod view.
| Name | Active Sentinel Count | Needed Sentinels | Reported Sentinels |
|---|---|---|---|
| {{.Info.Name}} | {{.SentinelCount}} | {{.NeededSentinels}} | {{.ReportedSentinelCount}} |
These pods have more sentinels than quorum*2 listed in sentinel. This means there is a possibility of split-brain operation.
Due to the way Sentinel currently reports other sentinels, this can occur when the pod has been added to sentinels and then removed from some. It is also possible that a failvoer can not occur because Sentinel currently insists on a majority of the sentinels it has ever seen - regardless of current state. Thus if some of the listed sentinels are not available there may be no ability for the sentinels to elect a leader to activater a failover.
To fix this you should first reset the pod from the pod view. This will clear out any sentinels which are not currently active. Then you will need to manually remove any remaining surplus sentinels or increase quorum to ensure you have at least half of the total sentinels as quorum.
| Name | Quorum | Needed Sentinels | Reported Sentinel Count | Active Sentinels |
|---|---|---|---|---|
| {{.Info.Name}} | {{.Info.Quorum}} | {{.NeededSentinels}} | {{.ReportedSentinelCount}} | {{.SentinelCount}} |
These pods do not have a valid slave attached to the master, or we were unable to obtain slave info.
To fix this the master first ensure the pod has the correct authentication information. If not correct that issue first and see if it persists. If it persists or is correct, the master will need to have a slave added to it.
| Name | Slave Count | |
|---|---|---|
| {{.Info.Name}} | {{if .HasInfo }}{{.Master.Info.Replication.ConnectedSlaves}} | {{else}}0 | {{end}}
These pods do not have a valid authentication token set in the sentinels.
To fix this the pod will need to have it's auth set in sentinel. Currently this is a manual process using "sentinel set auth-pass PODNAME AUTH" in the sentinel CLI and needs done on each sentinel.
| Name | Master |
|---|---|
| {{.Info.Name}} | {{.Info.IP}}:{{.Info.Port}} |


Single-track Piano-roll¶
-
class
pypianoroll.
Track
(pianoroll=None, program=0, is_drum=False, name='unknown')[source]¶ A single-track pianoroll container.
-
pianoroll
¶ np.ndarray, shape=(num_time_step, 128) – The pianoroll matrix. The first and second dimension represents time and pitch, respectively. Available data types are bool, int and float.
-
program
¶ int – The program number according to General MIDI specification. Available values are 0 to 127.
-
is_drum
¶ bool – The boolean indicator that indicates whether it is a percussion track.
-
name
¶ str – The name of the track.
Initialize the object by assigning attributes.
Parameters: - pianoroll (np.ndarray, shape=(num_time_step, 128)) – A pianoroll matrix. The first and second dimension represents time and pitch, respectively. Available datatypes are bool, int and float. Only effective when track is None.
- program (int) – A program number according to General MIDI specification [1]. Available values are 0 to 127. Defaults to 0 (Acoustic Grand Piano).
- is_drum (bool) – A boolean number that indicates whether it is a percussion track. Defaults to False.
- name (str) – The name of the track. Defaults to ‘unknown’.
References
[1] https://www.midi.org/specifications/item/gm-level-1-sound-set
-
assign_constant
(value, dtype=None)[source]¶ Assign a constant value to all nonzeros in the pianoroll. If the pianoroll is not binarized, its data type will be preserved. If the pianoroll is binarized, it will be casted to the type of value.
Parameters: value (int or float) – The constant value to be assigned to all the nonzeros in the pianoroll.
-
binarize
(threshold=0)[source]¶ Binarize the pianoroll.
Parameters: threshold (int or float) – A threshold used to binarize the pianorolls. Defaults to zero.
-
clip
(lower=0, upper=127)[source]¶ Clip the pianoroll by the given lower and upper bounds.
Parameters: - lower (int or float) – The lower bound to clip the pianoroll. Defaults to 0.
- upper (int or float) – The upper bound to clip the pianoroll. Defaults to 127.
-
copy
()[source]¶ Return a copy of the object.
Returns: copied – A copy of the object. Return type: pypianoroll.Track object
-
get_active_length
()[source]¶ Return the active length (i.e., without trailing silence) of the pianoroll. The unit is time step.
Returns: active_length – The active length (i.e., without trailing silence) of the pianoroll. Return type: int
-
get_active_pitch_range
()[source]¶ Return the active pitch range as a tuple (lowest, highest).
Returns: - lowest (int) – The lowest active pitch in the pianoroll.
- highest (int) – The highest active pitch in the pianoroll.
-
get_pianoroll_copy
()[source]¶ Return a copy of the pianoroll matrix.
Returns: copied – A copy of the pianoroll matrix. Return type: np.ndarray
-
is_binarized
()[source]¶ Return True if the pianoroll is already binarized. Otherwise, return False.
Returns: is_binarized – True if the pianoroll is already binarized; otherwise, False. Return type: bool
-
pad
(pad_length)[source]¶ Pad the pianoroll with zeros at the end along the time axis.
Parameters: pad_length (int) – The length to pad with zeros along the time axis.
-
pad_to_multiple
(factor)[source]¶ Pad the pianoroll with zeros at the end along the time axis with the minimum length that makes the resulting pianoroll length a multiple of factor.
Parameters: factor (int) – The value which the length of the resulting pianoroll will be a multiple of.
-
plot
(**kwargs)[source]¶ Plot the pianoroll or save a plot of ot. See
pypianoroll.plot.plot_track()
for full documentation.
-


Starting next Monday, there will be a new column on the blog: The Source Fantastic. We're going to take turns writing positive code reviews of open source projects, because really, there is enough moaning about bad code and negativity on the web, and nowhere near enough positive recognition for good code. We are shooting for a review every two weeks.
Obviously, even good code is not perfect, OS projects are usually works in progress, and everyone's code contains some WTFeries - so we don't shoot for projects that have flawless code overall, but for code that is generally readable and as WTFery-free as it gets.
We are going to focus on projects started, and mostly developed, by members of marginalised groups in order to give them more visibility. Everyone is welcome to submit projects that they think we should review - please keep this in mind when you do. Submit your suggestions in the comments, or via email to me or Magnus.
Our first code review next week will be about the shadow-utils package, which most people who ever logged in to a Linux machine have used with or without knowing about it. It's going to be up on Monday, so watch this space!