This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def get_sorry_and_word_count(comment_list, apologies = ['sorry', 'apologies']): | |
sorry_count = 0 | |
word_count = 0 | |
for comment in comment_list: | |
words = comment.split(' ') | |
word_count += int(len(words)) | |
for word in words: | |
for apology in apologies: | |
sorry_count += word.lower().count(apology) | |
return sorry_count, word_count |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if __name__ == "__main__": | |
client_id = 'your_client_id' | |
client_secret = 'your_client_secret' | |
reddit_agent = get_reddit_agent('custom name for app', client_id, client_secret) | |
#list of canadian reddits to search | |
canada_reddits = ['canada','alberta','britishcolumbia','Manitoba','NewBrunswickCanada', 'newfoundland', | |
'NovaScotia','nunavut','NWT','ontario','PEI', 'saskatchewan','Yukon'] | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import praw | |
def get_subreddit_comments(reddit_agent, subreddit, comments_out = [], count = 100): | |
try: | |
sub = reddit_agent.get_subreddit(subreddit) | |
comments_raw = sub.get_comments(sub, limit=count) | |
comments_flat = praw.helpers.flatten_tree(comments_raw) | |
for comment in comments_flat: | |
try: | |
if hasattr(comment, 'comments'): |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import praw | |
import sys | |
def get_subreddit_comments(reddit_agent, subreddit, comments_out = [], count = 100): | |
try: | |
sub = reddit_agent.get_subreddit(subreddit) | |
comments_raw = sub.get_comments(sub, limit=count) | |
comments_flat = praw.helpers.flatten_tree(comments_raw) | |
for comment in comments_flat: | |
try: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def calculate_single_body_acceleration(bodies, body_index): | |
G_const = 6.67408e-11 #m3 kg-1 s-2 | |
acceleration = point(0,0,0) | |
target_body = bodies[body_index] | |
for index, external_body in enumerate(bodies): | |
if index != body_index: | |
r = (target_body.location.x - external_body.location.x)**2 + (target_body.location.y - external_body.location.y)**2 + (target_body.location.z - external_body.location.z)**2 | |
r = math.sqrt(r) | |
tmp = G_const * external_body.mass / r**3 | |
acceleration.x += tmp * (external_body.location.x - target_body.location.x) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def compute_velocity(bodies, time_step = 1): | |
for body_index, target_body in enumerate(bodies): | |
acceleration = calculate_single_body_acceleration(bodies, body_index) | |
target_body.velocity.x += acceleration.x * time_step | |
target_body.velocity.y += acceleration.y * time_step | |
target_body.velocity.z += acceleration.z * time_step |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def update_location(bodies, time_step = 1): | |
for target_body in bodies: | |
target_body.location.x += target_body.velocity.x * time_step | |
target_body.location.y += target_body.velocity.y * time_step | |
target_body.location.z += target_body.velocity.z * time_step |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def run_simulation(bodies, names = None, time_step = 1, number_of_steps = 10000, report_freq = 100): | |
#create output container for each body | |
body_locations_hist = [] | |
for current_body in bodies: | |
body_locations_hist.append({"x":[], "y":[], "z":[], "name":current_body.name}) | |
for i in range(1,number_of_steps): | |
compute_gravity_step(bodies, time_step = 1000) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def plot_output(bodies, outfile = None): | |
fig = plot.figure() | |
colours = ['r','b','g','y','m','c'] | |
ax = fig.add_subplot(1,1,1, projection='3d') | |
max_range = 0 | |
for current_body in bodies: | |
max_dim = max(max(current_body["x"]),max(current_body["y"]),max(current_body["z"])) | |
if max_dim > max_range: | |
max_range = max_dim | |
ax.plot(current_body["x"], current_body["y"], current_body["z"], c = random.choice(colours), label = current_body["name"]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#planet data (location (m), mass (kg), velocity (m/s) | |
sun = {"location":point(0,0,0), "mass":2e30, "velocity":point(0,0,0)} | |
mercury = {"location":point(0,5.7e10,0), "mass":3.285e23, "velocity":point(47000,0,0)} | |
venus = {"location":point(0,1.1e11,0), "mass":4.8e24, "velocity":point(35000,0,0)} | |
earth = {"location":point(0,1.5e11,0), "mass":6e24, "velocity":point(30000,0,0)} | |
mars = {"location":point(0,2.2e11,0), "mass":2.4e24, "velocity":point(24000,0,0)} | |
jupiter = {"location":point(0,7.7e11,0), "mass":1e28, "velocity":point(13000,0,0)} | |
saturn = {"location":point(0,1.4e12,0), "mass":5.7e26, "velocity":point(9000,0,0)} | |
uranus = {"location":point(0,2.8e12,0), "mass":8.7e25, "velocity":point(6835,0,0)} | |
neptune = {"location":point(0,4.5e12,0), "mass":1e26, "velocity":point(5477,0,0)} |