--- layout: post title: Using Python to Update Google Sites Pages tagline: oh how I miss SSIs categories: computers tags: python google sites oauth web ---
Google Sites is a popular host for web pages because of its cost (nothing), its integration with Googles suite of productivity tools, and its ease of use. To support automated updates of web pages and other administrative functions, Google offers a programmatic interface (API) to its web-based tools, called Gdata. Following is an example up authenticating to Google and updating a page on a Google Sites website.
Many people ran their own local web servers since the dawn of the web, and took advantage of their ownership of those web servers by having programmatically updated web pages within their website. This was often done by automatically generated HTML pages, server-side includes, or local scripts run by the web server.
Now, however, many people are more interested in using cloud-based services for web pages—they leave all of the operations to someone else, often they can scale better than a local webserver could be scaled, and they often have very friendly interfaces that allow for updates by people who are not fluent in HTML or other web technologies. A common choice for web pages that are hosted on someone elses' webserver is using Google Sites.
Google Sites are excellent for creating web pages with rich content (videos, images, text) and controlling access to that content. Local scripts or server-side includes are not permitted, but it is possible to programmatically update Google Sites pages.
Google provides a library of tools called GData1 that allows computer programs to read data from and write data to many of the Google sites. The GData libraries are available in several languages (for more information see https://developers.google.com/gdata/), but the easiest for me to use was Python, even though I don't really know how to program in Python.
First, I got the GData Python client library from
https://developers.google.com/gdata/ and installed it in my home
directory by finding the setup.py
in the GData distribution and
typing the command:
python setup.py --home=~/python/
I also ran the included tests to make sure it was all working.
GData comes with everything you need to work programmatically with information at Google.
In order for your Python program to talk to Google, you need to create an API Client ID, which you can do for free at https://code.google.com/apis/console. An API Client ID will give you a Client ID and a Client secret, both of which you'll need in your Python program.
To get started, I imported the Python libraries I knew I'd need.
I learned about the required gdata
libraries from the API
documentation.
import sys import os import time # adjust the next line for your installation of gdata sys.path.append('/Users/acaird/python/lib/python') import atom.data import gdata.sites.client import gdata.sites.data import gdata.gauth
This block of code imports the standard Python libraries sys
, os
,
and time
, and you'll see those used later (in the case of sys
,
not too much later).
Next I use the sys
library to tell Python where I installed the
gdata
library with the sys.path.append
function. You will
almost certainly want to edit that. You can also use the
PYTHONPATH
environment variable.
Once the program can find the gdata
libraries, I import the ones
the documentation says I'll need.
At this point, I have all of the tools I need.
The next block of source code handles the authorization of the program to make changes to a Google Sites page. The authorization is done using OAuth, an open standard and one that is well supported in the GData library2. The flow of the code is:
gauth
token from
the file
None
client
), then save the credentials.
In this case, the client secret isn't a secret.3 The
user_agent
can be anything meaningful to you so you can look at the
logs and see when your Python program changed your web content and
when a person changed it.
You'll notice in this code block we create the variable client
; in
that creation we also select the Google Site we want to edit, in this
case it is confusingly called the same as my name, acaird
. I
suspect, but don't know for sure, you could read the sites (as below)
and select from a list programmatically. In my case I know the name
of the site I want to update, so I just typed it in.
The scope
in the gdata.gauth.OAuth2Token
function call is
specific for Google Sites. For a list of other scopes, see
http://googlecodesamples.com/oauth_playground/.
WARNING The file to which the token is written is important, it should be protected or removed if you aren't certain it can be kept safe.
#+NAME vars #+NAME authorization
token_cache_path=os.environ['HOME']+'/.gdata-storage' print "Token Cache: %s" % token_cache_path try: with open(token_cache_path, 'r') as f: saved_blob_string=f.read() if saved_blob_string is not None: token = gdata.gauth.token_from_blob(saved_blob_string) else: token = None except IOError: token = None if token == None : print "Getting a new token." token = gdata.gauth.OAuth2Token( client_id=MyClientId, client_secret=MyClientSecret, scope='https://sites.google.com/feeds/', user_agent='acaird-acexample-v1') url = token.generate_authorize_url(redirect_uri='urn:ietf:wg:oauth:2.0:oob') print 'Please go to the URL below and authorize this ' print 'application, then enter the code it gives you.' print ' %s' % url code = raw_input("Code: ") token.get_access_token(code) client = gdata.sites.client.SitesClient(source='acaird-acexample-v1', site='acaird') token.authorize(client) saved_blob_string = gdata.gauth.token_to_blob(token) f=open (token_cache_path, 'w') f.write(saved_blob_string) else: print "Using a cached token from %s" % token_cache_path client = gdata.sites.client.SitesClient(source='acaird-acexample-v1', site='acaird') token.authorize(client) f.close()
feed = client.GetSiteFeed() print 'Google Sites associated with your account: ' counter = 0 for entry in feed.entry: print ' %i %s (%s)' % (counter,entry.title.text, entry.site_name.text) counter = counter + 1 print ' --- The End ---'
This section of code, when run on my account, produces this output:
Google Sites associated with your account: 0 acaird (acaird) 1 CD Squared Project (umcdsquared) 2 U-M GPR Project (umichgpr) 3 ORCI Project Site (umorciprojectsite) 4 UM Projects (umprojectstruthkos) --- The End ---
Since we already selected the acaird
Google Site when we
initialized client
, we can start fetching content from it.
I'm not sure what most of the code below does, but at the end, old
contains the HTML of the first webpage in the acaird
Google Site,
which was my goal.
kind = 'webpage' print 'Fetching only %s entries' % kind uri = '%s?kind=%s' % (client.MakeContentFeedUri(), kind) feed = client.GetContentFeed(uri=uri) print "Fetching content feed of '%s'...\n" % client.site feed = client.GetContentFeed() uri = '%s?kind=%s' % (client.MakeContentFeedUri(),'webpage') feed = client.GetContentFeed(uri=uri) old=feed.entry[0]
To make sure we're updating the web page, here's the current date and time for later use, and comparison between the output on this screen and what is in the web page.
time = time.asctime() print "Time: %s" % time
Then I create some new HTML, stored in old.content.html
, which I
could print out, but I've commented out that line.
Then I call client.Update
with the feed.entry
in old
to update
the page.
old.content.html = '''       This is my web page. It was last updated on %s by %s
       ''' % (time,sys.argv[0]) # print old.content.html updated_entry = client.Update(old) print 'Web page updated.'
https://developers.google.com/api-client-library/python/guide/aaa_oauth is a good reference for using the Python library version of GData's OAuth.
According to https://developers.google.com/accounts/docs/OAuth2#installed "The client_id and client_secret obtained during registration are embedded in the source code of your application. In this context, the client_secret is obviously not treated as a secret."


This example shows the use of the drag shim when dragging nodes over other troublesome nodes.
Try dragging the proxy element over the iframe below, in most browsers this will not happen. Now click the Shim off
button and drag again. Now you can drag over the iframe.
You can see the shim by clicking the Debug Off
button.


This is a fork of the jinput project. The fork is at https://github.com/hervegirod/jinput2.
The original jinput project is at https://github.com/jinput/jinput


this is a demo of solid-file-client (https://github.com/jeff-zucker/solid-file-client).
you can choose to upload files to your Pod or copy between.


downloader: Download Files over HTTP and HTTPS
Provides a wrapper for the download.file function,
making it possible to download files over HTTPS on Windows, Mac OS X, and
other Unix-like platforms. The 'RCurl' package provides this functionality
(and much more) but can be difficult to install because it must be compiled
with external dependencies. This package has no external dependencies, so
it is much easier to install.
Downloads:
Reverse dependencies:
| Reverse imports: |
biomartr, blastula, CANSIM2R, DiagrammeR, etl, imager, mdsr, neonUtilities, radix, restez, RKEELjars, RSwissMaps, sublime |
| Reverse suggests: |
drake, quantmod |
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=downloader
to link to this page.


Have a question you don't see? Hope is not lost! Follow these tips to find a quick resolution to your issue.
If you have a question about how to use gcloud-node in your project or are stuck in the Developer's console and don't know where to turn, it's possible your questions have already been addressed by the community.
First, check out the gcloud-node
tag on StackOverflow.
Next, try searching through our issues on GitHub.
Still nothing?
If you're experiencing a bug with the code, or have an idea for how it can be improved, please create a new issue on GitHub so we can talk about it.


Factorio Autosave Rollback
{{ form.saves }} {{ form.csrf_token }}
This may take on the order of half a minute. Stopping the server is very slow.


Great idea! You will contribute to the success of an event that is unique in Italy and will receive a remarkable visibility.
Are you hiring employees or searching partners? Are you looking for a way to promote a technology or a service? Are you organizing a course and need teachers, or some visibility?


base project: https://spring.io/guides/gs/uploading-files/
http://localhost:8080/reports/DetailedReport_TC_JavaScript_25_Oct_2019.pdf
http://localhost:8080/reports/DetailedReport_TC_Java_25_Oct_2019.pdf


Send forecast
1. Check address
10 Beaconsfield Road, Low Fell, Gateshead, Tyne and Wear, NE9 5EU
If address has changed, or customer wants a different correspondence address add instructions here
10 Beaconsfield Road, Low Fell, Gateshead, Tyne and Wear, NE9 5EU


{% extends "layout.html" %} {% block page_title %} GOV.UK prototyping kit {% endblock %} {% block content %} ALPHA This is a new service – your feedback will help us to improve it. Back to releases to air Check your carbon dioxide report The number you’ve reported is significantly larger than last year. 2016 total 11.45 kt 2017 reporting threshold 1,000 kg Unit -- kt t kg g mg Why has this figure increased? We’ve increased our operational activities We’ve changed our method of measurement We had a pollution incident Other Explain what other reason caused this increase Method Method Calculation Measurement Estimation Detailed method EN ISO 15682 (2001) Notifiable release? Yes No Release amount Notifiable release total Unit of measurement Unit -- kt t kg g mg What caused this release? Do you think this substance report is confidential? Yes No Why do you think it’s confidential? {% endblock %} {% extends "layout.html" %}
ALPHA This is a new service – your feedback will help us to improve it.
The number you’ve reported is significantly larger than last year.
Why has this figure increased?
Explain what other reason caused this increase
Why do you think it’s confidential?


Logout
History
Apply Online Special/Supplementary Exams
Special Exam
Supplementary Exam
Add Code
Save Task
Delete All
Apply


Venn diagrams are used to show logical relations between sets. This chart is showing the relationship between the sets "Good", "Bad", and "Cheap", with labels for the different intersections.


{%extends "base.html"%} {% load bootstrap3 %} {%load static%} {% block content %} {% if form.errors %}
Clone of Instagram
By signin up, you agree to our Terms & Privacy Policy.
Have an account? Log in


Help
This food-ordering application is designed by Dung Vu for Phở Nam.
To take order:
- Select a table
- Select number guests in the table
- Select dishes/beverages
- Confirm selection
- Place the order
Close Help panel
This taking-order application is designed by Dung Vu for Phở Nam.
Take order for table


Selecting traces |
If more than one y-vector argument was given to plt, a trace selection box will appear in the upper left corner of the plt window. Note: when using sub-plots, only the main plot (lower left) includes a trace selection box.
In the example shown to the left, plt has been given five y-vectors to plot. The name of each
trace and the colors used to plot them are also given. Usually you should give
each trace a more informative name, but in this case no trace names were
specified on the command line, so plt just named each trace with a number. The
trace IDs associated with traces 2 and 3 are shown in an italic normal weight
font, indicating that they are currently disabled (not visible). The other three
trace IDs are shown in a bold upright font, indicating that those traces are
enabled in the plot area.
Below is a list of the ways you can control which traces are displayed. If
you are plotting just a few traces, the first bullet should cover all that you
need to know. However since plt can plot up to 99 traces, the remaining tricks
may come in handy:
If the plot uses a right hand axis, plt indicates which traces are plotted on the right hand axis by adding some shading to the background of the trace ID. For instance, in this example, traces 1,3,4, and 5 are plotted on the right hand axis. The use of italics to indicate inactive traces, and the methods for enabling/disabling traces are the same no matter which axes are used. (Traces 2 and 4 are disabled in this example.)
If the TraceMK argument was used, then the line types are also shown in the trace selection box. An example of this is shown here which used 'TraceMK',.6 in the plt argument list. The .6 indicates that the first 60% of the width is used for the trace names and the remaining width is used to show the line types. See Trace Properties for more detail on the TraceMK parameter.
When the line types are included in the trace selection box, you may enable/disable traces by clicking on the trace name as described above, or by clicking on the line type to the right of the trace name. In this example traces 3,4 and 5 have been disabled. The trace names for the disabled traces are shown in italics as usual and the line types are also grayed out (actually blue/green) to make it clear that these traces are not currently visible in the plot area.
Since left or right clicking on the line types serves the same purpose as left/right clicking on the trace names, you can dispense with the trace names altogether if you like. (This mode is selected by specifying assigning less than 25% of the width to the trace names, i.e. a TraceMK parameter of less than .25). In the example to the left, the TraceMK parameter was 0.1 and note that the first trace has been disabled.


I've suffered from long term depression for nearly 6 years now. My experience has included severe HPPD and psychotic symptoms for the past two years since a hit and run incident with yage. But this is about modafinil. The defining characteristic of my depression for as long as I can recall is fatigue, lack of motivation and excessive sleepiness (called a dysthymic profile by the psychiatric profession). These symptoms flair up exceptionally badly in the winter time when the light is low (seasonal affective disorder). This winter, going to school in Vermont, was especially bad. I lay in bed much of the day watching movies. After waking up I would need to go back to bed in a few hours. I happened across reports of Modafinil that sounded promising, so when things failed to improve over winter break I got a prescription from my hometown mental health professional.
I was doing a little bit of meth (a quarter gram over 2 weeks) during break and didn't notice much improvement from the modafinil at first. Ampthetamines seem to render modafinil useless (this experience was reconfirmed later during finals this spring) and vice versa with the crash still there but no rush (bad deal!).
A week after discontinuing meth use and 2 weeks after beginning modafinil therapy, at arond 6 pm (6 hours after my daily dose), standing in line to get dinner, a light switch flipped in my head. All of the sudden the cloudiness and fatigued fog was gone. The effect was euphoric. Living under that cloud every waking moment for 2 months had been taking its toll. I wasn't sure the effect was real because it was so sudden and pronounced, like bumping a line of something motivating. But it lasted. I had terrifically increased attention, energy and motivation. I was able to cut back from sleeping 9 or 10 hours a day to 6. Rather than getting bored of writing or doing other work after 40 minutes or so, I found myself working for hours on end, absorbed in creativity. There were never any side effects, including sleep related ones.
This lasted for around 2 months and the motivating effects slowly tapered away. The wakefulness persisted however, with sleep remaining around 6 hours a night. After 5 months, even the sleep effects are wearing off and the drug seems nearly useless.
A summary of my findings:
- This is not a one-off recreational drug. It gave me a mild lift the first two times I did it, but not in a remarkable way. This is something that should build up gradually in my system. When it does, sleep is dramatically reduced in length (though not quality) and concentration is improved.
- This is nothing like amphetamines or other dopaminergic drugs. There's no 'boost' like I get with any of the amphetamines. I don't get revved up. It's very much just a natural feeling of not being tired. I don't think it's likely that there would be much mood effect for me if I weren't depressed. The euphoria I felt was actually relief at no longer being sleepy. In fact, after a while it felt weird to be so motivated and energetic without being all that happy. The sleep effects are pronounced no matter what. This also doesn't keep me up at night if you take it at a reasonable hour.
- I found that for best effects, once blood serum levels were up, my daily dose primarily affected the next day's energy levels, not the current day's. For instance an extra 200-300mg in the afternoon or early evening didn't affect my sleep quality but allowed me to get up extra early feeling peppy the next day.
- Increasing dosages did very little. I experimented with dosages up to 800mg a day with no difference from a 400mg/day dose. 400mg/day is the highest level used in clinical studies. I feel as if, because of the extremely targeted nature of the substance, there's only so much it can do at once. I don't think it's possible to get over a certain level of wakefulness, but if I keep taking it over a period of time (every 12 hours would suit the pharmacokinetics), I'll stay wakeful (up to a point, 24 hours being mine).  I've never heard of anyone taking supplements for that, but you never know . . .
- I tried smoking with no effect. Snorting yields exactly the same results as oral ingestion but it's not a particularly tasty substance. The peak action is reached at 4 hours no matter how I ingest it it seems.
- This drug is EXPENSIVE! It's not worth doing if you're not going to take in a regular fashion so you better have [a] a prescription and [b] good health insurance. Prescriptions aren't hard to come by like they are for Adderall since Provigil (the trade name) is Schedule IV rather than II. The cost is $5 a pill, with the largest size being 200mg. That works out to 7.50-10 a day without insurance. Modafinil is only FDA approved for narcolepsy not ADD or depression, so many HMOs and PPOs jump at the opportunity to not pay. The manufacturer, to their credit, has a program set up to help you coax your insurance to pay for it.
To sum up, this substance was a life saver for me to get through an extremely hard period, but not a cure for anything or an interesting recreational drug. For the overstressed student this could be the ultimate drug, though -- endless wakefulness and concentration with little side effects.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


| Title | Description | Link | |
|---|---|---|---|
| Exploring Project Ideas | Research previous 414 projects and prepare a 3 slide powerpoint on it's possible application to a 514 project. | --not available-- | |
| Get Started with Github | Create a Github account and set Dr. Ames as a contributor. | --not available-- | |
| Build Your First Webpage | Use HTML to create a webpage similar to your wireframe mockup. | My First HTML Webpage | |
| Make a Webpage with CSS Styling | Create a copy of your first webpage and make it look better by linking to a CSS file that you create. | My First CSS-Styled HTML Page | |
| Build a Unit Convertor Web Page with JavaScript | Use your new skills and try it! | My Unit Converter | |
| Build an Interactive Page with Google Maps | Add location markers and information windows about your hometown. | My Google Map | |
| Show Off ArcGIS JavaScript Capabilities | Create an ArcGIS map with markers and information for 10 places you want to visit in the world. | Ten Places I Want to Go | |
| Ubuntu assignment | TBA | Embedded ArcMap Map with Data |


In this project, you'll use generative adversarial networks to generate new images of faces.
You'll be using two datasets in this project:
Since the celebA dataset is complex and you're doing GANs in a project for the first time, we want you to test your neural network on MNIST before CelebA. Running the GANs on MNIST will allow you to see how well your model trains sooner.
If you're using FloydHub, set data_dir
to "/input" and use the FloydHub data ID "R5KrjnANiKVhLWAkpXhNBe".
data_dir = './data'
# FloydHub - Use with data ID "R5KrjnANiKVhLWAkpXhNBe"
#data_dir = '/input'
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
import helper
helper.download_extract('mnist', data_dir)
helper.download_extract('celeba', data_dir)
show_n_images = 25
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
%matplotlib inline
import os
from glob import glob
from matplotlib import pyplot
mnist_images = helper.get_batch(glob(os.path.join(data_dir, 'mnist/*.jpg'))[:show_n_images], 28, 28, 'L')
pyplot.imshow(helper.images_square_grid(mnist_images, 'L'), cmap='gray')
The CelebFaces Attributes Dataset (CelebA) dataset contains over 200,000 celebrity images with annotations. Since you're going to be generating faces, you won't need the annotations. You can view the first number of examples by changing show_n_images
.
show_n_images = 25
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
mnist_images = helper.get_batch(glob(os.path.join(data_dir, 'img_align_celeba/*.jpg'))[:show_n_images], 28, 28, 'RGB')
pyplot.imshow(helper.images_square_grid(mnist_images, 'RGB'))
Since the project's main focus is on building the GANs, we'll preprocess the data for you. The values of the MNIST and CelebA dataset will be in the range of -0.5 to 0.5 of 28x28 dimensional images. The CelebA images will be cropped to remove parts of the image that don't include a face, then resized down to 28x28.

You'll build the components necessary to build a GANs by implementing the following functions below:
model_inputs
discriminator
generator
model_loss
model_opt
train
This will check to make sure you have the correct version of TensorFlow and access to a GPU
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
from distutils.version import LooseVersion
import warnings
import tensorflow as tf
# Check TensorFlow Version
assert LooseVersion(tf.__version__) >= LooseVersion('1.0'), 'Please use TensorFlow version 1.0 or newer. You are using {}'.format(tf.__version__)
print('TensorFlow Version: {}'.format(tf.__version__))
# Check for a GPU
if not tf.test.gpu_device_name():
warnings.warn('No GPU found. Please use a GPU to train your neural network.')
else:
print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))
Implement the model_inputs
function to create TF Placeholders for the Neural Network. It should create the following placeholders:
image_width
, image_height
, and image_channels
.z_dim
.Return the placeholders in the following the tuple (tensor of real input images, tensor of z data)
import problem_unittests as tests
import numpy as np
def model_inputs(image_width, image_height, image_channels, z_dim):
"""
Create the model inputs
:param image_width: The input image width
:param image_height: The input image height
:param image_channels: The number of image channels
:param z_dim: The dimension of Z
:return: Tuple of (tensor of real input images, tensor of z data, learning rate)
"""
# TODO: Implement Function
inputs = tf.placeholder(tf.float32, shape = [None, image_height, image_width,image_channels], name="inputs")
z_dim = tf.placeholder(tf.float32, shape = [None, z_dim], name="z_dim")
learning_rate = tf.placeholder(tf.float32, shape = None, name="learning_rate")
return inputs, z_dim, learning_rate
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_inputs(model_inputs)
Implement discriminator
to create a discriminator neural network that discriminates on images
. This function should be able to reuse the variabes in the neural network. Use tf.variable_scope
with a scope name of "discriminator" to allow the variables to be reused. The function should return a tuple of (tensor output of the generator, tensor logits of the generator).
def discriminator(images, reuse=False):
"""
Create the discriminator network
:param image: Tensor of input image(s)
:param reuse: Boolean if the weights should be reused
:return: Tuple of (tensor output of the discriminator, tensor logits of the discriminator)
"""
# TODO: Implement Function
ims = images.get_shape().as_list()
print(ims)
ims = np.product(ims[1:])
alpha = 0.1
with tf.variable_scope("discriminator",
reuse = reuse):
discriminator = images
if(not reuse):print("discriminator ", discriminator.get_shape().as_list())
discriminator = tf.layers.conv2d (discriminator, 64, (5,5), strides=(2,2), activation=None,
kernel_initializer=tf.contrib.layers.xavier_initializer_conv2d())
discriminator = tf.maximum(discriminator, tf.multiply(alpha, discriminator))
if(not reuse):print("discriminator ", discriminator.get_shape().as_list())
discriminator = tf.layers.conv2d (discriminator, 128, (5,5), strides=(1,1), activation=None,
kernel_initializer=tf.contrib.layers.xavier_initializer_conv2d())
discriminator = tf.maximum(discriminator, tf.multiply(alpha, discriminator))
if(not reuse):print("discriminator ", discriminator.get_shape().as_list())
discriminator = tf.layers.conv2d (discriminator, 248, (5,5), strides=(1,1), activation=None,
kernel_initializer=tf.contrib.layers.xavier_initializer_conv2d())
discriminator = tf.maximum(discriminator, tf.multiply(alpha, discriminator))
if(not reuse):print("discriminator ", discriminator.get_shape().as_list())
ims=np.product(discriminator.get_shape().as_list()[1:])
discriminator = tf.reshape(discriminator, [-1, ims])
if(not reuse):print("ds flat: ",discriminator.get_shape().as_list())
discriminator = tf.contrib.layers.fully_connected(
discriminator, num_outputs= int(ims*0.5), activation_fn = None)
discriminator = tf.maximum(discriminator, tf.multiply(alpha, discriminator))
discriminator = tf.layers.dense(
discriminator, 1, activation = None)
if(not reuse):print("ds out: ",discriminator.get_shape().as_list())
out = tf.tanh( discriminator )
return out, discriminator
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_discriminator(discriminator, tf)
Implement generator
to generate an image using z
. This function should be able to reuse the variabes in the neural network. Use tf.variable_scope
with a scope name of "generator" to allow the variables to be reused. The function should return the generated 28 x 28 x out_channel_dim
images.
import numpy as np
def generator(z, out_channel_dim, is_train=True):
"""
Create the generator network
:param z: Input z
:param out_channel_dim: The number of channels in the output image
:param is_train: Boolean if generator is being used for training
:return: The tensor output of the generator
"""
# TODO: Implement Function
imside = 28
ims = imside*imside*out_channel_dim
alpha = 0.1
with tf.variable_scope("generator",
reuse = not is_train):
out = z
#generator = tf.contrib.layers.fully_connected( generator, num_outputs= int(ims*2), activation_fn = None)
#generator = tf.maximum(generator, tf.multiply(0.01, generator))
#generator = tf.contrib.layers.fully_connected(generator, num_outputs= int(ims*0.25), activation_fn = None)
#generator = tf.maximum(generator, tf.multiply(0.01, generator))
noise_shape = [-1, 2, 2, 25]
out = tf.contrib.layers.fully_connected(
out, num_outputs = int(np.product(noise_shape[1:])), activation_fn = None)
out = tf.maximum(out, tf.multiply(alpha, out))
out = tf.reshape(out, noise_shape)
out = tf.layers.conv2d_transpose(out, 512, 5, 2, padding="valid",
activation=None,
kernel_initializer=tf.contrib.layers.xavier_initializer_conv2d())
out = tf.layers.batch_normalization(out, training=is_train)
out = tf.maximum(out, tf.multiply(alpha, out))
if (is_train): print("gen: ",out.get_shape().as_list())
out = tf.layers.conv2d_transpose(out, 256, 5, 2, padding="same",
activation=None,
kernel_initializer=tf.contrib.layers.xavier_initializer_conv2d())
out = tf.layers.batch_normalization(out, training=is_train)
out = tf.maximum(out, tf.multiply(alpha, out))
if (is_train): print("gen: ",out.get_shape().as_list())
out = tf.layers.conv2d_transpose(out, 128, 5, 2, padding="same", activation=None, kernel_initializer=tf.contrib.layers.xavier_initializer_conv2d())
out = tf.layers.batch_normalization(out, training=is_train)
out = tf.maximum(out, tf.multiply(alpha, out))
if (is_train): print("gen: ",out.get_shape().as_list())
out = tf.layers.conv2d_transpose(out, out_channel_dim, 5, 1, padding="same",
activation=None,
kernel_initializer=tf.contrib.layers.xavier_initializer_conv2d())
out = tf.tanh( out )
if (is_train): print("gen: ",out.get_shape().as_list())
return out
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_generator(generator, tf)
Implement model_loss
to build the GANs for training and calculate the loss. The function should return a tuple of (discriminator loss, generator loss). Use the following functions you implemented:
discriminator(images, reuse=False)
generator(z, out_channel_dim, is_train=True)
def model_loss(input_real, input_z, out_channel_dim):
"""
Get the loss for the discriminator and generator
:param input_real: Images from the real dataset
:param input_z: Z input
:param out_channel_dim: The number of channels in the output image
:return: A tuple of (discriminator loss, generator loss)
"""
# TODO: Implement Function
geneo = generator(input_z, out_channel_dim)
discor, disclr = discriminator(input_real)
discof, disclf = discriminator(geneo, reuse = True)
dislossr = tf.reduce_mean(
tf.nn.sigmoid_cross_entropy_with_logits(
logits=disclr,
labels=0.9*tf.ones_like(disclr)))
dislossf = tf.reduce_mean(
tf.nn.sigmoid_cross_entropy_with_logits(
logits=disclf,
labels=tf.zeros_like(disclf)))
disloss = dislossf + dislossr
genloss = tf.reduce_mean(
tf.nn.sigmoid_cross_entropy_with_logits(
logits=disclf,
labels=tf.ones_like(disclf)))
return disloss, genloss
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_loss(model_loss)
Implement model_opt
to create the optimization operations for the GANs. Use tf.trainable_variables
to get all the trainable variables. Filter the variables with names that are in the discriminator and generator scope names. The function should return a tuple of (discriminator training operation, generator training operation).
def model_opt(d_loss, g_loss, learning_rate, beta1):
"""
Get optimization operations
:param d_loss: Discriminator loss Tensor
:param g_loss: Generator loss Tensor
:param learning_rate: Learning Rate Placeholder
:param beta1: The exponential decay rate for the 1st moment in the optimizer
:return: A tuple of (discriminator training operation, generator training operation)
"""
# TODO: Implement Function
trainable = tf.trainable_variables()
genew = [ w for w in trainable
if "generator/" in w.name]
discw = [ w for w in trainable
if "discriminator/" in w.name]
with tf.control_dependencies(tf.get_collection(tf.GraphKeys.UPDATE_OPS)):
genewTo = tf.train.AdamOptimizer(
learning_rate, beta1 = beta1).minimize(
g_loss, var_list=genew)
discwTo = tf.train.AdamOptimizer(
learning_rate, beta1 = beta1).minimize(
d_loss, var_list=discw)
return discwTo, genewTo
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_opt(model_opt, tf)
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
import numpy as np
def show_generator_output(sess, n_images, input_z, out_channel_dim, image_mode):
"""
Show example output for the generator
:param sess: TensorFlow session
:param n_images: Number of Images to display
:param input_z: Input Z Tensor
:param out_channel_dim: The number of channels in the output image
:param image_mode: The mode to use for images ("RGB" or "L")
"""
cmap = None if image_mode == 'RGB' else 'gray'
z_dim = input_z.get_shape().as_list()[-1]
example_z = np.random.uniform(-1, 1, size=[n_images, z_dim])
samples = sess.run(
generator(input_z, out_channel_dim, False),
feed_dict={input_z: example_z})
images_grid = helper.images_square_grid(samples, image_mode)
pyplot.imshow(images_grid, cmap=cmap)
pyplot.show()
Implement train
to build and train the GANs. Use the following functions you implemented:
model_inputs(image_width, image_height, image_channels, z_dim)
model_loss(input_real, input_z, out_channel_dim)
model_opt(d_loss, g_loss, learning_rate, beta1)
Use the show_generator_output
to show generator
output while you train. Running show_generator_output
for every batch will drastically increase training time and increase the size of the notebook. It's recommended to print the generator
output every 100 batches.
import time
import tqdm
def train(epoch_count, batch_size, z_dim, learning_rate, beta1, get_batches, data_shape, data_image_mode):
"""
Train the GAN
:param epoch_count: Number of epochs
:param batch_size: Batch Size
:param z_dim: Z dimension
:param learning_rate: Learning Rate
:param beta1: The exponential decay rate for the 1st moment in the optimizer
:param get_batches: Function to get batches
:param data_shape: Shape of the data
:param data_image_mode: The image mode to use for images ("RGB" or "L")
"""
# TODO: Build Model
input_channels = data_shape[3] #int(3 if data_image_mode == "RGB" else 1)
print ("input channels: ", input_channels,", data_shape: ", data_shape)
input_real, input_z, learning_rt = model_inputs(
data_shape[1], data_shape[2], input_channels, z_dim)
d_loss, g_loss = model_loss(input_real, input_z, input_channels)
d_train, g_train = model_opt(d_loss, g_loss, learning_rt, beta1)
start_time = time.time()
saver = tf.train.Saver()
i=0
#!mkdir "./savedmodel"
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for epoch_i in range(epoch_count):
for batch_images in get_batches(batch_size):
# TODO: Train Model
i=i+1
#saver.save(sess, './savedmodel/model.ckpt')
#fileWriter = tf.summary.FileWriter("./savedmodel", graph=sess.graph)
#fileWriter.flush()
batch_images = batch_images*2
batch_z = np.random.uniform(-1, 1, size=(batch_size, z_dim))
#print("batch shape z:", batch_z.shape, " im:", batch_images.shape)
sess.run(d_train, feed_dict = {
input_real: batch_images,
input_z: batch_z,
learning_rt: learning_rate
})
sess.run(g_train, feed_dict = {
input_z: batch_z,
learning_rt: learning_rate
})
if(0 == i % 100):
d_accute_loss = sess.run(d_loss, feed_dict = {
input_real: batch_images,
input_z: batch_z
})
g_accute_loss = sess.run(g_loss, feed_dict = {
input_z: batch_z
})
tspan = (time.time()-start_time)/60
eta = (int(data_shape[0] * tspan/(i*batch_size)))
print("\r Ep: {:03d}/{:3d} DL:{:.4f} GL:{:.4f} time:{:d}/{:d} min ".format(
epoch_i, epoch_count, d_accute_loss, g_accute_loss, int(tspan), eta), i)
show_generator_output(sess, 16, input_z, input_channels, data_image_mode)
Test your GANs architecture on MNIST. After 2 epochs, the GANs should be able to generate images that look like handwritten digits. Make sure the loss of the generator is lower than the loss of the discriminator or close to 0.
batch_size = 64
z_dim = 100
learning_rate = 0.0013
beta1 = 0.45
if 'session' in locals() and session is not None:
print('Close interactive session')
session.close()
tf.set_random_seed(5)
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
epochs = 2
mnist_dataset = helper.Dataset('mnist', glob(os.path.join(data_dir, 'mnist/*.jpg')))
with tf.Graph().as_default():
train(epochs, batch_size, z_dim, learning_rate, beta1, mnist_dataset.get_batches,
mnist_dataset.shape, mnist_dataset.image_mode)
Run your GANs on CelebA. It will take around 20 minutes on the average GPU to run one epoch. You can run the whole epoch or stop when it starts to generate realistic faces.
batch_size = 64
z_dim = 100
learning_rate = 0.0003
beta1 = 0.45
tf.set_random_seed(5)
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
epochs = 1
celeba_dataset = helper.Dataset('celeba', glob(os.path.join(data_dir, 'img_align_celeba/*.jpg')))
with tf.Graph().as_default():
train(epochs, batch_size, z_dim, learning_rate, beta1, celeba_dataset.get_batches,
celeba_dataset.shape, celeba_dataset.image_mode)
When submitting this project, make sure to run all the cells before saving the notebook. Save the notebook file as "dlnd_face_generation.ipynb" and save it as a HTML file under "File" -> "Download as". Include the "helper.py" and "problem_unittests.py" files in your submission.


Test that all nodes from the detached DOM tree will get into one group in the heap snapshot. Bug 107819.


#include <environment.h>
Public Member Functions | |
| bool | AreValid (const std::vector< Vector3d > &positions, const Box &bound) const |
| bool | Initialize (const ros::NodeHandle &n) |
| virtual bool | IsValid (const Vector3d &position, const Box &bound) const =0 |
| virtual M | SimulateSensor (const P ¶ms) const =0 |
| virtual void | Visualize () const =0 |
| virtual | ~Environment () |
Protected Member Functions | |
| Environment () | |
| virtual bool | LoadParameters (const ros::NodeHandle &n) |
| virtual bool | RegisterCallbacks (const ros::NodeHandle &n) |
| virtual void | SensorCallback (const typename M::ConstPtr &msg)=0 |
Protected Attributes | |
| std::string | fixed_frame_ |
| bool | initialized_ |
| Vector3d | lower_ |
| std::string | name_ |
| ros::Subscriber | sensor_sub_ |
| std::string | sensor_topic_ |
| ros::Publisher | updated_pub_ |
| std::string | updated_topic_ |
| Vector3d | upper_ |
| ros::Publisher | vis_pub_ |
| std::string | vis_topic_ |
Definition at line 63 of file environment.h.
|
inlinevirtual |
Definition at line 65 of file environment.h.
|
inlineexplicitprotected |
Definition at line 85 of file environment.h.
| bool fastrack::environment::Environment< M, P >::AreValid | ( | const std::vector< Vector3d > & | positions, |
| const Box & | bound | ||
| ) | const |
Definition at line 192 of file environment.h.
| bool fastrack::environment::Environment< M, P >::Initialize | ( | const ros::NodeHandle & | n | ) |
Definition at line 125 of file environment.h.
|
pure virtual |
Implemented in fastrack::environment::BallsInBox.
|
protectedvirtual |
Reimplemented in fastrack::environment::BallsInBox.
Definition at line 148 of file environment.h.
|
protectedvirtual |
Definition at line 173 of file environment.h.
|
protectedpure virtual |
|
pure virtual |
Implemented in fastrack::environment::BallsInBox.
|
pure virtual |
Implemented in fastrack::environment::BallsInBox.
|
protected |
Definition at line 114 of file environment.h.
|
protected |
Definition at line 118 of file environment.h.
|
protected |
Definition at line 101 of file environment.h.
|
protected |
Definition at line 117 of file environment.h.
|
protected |
Definition at line 107 of file environment.h.
|
protected |
Definition at line 111 of file environment.h.
|
protected |
Definition at line 106 of file environment.h.
|
protected |
Definition at line 110 of file environment.h.
|
protected |
Definition at line 102 of file environment.h.
|
protected |
Definition at line 105 of file environment.h.
|
protected |
Definition at line 109 of file environment.h.


CS 294: Deep Reinforcement Learning, Spring 2017
| If you are a UC Berkeley undergraduate student looking to enroll in the fall 2017 offering of this course: We will post a form that you may fill out to provide us with some information about your background during the summer. Please do not email the instructors about enrollment: the form will be used to collect all information we need. |
| Instructors: Sergey Levine, John Schulman, Chelsea Finn |
| Lectures: Mondays and Wednesdays, 9:00am-10:30am in 306 Soda Hall. |
| Office Hours: MW 10:30-11:30, by appointment (see signup sheet on Piazza) |
| Communication: Piazza will be used for announcements, general questions and discussions, clarifications about assignments, student questions to each other, and so on. To sign up, go to Piazza and sign up with “UC Berkeley” and “CS294-112”. |
| For people who are not enrolled, but interested in following and discussing the course, there is a subreddit forum here: reddit.com/r/berkeleydeeprlcourse/ |
| Please do not email the course instructors about MuJoCo licenses if you are not enrolled in the course. Unfortunately, we do not have any license that we can provide to students who are not officially enrolled in the course for credit. |
Table of Contents
- Lecture Videos
- Lectures, Readings, and Assignments
- Prerequisites
- Related Materials
- Previous Offerings
Lecture Videos
The course lectures are available below. The course is not being offered as an online course, and the videos are provided only for your personal informational and entertainment purposes. They are not part of any course requirement or degree-bearing university program.
For all videos, click here.
For live
stream, click here.
Lectures, Readings, and Assignments
Below you can find an outline of the course. Slides and references will be posted as the course proceeds.
- Jan 18: Introduction and course overview (Levine, Finn, Schulman)
- Jan 23: Supervised learning and decision making (Levine)
- Slides
- End to End Learning for Self-Driving Cars
- A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning (DAgger paper)
- A Machine Learning Approach to Visual Perception of Forest Trails for Mobile Robots
- Learning Transferable Policies for Monocular Reactive MAV Control
- Learning Real Manipulation Tasks from Virtual Demonstrations using LSTM
- Jan 25: Optimal control and planning (Levine)
- Jan 27 (10 am, SDH 240): Review section: autodiff, backpropagation, optimization (Finn)
- Jan 30: Learning dynamical system models from data (Levine)
- Homework 1 is out: Imitation Learning
- Plotting and Visualization Handout: Handout
- Slides
- Feb 1: Learning policies by imitating optimal controllers (Levine)
- Feb 6: Guest lecture: Igor Mordatch, OpenAI
- Feb 8: RL definitions, value iteration, policy iteration (Schulman)
- Homework 1 is DUE
- Homework 2 is out: Basic RL: see hw2 directory in the course github
- Slides
- Feb 13: Reinforcement learning with policy gradients (Schulman)
- Feb 15: Learning Q-functions: Q-learning, SARSA, and others (Schulman)
- Feb 22: Advanced Q-learning: replay buffers, target networks, double Q-learning (Schulman)
- Homework 2 is DUE
- Homework 3 is out: Deep Q Learning
- Slides
- Feb 27: Advanced model learning: predicting images and videos (Finn)
- Slides
- Autonomous reinforcement learning on raw visual input data in a real world application
- Deep Spatial Autoencoders for Visuomotor Learning
- Embed to Control: A Locally Linear Latent Dynamics Model for Control from Raw Images
- Action-Conditional Video Prediction using Deep Networks in Atari Games
- Unsupervised Learning for Physical Interaction through Video Prediction
- Deep Visual Foresight for Planning Robot Motion
- Learning to Poke by Poking: Experiential Learning of Intuitive Physics
- Mar 1: Advanced topics in imitation and safety (Finn)
- Slides
- Robobarista: Object Part based Transfer of Manipulation Trajectories from Crowd-sourcing in 3D Pointclouds
- Learning Dexterous Manipulation for a Soft Robotic Hand from Human Demonstrations
- Unsupervised Perceptual Rewards for Imitation Learning
- Query-Efficient Imitation Learning for End-to-End Autonomous Driving (SafeDAgger)
- SHIV: Reducing Supervisor Burden in DAgger using Support Vectors for Efficient Learning from Demonstrations in High Dimensional State Spaces
- Uncertainty-Aware Reinforcement Learning for Collision Avoidance
- Guided Policy Search as Approximate Mirror Descent
- Reset-Free Guided Policy Search: Efficient Deep Reinforcement Learning with Stochastic Initial States
- Mar 6: Inverse RL: acquiring objectives from demonstration (Finn)
- Mar 8: Advanced policy gradients: natural gradient and TRPO (Schulman)
- Homework 3 is DUE
- Homework 4 is out: Deep Policy Gradients
- Slides
- Mar 13: Policy gradient variance reduction and actor-critic algorithms (Schulman)
- Mar 15: Summary of policy gradients and temporal difference methods (Schulman)
- Mar 20: The exploration problem (Schulman)
- Mar 22: Parallel RL algorithms, open problems and challenges in deep reinforcement learning (Levine)
- Deadline to form final project groups
- Slides
- Mar 27: Homework 4 is DUE
- Apr 3: Transfer in Reinforcement Learning (Finn)
- Apr 5: Neural Architecture Search with Reinforcement Learning: Quoc Le and Barret Zoph, Google Brain Team
- Apr 10: Generalization and Safety in Reinforcement Learning and Control: Aviv Tamar, UC Berkeley
- Apr 12: Guest lecture, Honglak Lee, University of Michigan and Google Brain Team
- Apr 17: Project milestone presentations
- Final project milestone reports DUE
- Apr 19: Guest lecture: Mohammad Norouzi, Google Brain Team
- Apr 24: Guest lecture: Pieter Abbeel, UC Berkeley and OpenAI
- Apr 26: Final project presentations
- May 1: Final project presentations
- May 3: Final project presentations (spillover period)
Prerequisites
CS189 or equivalent is a prerequisite for the course. This course will assume some familiarity with reinforcement learning, numerical optimization and machine learning. Students who are not familiar with the concepts below are encouraged to brush up using the references provided right below this list. We’ll review this material in class, but it will be rather cursory.
- Reinforcement learning and MDPs
- Definition of MDPs
- Exact algorithms: policy and value iteration
- Search algorithms
- Numerical Optimization
- gradient descent, stochastic gradient descent
- backpropagation algorithm
- Machine Learning
- Classification and regression problems: what loss functions are used, how to fit linear and nonlinear models
- Training/test error, overfitting.
For introductory material on RL and MDPs, see
- CS188 EdX course, starting with Markov Decision Processes I
- Sutton & Barto, Ch 3 and 4.
- For a concise intro to MDPs, see Ch 1-2 of Andrew Ng’s thesis
- David Silver’s course, links below
For introductory material on machine learning and neural networks, see
Related Materials
John's lecture series at MLSS
- Lecture 1: intro, derivative free optimization
- Lecture 2: score function gradient estimation and policy gradients
- Lecture 3: actor critic methods
- Lecture 4: trust region and natural gradient methods, open problems
Courses
- Dave Silver’s course on reinforcement learning / Lecture Videos
- Nando de Freitas’ course on machine learning
- Andrej Karpathy’s course on neural networks
Relevant Textbooks
- Deep Learning
- Sutton & Barto, Reinforcement Learning: An Introduction
- Szepesvari, Algorithms for Reinforcement Learning
- Bertsekas, Dynamic Programming and Optimal Control, Vols I and II
- Puterman, Markov Decision Processes: Discrete Stochastic Dynamic Programming
- Powell, Approximate Dynamic Programming


--- title: "Advanced Glycation Endproduct-Induced Albuminuria and Changes in Gut Microbiota and Metabolome are Attenuated by Resistant Starch in a Mouse Model of Type 2 Diabetes" draft: false authors: [] event: "Australasian Diabetes Congress 2019" event_url: http://www.diabetescongress.com.au/ location: Sydney, Australia summary: "Australasian Diabetes Congress 2019" # Talk start and end times. # End time can optionally be hidden by prefixing the line with `#`. date: "2019-08-22T08:00:00Z" #date_end: "2019-10-02T12:00:00Z" all_day: true publishdate: "2019-08-01" links: # - icon: twitter # icon_pack: fab # name: Follow # url: https://twitter.com/matt_snelson #- icon: file-alt # icon_pack: fa # name: Published Abstract # url: "" - icon: award icon_pack: fa name: "Finalist - Pincus Taft Award" url: "talk/2019-ADC-2/" categories: # - talks tags: - advanced glycation endproducts - resistant starch - diabetic kidney disease lastmod: '2019-06-16T02:20:01-07:00' featured: no image: caption: "" focal_point: "" preview_only: no projects: [] ---
Background: Excess intake of dietary advanced glycation endproducts (AGEs) contributes to chronic renal injury. Gut dysbiosis is implicated in the progression of diabetic nephropathy, however, the role of dietary AGEs in gut dysbiosis and renal injury in the context of type 2 diabetes has not yet been explored. This study investigated whether excess consumption of dietary AGEs promotes gut dysbiosis and exacerbates renal injury in diabetic mice, and if this could be ameliorated with resistant starch (RS) supplementation.
Methods: Six-week-old diabetic mice (db/db) and non-diabetic mice (db/m) were randomised to receive a low AGE (LAGE, unbaked rodent chow) or a high AGE diet (HAGE, baked at 160°C for 1h), with or without 12.5% RS for 10 weeks. 24-hour urine was collected for the assessment of albuminuria. Intestinal permeability was assessed in vivo by the clearance of FITC-labelled dextran. Cecal digesta were collected for an untargeted metabolomics screen and microbiota analysis by 16S rRNA gene sequencing.
Results: The HAGE diet exacerbated albuminuria in diabetic mice which was attenuated by RS. The HAGE diet increased gut permeability of db/db mice, an effect not observed in HAGE+RS-fed db/db mice. In db/db mice, a HAGE diet was associated with an increase in the Firmicutes/Bacteroidetes (F/B) ratio, which was ameliorated by supplementation with RS. High-AGE-fed db/db mice had a unique cecal metabolome with a marked increase in metabolites from the phenylalanine, tryptophan and tyrosine pathways which were positively correlated with Firmicutes and negatively correlated with Bacteroidetes.
Conclusions: HAGE-feeding increased intestinal permeability and the F/B ratio, altered the cecal metabolome and worsened albuminuria in db/db mice. RS protected against HAGE-induced albuminuria and reversed changes observed in the microbiome and cecal metabolome. This study supports the notion that dietary AGEs contribute to DKD via alterations in gut homeostasis and indicate a potential renoprotective role for RS.


In a world full of corruption and political struggles the voice of the weak is often left unheard. When people rebel against governments it is time to pick your side. Join the forces of newly created government and help them rise, or ally with loyalist forces aided by the intervention of one of the neighbouring countries.
Challenge yourself in campaign against AI or battle your friends in a hot-seat mode, where you will fight for control of strategic locations by issuing commands to your infantry, tanks and airforce.
Create your own maps using in-game map editor, then share them with the world.


--- layout: default title: Home --- {% include header.html has_sticky_navigation='true' exclude_main_nav='true' %} Let’s Create Your Team {% if jekyll.environment == 'production' %} {% assign signup_path = 'https://koding.com/Teams/Create' %} {% else %} {% assign signup_path = 'http://dev.koding.com:8090/Teams/Create' %} {% endif %} How would you like to use your team account? Single Developer You would like to setup a vagrant or cloud stack as your personal development playground. Team You would like to setup a dev environment for a team of developers for private or open-source projects. Enterprise You have multiple teams with different dev environments in multiple locations. Schedule a free review of your development processes, and we'll setup a live cloud-based development environment for your team. GET STARTED {% include analytics.html %}
You would like to setup a vagrant or cloud stack as your personal development playground.
You would like to setup a dev environment for a team of developers for private or open-source projects.
You have multiple teams with different dev environments in multiple locations.
Schedule a free review of your development processes, and we'll setup a live cloud-based development environment for your team.


Take an Android notepad app and convert it from Java to Kotlin,
learning key features of the Kotlin programming language...
For experts
JavaScript best practicesJavaScript best practices
This course is designed to take your existing JavaScript knowledge and teach
you how
to leverage patterns and practices to take...
For beginners
Intro to Web DevelopmentIntro to Web Dev
Master the languages of the web: HTML, CSS, and JavaScript. This path will
prepare
you to build basic websites and then build interactive web apps...
For beginners
Introduction to Virtual RealityIntro to Virtual Reality
This course is designed for students who are new to virtual reality and want
to learn
about the principles of VR technology including optics, displays,
stereopsis,
tracking, and major hardware platforms.
For beginners
Intro to Machine LearningIntro to Machine Learning
This course teaches you everything from clustering to decision trees, from ML
algorithms such as Adaboost to SVMs....


'I will be back': Fadnavis pays tribute to Bal Thackeray amid mocking slogans by Sena
The Sena and the BJP contested the October Assembly polls together and won 161 seats between them.
by PTIMumbai: Former Maharashtra chief minister Devendra Fadnavis was on Sunday subjected to sloganeering by a section of Shiv Sena workers as he left Shivaji Park in the metropolis after paying tribute to Bal Thackeray on his ninth death anniversary.
Some Sena workers in close proximity to the former CM's convoy were seen shouting in Marathi Fadnavis' assembly poll campaign slogan: 'I will be back (as CM)' along with the Sena's traditional 'Chhatrapati Shivaji Maharaj ki jai' war cry.
Fadnavis and his entourage, which included several senior BJP leaders, moved on without reacting to the jibes. There were no Shiv Sena leaders, except Uddhav Thackeray's PA Milind Narvekar, when Fadnavis arrived at Shivaji Park to pay tribute to the founder of the Maharashtrian party.
Earlier in the day, Fadnavis had tweeted a video containing some of the late Sena patriarch's rousing speeches, and had added his voice-over as a tribute.
The Sena and the BJP contested the October Assembly polls together and won 161 seats between them, before the Uddhav Thackeray-led party's insistence on equal sharing of the chief ministerial tenure led to acrimony and stalemate in government formation.
Following weeks of bitter political drama, the Sena is currently in the process of forming a non-BJP government with support from Congress and Nationalist Congress Party.
Catch the latest news, live coverage and in-depth analyses from India and World. Follow us on Facebook and Twitter.


Information Sources
-
https://digitalarchive.wilsoncenter.org/document/115921
-
https://www.energy.gov/management/office-management/operational-management/history/manhattan-project
-
https://www.atomicheritage.org/history/soviet-atomic-program-1946
Image Sources
-
https://commons.wikimedia.org/wiki/File:%D0%A5%D0%A4%D0%A2%D0%98.jpg
See Also
More info on how a hydrogen bomb differs from atomic bomb:
https://www.nytimes.com/2017/09/03/world/asia/north-korea-hydrogen-bomb.html


Modularity = {{attribute.stats.modularity|number}} for
{{attribute.name}}
Modularity is the fraction of the edges that fall within the modality groups
minus the expected fraction if edges were distributed at random.
The value of the modularity lies in the range [−0.5, 1]. It is positive
if the number of edges within groups exceeds the number expected on the basis
of chance. For a given division of the network's vertices into some modules,
modularity reflects the concentration of edges within modules compared with
random distribution of links between all nodes regardless of modules. See more
on
Wikipedia.


import com.sleepycat.db.*;public void detect(int flags, int atype) throws DbException;
The DbLockTab.detect method runs one iteration of the deadlock detector. The deadlock detector traverses the lock table, and for each deadlock it finds, marks one of the participating transactions for abort.
The flags value is specified by logically OR'ing together one or more of the following values:
The atype parameter specifies which transaction to abort in the case of deadlock. It must be set to one of values described for the lk_detect field of the DbEnv object.
The DbLockTab.detect method is the underlying method used by the db_deadlock utility. See the db_deadlock utility source code for an example of using DbLockTab.detect in a POSIX 1003.1 environment.
The DbLockTab.detect method throws an exception that encapsulates an errno on failure.
The DbLockTab.detect method may fail and throw an exception for any of the errors specified for the following Berkeley DB and C library functions: abort(3), fcntl(3), fflush(3), fprintf(3), free(3), fsync(3), getpid(3), lseek(3), malloc(3), memcpy(3), memset(3), mmap(3), munmap(3), shmat(3), shmdt(3), sprintf(3), strerror(3), vfprintf(3), vsnprintf(3), and write(3).


https://github.com/wwlib/robocommander
https://wwlib.github.io/robocommander/
see also: https://wwlib.github.io/robokit/
robocommander is a tool for controlling robots. Any robot that implements a command protocol via a socket or REST API can potentially be controlled by robocommander (with appropriate modifications). The current version can control robokit robots and Jibo robots (dev credentials are required).
robocommander is ideal for real-time, human-operated Woz (Wizard of Oz) remote control. In addition, robocommander’s WozGraph panel provides a graph-based tool for designing and controlling scripted interactions. WozGraph layouts can incorporate simple automation using JavaScript. WozGraph layouts can be configured to respond automatically to voice commands via integration with LUIS and/or Dialogflow NLU services.
For developers, robocommander includes TypeScript classes that provide an easy way to prototype NLU-driven Remote Operation Mode (ROM) skills.
The use of the yarn package manager is strongly recommended, as opposed to using npm
.
Intro: https://wwlib.github.io/robocommander/robo-commander-intro.html
Building robocommander requires node v8.11.2 (or newer)
yarn
# run application in development mode
yarn dev
# compile source code and create webpack output
yarn compile
# `yarn compile` & create build with electron-builder
yarn dist
# `yarn compile` & create unpacked build with electron-builder
yarn dist:dir
If things go wrong, try clearing any existing node_modules directory Also clear yarn cache: $ rm -rf ~/.cache/yarn


--- layout: fireballs title: Latest Fireballs across UK description: List of the latest fireball meteors recorded by UKMON cameras over the UK permalink: /fireballs/ image: img/fireballs-twitter-card.png ---
List of large fireball meteors and bolides recorded over United Kingdom since 2012.


Library: Language support
Function
Storage deallocation functions implicitly called by the corresponding delete expressions to deallocate storage previously allocated by one of the matching allocation functions
#include <new> namespace std { struct nothrow_t {}; extern const nothrow_t nothrow; } void operator delete(void*) throw(); void operator delete(void*, const std::nothrow_t&) throw(); void operator delete[](void*) throw(); void operator delete[](void*, const std::nothrow_t&) throw(); void operator delete(void*, void*) throw(); void operator delete[](void*, void*) throw();
The library provides definitions for six overloads of the global operator delete. The functions are implicitly called as the second step (after the call to the destructor, if any) during the evaluation of the corresponding delete expression to deallocate storage previously allocated by one of the matching allocation functions (::operator new). Replacements for the replaceable forms of the functions should always paired with the replacements for the corresponding overload of operator new.
void operator delete(void*) throw(); void operator delete(void*, const std::nothrow_t&) throw();
Deallocation functions implicitly called by a delete expression to deallocate storage previously allocated by the matching ::operator new (std::size_t) or ::operator new (std::size_t, std::nothrow&), respectively. A C++ program may replace these functions.
void operator delete[](void*) throw(); void operator delete[](void*, const std::nothrow_t&) throw();
Deallocation functions implicitly called by a delete expression to deallocate storage previously allocated by the matching ::operator new[] (std::size_t) or ::operator new[] (std::size_t, std::nothrow&), respectively. A C++ program may replace these functions.
void operator delete(void*, void*) throw(); void operator delete[](void*, void*) throw();
Default functions implicitly called when the initialization in a placement new expression that invokes the placement form of operator new terminates by throwing an exception. A C++ program may not replace these functions.
<new>, bad_alloc, operator new
ISO/IEC 14882:1998 -- International Standard for Information Systems -- Programming Language C++, Section 18.4


---
permalink: /2018/bangalore
---
{% include 2018_data/head.html %}
{% include 2018_data/header-home-bangalore.html %}
GoLangGirls/Bangalore
Bangalore - 2nd Dec 2018
{% include 2018_data/about.html %}
{% include 2018_data/contact.html %}
{% include 2018_data/footer.html %}
{% include 2018_data/js.html %}


Minimal Angular directives for Bootstrap. Unlike other Angular/Bootstrap libraries, ngx-strap leverages native Bootstrap javascript and css rather than recreating them from scratch.
ngx-strap
Installation


Blog
{{ page = newest_page_preview () }}
{{= page.title }}
{{= plugin_wiki.render(page.body) }} {{ if page.more: }}{{ pass }}Tutorials
Resources for doing science with the dotSkapes platform.
Documents
Our nascent documentation system.
Researcher
Resources for doing research with dotSkapes.
Developer
Resources for understanding or contributing to our infrastracture.
Case Study
Examples of dotSkapes in the wild.
About
Information on our team and our collaborators.


faria.data.getUnique( array )
Returns the given array with all duplicated items removed - a set.
The function does not confuse between like values: '1' and 1 are treated as being different, nor does it confuse like types: {key:'a'} and {key:'b'} are also treated as being different.
(Note that the function may take a while if given a very large array containing a number of complex objects)
Arguments
array (Array)
The array whose duplicates will be removed
Returns
(Array)
The given array, with all duplicates removed
faria.data.getUnique([1,1,2,3,2,4]);
// => [ 1, 2, 3, 4 ]
faria.data.getUnique(['1', 1, {dup: 1}, {dup: 1}, {dup: 2}, ['a', 'b'], ['a', 'b']]);
// => [ '1', 1, {dup:1}, {dup:2}, ['a', 'b'] ]
faria.data.getChildren( object, [parentString=null, excl=[]] )
Returns an array of all the items at a given position, or depth, of an an object
Arguments
object (Object)
Usually an object-literal (although a proper, constructed object-function could be used in certain cases, though it would not be advised), this is the object to be searched
parentString (String)
A string representation of the path through the object to the position required. If not given, the function uses the top level of the object
(Note that the function returns items of an object, so parentString should always point to a position in the object that still itself contains keys, and not to a deepest position in the object)
excl (Array)
An array of the names of any keys whose items you do not want to be included in the returned array
Returns
(Array)
An array of the selected items
faria.data.getChildren({one:1, two:2, three:3});
// => [ 1, 2, 3 ]
faria.data.getChildren({
mod:{
mod_2:{
hello:'world'
}
}
}, 'mod.mod_2');
// => [ 'world' ]
faria.data.getChildren({
mod:{
mod_2:{
yes:'hello',
no:'goodbye'
}
}
}, 'mod.mod_2', ['no']);
// => [ 'hello' ]
faria.data.findInObjList( array, key, value )
Searches an array of objects for an object whose key identifies a specific value. Useful when you have a number of objects in an array, and know that that all have the same structure, but don't know exactly what they all look like.
(Note that this function does rely on the objects having some kind of unique key or property that you know beforehand)
Arguments
array (Array)
The array of objects to search
key (String)
The key by which to identify the desired object
value (*)
The value of the desired object's key
Returns
(Object)
The desired object
faria.data.findInObjList([
{key: 1},
{key: 2}
], 1);
// => { key: 1 }
faria.data.assignNodeValue( object, nodeString, value )
Navigates to a specified position in the given object, and assigns that position a value.
Useful for when you need to assign a value to a position in an object, but cannot know exactly what that position will be
(Note that if the specified position does not currently exist, the function will create it before assigning it a value)
Arguments
object (Object)
The object to change
nodeString (String)
A string representing the path to the desired position in the object. Each layer of the object must be denoted by a full stop: "."
value (*)
The value to assign
var obj = {
mod:{
mod_2:{
target:null
}
}
};
faria.data.assignNodeValue(obj, 'mod.mod_2.target', 'hello world!');
obj;
// => { mod: { mod_2: { target: 'hello world' } } }
faria.data.selectObjNode( object, nodeString )
Performs a similar function to getChildren(), but targetted at one specific position and item, rather than all of the items at a position
Arguments
object (Object)
The object to search
nodeString (String)
A string representing the path to the desired position in the object. Each layer of the object must be denoted by a full stop: "."
Returns
(*)
The desired item
faria.data.assignNodeValue({
mod:{
mod_2:{
target:'hello world'
}
}
}, 'mod.mod_2.target');
// => 'hello world'
faria.data.randomiseStructure( object )
If the given object, at any position, contains an array, this function will replace that array with a randomly chosen value from the same array
(Note that, were you you to look at the source code for this function, you would see that it actually accepts two arguments, however, the second argument should not be invoked directly. It exists so that the function can properly iterate through object positions by calling itself with deeper positions of the object)
Arguments
object (Object)
The object to "randomise""
Returns
(Object)
The randomised object
(Note that this is a separate object to the one passed to the function, which remains unchanged)
faria.data.randomiseStructure({ nums: [1, 2, 3], chars: ['a', 'b', 'c'] });
// => { nums: 1 or 2 or 3, chars: 'a' or 'b' or 'c' }
faria.data.populateStructure( object, index )
Peforms a similar function to randomiseStructure(), but instead of selecting random items from an object's arrays, it selects items with a given index
(Note that, were you you to look at the source code for this function, you would see that it actually accepts three arguments, however, the third argument should not be invoked directly. It exists so that the function can properly iterate through object positions by calling itself with deeper positions of the object)
Arguments
object (Object)
The object to "populate"
index (Number)
The index to use to "populate" the object
Returns
(Object)
The populated object
(Note that this is a separate object to the one passed to the function, which remains unchanged)
faria.data.populateStructure({ nums: [1, 2, 3], chars: ['a', 'b', 'c'] }, 1)
// => { nums: 2, chars: b' }
faria.data.copyStructure( object )
Creates a new object that is exactly the same "shape" as the given object, but where no positions have values assigned
(Note that, were you you to look at the source code for this function, you would see that it actually accepts two arguments, however, the second argument should not be invoked directly. It exists so that the function can properly iterate through object positions by calling itself with deeper positions of the object)
Arguments
object (Object)
The object to copy
Returns
(Object)
The new, empty object
(Note that this is a separate object to the one passed to the function, which remains unchanged)
faria.data.populateStructure({
mod:{
target:'I want the truth!',
mod_2:{
target_2:"You can't handle the truth!"
}
}
});
// => { mod: { target: null, mod_2: { target_2: null } } }
faria.data.populateArray( length, callback )
Essentially a combination of the fill() and map() prototype functions, this creates an array of given length, and fills each position of the array with the output of a given function
This is particularly useful for when the function you want will yield a different result everytime it is called
Arguments
length (Number)
The size of the array you want to create
callback (Function)
The function used to fill each position in the array
Returns
(Array)
The newly created array
// let's assume we have defined an object (named "HashedObj")
// whose constructor includes a section of code
// that assigns every new instance of the object with a unique key
// we can use populateArray() to easily create an array of these objects
faria.data.populateArray(4, () => new HashedObj());
// => [ {..., key: '#dfh46', ...}, {..., key: '#xsv5g', ...}, ... ]
faria.data.extend( object, extension )
A more powerful version of assignNodeValue(), this functions attaches an object structure of any shape or complexity to an existing object, integrating it into any pre-existing shape / struture etc. as needed
(Note that this function is intended for manipulating structures, rather than values, and so trying to change an existing position's value will only work if you are changing it to another value. See examples below)
Arguments
object (Object)
The object you want to extend. Best practice would be to create this object as a variable outside of the function, but you can pass it directly and the function will return the extended object
extension (Object)
The object to be attached. It can be of any shape or size.
Returns
(Object)
The function directly changes the passed object, and while it does give a return value, the best way to use this function is to assign your object elsewhere, and call extend() without assigning it to any variable itself. The initial object will be changed.
var obj = {};
faria.data.extend(obj, {
one:1,
two:2,
mod:{
three:3,
mod_2:{
target:'hello world'
}
}
});
obj;
// => { one: 1,
// two: 2,
// mod: { three: 3, mod_2 { target: 'hello world' } } }
var obj = {mod: {four: 4}};
faria.data.extend(obj, {
mod:{
three:3, mod_2:{
target:'hello world'
}
}
});
obj;
// => { mod: { four: 4, three: 3, mod_2: { target: 'hello world' } } }
// NOTE that the function can change values into other values
var obj = {one: 'one'};
faria.data.extend(obj, {
one: 1
});
obj;
// => { one: 1 }
// the function cannot change a value into an object, however
var obj = {mod: 'string'};
faria.data.extend(obj, {
mod: {mod_2: [object Object]}
});
obj;
// => TypeError: cannot set property [whatever your property name is] of undefined
faria.data.cloneObject( object )
Provides an identical, but entirely separate version of the given object. Editing the returned object will not be mirrored in the old.
(Note that, were you you to look at the source code for this function, you would see that it actually accepts two arguments, however, the second argument should not be invoked directly. It exists so that the function can properly iterate through object positions by calling itself with deeper positions of the object)
Arguments
object (Object)
The object to be cloned
Returns
(Object)
An object that is identical to that passed as an argument, but that is it's own, completely separate variable.
var obj = {
mod: {
mod_1: 1,
mod_2: [ 'a', 'b' ],
mod_3: 3
}
};
var newObj = faria.data.cloneObject(obj);
newObj.mod.mod_1 = 'one';
console.log(obj);
// => { mod: { mod_1: 1, mod_2: [ 'a', 'b' ], mod_3: 3 } }
console.log(newObj);
// => { mod: { mod_1: 'one', mod_2: [ 'a', 'b' ], mod_3: 3 } }
faria.data.shallowSort( object, [desc=true] )
Sorts the given object according to its first layer of key / value pairs
(Note that this function should only be used on a shallow object, whose values are all numbers)
Arguments
object (Object)
The object to be sorted
desc (Bool)
An optional argument to have the function sort in a descending or ascending pattern
Returns
(Array)
An array of [key, value] arrays, sorted according to their value attribute, where key is a key from the given object, and value is its associated value.
(Note that this function deliberately returns not only a separate object to that being sorted, but one of a different type. This is because the ordering of an object's keys cannot be relied upon to remain constant)
var obj = {
a: 3,
b: 1,
c: 7
};
faria.data.shallowSort(obj);
// => [ [ 'c', 7 ], [ 'a', 3 ], [ 'b', 1 ] ]
faria.data.shallowSort(obj, false);
// => [ [ 'b', 1 ], [ 'a', 3 ], [ 'c', 7 ] ]
faria.data.isInObjList( array, key, value )
Effectively the same as "findInObjList()", but returning "true" if an object with the given key / value pair exists in the given array, rather than returning the object in question.
Arguments
array (Array)
The array to be searched
key (String)
The key by which to identify the desired object
value (*)
The value of the desired object's key
Returns
(Bool)
Whether or not the object with the given key / value pair is in the given array
var objList = [
{ id: 'obj01' },
{ id: 'obj02' },
{ id: 'obj03' }
];
faria.data.isInObjList(objList, 'id', 'obj03');
// => true
faria.data.isInObjList(objList, 'id', 'obj04');
// => false
faria.data.indexInObjList( array, key, value )
Effectively the same as "findInObjList()" and "isInObjList()", but returning the index of the required object.
Arguments
array (Array)
The array to be searched
key (String)
The key by which to identify the desired object
value (*)
The value of the desired object's key
Returns
(Number)
The index of the object in the given array, or -1 if the object cannot be found
var objList = [
{ id: 'obj01' },
{ id: 'obj02' },
{ id: 'obj03' }
];
faria.data.indexInObjList(objList, 'id', 'obj03');
// => 2
faria.data.indexInObjList(objList, 'id', 'obj04');
// => -1
faria.data.objFilter( object, callback )
Works like the built-in Array.prototype.filter() method, but for an object.
That is, it filters out any key/value pairs in the object that, when passed to a callback, return "false".
(Note that this function creates a new object, rather than returning a modified one.)
Arguments
object (Object)
The object to be filtered
callback (Function)
The function used to determine whether or not a key/value pair should be included in the filtered object.
(Note that this function should return Booleans only)
Returns
(Object)
A new object, containing any key/value pairs from the original that would yield a "true" response from the callback
var obj = {
one: { id: 'obj01' },
two: { id: 'obj02' },
three: { id: 'obj03' }
};
faria.data.objFilter(obj, i => i.id === 'obj02');
// => { two: { id: 'obj02' } }
var obj = {
one: { name: 'Carol' },
two: { name: 'Cheryl' },
three: { name: 'Cristal' },
four: { name: 'Carina' },
five: { name: 'Cherlene' }
};
faria.data.objFilter(obj, i => i.name.includes('Ch'));
// => { two: { name: 'Cheryl' }, five: { name: 'Cherlene' } }
faria.data.targetedSort( object, nodeString, desc=true )
Similar to faria.data.shallowSort(), but using an additional argument to sort deeper / more complex objects
(Note that the object to be sorted must have consistently named child objects for the function to work)
Arguments
object (Object)
The object to be sorted
nodeString (String)
A string representing the path to whatever value the function should sort by. Each layer of the object should be denoted by a full stop: "."
(Note that the first layer of the object should not be included here -- see example)
desc (Bool)
An optional argument to have the function sort in a descending or ascending pattern
Returns
(Array)
An array of [key, value] arrays, sorted according to their value attribute, where key is a key from the "top" of the given object, and value is the value indicated by the "nodeString" argument.
(Note that this function deliberately returns not only a separate object to that being sorted, but one of a different type. This is because the ordering of an object's keys cannot be relied upon to remain constant)
var obj = {
one: { num: 6 },
two: { num: 3 },
three: { num: 9 }
};
faria.data.targetedSort(obj, 'num');
// => [ [ 'mod_3', 9 ], [ 'mod_1', 6 ], [ 'mod_2', 3 ] ]
var obj = {
a: { mod: { target: 8 } },
b: { mod: { target: 12 } },
c: { mod: { target: 3 } }
};
// note that here, the "top level" keys of the object ("a", "b", and "c")
// are not included in the "nodeString" argument
// if you look in the function's source code, you'll see that it appends each key
// to the nodeString as required
faria.data.targetedSort(obj, 'mod.target', false);
// => [ [ 'c', 3 ], [ 'a', 8 ], [ 'b', 12 ] ]
faria.data.deepIncludes( container, target )
Works like the ES6 "includes()" function, but for searching nested arrays and associative arrays
(Note that if you want to find a specific key-value pair in an object, "faria.data.selectObjNode()" or "faria.data.findInObjList()" would be better choices)
Arguments
container (Array | Object)
The array or associative array to be searched.
(Note that passing in a more complex Object will yield unexpected results)
target (*)
The value, array, or object to be searched for.
(Note that while you can use a string for the argument, it is not the intended use of the function, and may yield unexected results)
Returns
(Bool)
Whether or not the "target" argument is included in the given container
var arr = [
[1, 2],
[3, 4] ];
faria.data.deepIncludes(arr, [1, 2]);
// => true
var arr = [1, 2, {x:20}];
faria.data.deepIncludes(arr, {x: 20});
// => true
var obj = {
mod_1: 1,
mod_2: {
x: 30,
}
};
faria.data.deepIncludes(obj, {x: 30});
// => true
// note that here, while the object does contain the key-value pair "x: 30",
// it does not contain the object "{x: 30}" explicitly,
// and therefore the function returns "false"
var obj = {
mod_1: 1,
mod_2: {
x: 30,
y: 20
}
};
faria.data.deepIncludes(obj, {x: 30});
// => false


@x:Act is dynamically typed. Every value has a type, but multiple executions of a single expression may yield values with different types.
The Type function returns the type of a value. The ? infix operator tests if a value has a specified type. The ~ infix operator asserts that a value has a specified type. The ~ infix operator can also be used on @x:var declarations, @x:const declarations, and @x:func declarations formal parameter and result specifications.
A prefix form of the ~ operator is also available. It asserts that the following expression has value true.
@x:Act has a number of predefined types. The @x:type command is used to define new types.
A type controls the set of values of an object of the type. It also controls the set of operations that can be applied to the type and to objects of the type.
A view is similar to a type, except it is specified as part of operations on values. For example, the string == infix operator compares two strings for equal characters. The view operation ==#fold infix operator compares two strings after case-folding.
@x:Act has a number of predefined views. The @x:view command is used to define new views.
Views can be used for subsetting. For example, the boolean view is a view of strings that allows only two values "true" and "false".
Views can also be used for supersetting. For example, the view TypeOr[int,string] contains both type int and type string values.
@x:Act does not support type inheritance. Views can be used in many places where inheritance is used in other languages.


Chapter 13 Concluding remarks
Once the basic analysis is completed, it is often useful to save the SingleCellExperiment
object to file with the saveRDS
function.
The object can then be easily restored into new R sessions using the readRDS
function.
This allows further work to be conducted without having to repeat all of the processing steps described above.
A variety of methods are available to perform more complex analyses on the processed expression data. For example, cells can be ordered in pseudotime (e.g., for progress along a differentiation pathway) with monocle (Trapnell et al. 2014) or TSCAN (Ji and Ji 2016); cell-state hierarchies can be characterized with the sincell package (Julia, Telenti, and Rausell 2015); and oscillatory behaviour can be identified using Oscope (Leng et al. 2015). HVGs can be used in gene set enrichment analyses to identify biological pathways and processes with heterogeneous activity, using packages designed for bulk data like topGO or with dedicated single-cell methods like scde (Fan et al. 2016). Full descriptions of these analyses are outside the scope of this workflow, so interested users are advised to consult the relevant documentation.
All software packages used in this workflow are publicly available from the Comprehensive R Archive Network (https://cran.r-project.org) or the Bioconductor project (http://bioconductor.org). The specific version numbers of the packages used are shown below, along with the version of the R installation.
 “The dynamics and regulators of cell fate decisions are revealed by pseudotemporal ordering of single cells.” Nat. Biotechnol. 32 (4): 381–86.
Ji, Z., and H. Ji. 2016. “TSCAN: Pseudo-time reconstruction and evaluation in single-cell RNA-seq analysis.” Nucleic Acids Res. 44 (13): e117.
Julia, M., A. Telenti, and A. Rausell. 2015. “Sincell: an R/Bioconductor package for statistical assessment of cell-state hierarchies from single-cell RNA-seq.” Bioinformatics 31 (20): 3380–2.
Leng, N., L. F. Chu, C. Barry, Y. Li, J. Choi, X. Li, P. Jiang, R. M. Stewart, J. A. Thomson, and C. Kendziorski. 2015. “Oscope identifies oscillatory genes in unsynchronized single-cell RNA-seq experiments.” Nat. Methods 12 (10): 947–50.
Fan, J., N. Salathia, R. Liu, G. E. Kaeser, Y. C. Yung, J. L. Herman, F. Kaper, et al. 2016. “Characterizing transcriptional heterogeneity through pathway and gene set overdispersion analysis.” Nat. Methods 13 (3): 241–44.


It has been quite a while since the ROV team has provided an online progress update. Fortunately, a large reason for this overlook, is the team has been focused on working to train new members, to build a prototype vehicle, and to design a new vehicle, ROV X7.
The beginning of last semester saw the largest influx of new members in ROV history. Initial meetings, led by new captain Kyle Rakos along with new team leads Josh Berg, Matt Molo, and Evan Widloski, saw sizes of over 35 potential members. As members committed, there was still a large amount of people, primarily freshmen, who began the learning process of how to build an ROV.
In order to train new members, along with providing a practice vehicle for use before the competition, the team began work on a prototype ROV. This prototype used a modular frame to allow attachment of new tools in order to facilitate testing before the final vehicle is assembled. Additionally, it was designed to utilize old electronics combined with new electronics for testing purposes. This vehicle has been an immeasurable help in training new and old members alike. The vehicle should see its first full pool test within the following weeks.
In the midst of the prototype development the mission rules were released. This year the mission will take place in St. John's, Newfoundland and Labrador, Canada from June 25-27, 2015. There will be three separate tasks at various locations. The various tasks provide a much greater level of difficulty, something the team feels prepared for accomplishing.
Therefore, in parallel with the development of the prototype vehicle, design work has been done on ROV X7. Mechanical design is nearing completion and large parts have already been sent out for machining. Final electronic design work has already commenced and software is being continuously refined.
The ROV team is looking forward to the regional competition near the end of the semester and is even more excited to go to Canada over the summer. We would like to thank our sponsors for all of their support. Additionally, we would like to thank all of those who have spent time providing technical and administrative knowledge to the team. With your help, the ROV Team is planning for the most advanced and capable vehicle yet!
FOR IMMEDIATE RELEASE
Contact: Kyle Rakos
E-mail<EMAIL_ADDRESS>The Purdue IEEE ROV Team is a seven-year-old team of engineers and non-engineers that competes in the Marine Advanced Technology Education (MATE) Center’s Remotely Operated Vehicle (ROV) International Competition. The team plans for a top place finish this year with an ROV combining their latest innovations, ROV Cerulean.
The MATE competition pits students against each other to see who can complete the assigned missions most efficiently using elegantly designed and cost-effective underwater robots. The mission changes every year and has included submarine rescue missions, shipwreck navigation, and underwater volcano exploration. This year's mission from the MATE Center takes place in St. John’s, Newfoundland and Labrador, Canada. The focus is on arctic science and oil pipeline maintenance. The tasks revolve around servicing old equipment, ensuring existing equipment remains safe and functional, and observing various marine organisms.
International Big BlueBotix (IBBB), the name of the Purdue team this year, has designed an ROV that is capable of completing the mission in the shortest amount of time. With more funding and growing knowledge of manufacturing techniques, the team was able to machine the custom-designed ROV components to the high standards the competition demands. Key features this year include a lightweight, aluminum frame and custom waterproof polycarbonate tube for on-board electronics. With the power distribution and vehicle control systems designed and mounted by the students, ROV Cerulean represents a logical successor to the team's legacy of power, sophistication, and performance. Perhaps most impressive is the fact that the team designed and constructed the vehicle from the ground up and in house, from modeling the frame with CAD tools to writing the software to designing and laying out the printed circuit boards (PCBs).
The Purdue IEEE ROV Team would like to give special thanks to the Purdue Office of the Provost, the Purdue Engineering Student Council (PESC), and SolidWorks Corporation for their support that makes our team competitive internationally. With a team comprised largely of freshmen and sophomores, the team sees this year as a chance to show the competition what they are capable of doing.
FOR IMMEDIATE RELEASE
Contact: Kyle Rakos
E-mail<EMAIL_ADDRESS>The Purdue University IEEE ROV team competed this weekend at the MATE (Marine Advanced Technology Education) Center International ROV Competition in St. Johns, Newfoundland and Labrador Canada. The mission theme this year was offshore oil platform maintenance and repairs along with artic science. While the three unique missions proved to be especially challenging, the Purdue IEEE ROV team is pleased to have been invited to participate amongst many domestic and international teams. Considering this was the first competition for 90% of our team, we performed well and are excited to utilize all that we learned next year!
Our vehicle, ROV Cerulean is the successor to the team’s legacy of technological advancement. The onboard electrical system was custom designed and composed of no less than seven unique boards. The mechanical construction of ROV Cerulean reflects a robust design philosophy; it is one of the lightest vehicles in the team’s history while maintaining structural integrity with the custom made aluminum frame. Additionally, the software was written from the ground up using C++ with the Qt library.
This has been the seventh year for the Purdue IEEE ROV Team, a committee of the Purdue IEEE Student Branch.  The team is prepared for a bright future with nearly all veterans returning along with an expected influx of new members this coming school year.
We would love to share with you as much of our experience as possible. Please forward to as many people as you would like and view the following files below and the attached pictures. Let me know if you have any questions!
We invite you to view the ROV technical report, ROV poster, and various ROV and team pictures.
The Purdue IEEE ROV Team received 15th place in the 2015 MATE (Marine Advanced Technology Education) Center International ROV Competition in St. John's, Newfoundland and Labrador, Canada. The team was thrilled to be able to take nine members to the competition, but the growth of the team meant that many dedicated team members were unable to join the team
For more information about the Marine Advanced Technology Education Center (MATE) Competition, please view their website here.
In the ever-advancing industrial world, mankind has been on a search for available crude oil. Recently, oil companies have begun drilling offshore in polar waters where vast oil fields have been found. This environment has left them in need of remotely operated vehicles (ROVs) that can collect scientific data on the surrounding area of a potential drill site, inspect and repair subsea pipelines, and even help establish new offshore oilfields.
International Big BlueBotix (IBBB) has designed and constructed ROV Cerulean to meet and exceed these needs. With the intention of keeping the ROV lightweight, stable, and reliable, ROV Cerulean has an aluminum framework with detachable mission-specific tools, eight thrusters, allowing for six degrees of freedom, and a specialized waterproof tube to house all electronic components enabling quick access for serviceability and troubleshooting.
All electronic hardware responsible for power management, vehicle movement, and sensor data collection have been designed and fabricated from the ground up. Coupled with the on-board BattleStation software designed and developed by IBBB, ROV Cerulean is well equipped to handle all tasks it is presented with.
A full account of the features and design rationale of ROV Cerulean may be viewed in the technical report. Pictures from this season may be viewed to tell the better understand the story of the design, manufacturing, construction, and testing of this vehicle.
The mid-year update may be found in the first article on this page, the press release from before the competition may be found two articles above, and the press release after the results were announced may be found immediately above.
To see ROV Cerulean perform the qualification tasks for this mission, please watch this YouTube video.


A movie Review by S.R. Boone
Two things prevent Wolfgang Peterson's (DAS BOOT, IN THE LINE OF FIRE) lastest offering from suffering the same fate as the president's jet in Air Force One. First is America's need for a president of impeccable honesty, integrity, and action. Second is some terrific computerized flight footage. Harrison Ford plays United States President James Marshall who delivers a strong anti-terrorism speech in Moscow only to discover that Air Force One has been infiltrated by Russian terrorists, led by Gary Oldman, who seek a reestablishment of good old Mother Russia. Further complicating Ford's world-wide call to arms against terrorism is the presence of the First Lady and Daughter on the hijacked fortress. After 90 minutes of gunfire and bloody corpses, good triumphs over evil and Ford has succesfully defended his title as Hollywood's leading action hero. Ford and Oldman are terrific in the roles that suit them best: Everyman and psychotic heavy. While Ford delivers the goods in the best classic tradition in his well-conceived role, the multi-talented Oldman is wasted in his; his character seems to be Hollywood's plea to bring back the Cold War's black-and-white world. Ford has admitted he prefer's these roles and Oldman fits in nicely, too. Regardless, the acting is never in question with these two. What is in question is the witer's decision to have Ford play with big guns instead of big brains. Watching Air Force One, one recalls The Fugitive and how a mediocre script was given a pulse by watching Ford stay one step ahead of his pursuer by out thinking him; or In the Line of FIre with it's philosophical cat-and-mouse games. This one is simply Die Hard 4. It's a tired formula, but it still works. Standouts in a strong supporting are Dean Stockwell as a power hungry Secretary of Defence and William H. Macy as a crew member of the presidential liner. Throughout the high-altitude dramatics are some outstanding shots of F-15s that come to Air Force One's aid. These are highlighted by two impressive displays of Air Force One's defensive manueverings. Even with it's climax teetering on the edge of credibility, Air Force One is a wildly entertaining ride from a director and star at the top of their games.
Rating: *** out of ****
<EMAIL_ADDRESS>SRBoone
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Welcome to SPCJGriffin2459 Productions
This website is for my YouTube Channel named SPCJGriffin2459.
YouTube Videos
Extra Websites


Watch or Read
This app allows you to search a movie and determine if there exists a book adaptation. It also compares reviews of the book and movie then makes a recommendation.
This app allows you to search a movie and determine if there exists a book adaptation. It also compares reviews of the book and movie then makes a recommendation.
Book Description
Movie Description


Function withDependency() gets array as an argument, sorts it and uses "underscore" library to return the first and the last elements of the array.
You need to provide url to the library as "importFiles" value.
You can pass as many dependencies as you need.
function withDependency(arr){
var ret = [];
function compare(a,b){
return b.stargazers_count - a.stargazers_count
}
arr.sort(compare)
ret.push(_.first(arr));
ret.push(_.last(arr));
return ret;
}
var param = {
fn:withDependency,
args: [ $scope.repos],
importFiles:['https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js']
};
vkThread.exec(param).then(
function (data) {
$scope.repos = data;
},
function(err) {
alert(err);
}
);


This is a demo that describes tinyColorPicker custumization 'Skinned dev-tools like with RGB sliders' in a more understandable way.


Find the best businesses in town
Search for restaurants, contractors, and other local businesses in your area to find out which ones are the best!
Not sure what to search for? Browse some of the most popular categories.
Get the latest news
Stay in the loop with the latest updates and features added to our application!
You can unsubscribe at any time.
Here are some of the most popular new businesses in your area.


{{ partial "header.html" . }}
Bean Binding and seamless integration with popular frameworks such as CDI, Spring, Spring Boot and Blueprint.
The following projects can leverage Apache Camel as a routing and mediation engine
Popular distributed open source ESB and JBI container.
Mature, widely used open source message broker.
Smart web services suite (JAX-WS and JAX-RS).
Small OSGi based runtime in which applications can be deployed
High-performance NIO-driven networking framework.
Apache Camel K is a lightweight integration framework built from Apache Camel that runs natively on Kubernetes and is specifically designed for serverless and microservice architectures.
Camel is your project!
Camel is an Apache Software Foundation project, available under the Apache v2 license.
It's a complete open community, always listening proposals and comments.
Sources, mailing lists, issue tracker: it's fully open, you can access directly.
We also love contributions : don't hesitate to contribute.