Minor edit

Platform independent path for backup directory in rand_samp.py
Tweaks for the random sampling process

Adjustments to add_data.py, all_data_one_person.py, and rand_samp.py so
that they work better...
Adjustments to the analysis of genre

genre_network2.py is basically re-written and now produces output
targeted for Gephi (accommodating some Gephi weirdness);
genre_relationships_sample.py is like genre_relationships.py except
that it takes account of the fact that there is a conceptual difference
between users in the 'sample' and everyone else in the database. At the
moment, it takes account of that by analysing only tracks created by
users in the sample; I'll be adjusting that soon so that it analyses
all of them, but only includes those created by users in the sample in
some metrics (esp. genre popularity).
Short analysis script

Script to run analysis of the random sample dictionary
Updating corpus & network programs

Tweaks to the way that the _deriv.sqlite database (which includes the
corpus & some data to work out relationships on basis of genre) is
produced and the way that a graph of genre relationships is generated
from it.
New snowball sampling programs

outward_waves.py is like forward_waves.py except that it works in both
directions: from x to x's followers and x's followees, then to their
followers and follows. Grabs ALL followers and follows, within limits
of the SoundCloud API (just over 8000 of each).

Note that this takes AN EXTREMELY LONG TIME to run, because it involves
a LOT of API calls. Tried it with a guy with about 4000 followers and
no follows; it took all night to get all his followers and all their
followers and followees.
Produce genre-based stats & corpora

Outputs corpora & stats based on a defined set of genres and families
('communities') of genres (both obtained using genre_relationships.py
and genre_network_sample.py).
Studying follow relationships vis-a-vis genre

Code added to see whether people who upload tracks in popular genres
tend to follow people who upload tracks in the same genres and
communities of genres. Outputs csv files with one row per person. For
proper statistical analysis.
Collecting tracks by "producers' producers"

producers_producers_tracks.py collects all tracks by all those
producers who are followed by producers in a database of collected
SoundCloud data (for example, collected using the rand_samp.py
program). Collecting all tracks by producers followed by EVERYONE would
require a vast number of API calls and is not necessary for our current
methodology.

Contains mechanisms for restarting after a crash, automatically backing
up, and restarting from a backup.
List of producers' producers

List (with Unix and Windows line endings) of users to be collected
using the producers_producers_tracks.py program.
Bugfix to producers_producers_tracks.py

Now flushes the file output buffer of the .txt file that keeps a record
of users checked EVERY TIME it's written to. Otherwise, it's not a
reliable record and leads to crashes.
Now collects random samples of comments & tracks

all_data_one_person.py has now become all_data_one_entity.py, and can
collect the data we want about one user, one track, or one comment.
rand_samp.py can now collect random samples of any of these three, with
use of an extra keyword argument for its collect() function. It also
has a function called seek_limit() which is useful in estimating the
lowest actually-used id number for tracks, users, or comments.
Removed 'print' statement

Only left this in for debugging really.
Put .txt back into gitignore
Small changes to rand_samp & all_data_one_entity
Improvements to rand_samp.py

Pauses more often; backs up less often. (Backup was causing huge delays
on the old laptop I was using for data collection.)
Added gzip files to gitignore
all_data_one_entity now deals with 500 error

If an API call would yield too much data, SoundCloud throws a 500
error. all_data_one_entity now deals with that by scaling back the
amount of data requested (code taken from outward_waves.py)
Programs for producing useful output from data

gephi_blockmodel.py uses a random sample to create networks based on
location or genre; get_missed_tracks.py is for collecting specific
tracks from a list (a bug in an earlier version of rand_samp.py made
this necessary); calculations.py produces spreadsheets of statistics in
csv format.
Code used in the last month or so

Updating repo with code that I've had to add in the last month or so in
order to get the report done.