Skip to content

Instantly share code, notes, and snippets.

@benrules2
benrules2 / sorry.py
Last active November 6, 2016 19:13
Reddit Sorry Counter
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
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']
@benrules2
benrules2 / sorry.py
Last active September 5, 2017 21:47
Reddit Sorry Counter
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'):
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:
@benrules2
benrules2 / Gravity.py
Last active November 15, 2016 23:03
Single Body Acceleration Calculation
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)
@benrules2
benrules2 / Gravity.py
Last active November 16, 2016 13:30
Python N-Body Orbit Simluation
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
@benrules2
benrules2 / Gravity.py
Last active November 15, 2016 23:14
Python N-Body Orbit Simulation
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
@benrules2
benrules2 / Gravity.py
Last active November 15, 2016 23:19
Python N-Body Orbit Simulation
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)
@benrules2
benrules2 / Gravity.py
Last active March 14, 2017 17:32
Python N-Body Orbit Simulator
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"])
@benrules2
benrules2 / Gravity.py
Last active November 16, 2016 16:34
Python N-Body Orbit Simulation
#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)}